From d045d768ee96f15b71f21d1e61a173facfce4c88 Mon Sep 17 00:00:00 2001 From: Thomas Tanner Date: Sun, 24 Jan 1999 20:43:52 +0000 Subject: [PATCH] * libltdl/ltdl.c: minor bugfixes, append a "/" the search directory only if necessary * ltconfig.in: added support for FreeBSD >= 3.0 (patch from Kurt D. Zeilenga) * THANKS: added Kurt D. Zeilenga --- ChangeLog | 8 ++++++++ THANKS | 1 + libltdl/ltdl.c | 12 ++++++++---- ltconfig.in | 15 ++++++++++++--- 4 files changed, 29 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 22120726c..97ab861c5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +1999-01-24 Thomas Tanner + + * libltdl/ltdl.c: minor bugfixes, append a "/" the search + directory only if necessary + * ltconfig.in: added support for FreeBSD >= 3.0 + (patch from Kurt D. Zeilenga) + * THANKS: added Kurt D. Zeilenga + 1999-01-24 Thomas Tanner * doc/libtool.texi (libltdl): list supported dlopen mechanisms, diff --git a/THANKS b/THANKS index d21d953dd..24ab807b3 100644 --- a/THANKS +++ b/THANKS @@ -26,6 +26,7 @@ Joel N. Weber II Joseph Beckenbach III Karl Berry Kenneth Albanowski +Kurt D. Zeilenga Manfred Weichel Marc J. Fraioli Mark Elbrecht diff --git a/libltdl/ltdl.c b/libltdl/ltdl.c index 522bac7b5..cc8884d73 100644 --- a/libltdl/ltdl.c +++ b/libltdl/ltdl.c @@ -897,8 +897,11 @@ find_file (basename, search_path, pdir, handle) } if (!*filename) continue; - strcat(filename, "/"); lendir = strlen(filename); + if (filename[lendir-1] != '/') { + strcat(filename, "/"); + lendir++; + } if (lendir+strlen(basename) < LTDL_FILENAME_MAX) { strcat(filename, basename); if (handle) { @@ -907,7 +910,7 @@ find_file (basename, search_path, pdir, handle) } else { file = fopen(filename, LTDL_READTEXT_MODE); if (file) { - filename[lendir+1] = '\0'; + filename[lendir] = '\0'; strcpy(pdir, filename); return (lt_ptr_t) file; } @@ -1071,7 +1074,7 @@ lt_dlopen (filename) return 0; } handle->usage = 0; - if (tryall_dlopen(&handle, filename) && (*dir + if (tryall_dlopen(&handle, filename) && (!*dir || (find_file(basename, user_search_path, 0, &handle) && find_file(basename, getenv("LTDL_LIBRARY_PATH"), 0, &handle) @@ -1130,7 +1133,7 @@ lt_dlopenext (filename) } #ifdef LTDL_SHLIB_EXT /* try "filename.EXT" */ - tmp[len-1] = '\0'; + tmp[len] = '\0'; if (len+strlen(shlib_ext) >= sizeof(tmp)) { last_error = buffer_overflow_error; return 0; @@ -1142,6 +1145,7 @@ lt_dlopenext (filename) return handle; } #endif + last_error = file_not_found_error; return 0; } diff --git a/ltconfig.in b/ltconfig.in index 14a6447d1..f303bf9a6 100755 --- a/ltconfig.in +++ b/ltconfig.in @@ -1215,6 +1215,11 @@ else fi ;; + freebsd1*) + ld_shlibs=no + can_build_shared=no + ;; + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little @@ -1235,8 +1240,8 @@ else hardcode_shlibpath_var=no ;; - # FreeBSD 3, at last, uses gcc -shared to do shared libraries. - freebsd3*) + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes @@ -1664,7 +1669,11 @@ cygwin32* | mingw32*) shlibpath_var=PATH ;; -freebsd2* | freebsd3*) +freebsd1*) + dynamic_linker=no + ;; + +freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case "$version_type" in -- 2.47.3