From ecbda612207d3147ca5a5383e65cdc48a60faa77 Mon Sep 17 00:00:00 2001 From: Manolo Gouy Date: Wed, 1 Oct 2014 17:24:55 +0000 Subject: =?UTF-8?q?Protect=20use=20of=20dlopen()=20and=20dlsym()=20with=20?= =?UTF-8?q?HAVE=5FDLSYM=20and=20HAVE=5FDLFCN=5FH=20for=20compatibility=20w?= =?UTF-8?q?ith=20cases=20where=20these=20functions=20aren=E2=80=99t=20avai?= =?UTF-8?q?lable.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@10349 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/Fl_Native_File_Chooser_FLTK.cxx | 3 +++ src/Fl_Native_File_Chooser_GTK.cxx | 8 +++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Fl_Native_File_Chooser_FLTK.cxx b/src/Fl_Native_File_Chooser_FLTK.cxx index 3fb62ad10..769dfac1c 100644 --- a/src/Fl_Native_File_Chooser_FLTK.cxx +++ b/src/Fl_Native_File_Chooser_FLTK.cxx @@ -16,6 +16,7 @@ // http://www.fltk.org/str.php // +#include #include #include #define FLTK_CHOOSER_SINGLE Fl_File_Chooser::SINGLE @@ -50,9 +51,11 @@ Fl_Native_File_Chooser::Fl_Native_File_Chooser(int val) { #endif // FLTK_ABI_VERSION if (have_looked_for_GTK_libs == 0) { // First Time here, try to find the GTK libs if they are installed +#if HAVE_DLSYM && HAVE_DLFCN_H if (Fl::option(Fl::OPTION_FNFC_USES_GTK)) { Fl_GTK_File_Chooser::probe_for_GTK_libs(); } +#endif have_looked_for_GTK_libs = -1; } // if we found all the GTK functions we need, we will use the GtkFileChooserDialog diff --git a/src/Fl_Native_File_Chooser_GTK.cxx b/src/Fl_Native_File_Chooser_GTK.cxx index 7b7fbe155..1b4751107 100644 --- a/src/Fl_Native_File_Chooser_GTK.cxx +++ b/src/Fl_Native_File_Chooser_GTK.cxx @@ -17,7 +17,9 @@ // #include +#if HAVE_DLSYM && HAVE_DLFCN_H #include // for dlopen et al +#endif #include // for setlocale /* --------------------- Type definitions from GLIB and GTK --------------------- */ @@ -620,8 +622,9 @@ int Fl_GTK_File_Chooser::fl_gtk_chooser_wrapper() return result; } // fl_gtk_chooser_wrapper +#if HAVE_DLSYM && HAVE_DLFCN_H // macro to help with the symbol loading boilerplate... -#define GET_SYM(SSS, LLL) \ +# define GET_SYM(SSS, LLL) \ dlerror(); /* Clear any existing error */ \ fl_##SSS = (XX_##SSS)dlsym(LLL, #SSS); \ if ((pc_dl_error = dlerror()) != NULL) { \ @@ -635,6 +638,7 @@ static void* fl_dlopen(const char *filename1, const char *filename2) if (!ptr) ptr = dlopen(filename2, RTLD_LAZY | RTLD_GLOBAL); return ptr; } +#endif /* * Use dlopen to see if we can load the gtk dynamic libraries that @@ -642,6 +646,7 @@ static void* fl_dlopen(const char *filename1, const char *filename2) * without linking to the GTK libs at compile time. */ void Fl_GTK_File_Chooser::probe_for_GTK_libs(void) { +#if HAVE_DLSYM && HAVE_DLFCN_H void *ptr_glib = NULL; void *ptr_gtk = NULL; @@ -719,6 +724,7 @@ void Fl_GTK_File_Chooser::probe_for_GTK_libs(void) { GET_SYM(gtk_toggle_button_set_active, ptr_gtk); did_find_GTK_libs = 1; +#endif } // probe_for_GTK_libs // -- cgit v1.2.3