/
niceSOFT
/
make
Обзор
Документация
Войти
/
niceSOFT
/
make
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
gl/modules/make-glob
112 строк
3 KB
Paul Smith
* gl/modules/make-glob: Avoid glibc glob if bug #866 is present
20 фев 2023, 01:43
20 фев 2023, 01:43
ac15949
Код
Авторство
О чём код?
Description: GNU Make version of fnmatch()/glob() functions. This is a holdover from a very old version of the globbing library. Files: lib/fnmatch.c lib/fnmatch.in.h lib/glob.c lib/glob.in.h configure.ac: # Check the system to see if it provides GNU glob. If not, use our # local version. Also avoid versions of glibc which have symlink bug # https://sourceware.org/bugzilla/show_bug.cgi?id=866 (test from gnulib) AC_CACHE_CHECK([if system libc has working GNU glob], [make_cv_sys_gnu_glob],[ if ln -s conf-doesntexist conf$$-globtest 2>/dev/null; then make_check_symlink=yes else make_check_symlink=no fi if test $cross_compiling = yes || test $make_check_symlink = no; then # When cross-compiling or without symlink support, check the version AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include <features.h> #include <gnu-versions.h> #include <glob.h> #include <fnmatch.h> ]], [[ #if _GNU_GLOB_INTERFACE_VERSION == 0 GNU glob not available in libc #elif __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 27) GNU glob in libc has dangling symlink bug #endif ]])], [make_cv_sys_gnu_glob=yes], [make_cv_sys_gnu_glob=no]) else # Check for GNU glob, and that it handles dangling symlinks properly AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#include <features.h> #include <gnu-versions.h> #include <glob.h> #include <fnmatch.h> ]], [[ #if _GNU_GLOB_INTERFACE_VERSION == 0 return 1; #else glob_t found; if (glob ("conf*-globtest", 0, 0, &found) == GLOB_NOMATCH) return 1; globfree (&found); #endif ]])], [make_cv_sys_gnu_glob=yes], [make_cv_sys_gnu_glob=no], [dnl We don't get here. : ]) fi test $make_check_symlink = no || rm -f conf$$-globtest ]) # Tell automake about this, so it can build the right .c files. AM_CONDITIONAL([USE_SYSTEM_GLOB], [test "$make_cv_sys_gnu_glob" = yes]) # Tell build.sh which to use USE_SYSTEM_GLOB="$make_cv_sys_gnu_glob" AC_SUBST([USE_SYSTEM_GLOB]) Makefile.am: if !USE_SYSTEM_GLOB libgnu_a_SOURCES += fnmatch.c BUILT_SOURCES += fnmatch.h fnmatch.h: fnmatch.in.h $(top_builddir)/config.status $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ cat $(srcdir)/fnmatch.in.h; \ } > $@-t && \ mv -f $@-t $@ MOSTLYCLEANFILES += fnmatch.h fnmatch.h-t libgnu_a_SOURCES += glob.c BUILT_SOURCES += glob.h glob.h: glob.in.h $(top_builddir)/config.status $(AM_V_GEN)rm -f $@-t $@ && \ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ cat $(srcdir)/glob.in.h; \ } > $@-t && \ mv -f $@-t $@ MOSTLYCLEANFILES += glob.h glob.h-t endif EXTRA_DIST += fnmatch.in.h glob.in.h Include: <glob.h> License: LGPLv2+ Maintainer: all, glibc