gnulib: import ffs

The Blackfin sim uses this function, but Windows/mingw doesn't provide it.
This commit is contained in:
Mike Frysinger
2021-05-18 22:11:41 -04:00
parent 78a7f5766a
commit 32e2770e59
13 changed files with 580 additions and 22 deletions

View File

@@ -1,3 +1,12 @@
2021-05-24 Mike Frysinger <vapier@gentoo.org>
* update-gnulib.sh (IMPORTED_GNULIB_MODULES): Add ffs.
* aclocal.m4, configure, Makefile.in, import/Makefile.am,
import/Makefile.in, import/m4/gnulib-cache.m4,
import/m4/gnulib-comp.m4: Regenerate.
* import/ffs.c, import/m4/ffs.m4, import/m4/strings_h.m4,
import/strings.in.h: New files.
2021-05-04 Mike Frysinger <vapier@gentoo.org>
* update-gnulib.sh (IMPORTED_GNULIB_MODULES): Add gendocs.

View File

@@ -145,6 +145,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \
$(top_srcdir)/import/m4/fcntl.m4 \
$(top_srcdir)/import/m4/fcntl_h.m4 \
$(top_srcdir)/import/m4/fdopendir.m4 \
$(top_srcdir)/import/m4/ffs.m4 \
$(top_srcdir)/import/m4/filenamecat.m4 \
$(top_srcdir)/import/m4/flexmember.m4 \
$(top_srcdir)/import/m4/float_h.m4 \
@@ -248,6 +249,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \
$(top_srcdir)/import/m4/strerror.m4 \
$(top_srcdir)/import/m4/strerror_r.m4 \
$(top_srcdir)/import/m4/string_h.m4 \
$(top_srcdir)/import/m4/strings_h.m4 \
$(top_srcdir)/import/m4/strnlen.m4 \
$(top_srcdir)/import/m4/strstr.m4 \
$(top_srcdir)/import/m4/strtok_r.m4 \
@@ -454,6 +456,7 @@ GNULIB_FDATASYNC = @GNULIB_FDATASYNC@
GNULIB_FDOPEN = @GNULIB_FDOPEN@
GNULIB_FDOPENDIR = @GNULIB_FDOPENDIR@
GNULIB_FFLUSH = @GNULIB_FFLUSH@
GNULIB_FFS = @GNULIB_FFS@
GNULIB_FFSL = @GNULIB_FFSL@
GNULIB_FFSLL = @GNULIB_FFSLL@
GNULIB_FGETC = @GNULIB_FGETC@
@@ -938,6 +941,7 @@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
HAVE_DECL_SQRTL = @HAVE_DECL_SQRTL@
HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
@@ -976,6 +980,7 @@ HAVE_FCNTL = @HAVE_FCNTL@
HAVE_FDATASYNC = @HAVE_FDATASYNC@
HAVE_FDOPENDIR = @HAVE_FDOPENDIR@
HAVE_FEATURES_H = @HAVE_FEATURES_H@
HAVE_FFS = @HAVE_FFS@
HAVE_FFSL = @HAVE_FFSL@
HAVE_FFSLL = @HAVE_FFSLL@
HAVE_FMA = @HAVE_FMA@
@@ -1122,9 +1127,11 @@ HAVE_SQRTL = @HAVE_SQRTL@
HAVE_STDINT_H = @HAVE_STDINT_H@
HAVE_STPCPY = @HAVE_STPCPY@
HAVE_STPNCPY = @HAVE_STPNCPY@
HAVE_STRCASECMP = @HAVE_STRCASECMP@
HAVE_STRCASESTR = @HAVE_STRCASESTR@
HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
HAVE_STRERRORNAME_NP = @HAVE_STRERRORNAME_NP@
HAVE_STRINGS_H = @HAVE_STRINGS_H@
HAVE_STRPBRK = @HAVE_STRPBRK@
HAVE_STRPTIME = @HAVE_STRPTIME@
HAVE_STRSEP = @HAVE_STRSEP@
@@ -1271,6 +1278,7 @@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
NEXT_AS_FIRST_DIRECTIVE_STRINGS_H = @NEXT_AS_FIRST_DIRECTIVE_STRINGS_H@
NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H@
NEXT_AS_FIRST_DIRECTIVE_SYS_SOCKET_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_SOCKET_H@
@@ -1299,6 +1307,7 @@ NEXT_STDDEF_H = @NEXT_STDDEF_H@
NEXT_STDINT_H = @NEXT_STDINT_H@
NEXT_STDIO_H = @NEXT_STDIO_H@
NEXT_STDLIB_H = @NEXT_STDLIB_H@
NEXT_STRINGS_H = @NEXT_STRINGS_H@
NEXT_STRING_H = @NEXT_STRING_H@
NEXT_SYS_RANDOM_H = @NEXT_SYS_RANDOM_H@
NEXT_SYS_SOCKET_H = @NEXT_SYS_SOCKET_H@

2
gnulib/aclocal.m4 vendored
View File

@@ -1218,6 +1218,7 @@ m4_include([import/m4/fcntl-o.m4])
m4_include([import/m4/fcntl.m4])
m4_include([import/m4/fcntl_h.m4])
m4_include([import/m4/fdopendir.m4])
m4_include([import/m4/ffs.m4])
m4_include([import/m4/filenamecat.m4])
m4_include([import/m4/flexmember.m4])
m4_include([import/m4/float_h.m4])
@@ -1321,6 +1322,7 @@ m4_include([import/m4/strdup.m4])
m4_include([import/m4/strerror.m4])
m4_include([import/m4/strerror_r.m4])
m4_include([import/m4/string_h.m4])
m4_include([import/m4/strings_h.m4])
m4_include([import/m4/strnlen.m4])
m4_include([import/m4/strstr.m4])
m4_include([import/m4/strtok_r.m4])

174
gnulib/configure vendored
View File

@@ -742,6 +742,9 @@ NEXT_SYS_TYPES_H
HAVE_SYS_RANDOM_H
NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H
NEXT_SYS_RANDOM_H
HAVE_STRINGS_H
NEXT_AS_FIRST_DIRECTIVE_STRINGS_H
NEXT_STRINGS_H
NEXT_AS_FIRST_DIRECTIVE_STRING_H
NEXT_STRING_H
NEXT_AS_FIRST_DIRECTIVE_STDLIB_H
@@ -1455,6 +1458,10 @@ GL_GENERATE_FLOAT_H_TRUE
FLOAT_H
NEXT_AS_FIRST_DIRECTIVE_FLOAT_H
NEXT_FLOAT_H
HAVE_DECL_STRNCASECMP
HAVE_STRCASECMP
HAVE_FFS
GNULIB_FFS
NEXT_AS_FIRST_DIRECTIVE_FCNTL_H
NEXT_FCNTL_H
REPLACE_OPENAT
@@ -3768,6 +3775,7 @@ as_fn_append ac_func_list " strerror_r"
as_fn_append ac_func_list " __xpg_strerror_r"
as_fn_append ac_func_list " catgets"
as_fn_append ac_func_list " snprintf"
as_fn_append ac_header_list " strings.h"
as_fn_append ac_header_list " sys/random.h"
as_fn_append ac_header_list " sys/uio.h"
as_fn_append ac_func_list " localtime_r"
@@ -6704,6 +6712,7 @@ fi
# Code from module fd-hook:
# Code from module fd-safer-flag:
# Code from module fdopendir:
# Code from module ffs:
# Code from module filename:
# Code from module filenamecat-lgpl:
# Code from module flexmember:
@@ -6814,6 +6823,7 @@ fi
# Code from module strerror-override:
# Code from module strerror_r-posix:
# Code from module string:
# Code from module strings:
# Code from module strnlen:
# Code from module strnlen1:
# Code from module strstr:
@@ -9128,6 +9138,12 @@ fi
GNULIB_FFS=0;
HAVE_FFS=1;
HAVE_STRCASECMP=1;
HAVE_DECL_STRNCASECMP=1;
GNULIB_FNMATCH=0;
@@ -16700,6 +16716,100 @@ $as_echo "$gl_cv_next_string_h" >&6; }
if test $gl_cv_have_include_next = yes; then
gl_cv_next_strings_h='<'strings.h'>'
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <strings.h>" >&5
$as_echo_n "checking absolute name of <strings.h>... " >&6; }
if ${gl_cv_next_strings_h+:} false; then :
$as_echo_n "(cached) " >&6
else
if test $ac_cv_header_strings_h = yes; then
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <strings.h>
_ACEOF
case "$host_os" in
aix*) gl_absname_cpp="$ac_cpp -C" ;;
*) gl_absname_cpp="$ac_cpp" ;;
esac
case "$host_os" in
mingw*)
gl_dirsep_regex='[/\\]'
;;
*)
gl_dirsep_regex='\/'
;;
esac
gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
gl_header_literal_regex=`echo 'strings.h' \
| sed -e "$gl_make_literal_regex_sed"`
gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
s|^/[^/]|//&|
p
q
}'
gl_cv_absolute_strings_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
sed -n "$gl_absolute_header_sed"`
gl_header=$gl_cv_absolute_strings_h
gl_cv_next_strings_h='"'$gl_header'"'
else
gl_cv_next_strings_h='<'strings.h'>'
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_strings_h" >&5
$as_echo "$gl_cv_next_strings_h" >&6; }
fi
NEXT_STRINGS_H=$gl_cv_next_strings_h
if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
# INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
gl_next_as_first_directive='<'strings.h'>'
else
# INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
gl_next_as_first_directive=$gl_cv_next_strings_h
fi
NEXT_AS_FIRST_DIRECTIVE_STRINGS_H=$gl_next_as_first_directive
if test $ac_cv_header_strings_h = yes; then
HAVE_STRINGS_H=1
else
HAVE_STRINGS_H=0
fi
ac_fn_c_check_decl "$LINENO" "strnlen" "ac_cv_have_decl_strnlen" "$ac_includes_default"
if test "x$ac_cv_have_decl_strnlen" = xyes; then :
ac_have_decl=1
@@ -19360,6 +19470,67 @@ _ACEOF
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ffs" >&5
$as_echo_n "checking for ffs... " >&6; }
if ${gl_cv_func_ffs+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <strings.h>
int x;
int
main ()
{
int (*func) (int) = ffs;
return func (x);
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
gl_cv_func_ffs=yes
else
gl_cv_func_ffs=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_ffs" >&5
$as_echo "$gl_cv_func_ffs" >&6; }
if test $gl_cv_func_ffs = no; then
HAVE_FFS=0
fi
if test $HAVE_FFS = 0; then
gl_LIBOBJS="$gl_LIBOBJS ffs.$ac_objext"
fi
GNULIB_FFS=1
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for flexible array member" >&5
$as_echo_n "checking for flexible array member... " >&6; }
@@ -28740,6 +28911,9 @@ _ACEOF
if test $ac_cv_have_decl_strnlen = no; then
HAVE_DECL_STRNLEN=0
else

View File

@@ -39,6 +39,7 @@
# dirent \
# dirfd \
# errno \
# ffs \
# fnmatch-gnu \
# frexpl \
# gendocs \
@@ -518,6 +519,15 @@ EXTRA_libgnu_a_SOURCES += fdopendir.c
## end gnulib module fdopendir
## begin gnulib module ffs
EXTRA_DIST += ffs.c
EXTRA_libgnu_a_SOURCES += ffs.c
## end gnulib module ffs
## begin gnulib module filename
@@ -2331,6 +2341,37 @@ EXTRA_DIST += string.in.h
## end gnulib module string
## begin gnulib module strings
BUILT_SOURCES += strings.h
# We need the following in order to create <strings.h> when the system
# doesn't have one that works with the given compiler.
strings.h: strings.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H) $(ARG_NONNULL_H)
$(AM_V_GEN)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
sed -e 's|@''GUARD_PREFIX''@|GL|g' \
-e 's|@''HAVE_STRINGS_H''@|$(HAVE_STRINGS_H)|g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-e 's|@''NEXT_STRINGS_H''@|$(NEXT_STRINGS_H)|g' \
-e 's/@''GNULIB_FFS''@/$(GNULIB_FFS)/g' \
-e 's|@''HAVE_FFS''@|$(HAVE_FFS)|g' \
-e 's|@''HAVE_STRCASECMP''@|$(HAVE_STRCASECMP)|g' \
-e 's|@''HAVE_DECL_STRNCASECMP''@|$(HAVE_DECL_STRNCASECMP)|g' \
-e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
-e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
-e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
< $(srcdir)/strings.in.h; \
} > $@-t && \
mv $@-t $@
MOSTLYCLEANFILES += strings.h strings.h-t
EXTRA_DIST += strings.in.h
## end gnulib module strings
## begin gnulib module strnlen

View File

@@ -53,6 +53,7 @@
# dirent \
# dirfd \
# errno \
# ffs \
# fnmatch-gnu \
# frexpl \
# gendocs \
@@ -205,6 +206,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \
$(top_srcdir)/import/m4/fcntl.m4 \
$(top_srcdir)/import/m4/fcntl_h.m4 \
$(top_srcdir)/import/m4/fdopendir.m4 \
$(top_srcdir)/import/m4/ffs.m4 \
$(top_srcdir)/import/m4/filenamecat.m4 \
$(top_srcdir)/import/m4/flexmember.m4 \
$(top_srcdir)/import/m4/float_h.m4 \
@@ -308,6 +310,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \
$(top_srcdir)/import/m4/strerror.m4 \
$(top_srcdir)/import/m4/strerror_r.m4 \
$(top_srcdir)/import/m4/string_h.m4 \
$(top_srcdir)/import/m4/strings_h.m4 \
$(top_srcdir)/import/m4/strnlen.m4 \
$(top_srcdir)/import/m4/strstr.m4 \
$(top_srcdir)/import/m4/strtok_r.m4 \
@@ -552,6 +555,7 @@ GNULIB_FDATASYNC = @GNULIB_FDATASYNC@
GNULIB_FDOPEN = @GNULIB_FDOPEN@
GNULIB_FDOPENDIR = @GNULIB_FDOPENDIR@
GNULIB_FFLUSH = @GNULIB_FFLUSH@
GNULIB_FFS = @GNULIB_FFS@
GNULIB_FFSL = @GNULIB_FFSL@
GNULIB_FFSLL = @GNULIB_FFSLL@
GNULIB_FGETC = @GNULIB_FGETC@
@@ -1036,6 +1040,7 @@ HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@
HAVE_DECL_SQRTL = @HAVE_DECL_SQRTL@
HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@
HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@
@@ -1074,6 +1079,7 @@ HAVE_FCNTL = @HAVE_FCNTL@
HAVE_FDATASYNC = @HAVE_FDATASYNC@
HAVE_FDOPENDIR = @HAVE_FDOPENDIR@
HAVE_FEATURES_H = @HAVE_FEATURES_H@
HAVE_FFS = @HAVE_FFS@
HAVE_FFSL = @HAVE_FFSL@
HAVE_FFSLL = @HAVE_FFSLL@
HAVE_FMA = @HAVE_FMA@
@@ -1220,9 +1226,11 @@ HAVE_SQRTL = @HAVE_SQRTL@
HAVE_STDINT_H = @HAVE_STDINT_H@
HAVE_STPCPY = @HAVE_STPCPY@
HAVE_STPNCPY = @HAVE_STPNCPY@
HAVE_STRCASECMP = @HAVE_STRCASECMP@
HAVE_STRCASESTR = @HAVE_STRCASESTR@
HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
HAVE_STRERRORNAME_NP = @HAVE_STRERRORNAME_NP@
HAVE_STRINGS_H = @HAVE_STRINGS_H@
HAVE_STRPBRK = @HAVE_STRPBRK@
HAVE_STRPTIME = @HAVE_STRPTIME@
HAVE_STRSEP = @HAVE_STRSEP@
@@ -1369,6 +1377,7 @@ NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@
NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@
NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@
NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@
NEXT_AS_FIRST_DIRECTIVE_STRINGS_H = @NEXT_AS_FIRST_DIRECTIVE_STRINGS_H@
NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@
NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H@
NEXT_AS_FIRST_DIRECTIVE_SYS_SOCKET_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_SOCKET_H@
@@ -1397,6 +1406,7 @@ NEXT_STDDEF_H = @NEXT_STDDEF_H@
NEXT_STDINT_H = @NEXT_STDINT_H@
NEXT_STDIO_H = @NEXT_STDIO_H@
NEXT_STDLIB_H = @NEXT_STDLIB_H@
NEXT_STRINGS_H = @NEXT_STRINGS_H@
NEXT_STRING_H = @NEXT_STRING_H@
NEXT_SYS_RANDOM_H = @NEXT_SYS_RANDOM_H@
NEXT_SYS_SOCKET_H = @NEXT_SYS_SOCKET_H@
@@ -1781,15 +1791,15 @@ EXTRA_DIST = m4/gnulib-cache.m4 alloca.c alloca.in.h arpa_inet.in.h \
close.c closedir.c dirent-private.h count-one-bits.h \
ctype.in.h dirent.in.h dirfd.c dirname.h dup.c dup2.c \
eloop-threshold.h errno.in.h error.c error.h exitfail.h \
fchdir.c fcntl.c fcntl.in.h fd-hook.h fdopendir.c filename.h \
filenamecat.h flexmember.h float.c float.in.h itold.c \
fnmatch.c fnmatch_loop.c fnmatch.c fnmatch.in.h fpucw.h free.c \
frexp.c frexp.c frexpl.c fstat.c stat-w32.c stat-w32.h \
at-func.c fstatat.c $(top_srcdir)/import/extra/gendocs.sh \
getcwd.c getcwd-lgpl.c getdelim.c getdtablesize.c getline.c \
getlogin_r.c getrandom.c gettimeofday.c \
$(top_srcdir)/import/extra/gitlog-to-changelog glob.c \
glob_internal.h glob_pattern_p.c globfree.c glob-libc.h \
fchdir.c fcntl.c fcntl.in.h fd-hook.h fdopendir.c ffs.c \
filename.h filenamecat.h flexmember.h float.c float.in.h \
itold.c fnmatch.c fnmatch_loop.c fnmatch.c fnmatch.in.h \
fpucw.h free.c frexp.c frexp.c frexpl.c fstat.c stat-w32.c \
stat-w32.h at-func.c fstatat.c \
$(top_srcdir)/import/extra/gendocs.sh getcwd.c getcwd-lgpl.c \
getdelim.c getdtablesize.c getline.c getlogin_r.c getrandom.c \
gettimeofday.c $(top_srcdir)/import/extra/gitlog-to-changelog \
glob.c glob_internal.h glob_pattern_p.c globfree.c glob-libc.h \
glob.in.h hard-locale.h inet_ntop.c intprops.h inttypes.in.h \
isblank.c float+.h isnan.c isnand-nolibm.h isnand.c float+.h \
isnan.c isnanl-nolibm.h isnanl.c cdefs.h libc-config.h \
@@ -1812,11 +1822,11 @@ EXTRA_DIST = m4/gnulib-cache.m4 alloca.c alloca.in.h arpa_inet.in.h \
stat-time.h stdalign.in.h stdbool.in.h stddef.in.h stdint.in.h \
stdio.in.h stdlib.in.h strchrnul.c strchrnul.valgrind strdup.c \
streq.h strerror.c strerror-override.c strerror-override.h \
strerror_r.c string.in.h strnlen.c strstr.c str-two-way.h \
strstr.c strtok_r.c sys_random.in.h sys_socket.in.h \
sys_stat.in.h sys_time.in.h sys_types.in.h sys_uio.in.h \
tempname.h time.in.h time_r.c unistd.in.h unistd--.h \
unistd-safer.h unsetenv.c \
strerror_r.c string.in.h strings.in.h strnlen.c strstr.c \
str-two-way.h strstr.c strtok_r.c sys_random.in.h \
sys_socket.in.h sys_stat.in.h sys_time.in.h sys_types.in.h \
sys_uio.in.h tempname.h time.in.h time_r.c unistd.in.h \
unistd--.h unistd-safer.h unsetenv.c \
$(top_srcdir)/import/extra/update-copyright verify.h \
wchar.in.h wctype.in.h windows-initguard.h windows-mutex.c \
windows-mutex.h windows-once.c windows-once.h \
@@ -1827,9 +1837,9 @@ BUILT_SOURCES = $(ALLOCA_H) arpa/inet.h ctype.h dirent.h $(ERRNO_H) \
fcntl.h $(FLOAT_H) $(FNMATCH_H) $(GLOB_H) inttypes.h \
$(LIMITS_H) locale.h math.h $(NETINET_IN_H) signal.h \
$(STDALIGN_H) $(STDBOOL_H) $(STDDEF_H) $(STDINT_H) stdio.h \
stdlib.h string.h sys/random.h sys/socket.h sys/stat.h \
sys/time.h sys/types.h sys/uio.h time.h unistd.h wchar.h \
wctype.h
stdlib.h string.h strings.h sys/random.h sys/socket.h \
sys/stat.h sys/time.h sys/types.h sys/uio.h time.h unistd.h \
wchar.h wctype.h
SUFFIXES =
MOSTLYCLEANFILES = core *.stackdump alloca.h alloca.h-t arpa/inet.h \
arpa/inet.h-t ctype.h ctype.h-t dirent.h dirent.h-t errno.h \
@@ -1839,10 +1849,11 @@ MOSTLYCLEANFILES = core *.stackdump alloca.h alloca.h-t arpa/inet.h \
netinet/in.h-t signal.h signal.h-t stdalign.h stdalign.h-t \
stdbool.h stdbool.h-t stddef.h stddef.h-t stdint.h stdint.h-t \
stdio.h stdio.h-t stdlib.h stdlib.h-t string.h string.h-t \
sys/random.h sys/random.h-t sys/socket.h sys/socket.h-t \
sys/stat.h sys/stat.h-t sys/time.h sys/time.h-t sys/types.h \
sys/types.h-t sys/uio.h sys/uio.h-t time.h time.h-t unistd.h \
unistd.h-t wchar.h wchar.h-t wctype.h wctype.h-t
strings.h strings.h-t sys/random.h sys/random.h-t sys/socket.h \
sys/socket.h-t sys/stat.h sys/stat.h-t sys/time.h sys/time.h-t \
sys/types.h sys/types.h-t sys/uio.h sys/uio.h-t time.h \
time.h-t unistd.h unistd.h-t wchar.h wchar.h-t wctype.h \
wctype.h-t
MOSTLYCLEANDIRS = arpa netinet sys sys sys sys
CLEANFILES =
DISTCLEANFILES =
@@ -1866,7 +1877,7 @@ libgnu_a_LIBADD = $(gl_LIBOBJS) @ALLOCA@
libgnu_a_DEPENDENCIES = $(gl_LIBOBJS) @ALLOCA@
EXTRA_libgnu_a_SOURCES = alloca.c btowc.c canonicalize-lgpl.c \
chdir-long.c close.c closedir.c dirfd.c dup.c dup2.c error.c \
fchdir.c fcntl.c fdopendir.c float.c itold.c fnmatch.c \
fchdir.c fcntl.c fdopendir.c ffs.c float.c itold.c fnmatch.c \
fnmatch_loop.c fnmatch.c free.c frexp.c frexp.c frexpl.c \
fstat.c stat-w32.c at-func.c fstatat.c getcwd.c getcwd-lgpl.c \
getdelim.c getdtablesize.c getline.c getlogin_r.c getrandom.c \
@@ -2017,6 +2028,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fd-safer-flag.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fd-safer.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdopendir.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ffs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filenamecat-lgpl.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/float.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fnmatch.Po@am__quote@
@@ -3439,6 +3451,28 @@ string.h: string.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H
} > $@-t && \
mv $@-t $@
# We need the following in order to create <strings.h> when the system
# doesn't have one that works with the given compiler.
strings.h: strings.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H) $(ARG_NONNULL_H)
$(AM_V_GEN)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
sed -e 's|@''GUARD_PREFIX''@|GL|g' \
-e 's|@''HAVE_STRINGS_H''@|$(HAVE_STRINGS_H)|g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
-e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
-e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
-e 's|@''NEXT_STRINGS_H''@|$(NEXT_STRINGS_H)|g' \
-e 's/@''GNULIB_FFS''@/$(GNULIB_FFS)/g' \
-e 's|@''HAVE_FFS''@|$(HAVE_FFS)|g' \
-e 's|@''HAVE_STRCASECMP''@|$(HAVE_STRCASECMP)|g' \
-e 's|@''HAVE_DECL_STRNCASECMP''@|$(HAVE_DECL_STRNCASECMP)|g' \
-e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
-e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
-e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \
< $(srcdir)/strings.in.h; \
} > $@-t && \
mv $@-t $@
# We need the following in order to create <sys/random.h> when the system
# doesn't have one.
sys/random.h: sys_random.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)

68
gnulib/import/ffs.c Normal file
View File

@@ -0,0 +1,68 @@
/* ffs.c -- find the first set bit in a word.
Copyright (C) 2011-2021 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
/* Written by Eric Blake. */
#include <config.h>
/* Specification. */
#include <strings.h>
#include <limits.h>
#if defined _MSC_VER && !(__clang_major__ >= 4)
# include <intrin.h>
#endif
int
ffs (int i)
{
#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__clang_major__ >= 4)
return __builtin_ffs (i);
#elif defined _MSC_VER
/* _BitScanForward
<https://docs.microsoft.com/en-us/cpp/intrinsics/bitscanforward-bitscanforward64> */
unsigned long bit;
if (_BitScanForward (&bit, i))
return bit + 1;
else
return 0;
#else
/* <https://github.com/gibsjose/BitHacks>
gives this deBruijn constant for a branch-less computation, although
that table counted trailing zeros rather than bit position. This
requires 32-bit int, we fall back to a naive algorithm on the rare
platforms where that assumption is not true. */
if (CHAR_BIT * sizeof i == 32)
{
static unsigned int table[] = {
1, 2, 29, 3, 30, 15, 25, 4, 31, 23, 21, 16, 26, 18, 5, 9,
32, 28, 14, 24, 22, 20, 17, 8, 27, 13, 19, 7, 12, 6, 11, 10
};
unsigned int u = i;
unsigned int bit = u & -u;
return table[(bit * 0x077cb531U) >> 27] - !i;
}
else
{
unsigned int j;
for (j = 0; j < CHAR_BIT * sizeof i; j++)
if (i & (1U << j))
return j + 1;
return 0;
}
#endif
}

32
gnulib/import/m4/ffs.m4 Normal file
View File

@@ -0,0 +1,32 @@
# ffs.m4 serial 4
dnl Copyright (C) 2011-2021 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
AC_DEFUN([gl_FUNC_FFS],
[
AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS])
dnl We can't use AC_CHECK_FUNC here, because ffs() is defined as a
dnl static inline function when compiling for Android 4.2 or older.
dnl But require that ffs() is declared; otherwise we may be using
dnl the GCC built-in function, which leads to warnings
dnl "warning: implicit declaration of function 'ffs'".
AC_CACHE_CHECK([for ffs], [gl_cv_func_ffs],
[AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
[[#include <strings.h>
int x;
]],
[[int (*func) (int) = ffs;
return func (x);
]])
],
[gl_cv_func_ffs=yes],
[gl_cv_func_ffs=no])
])
if test $gl_cv_func_ffs = no; then
HAVE_FFS=0
fi
])

View File

@@ -44,6 +44,7 @@
# dirent \
# dirfd \
# errno \
# ffs \
# fnmatch-gnu \
# frexpl \
# gendocs \
@@ -88,6 +89,7 @@ gl_MODULES([
dirent
dirfd
errno
ffs
fnmatch-gnu
frexpl
gendocs

View File

@@ -84,6 +84,7 @@ AC_DEFUN([gl_EARLY],
# Code from module fd-hook:
# Code from module fd-safer-flag:
# Code from module fdopendir:
# Code from module ffs:
# Code from module filename:
# Code from module filenamecat-lgpl:
# Code from module flexmember:
@@ -194,6 +195,7 @@ AC_DEFUN([gl_EARLY],
# Code from module strerror-override:
# Code from module strerror_r-posix:
# Code from module string:
# Code from module strings:
# Code from module strnlen:
# Code from module strnlen1:
# Code from module strstr:
@@ -329,6 +331,11 @@ AC_DEFUN([gl_INIT],
fi
gl_DIRENT_MODULE_INDICATOR([fdopendir])
gl_MODULE_INDICATOR([fdopendir])
gl_FUNC_FFS
if test $HAVE_FFS = 0; then
AC_LIBOBJ([ffs])
fi
gl_STRINGS_MODULE_INDICATOR([ffs])
gl_FILE_NAME_CONCAT_LGPL
AC_C_FLEXIBLE_ARRAY_MEMBER
gl_FLOAT_H
@@ -712,6 +719,7 @@ AC_DEFUN([gl_INIT],
dnl For the modules argp, error.
gl_MODULE_INDICATOR([strerror_r-posix])
gl_HEADER_STRING_H
gl_HEADER_STRINGS_H
gl_FUNC_STRNLEN
if test $HAVE_DECL_STRNLEN = 0 || test $REPLACE_STRNLEN = 1; then
AC_LIBOBJ([strnlen])
@@ -990,6 +998,7 @@ AC_DEFUN([gl_FILE_LIST], [
lib/fd-safer-flag.c
lib/fd-safer.c
lib/fdopendir.c
lib/ffs.c
lib/filename.h
lib/filenamecat-lgpl.c
lib/filenamecat.h
@@ -1130,6 +1139,7 @@ AC_DEFUN([gl_FILE_LIST], [
lib/strerror.c
lib/strerror_r.c
lib/string.in.h
lib/strings.in.h
lib/stripslash.c
lib/strnlen.c
lib/strnlen1.c
@@ -1204,6 +1214,7 @@ AC_DEFUN([gl_FILE_LIST], [
m4/fcntl.m4
m4/fcntl_h.m4
m4/fdopendir.m4
m4/ffs.m4
m4/filenamecat.m4
m4/flexmember.m4
m4/float_h.m4
@@ -1306,6 +1317,7 @@ AC_DEFUN([gl_FILE_LIST], [
m4/strerror.m4
m4/strerror_r.m4
m4/string_h.m4
m4/strings_h.m4
m4/strnlen.m4
m4/strstr.m4
m4/strtok_r.m4

View File

@@ -0,0 +1,52 @@
# Configure a replacement for <strings.h>.
# serial 6
# Copyright (C) 2007, 2009-2021 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
AC_DEFUN([gl_HEADER_STRINGS_H],
[
dnl Use AC_REQUIRE here, so that the default behavior below is expanded
dnl once only, before all statements that occur in other macros.
AC_REQUIRE([gl_HEADER_STRINGS_H_BODY])
])
AC_DEFUN([gl_HEADER_STRINGS_H_BODY],
[
AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS])
gl_CHECK_NEXT_HEADERS([strings.h])
if test $ac_cv_header_strings_h = yes; then
HAVE_STRINGS_H=1
else
HAVE_STRINGS_H=0
fi
AC_SUBST([HAVE_STRINGS_H])
dnl Check for declarations of anything we want to poison if the
dnl corresponding gnulib module is not in use.
gl_WARN_ON_USE_PREPARE([[
/* Minix 3.1.8 has a bug: <sys/types.h> must be included before
<strings.h>. */
#include <sys/types.h>
#include <strings.h>
]], [ffs strcasecmp strncasecmp])
])
AC_DEFUN([gl_STRINGS_MODULE_INDICATOR],
[
dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS])
gl_MODULE_INDICATOR_SET_VARIABLE([$1])
])
AC_DEFUN([gl_HEADER_STRINGS_H_DEFAULTS],
[
GNULIB_FFS=0; AC_SUBST([GNULIB_FFS])
dnl Assume proper GNU behavior unless another module says otherwise.
HAVE_FFS=1; AC_SUBST([HAVE_FFS])
HAVE_STRCASECMP=1; AC_SUBST([HAVE_STRCASECMP])
HAVE_DECL_STRNCASECMP=1; AC_SUBST([HAVE_DECL_STRNCASECMP])
])

122
gnulib/import/strings.in.h Normal file
View File

@@ -0,0 +1,122 @@
/* A substitute <strings.h>.
Copyright (C) 2007-2021 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, see <https://www.gnu.org/licenses/>. */
#ifndef _@GUARD_PREFIX@_STRINGS_H
#if __GNUC__ >= 3
@PRAGMA_SYSTEM_HEADER@
#endif
@PRAGMA_COLUMNS@
/* Minix 3.1.8 has a bug: <sys/types.h> must be included before <strings.h>.
But avoid namespace pollution on glibc systems. */
#if defined __minix && !defined __GLIBC__
# include <sys/types.h>
#endif
/* The include_next requires a split double-inclusion guard. */
#if @HAVE_STRINGS_H@
# @INCLUDE_NEXT@ @NEXT_STRINGS_H@
#endif
#ifndef _@GUARD_PREFIX@_STRINGS_H
#define _@GUARD_PREFIX@_STRINGS_H
#if ! @HAVE_DECL_STRNCASECMP@
/* Get size_t. */
# include <stddef.h>
#endif
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
/* The definition of _GL_ARG_NONNULL is copied here. */
/* The definition of _GL_WARN_ON_USE is copied here. */
#ifdef __cplusplus
extern "C" {
#endif
/* Find the index of the least-significant set bit. */
#if @GNULIB_FFS@
# if !@HAVE_FFS@
_GL_FUNCDECL_SYS (ffs, int, (int i));
# endif
_GL_CXXALIAS_SYS (ffs, int, (int i));
_GL_CXXALIASWARN (ffs);
#elif defined GNULIB_POSIXCHECK
# undef ffs
# if HAVE_RAW_DECL_FFS
_GL_WARN_ON_USE (ffs, "ffs is not portable - use the ffs module");
# endif
#endif
/* Compare strings S1 and S2, ignoring case, returning less than, equal to or
greater than zero if S1 is lexicographically less than, equal to or greater
than S2.
Note: This function does not work in multibyte locales. */
#if ! @HAVE_STRCASECMP@
extern int strcasecmp (char const *s1, char const *s2)
_GL_ARG_NONNULL ((1, 2));
#endif
#if defined GNULIB_POSIXCHECK
/* strcasecmp() does not work with multibyte strings:
POSIX says that it operates on "strings", and "string" in POSIX is defined
as a sequence of bytes, not of characters. */
# undef strcasecmp
# if HAVE_RAW_DECL_STRCASECMP
_GL_WARN_ON_USE (strcasecmp, "strcasecmp cannot work correctly on character "
"strings in multibyte locales - "
"use mbscasecmp if you care about "
"internationalization, or use c_strcasecmp , "
"gnulib module c-strcase) if you want a locale "
"independent function");
# endif
#endif
/* Compare no more than N bytes of strings S1 and S2, ignoring case,
returning less than, equal to or greater than zero if S1 is
lexicographically less than, equal to or greater than S2.
Note: This function cannot work correctly in multibyte locales. */
#if ! @HAVE_DECL_STRNCASECMP@
extern int strncasecmp (char const *s1, char const *s2, size_t n)
_GL_ARG_NONNULL ((1, 2));
#endif
#if defined GNULIB_POSIXCHECK
/* strncasecmp() does not work with multibyte strings:
POSIX says that it operates on "strings", and "string" in POSIX is defined
as a sequence of bytes, not of characters. */
# undef strncasecmp
# if HAVE_RAW_DECL_STRNCASECMP
_GL_WARN_ON_USE (strncasecmp, "strncasecmp cannot work correctly on character "
"strings in multibyte locales - "
"use mbsncasecmp or mbspcasecmp if you care about "
"internationalization, or use c_strncasecmp , "
"gnulib module c-strcase) if you want a locale "
"independent function");
# endif
#endif
#ifdef __cplusplus
}
#endif
#endif /* _@GUARD_PREFIX@_STRING_H */
#endif /* _@GUARD_PREFIX@_STRING_H */

View File

@@ -36,6 +36,7 @@ IMPORTED_GNULIB_MODULES="\
dirent \
dirfd \
errno \
ffs \
fnmatch-gnu \
frexpl \
gendocs \