diff options
Diffstat (limited to 'locate')
50 files changed, 8963 insertions, 0 deletions
diff --git a/locate/Makefile.am b/locate/Makefile.am new file mode 100644 index 0000000..a8efb79 --- /dev/null +++ b/locate/Makefile.am @@ -0,0 +1,78 @@ +# The default database to build and search. +AUTOMAKE_OPTIONS = std-options +AM_CFLAGS = $(WARN_CFLAGS) +LOCATE_DB = $(localstatedir)/locatedb +localedir = $(datadir)/locale + +AM_INSTALLCHECK_STD_OPTIONS_EXEMPT = \ + frcode$(EXEEXT) \ + code$(EXEEXT) \ + bigram$(EXEEXT) +bin_PROGRAMS = locate +libexec_PROGRAMS = frcode code bigram +bin_SCRIPTS = updatedb +man_MANS = locate.1 updatedb.1 locatedb.5 +BUILT_SOURCES = dblocation.texi +EXTRA_DIST = locatedb.h updatedb.sh $(man_MANS) +CLEANFILES = updatedb + +DISTCLEANFILES = dblocation.texi +locate_SOURCES = locate.c word_io.c +code_SOURCES = code.c word_io.c +nodist_locate_TEXINFOS = dblocation.texi + +AM_CPPFLAGS = -I$(top_srcdir)/lib -I../gl/lib -I$(top_srcdir)/gl/lib -I../intl -DLOCATE_DB=\"$(LOCATE_DB)\" -DLOCALEDIR=\"$(localedir)\" + +LDADD = ../lib/libfind.a ../gl/lib/libgnulib.a $(LIB_CLOSE) $(LIBINTL) + +$(PROGRAMS) $(LIBPROGRAMS): ../lib/libfind.a ../gl/lib/libgnulib.a + +# We generate updatedb from the Makefile rather than with AC_OUTPUT in +# configure.ac in order to allow the user better control of what goes +# into it by setting Makefile variables. +updatedb: updatedb.sh Makefile + rm -f $@ + find=`echo find|sed '$(transform)'`; \ + frcode=`echo frcode|sed '$(transform)'`; \ + bigram=`echo bigram|sed '$(transform)'`; \ + code=`echo code|sed '$(transform)'`; \ + sed \ + -e "s,@""bindir""@,$(bindir)," \ + -e "s,@""libexecdir""@,$(libexecdir)," \ + -e "s,@""LOCATE_DB""@,$(LOCATE_DB)," \ + -e "s,@""VERSION""@,$(VERSION)," \ + -e "s,@""PACKAGE_NAME""@,$(PACKAGE_NAME)," \ + -e "s,@""find""@,$${find}," \ + -e "s,@""frcode""@,$${frcode}," \ + -e "s,@""bigram""@,$${bigram}," \ + -e "s,@""code""@,$${code}," \ + -e "s,@""SORT""@,$(SORT)," \ + -e "s,@""SORT_SUPPORTS_Z""@,$(SORT_SUPPORTS_Z)," \ + $(srcdir)/updatedb.sh > $@ + chmod +x $@ + +install-data-hook: + $(top_srcdir)/build-aux/mkinstalldirs $(DESTDIR)$(localstatedir) + +dblocation.texi: + echo '@set LOCATE_DB $(LOCATE_DB)' > $@.tmp + if test -f $@ && cmp $@.tmp $@ >/dev/null ; then \ + rm $@.tmp ; \ + else \ + mv $@.tmp $@ ; \ + fi +.PHONY: dblocation.texi + +SUBDIRS = . testsuite + +dist-hook: findutils-check-manpages + +findutils-check-manpages: + $(top_srcdir)/build-aux/man-lint.sh $(srcdir) $(man_MANS) + +# Clean coverage files generated by running binaries built with +# gcc -fprofile-arcs -ftest-coverage +coverage-clean: + $(RM) *.gcno *.gcda *.gcov *.lcov + +clean-local: coverage-clean diff --git a/locate/Makefile.in b/locate/Makefile.in new file mode 100644 index 0000000..bb12055 --- /dev/null +++ b/locate/Makefile.in @@ -0,0 +1,2385 @@ +# Makefile.in generated by automake 1.14.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = locate$(EXEEXT) +libexec_PROGRAMS = frcode$(EXEEXT) code$(EXEEXT) bigram$(EXEEXT) +subdir = locate +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/build-aux/mkinstalldirs \ + $(top_srcdir)/build-aux/depcomp +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/findlib.m4 \ + $(top_srcdir)/m4/mkinstalldirs.m4 $(top_srcdir)/m4/noreturn.m4 \ + $(top_srcdir)/m4/nullsort.m4 $(top_srcdir)/m4/withfts.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/absolute-header.m4 \ + $(top_srcdir)/gl/m4/alloca.m4 \ + $(top_srcdir)/gl/m4/arpa_inet_h.m4 \ + $(top_srcdir)/gl/m4/assert.m4 $(top_srcdir)/gl/m4/bison.m4 \ + $(top_srcdir)/gl/m4/btowc.m4 $(top_srcdir)/gl/m4/byteswap.m4 \ + $(top_srcdir)/gl/m4/canonicalize.m4 \ + $(top_srcdir)/gl/m4/chdir-long.m4 \ + $(top_srcdir)/gl/m4/check-math-lib.m4 \ + $(top_srcdir)/gl/m4/clock_time.m4 \ + $(top_srcdir)/gl/m4/close-stream.m4 \ + $(top_srcdir)/gl/m4/close.m4 $(top_srcdir)/gl/m4/closedir.m4 \ + $(top_srcdir)/gl/m4/closein.m4 $(top_srcdir)/gl/m4/closeout.m4 \ + $(top_srcdir)/gl/m4/codeset.m4 \ + $(top_srcdir)/gl/m4/configmake.m4 $(top_srcdir)/gl/m4/ctype.m4 \ + $(top_srcdir)/gl/m4/cycle-check.m4 \ + $(top_srcdir)/gl/m4/d-ino.m4 $(top_srcdir)/gl/m4/d-type.m4 \ + $(top_srcdir)/gl/m4/dirent-safer.m4 \ + $(top_srcdir)/gl/m4/dirent_h.m4 $(top_srcdir)/gl/m4/dirfd.m4 \ + $(top_srcdir)/gl/m4/dirname.m4 \ + $(top_srcdir)/gl/m4/double-slash-root.m4 \ + $(top_srcdir)/gl/m4/dup.m4 $(top_srcdir)/gl/m4/dup2.m4 \ + $(top_srcdir)/gl/m4/eealloc.m4 $(top_srcdir)/gl/m4/environ.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/euidaccess.m4 \ + $(top_srcdir)/gl/m4/exponentd.m4 \ + $(top_srcdir)/gl/m4/exponentf.m4 \ + $(top_srcdir)/gl/m4/exponentl.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/extern-inline.m4 \ + $(top_srcdir)/gl/m4/faccessat.m4 $(top_srcdir)/gl/m4/fchdir.m4 \ + $(top_srcdir)/gl/m4/fcntl-o.m4 \ + $(top_srcdir)/gl/m4/fcntl-safer.m4 \ + $(top_srcdir)/gl/m4/fcntl.m4 $(top_srcdir)/gl/m4/fcntl_h.m4 \ + $(top_srcdir)/gl/m4/fdopen.m4 $(top_srcdir)/gl/m4/fdopendir.m4 \ + $(top_srcdir)/gl/m4/fflush.m4 \ + $(top_srcdir)/gl/m4/fileblocks.m4 \ + $(top_srcdir)/gl/m4/filemode.m4 \ + $(top_srcdir)/gl/m4/filenamecat.m4 \ + $(top_srcdir)/gl/m4/flexmember.m4 \ + $(top_srcdir)/gl/m4/float_h.m4 $(top_srcdir)/gl/m4/fnmatch.m4 \ + $(top_srcdir)/gl/m4/fopen.m4 $(top_srcdir)/gl/m4/fpending.m4 \ + $(top_srcdir)/gl/m4/fpieee.m4 $(top_srcdir)/gl/m4/fpurge.m4 \ + $(top_srcdir)/gl/m4/freadahead.m4 \ + $(top_srcdir)/gl/m4/freading.m4 $(top_srcdir)/gl/m4/fseek.m4 \ + $(top_srcdir)/gl/m4/fseeko.m4 $(top_srcdir)/gl/m4/fstat.m4 \ + $(top_srcdir)/gl/m4/fstatat.m4 \ + $(top_srcdir)/gl/m4/fstypename.m4 $(top_srcdir)/gl/m4/ftell.m4 \ + $(top_srcdir)/gl/m4/ftello.m4 $(top_srcdir)/gl/m4/ftruncate.m4 \ + $(top_srcdir)/gl/m4/fts.m4 \ + $(top_srcdir)/gl/m4/getcwd-abort-bug.m4 \ + $(top_srcdir)/gl/m4/getcwd-path-max.m4 \ + $(top_srcdir)/gl/m4/getcwd.m4 $(top_srcdir)/gl/m4/getdelim.m4 \ + $(top_srcdir)/gl/m4/getdtablesize.m4 \ + $(top_srcdir)/gl/m4/getgroups.m4 \ + $(top_srcdir)/gl/m4/gethostname.m4 \ + $(top_srcdir)/gl/m4/getline.m4 $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/getpagesize.m4 \ + $(top_srcdir)/gl/m4/gettext.m4 $(top_srcdir)/gl/m4/gettime.m4 \ + $(top_srcdir)/gl/m4/gettimeofday.m4 \ + $(top_srcdir)/gl/m4/glibc21.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/group-member.m4 \ + $(top_srcdir)/gl/m4/human.m4 $(top_srcdir)/gl/m4/i-ring.m4 \ + $(top_srcdir)/gl/m4/iconv.m4 $(top_srcdir)/gl/m4/idcache.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/inet_pton.m4 $(top_srcdir)/gl/m4/inline.m4 \ + $(top_srcdir)/gl/m4/intlmacosx.m4 \ + $(top_srcdir)/gl/m4/intmax_t.m4 \ + $(top_srcdir)/gl/m4/inttostr.m4 \ + $(top_srcdir)/gl/m4/inttypes-pri.m4 \ + $(top_srcdir)/gl/m4/inttypes.m4 \ + $(top_srcdir)/gl/m4/inttypes_h.m4 $(top_srcdir)/gl/m4/ioctl.m4 \ + $(top_srcdir)/gl/m4/isblank.m4 $(top_srcdir)/gl/m4/isfinite.m4 \ + $(top_srcdir)/gl/m4/isinf.m4 $(top_srcdir)/gl/m4/isnand.m4 \ + $(top_srcdir)/gl/m4/isnanf.m4 $(top_srcdir)/gl/m4/isnanl.m4 \ + $(top_srcdir)/gl/m4/iswblank.m4 \ + $(top_srcdir)/gl/m4/langinfo_h.m4 \ + $(top_srcdir)/gl/m4/largefile.m4 \ + $(top_srcdir)/gl/m4/lcmessage.m4 $(top_srcdir)/gl/m4/lib-ld.m4 \ + $(top_srcdir)/gl/m4/lib-link.m4 \ + $(top_srcdir)/gl/m4/lib-prefix.m4 \ + $(top_srcdir)/gl/m4/libunistring-base.m4 \ + $(top_srcdir)/gl/m4/localcharset.m4 \ + $(top_srcdir)/gl/m4/locale-fr.m4 \ + $(top_srcdir)/gl/m4/locale-ja.m4 \ + $(top_srcdir)/gl/m4/locale-tr.m4 \ + $(top_srcdir)/gl/m4/locale-zh.m4 \ + $(top_srcdir)/gl/m4/locale_h.m4 \ + $(top_srcdir)/gl/m4/localeconv.m4 \ + $(top_srcdir)/gl/m4/localename.m4 $(top_srcdir)/gl/m4/lock.m4 \ + $(top_srcdir)/gl/m4/longlong.m4 \ + $(top_srcdir)/gl/m4/ls-mntd-fs.m4 $(top_srcdir)/gl/m4/lseek.m4 \ + $(top_srcdir)/gl/m4/lstat.m4 $(top_srcdir)/gl/m4/malloc.m4 \ + $(top_srcdir)/gl/m4/malloca.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/math_h.m4 $(top_srcdir)/gl/m4/mathfunc.m4 \ + $(top_srcdir)/gl/m4/mbchar.m4 $(top_srcdir)/gl/m4/mbiter.m4 \ + $(top_srcdir)/gl/m4/mbrtowc.m4 $(top_srcdir)/gl/m4/mbsinit.m4 \ + $(top_srcdir)/gl/m4/mbslen.m4 $(top_srcdir)/gl/m4/mbsrtowcs.m4 \ + $(top_srcdir)/gl/m4/mbstate_t.m4 \ + $(top_srcdir)/gl/m4/mbswidth.m4 $(top_srcdir)/gl/m4/mbtowc.m4 \ + $(top_srcdir)/gl/m4/memchr.m4 $(top_srcdir)/gl/m4/mempcpy.m4 \ + $(top_srcdir)/gl/m4/memrchr.m4 $(top_srcdir)/gl/m4/mktime.m4 \ + $(top_srcdir)/gl/m4/mmap-anon.m4 $(top_srcdir)/gl/m4/mode_t.m4 \ + $(top_srcdir)/gl/m4/modechange.m4 $(top_srcdir)/gl/m4/modf.m4 \ + $(top_srcdir)/gl/m4/mountlist.m4 \ + $(top_srcdir)/gl/m4/msvc-inval.m4 \ + $(top_srcdir)/gl/m4/msvc-nothrow.m4 \ + $(top_srcdir)/gl/m4/multiarch.m4 \ + $(top_srcdir)/gl/m4/nanosleep.m4 \ + $(top_srcdir)/gl/m4/netinet_in_h.m4 \ + $(top_srcdir)/gl/m4/nl_langinfo.m4 $(top_srcdir)/gl/m4/nls.m4 \ + $(top_srcdir)/gl/m4/nocrash.m4 $(top_srcdir)/gl/m4/off_t.m4 \ + $(top_srcdir)/gl/m4/onceonly.m4 $(top_srcdir)/gl/m4/open.m4 \ + $(top_srcdir)/gl/m4/openat.m4 $(top_srcdir)/gl/m4/opendir.m4 \ + $(top_srcdir)/gl/m4/parse-datetime.m4 \ + $(top_srcdir)/gl/m4/pathmax.m4 $(top_srcdir)/gl/m4/perror.m4 \ + $(top_srcdir)/gl/m4/pipe.m4 $(top_srcdir)/gl/m4/po.m4 \ + $(top_srcdir)/gl/m4/printf.m4 $(top_srcdir)/gl/m4/priv-set.m4 \ + $(top_srcdir)/gl/m4/progtest.m4 $(top_srcdir)/gl/m4/putenv.m4 \ + $(top_srcdir)/gl/m4/quote.m4 $(top_srcdir)/gl/m4/quotearg.m4 \ + $(top_srcdir)/gl/m4/raise.m4 $(top_srcdir)/gl/m4/read.m4 \ + $(top_srcdir)/gl/m4/readdir.m4 $(top_srcdir)/gl/m4/readlink.m4 \ + $(top_srcdir)/gl/m4/readlinkat.m4 \ + $(top_srcdir)/gl/m4/realloc.m4 $(top_srcdir)/gl/m4/regex.m4 \ + $(top_srcdir)/gl/m4/rewinddir.m4 $(top_srcdir)/gl/m4/rmdir.m4 \ + $(top_srcdir)/gl/m4/rpmatch.m4 \ + $(top_srcdir)/gl/m4/safe-read.m4 $(top_srcdir)/gl/m4/same.m4 \ + $(top_srcdir)/gl/m4/save-cwd.m4 $(top_srcdir)/gl/m4/savedir.m4 \ + $(top_srcdir)/gl/m4/select.m4 \ + $(top_srcdir)/gl/m4/selinux-context-h.m4 \ + $(top_srcdir)/gl/m4/selinux-selinux-h.m4 \ + $(top_srcdir)/gl/m4/setenv.m4 $(top_srcdir)/gl/m4/setlocale.m4 \ + $(top_srcdir)/gl/m4/sigaction.m4 \ + $(top_srcdir)/gl/m4/signal_h.m4 \ + $(top_srcdir)/gl/m4/signalblocking.m4 \ + $(top_srcdir)/gl/m4/size_max.m4 $(top_srcdir)/gl/m4/sleep.m4 \ + $(top_srcdir)/gl/m4/snprintf.m4 \ + $(top_srcdir)/gl/m4/socketlib.m4 \ + $(top_srcdir)/gl/m4/sockets.m4 $(top_srcdir)/gl/m4/socklen.m4 \ + $(top_srcdir)/gl/m4/sockpfaf.m4 $(top_srcdir)/gl/m4/ssize_t.m4 \ + $(top_srcdir)/gl/m4/st_dm_mode.m4 \ + $(top_srcdir)/gl/m4/stat-size.m4 \ + $(top_srcdir)/gl/m4/stat-time.m4 $(top_srcdir)/gl/m4/stat.m4 \ + $(top_srcdir)/gl/m4/stdalign.m4 $(top_srcdir)/gl/m4/stdarg.m4 \ + $(top_srcdir)/gl/m4/stdbool.m4 $(top_srcdir)/gl/m4/stddef_h.m4 \ + $(top_srcdir)/gl/m4/stdint.m4 $(top_srcdir)/gl/m4/stdint_h.m4 \ + $(top_srcdir)/gl/m4/stdio_h.m4 $(top_srcdir)/gl/m4/stdlib_h.m4 \ + $(top_srcdir)/gl/m4/stpcpy.m4 $(top_srcdir)/gl/m4/strcase.m4 \ + $(top_srcdir)/gl/m4/strcasestr.m4 \ + $(top_srcdir)/gl/m4/strdup.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/strerror_r.m4 \ + $(top_srcdir)/gl/m4/strftime.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/strings_h.m4 \ + $(top_srcdir)/gl/m4/strndup.m4 $(top_srcdir)/gl/m4/strnlen.m4 \ + $(top_srcdir)/gl/m4/strstr.m4 $(top_srcdir)/gl/m4/strtoull.m4 \ + $(top_srcdir)/gl/m4/strtoumax.m4 \ + $(top_srcdir)/gl/m4/symlink.m4 \ + $(top_srcdir)/gl/m4/symlinkat.m4 \ + $(top_srcdir)/gl/m4/sys_ioctl_h.m4 \ + $(top_srcdir)/gl/m4/sys_select_h.m4 \ + $(top_srcdir)/gl/m4/sys_socket_h.m4 \ + $(top_srcdir)/gl/m4/sys_stat_h.m4 \ + $(top_srcdir)/gl/m4/sys_time_h.m4 \ + $(top_srcdir)/gl/m4/sys_types_h.m4 \ + $(top_srcdir)/gl/m4/sys_uio_h.m4 \ + $(top_srcdir)/gl/m4/sys_utsname_h.m4 \ + $(top_srcdir)/gl/m4/sys_wait_h.m4 \ + $(top_srcdir)/gl/m4/thread.m4 $(top_srcdir)/gl/m4/threadlib.m4 \ + $(top_srcdir)/gl/m4/time_h.m4 $(top_srcdir)/gl/m4/time_r.m4 \ + $(top_srcdir)/gl/m4/time_rz.m4 $(top_srcdir)/gl/m4/timegm.m4 \ + $(top_srcdir)/gl/m4/timespec.m4 \ + $(top_srcdir)/gl/m4/tm_gmtoff.m4 $(top_srcdir)/gl/m4/trunc.m4 \ + $(top_srcdir)/gl/m4/uname.m4 $(top_srcdir)/gl/m4/ungetc.m4 \ + $(top_srcdir)/gl/m4/unistd-safer.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 $(top_srcdir)/gl/m4/unlink.m4 \ + $(top_srcdir)/gl/m4/unlinkat.m4 \ + $(top_srcdir)/gl/m4/unlinkdir.m4 \ + $(top_srcdir)/gl/m4/vasnprintf.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warn-on-use.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 $(top_srcdir)/gl/m4/wchar_h.m4 \ + $(top_srcdir)/gl/m4/wchar_t.m4 $(top_srcdir)/gl/m4/wcrtomb.m4 \ + $(top_srcdir)/gl/m4/wctob.m4 $(top_srcdir)/gl/m4/wctomb.m4 \ + $(top_srcdir)/gl/m4/wctype_h.m4 $(top_srcdir)/gl/m4/wcwidth.m4 \ + $(top_srcdir)/gl/m4/wint_t.m4 $(top_srcdir)/gl/m4/xalloc.m4 \ + $(top_srcdir)/gl/m4/xgetcwd.m4 $(top_srcdir)/gl/m4/xsize.m4 \ + $(top_srcdir)/gl/m4/xstrndup.m4 $(top_srcdir)/gl/m4/xstrtod.m4 \ + $(top_srcdir)/gl/m4/xstrtol.m4 $(top_srcdir)/gl/m4/yesno.m4 \ + $(top_srcdir)/gl/m4/yield.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libexecdir)" \ + "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \ + "$(DESTDIR)$(man5dir)" +PROGRAMS = $(bin_PROGRAMS) $(libexec_PROGRAMS) +bigram_SOURCES = bigram.c +bigram_OBJECTS = bigram.$(OBJEXT) +bigram_LDADD = $(LDADD) +am__DEPENDENCIES_1 = +bigram_DEPENDENCIES = ../lib/libfind.a ../gl/lib/libgnulib.a \ + $(am__DEPENDENCIES_1) +am_code_OBJECTS = code.$(OBJEXT) word_io.$(OBJEXT) +code_OBJECTS = $(am_code_OBJECTS) +code_LDADD = $(LDADD) +code_DEPENDENCIES = ../lib/libfind.a ../gl/lib/libgnulib.a \ + $(am__DEPENDENCIES_1) +frcode_SOURCES = frcode.c +frcode_OBJECTS = frcode.$(OBJEXT) +frcode_LDADD = $(LDADD) +frcode_DEPENDENCIES = ../lib/libfind.a ../gl/lib/libgnulib.a \ + $(am__DEPENDENCIES_1) +am_locate_OBJECTS = locate.$(OBJEXT) word_io.$(OBJEXT) +locate_OBJECTS = $(am_locate_OBJECTS) +locate_LDADD = $(LDADD) +locate_DEPENDENCIES = ../lib/libfind.a ../gl/lib/libgnulib.a \ + $(am__DEPENDENCIES_1) +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +SCRIPTS = $(bin_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = bigram.c $(code_SOURCES) frcode.c $(locate_SOURCES) +DIST_SOURCES = bigram.c $(code_SOURCES) frcode.c $(locate_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +man1dir = $(mandir)/man1 +man5dir = $(mandir)/man5 +NROFF = nroff +MANS = $(man_MANS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +pkglibexecdir = @pkglibexecdir@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALLOCA_H = @ALLOCA_H@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ +AR = @AR@ +ARFLAGS = @ARFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AUXDIR = @AUXDIR@ +AWK = @AWK@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ +BYTESWAP_H = @BYTESWAP_H@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_INCLUDE = @CONFIG_INCLUDE@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFAULT_ARG_SIZE = @DEFAULT_ARG_SIZE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +EXEEXT = @EXEEXT@ +FAKETIME = @FAKETIME@ +FINDLIBOBJS = @FINDLIBOBJS@ +FINDLIBS = @FINDLIBS@ +FLOAT_H = @FLOAT_H@ +FNMATCH_H = @FNMATCH_H@ +GETHOSTNAME_LIB = @GETHOSTNAME_LIB@ +GETOPT_H = @GETOPT_H@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_ACCEPT = @GNULIB_ACCEPT@ +GNULIB_ACCEPT4 = @GNULIB_ACCEPT4@ +GNULIB_ACOSF = @GNULIB_ACOSF@ +GNULIB_ACOSL = @GNULIB_ACOSL@ +GNULIB_ALPHASORT = @GNULIB_ALPHASORT@ +GNULIB_ASINF = @GNULIB_ASINF@ +GNULIB_ASINL = @GNULIB_ASINL@ +GNULIB_ATAN2F = @GNULIB_ATAN2F@ +GNULIB_ATANF = @GNULIB_ATANF@ +GNULIB_ATANL = @GNULIB_ATANL@ +GNULIB_ATOLL = @GNULIB_ATOLL@ +GNULIB_BIND = @GNULIB_BIND@ +GNULIB_BTOWC = @GNULIB_BTOWC@ +GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ +GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ +GNULIB_CBRT = @GNULIB_CBRT@ +GNULIB_CBRTF = @GNULIB_CBRTF@ +GNULIB_CBRTL = @GNULIB_CBRTL@ +GNULIB_CEIL = @GNULIB_CEIL@ +GNULIB_CEILF = @GNULIB_CEILF@ +GNULIB_CEILL = @GNULIB_CEILL@ +GNULIB_CHDIR = @GNULIB_CHDIR@ +GNULIB_CHOWN = @GNULIB_CHOWN@ +GNULIB_CLOSE = @GNULIB_CLOSE@ +GNULIB_CLOSEDIR = @GNULIB_CLOSEDIR@ +GNULIB_CONNECT = @GNULIB_CONNECT@ +GNULIB_COPYSIGN = @GNULIB_COPYSIGN@ +GNULIB_COPYSIGNF = @GNULIB_COPYSIGNF@ +GNULIB_COPYSIGNL = @GNULIB_COPYSIGNL@ +GNULIB_COSF = @GNULIB_COSF@ +GNULIB_COSHF = @GNULIB_COSHF@ +GNULIB_COSL = @GNULIB_COSL@ +GNULIB_DIRFD = @GNULIB_DIRFD@ +GNULIB_DPRINTF = @GNULIB_DPRINTF@ +GNULIB_DUP = @GNULIB_DUP@ +GNULIB_DUP2 = @GNULIB_DUP2@ +GNULIB_DUP3 = @GNULIB_DUP3@ +GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@ +GNULIB_ENVIRON = @GNULIB_ENVIRON@ +GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_EXP2 = @GNULIB_EXP2@ +GNULIB_EXP2F = @GNULIB_EXP2F@ +GNULIB_EXP2L = @GNULIB_EXP2L@ +GNULIB_EXPF = @GNULIB_EXPF@ +GNULIB_EXPL = @GNULIB_EXPL@ +GNULIB_EXPM1 = @GNULIB_EXPM1@ +GNULIB_EXPM1F = @GNULIB_EXPM1F@ +GNULIB_EXPM1L = @GNULIB_EXPM1L@ +GNULIB_FABSF = @GNULIB_FABSF@ +GNULIB_FABSL = @GNULIB_FABSL@ +GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ +GNULIB_FCHDIR = @GNULIB_FCHDIR@ +GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ +GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ +GNULIB_FCLOSE = @GNULIB_FCLOSE@ +GNULIB_FCNTL = @GNULIB_FCNTL@ +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@ +GNULIB_FGETS = @GNULIB_FGETS@ +GNULIB_FLOOR = @GNULIB_FLOOR@ +GNULIB_FLOORF = @GNULIB_FLOORF@ +GNULIB_FLOORL = @GNULIB_FLOORL@ +GNULIB_FMA = @GNULIB_FMA@ +GNULIB_FMAF = @GNULIB_FMAF@ +GNULIB_FMAL = @GNULIB_FMAL@ +GNULIB_FMOD = @GNULIB_FMOD@ +GNULIB_FMODF = @GNULIB_FMODF@ +GNULIB_FMODL = @GNULIB_FMODL@ +GNULIB_FOPEN = @GNULIB_FOPEN@ +GNULIB_FPRINTF = @GNULIB_FPRINTF@ +GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ +GNULIB_FPURGE = @GNULIB_FPURGE@ +GNULIB_FPUTC = @GNULIB_FPUTC@ +GNULIB_FPUTS = @GNULIB_FPUTS@ +GNULIB_FREAD = @GNULIB_FREAD@ +GNULIB_FREOPEN = @GNULIB_FREOPEN@ +GNULIB_FREXP = @GNULIB_FREXP@ +GNULIB_FREXPF = @GNULIB_FREXPF@ +GNULIB_FREXPL = @GNULIB_FREXPL@ +GNULIB_FSCANF = @GNULIB_FSCANF@ +GNULIB_FSEEK = @GNULIB_FSEEK@ +GNULIB_FSEEKO = @GNULIB_FSEEKO@ +GNULIB_FSTAT = @GNULIB_FSTAT@ +GNULIB_FSTATAT = @GNULIB_FSTATAT@ +GNULIB_FSYNC = @GNULIB_FSYNC@ +GNULIB_FTELL = @GNULIB_FTELL@ +GNULIB_FTELLO = @GNULIB_FTELLO@ +GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ +GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ +GNULIB_FWRITE = @GNULIB_FWRITE@ +GNULIB_GETC = @GNULIB_GETC@ +GNULIB_GETCHAR = @GNULIB_GETCHAR@ +GNULIB_GETCWD = @GNULIB_GETCWD@ +GNULIB_GETDELIM = @GNULIB_GETDELIM@ +GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ +GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ +GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ +GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ +GNULIB_GETLINE = @GNULIB_GETLINE@ +GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ +GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ +GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ +GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ +GNULIB_GETPEERNAME = @GNULIB_GETPEERNAME@ +GNULIB_GETSOCKNAME = @GNULIB_GETSOCKNAME@ +GNULIB_GETSOCKOPT = @GNULIB_GETSOCKOPT@ +GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ +GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ +GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ +GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ +GNULIB_GRANTPT = @GNULIB_GRANTPT@ +GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ +GNULIB_HYPOT = @GNULIB_HYPOT@ +GNULIB_HYPOTF = @GNULIB_HYPOTF@ +GNULIB_HYPOTL = @GNULIB_HYPOTL@ +GNULIB_ILOGB = @GNULIB_ILOGB@ +GNULIB_ILOGBF = @GNULIB_ILOGBF@ +GNULIB_ILOGBL = @GNULIB_ILOGBL@ +GNULIB_IMAXABS = @GNULIB_IMAXABS@ +GNULIB_IMAXDIV = @GNULIB_IMAXDIV@ +GNULIB_INET_NTOP = @GNULIB_INET_NTOP@ +GNULIB_INET_PTON = @GNULIB_INET_PTON@ +GNULIB_IOCTL = @GNULIB_IOCTL@ +GNULIB_ISATTY = @GNULIB_ISATTY@ +GNULIB_ISBLANK = @GNULIB_ISBLANK@ +GNULIB_ISFINITE = @GNULIB_ISFINITE@ +GNULIB_ISINF = @GNULIB_ISINF@ +GNULIB_ISNAN = @GNULIB_ISNAN@ +GNULIB_ISNAND = @GNULIB_ISNAND@ +GNULIB_ISNANF = @GNULIB_ISNANF@ +GNULIB_ISNANL = @GNULIB_ISNANL@ +GNULIB_ISWBLANK = @GNULIB_ISWBLANK@ +GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@ +GNULIB_LCHMOD = @GNULIB_LCHMOD@ +GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LDEXPF = @GNULIB_LDEXPF@ +GNULIB_LDEXPL = @GNULIB_LDEXPL@ +GNULIB_LINK = @GNULIB_LINK@ +GNULIB_LINKAT = @GNULIB_LINKAT@ +GNULIB_LISTEN = @GNULIB_LISTEN@ +GNULIB_LOCALECONV = @GNULIB_LOCALECONV@ +GNULIB_LOG = @GNULIB_LOG@ +GNULIB_LOG10 = @GNULIB_LOG10@ +GNULIB_LOG10F = @GNULIB_LOG10F@ +GNULIB_LOG10L = @GNULIB_LOG10L@ +GNULIB_LOG1P = @GNULIB_LOG1P@ +GNULIB_LOG1PF = @GNULIB_LOG1PF@ +GNULIB_LOG1PL = @GNULIB_LOG1PL@ +GNULIB_LOG2 = @GNULIB_LOG2@ +GNULIB_LOG2F = @GNULIB_LOG2F@ +GNULIB_LOG2L = @GNULIB_LOG2L@ +GNULIB_LOGB = @GNULIB_LOGB@ +GNULIB_LOGBF = @GNULIB_LOGBF@ +GNULIB_LOGBL = @GNULIB_LOGBL@ +GNULIB_LOGF = @GNULIB_LOGF@ +GNULIB_LOGL = @GNULIB_LOGL@ +GNULIB_LSEEK = @GNULIB_LSEEK@ +GNULIB_LSTAT = @GNULIB_LSTAT@ +GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ +GNULIB_MBRLEN = @GNULIB_MBRLEN@ +GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ +GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ +GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ +GNULIB_MBSCHR = @GNULIB_MBSCHR@ +GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ +GNULIB_MBSINIT = @GNULIB_MBSINIT@ +GNULIB_MBSLEN = @GNULIB_MBSLEN@ +GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ +GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ +GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ +GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ +GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ +GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ +GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ +GNULIB_MBSSEP = @GNULIB_MBSSEP@ +GNULIB_MBSSPN = @GNULIB_MBSSPN@ +GNULIB_MBSSTR = @GNULIB_MBSSTR@ +GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ +GNULIB_MBTOWC = @GNULIB_MBTOWC@ +GNULIB_MEMCHR = @GNULIB_MEMCHR@ +GNULIB_MEMMEM = @GNULIB_MEMMEM@ +GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ +GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ +GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ +GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ +GNULIB_MKFIFO = @GNULIB_MKFIFO@ +GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ +GNULIB_MKNOD = @GNULIB_MKNOD@ +GNULIB_MKNODAT = @GNULIB_MKNODAT@ +GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ +GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ +GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ +GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ +GNULIB_MKTIME = @GNULIB_MKTIME@ +GNULIB_MODF = @GNULIB_MODF@ +GNULIB_MODFF = @GNULIB_MODFF@ +GNULIB_MODFL = @GNULIB_MODFL@ +GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ +GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@ +GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@ +GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ +GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ +GNULIB_OPEN = @GNULIB_OPEN@ +GNULIB_OPENAT = @GNULIB_OPENAT@ +GNULIB_OPENDIR = @GNULIB_OPENDIR@ +GNULIB_PCLOSE = @GNULIB_PCLOSE@ +GNULIB_PERROR = @GNULIB_PERROR@ +GNULIB_PIPE = @GNULIB_PIPE@ +GNULIB_PIPE2 = @GNULIB_PIPE2@ +GNULIB_POPEN = @GNULIB_POPEN@ +GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ +GNULIB_POWF = @GNULIB_POWF@ +GNULIB_PREAD = @GNULIB_PREAD@ +GNULIB_PRINTF = @GNULIB_PRINTF@ +GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ +GNULIB_PSELECT = @GNULIB_PSELECT@ +GNULIB_PTHREAD_SIGMASK = @GNULIB_PTHREAD_SIGMASK@ +GNULIB_PTSNAME = @GNULIB_PTSNAME@ +GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ +GNULIB_PUTC = @GNULIB_PUTC@ +GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ +GNULIB_PUTENV = @GNULIB_PUTENV@ +GNULIB_PUTS = @GNULIB_PUTS@ +GNULIB_PWRITE = @GNULIB_PWRITE@ +GNULIB_QSORT_R = @GNULIB_QSORT_R@ +GNULIB_RAISE = @GNULIB_RAISE@ +GNULIB_RANDOM = @GNULIB_RANDOM@ +GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ +GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ +GNULIB_READ = @GNULIB_READ@ +GNULIB_READDIR = @GNULIB_READDIR@ +GNULIB_READLINK = @GNULIB_READLINK@ +GNULIB_READLINKAT = @GNULIB_READLINKAT@ +GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ +GNULIB_REALPATH = @GNULIB_REALPATH@ +GNULIB_RECV = @GNULIB_RECV@ +GNULIB_RECVFROM = @GNULIB_RECVFROM@ +GNULIB_REMAINDER = @GNULIB_REMAINDER@ +GNULIB_REMAINDERF = @GNULIB_REMAINDERF@ +GNULIB_REMAINDERL = @GNULIB_REMAINDERL@ +GNULIB_REMOVE = @GNULIB_REMOVE@ +GNULIB_RENAME = @GNULIB_RENAME@ +GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ +GNULIB_REWINDDIR = @GNULIB_REWINDDIR@ +GNULIB_RINT = @GNULIB_RINT@ +GNULIB_RINTF = @GNULIB_RINTF@ +GNULIB_RINTL = @GNULIB_RINTL@ +GNULIB_RMDIR = @GNULIB_RMDIR@ +GNULIB_ROUND = @GNULIB_ROUND@ +GNULIB_ROUNDF = @GNULIB_ROUNDF@ +GNULIB_ROUNDL = @GNULIB_ROUNDL@ +GNULIB_RPMATCH = @GNULIB_RPMATCH@ +GNULIB_SCANDIR = @GNULIB_SCANDIR@ +GNULIB_SCANF = @GNULIB_SCANF@ +GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ +GNULIB_SELECT = @GNULIB_SELECT@ +GNULIB_SEND = @GNULIB_SEND@ +GNULIB_SENDTO = @GNULIB_SENDTO@ +GNULIB_SETENV = @GNULIB_SETENV@ +GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ +GNULIB_SETLOCALE = @GNULIB_SETLOCALE@ +GNULIB_SETSOCKOPT = @GNULIB_SETSOCKOPT@ +GNULIB_SHUTDOWN = @GNULIB_SHUTDOWN@ +GNULIB_SIGACTION = @GNULIB_SIGACTION@ +GNULIB_SIGNAL_H_SIGPIPE = @GNULIB_SIGNAL_H_SIGPIPE@ +GNULIB_SIGNBIT = @GNULIB_SIGNBIT@ +GNULIB_SIGPROCMASK = @GNULIB_SIGPROCMASK@ +GNULIB_SINF = @GNULIB_SINF@ +GNULIB_SINHF = @GNULIB_SINHF@ +GNULIB_SINL = @GNULIB_SINL@ +GNULIB_SLEEP = @GNULIB_SLEEP@ +GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ +GNULIB_SOCKET = @GNULIB_SOCKET@ +GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ +GNULIB_SQRTF = @GNULIB_SQRTF@ +GNULIB_SQRTL = @GNULIB_SQRTL@ +GNULIB_STAT = @GNULIB_STAT@ +GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ +GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ +GNULIB_STPCPY = @GNULIB_STPCPY@ +GNULIB_STPNCPY = @GNULIB_STPNCPY@ +GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ +GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ +GNULIB_STRDUP = @GNULIB_STRDUP@ +GNULIB_STRERROR = @GNULIB_STRERROR@ +GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ +GNULIB_STRNCAT = @GNULIB_STRNCAT@ +GNULIB_STRNDUP = @GNULIB_STRNDUP@ +GNULIB_STRNLEN = @GNULIB_STRNLEN@ +GNULIB_STRPBRK = @GNULIB_STRPBRK@ +GNULIB_STRPTIME = @GNULIB_STRPTIME@ +GNULIB_STRSEP = @GNULIB_STRSEP@ +GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ +GNULIB_STRSTR = @GNULIB_STRSTR@ +GNULIB_STRTOD = @GNULIB_STRTOD@ +GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@ +GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ +GNULIB_STRTOLL = @GNULIB_STRTOLL@ +GNULIB_STRTOULL = @GNULIB_STRTOULL@ +GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@ +GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GNULIB_SYMLINK = @GNULIB_SYMLINK@ +GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ +GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ +GNULIB_TANF = @GNULIB_TANF@ +GNULIB_TANHF = @GNULIB_TANHF@ +GNULIB_TANL = @GNULIB_TANL@ +GNULIB_TIMEGM = @GNULIB_TIMEGM@ +GNULIB_TIME_R = @GNULIB_TIME_R@ +GNULIB_TIME_RZ = @GNULIB_TIME_RZ@ +GNULIB_TMPFILE = @GNULIB_TMPFILE@ +GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@ +GNULIB_TRUNC = @GNULIB_TRUNC@ +GNULIB_TRUNCF = @GNULIB_TRUNCF@ +GNULIB_TRUNCL = @GNULIB_TRUNCL@ +GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ +GNULIB_UNAME = @GNULIB_UNAME@ +GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ +GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ +GNULIB_UNLINK = @GNULIB_UNLINK@ +GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ +GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ +GNULIB_UNSETENV = @GNULIB_UNSETENV@ +GNULIB_USLEEP = @GNULIB_USLEEP@ +GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ +GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ +GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ +GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ +GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ +GNULIB_VFSCANF = @GNULIB_VFSCANF@ +GNULIB_VPRINTF = @GNULIB_VPRINTF@ +GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ +GNULIB_VSCANF = @GNULIB_VSCANF@ +GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ +GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ +GNULIB_WAITPID = @GNULIB_WAITPID@ +GNULIB_WCPCPY = @GNULIB_WCPCPY@ +GNULIB_WCPNCPY = @GNULIB_WCPNCPY@ +GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ +GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@ +GNULIB_WCSCAT = @GNULIB_WCSCAT@ +GNULIB_WCSCHR = @GNULIB_WCSCHR@ +GNULIB_WCSCMP = @GNULIB_WCSCMP@ +GNULIB_WCSCOLL = @GNULIB_WCSCOLL@ +GNULIB_WCSCPY = @GNULIB_WCSCPY@ +GNULIB_WCSCSPN = @GNULIB_WCSCSPN@ +GNULIB_WCSDUP = @GNULIB_WCSDUP@ +GNULIB_WCSLEN = @GNULIB_WCSLEN@ +GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@ +GNULIB_WCSNCAT = @GNULIB_WCSNCAT@ +GNULIB_WCSNCMP = @GNULIB_WCSNCMP@ +GNULIB_WCSNCPY = @GNULIB_WCSNCPY@ +GNULIB_WCSNLEN = @GNULIB_WCSNLEN@ +GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ +GNULIB_WCSPBRK = @GNULIB_WCSPBRK@ +GNULIB_WCSRCHR = @GNULIB_WCSRCHR@ +GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ +GNULIB_WCSSPN = @GNULIB_WCSSPN@ +GNULIB_WCSSTR = @GNULIB_WCSSTR@ +GNULIB_WCSTOK = @GNULIB_WCSTOK@ +GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@ +GNULIB_WCSXFRM = @GNULIB_WCSXFRM@ +GNULIB_WCTOB = @GNULIB_WCTOB@ +GNULIB_WCTOMB = @GNULIB_WCTOMB@ +GNULIB_WCTRANS = @GNULIB_WCTRANS@ +GNULIB_WCTYPE = @GNULIB_WCTYPE@ +GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ +GNULIB_WMEMCHR = @GNULIB_WMEMCHR@ +GNULIB_WMEMCMP = @GNULIB_WMEMCMP@ +GNULIB_WMEMCPY = @GNULIB_WMEMCPY@ +GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@ +GNULIB_WMEMSET = @GNULIB_WMEMSET@ +GNULIB_WRITE = @GNULIB_WRITE@ +GNULIB__EXIT = @GNULIB__EXIT@ +GREP = @GREP@ +HAVE_ACCEPT4 = @HAVE_ACCEPT4@ +HAVE_ACOSF = @HAVE_ACOSF@ +HAVE_ACOSL = @HAVE_ACOSL@ +HAVE_ALPHASORT = @HAVE_ALPHASORT@ +HAVE_ARPA_INET_H = @HAVE_ARPA_INET_H@ +HAVE_ASINF = @HAVE_ASINF@ +HAVE_ASINL = @HAVE_ASINL@ +HAVE_ATAN2F = @HAVE_ATAN2F@ +HAVE_ATANF = @HAVE_ATANF@ +HAVE_ATANL = @HAVE_ATANL@ +HAVE_ATOLL = @HAVE_ATOLL@ +HAVE_ATTRIBUTE_NORETURN = @HAVE_ATTRIBUTE_NORETURN@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ +HAVE_CBRT = @HAVE_CBRT@ +HAVE_CBRTF = @HAVE_CBRTF@ +HAVE_CBRTL = @HAVE_CBRTL@ +HAVE_CHOWN = @HAVE_CHOWN@ +HAVE_CLOSEDIR = @HAVE_CLOSEDIR@ +HAVE_COPYSIGN = @HAVE_COPYSIGN@ +HAVE_COPYSIGNL = @HAVE_COPYSIGNL@ +HAVE_COSF = @HAVE_COSF@ +HAVE_COSHF = @HAVE_COSHF@ +HAVE_COSL = @HAVE_COSL@ +HAVE_DECL_ACOSL = @HAVE_DECL_ACOSL@ +HAVE_DECL_ASINL = @HAVE_DECL_ASINL@ +HAVE_DECL_ATANL = @HAVE_DECL_ATANL@ +HAVE_DECL_CBRTF = @HAVE_DECL_CBRTF@ +HAVE_DECL_CBRTL = @HAVE_DECL_CBRTL@ +HAVE_DECL_CEILF = @HAVE_DECL_CEILF@ +HAVE_DECL_CEILL = @HAVE_DECL_CEILL@ +HAVE_DECL_COPYSIGNF = @HAVE_DECL_COPYSIGNF@ +HAVE_DECL_COSL = @HAVE_DECL_COSL@ +HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_EXP2 = @HAVE_DECL_EXP2@ +HAVE_DECL_EXP2F = @HAVE_DECL_EXP2F@ +HAVE_DECL_EXP2L = @HAVE_DECL_EXP2L@ +HAVE_DECL_EXPL = @HAVE_DECL_EXPL@ +HAVE_DECL_EXPM1L = @HAVE_DECL_EXPM1L@ +HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ +HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ +HAVE_DECL_FDOPENDIR = @HAVE_DECL_FDOPENDIR@ +HAVE_DECL_FLOORF = @HAVE_DECL_FLOORF@ +HAVE_DECL_FLOORL = @HAVE_DECL_FLOORL@ +HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ +HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@ +HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ +HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ +HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ +HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ +HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ +HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ +HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ +HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@ +HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@ +HAVE_DECL_INET_NTOP = @HAVE_DECL_INET_NTOP@ +HAVE_DECL_INET_PTON = @HAVE_DECL_INET_PTON@ +HAVE_DECL_LDEXPL = @HAVE_DECL_LDEXPL@ +HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ +HAVE_DECL_LOG10L = @HAVE_DECL_LOG10L@ +HAVE_DECL_LOG2 = @HAVE_DECL_LOG2@ +HAVE_DECL_LOG2F = @HAVE_DECL_LOG2F@ +HAVE_DECL_LOG2L = @HAVE_DECL_LOG2L@ +HAVE_DECL_LOGB = @HAVE_DECL_LOGB@ +HAVE_DECL_LOGL = @HAVE_DECL_LOGL@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ +HAVE_DECL_REMAINDER = @HAVE_DECL_REMAINDER@ +HAVE_DECL_REMAINDERL = @HAVE_DECL_REMAINDERL@ +HAVE_DECL_RINTF = @HAVE_DECL_RINTF@ +HAVE_DECL_ROUND = @HAVE_DECL_ROUND@ +HAVE_DECL_ROUNDF = @HAVE_DECL_ROUNDF@ +HAVE_DECL_ROUNDL = @HAVE_DECL_ROUNDL@ +HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ +HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ +HAVE_DECL_SINL = @HAVE_DECL_SINL@ +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@ +HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@ +HAVE_DECL_TANL = @HAVE_DECL_TANL@ +HAVE_DECL_TRUNC = @HAVE_DECL_TRUNC@ +HAVE_DECL_TRUNCF = @HAVE_DECL_TRUNCF@ +HAVE_DECL_TRUNCL = @HAVE_DECL_TRUNCL@ +HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ +HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ +HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DIRENT_H = @HAVE_DIRENT_H@ +HAVE_DPRINTF = @HAVE_DPRINTF@ +HAVE_DUP2 = @HAVE_DUP2@ +HAVE_DUP3 = @HAVE_DUP3@ +HAVE_DUPLOCALE = @HAVE_DUPLOCALE@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_EXPF = @HAVE_EXPF@ +HAVE_EXPL = @HAVE_EXPL@ +HAVE_EXPM1 = @HAVE_EXPM1@ +HAVE_EXPM1F = @HAVE_EXPM1F@ +HAVE_FABSF = @HAVE_FABSF@ +HAVE_FABSL = @HAVE_FABSL@ +HAVE_FACCESSAT = @HAVE_FACCESSAT@ +HAVE_FCHDIR = @HAVE_FCHDIR@ +HAVE_FCHMODAT = @HAVE_FCHMODAT@ +HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ +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@ +HAVE_FMAF = @HAVE_FMAF@ +HAVE_FMAL = @HAVE_FMAL@ +HAVE_FMODF = @HAVE_FMODF@ +HAVE_FMODL = @HAVE_FMODL@ +HAVE_FREXPF = @HAVE_FREXPF@ +HAVE_FSEEKO = @HAVE_FSEEKO@ +HAVE_FSTATAT = @HAVE_FSTATAT@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTELLO = @HAVE_FTELLO@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_FUTIMENS = @HAVE_FUTIMENS@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETGROUPS = @HAVE_GETGROUPS@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETLOGIN = @HAVE_GETLOGIN@ +HAVE_GETOPT_H = @HAVE_GETOPT_H@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ +HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ +HAVE_GRANTPT = @HAVE_GRANTPT@ +HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ +HAVE_HYPOTF = @HAVE_HYPOTF@ +HAVE_HYPOTL = @HAVE_HYPOTL@ +HAVE_ILOGB = @HAVE_ILOGB@ +HAVE_ILOGBF = @HAVE_ILOGBF@ +HAVE_ILOGBL = @HAVE_ILOGBL@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_ISBLANK = @HAVE_ISBLANK@ +HAVE_ISNAND = @HAVE_ISNAND@ +HAVE_ISNANF = @HAVE_ISNANF@ +HAVE_ISNANL = @HAVE_ISNANL@ +HAVE_ISWBLANK = @HAVE_ISWBLANK@ +HAVE_ISWCNTRL = @HAVE_ISWCNTRL@ +HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@ +HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@ +HAVE_LANGINFO_H = @HAVE_LANGINFO_H@ +HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@ +HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@ +HAVE_LCHMOD = @HAVE_LCHMOD@ +HAVE_LCHOWN = @HAVE_LCHOWN@ +HAVE_LDEXPF = @HAVE_LDEXPF@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LINKAT = @HAVE_LINKAT@ +HAVE_LOG10F = @HAVE_LOG10F@ +HAVE_LOG10L = @HAVE_LOG10L@ +HAVE_LOG1P = @HAVE_LOG1P@ +HAVE_LOG1PF = @HAVE_LOG1PF@ +HAVE_LOG1PL = @HAVE_LOG1PL@ +HAVE_LOGBF = @HAVE_LOGBF@ +HAVE_LOGBL = @HAVE_LOGBL@ +HAVE_LOGF = @HAVE_LOGF@ +HAVE_LOGL = @HAVE_LOGL@ +HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_LSTAT = @HAVE_LSTAT@ +HAVE_MAX_ALIGN_T = @HAVE_MAX_ALIGN_T@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSLEN = @HAVE_MBSLEN@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MEMCHR = @HAVE_MEMCHR@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_MKDIRAT = @HAVE_MKDIRAT@ +HAVE_MKDTEMP = @HAVE_MKDTEMP@ +HAVE_MKFIFO = @HAVE_MKFIFO@ +HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ +HAVE_MKNOD = @HAVE_MKNOD@ +HAVE_MKNODAT = @HAVE_MKNODAT@ +HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ +HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ +HAVE_MKSTEMP = @HAVE_MKSTEMP@ +HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ +HAVE_MODFF = @HAVE_MODFF@ +HAVE_MODFL = @HAVE_MODFL@ +HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ +HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ +HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@ +HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@ +HAVE_OPENAT = @HAVE_OPENAT@ +HAVE_OPENDIR = @HAVE_OPENDIR@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_PCLOSE = @HAVE_PCLOSE@ +HAVE_PIPE = @HAVE_PIPE@ +HAVE_PIPE2 = @HAVE_PIPE2@ +HAVE_POPEN = @HAVE_POPEN@ +HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ +HAVE_POSIX_SIGNALBLOCKING = @HAVE_POSIX_SIGNALBLOCKING@ +HAVE_POWF = @HAVE_POWF@ +HAVE_PREAD = @HAVE_PREAD@ +HAVE_PSELECT = @HAVE_PSELECT@ +HAVE_PTHREAD_SIGMASK = @HAVE_PTHREAD_SIGMASK@ +HAVE_PTSNAME = @HAVE_PTSNAME@ +HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ +HAVE_PWRITE = @HAVE_PWRITE@ +HAVE_RAISE = @HAVE_RAISE@ +HAVE_RANDOM = @HAVE_RANDOM@ +HAVE_RANDOM_H = @HAVE_RANDOM_H@ +HAVE_RANDOM_R = @HAVE_RANDOM_R@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READDIR = @HAVE_READDIR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_READLINKAT = @HAVE_READLINKAT@ +HAVE_REALPATH = @HAVE_REALPATH@ +HAVE_REMAINDER = @HAVE_REMAINDER@ +HAVE_REMAINDERF = @HAVE_REMAINDERF@ +HAVE_RENAMEAT = @HAVE_RENAMEAT@ +HAVE_REWINDDIR = @HAVE_REWINDDIR@ +HAVE_RINT = @HAVE_RINT@ +HAVE_RINTL = @HAVE_RINTL@ +HAVE_RPMATCH = @HAVE_RPMATCH@ +HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = @HAVE_SAME_LONG_DOUBLE_AS_DOUBLE@ +HAVE_SA_FAMILY_T = @HAVE_SA_FAMILY_T@ +HAVE_SCANDIR = @HAVE_SCANDIR@ +HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ +HAVE_SETENV = @HAVE_SETENV@ +HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ +HAVE_SIGACTION = @HAVE_SIGACTION@ +HAVE_SIGHANDLER_T = @HAVE_SIGHANDLER_T@ +HAVE_SIGINFO_T = @HAVE_SIGINFO_T@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SIGSET_T = @HAVE_SIGSET_T@ +HAVE_SINF = @HAVE_SINF@ +HAVE_SINHF = @HAVE_SINHF@ +HAVE_SINL = @HAVE_SINL@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_SQRTF = @HAVE_SQRTF@ +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_STRINGS_H = @HAVE_STRINGS_H@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRPTIME = @HAVE_STRPTIME@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRTOD = @HAVE_STRTOD@ +HAVE_STRTOLL = @HAVE_STRTOLL@ +HAVE_STRTOULL = @HAVE_STRTOULL@ +HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ +HAVE_STRUCT_SIGACTION_SA_SIGACTION = @HAVE_STRUCT_SIGACTION_SA_SIGACTION@ +HAVE_STRUCT_SOCKADDR_STORAGE = @HAVE_STRUCT_SOCKADDR_STORAGE@ +HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY = @HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY@ +HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ +HAVE_STRUCT_UTSNAME = @HAVE_STRUCT_UTSNAME@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYMLINK = @HAVE_SYMLINK@ +HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_IOCTL_H = @HAVE_SYS_IOCTL_H@ +HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_SELECT_H = @HAVE_SYS_SELECT_H@ +HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@ +HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_SYS_UIO_H = @HAVE_SYS_UIO_H@ +HAVE_SYS_UTSNAME_H = @HAVE_SYS_UTSNAME_H@ +HAVE_TANF = @HAVE_TANF@ +HAVE_TANHF = @HAVE_TANHF@ +HAVE_TANL = @HAVE_TANL@ +HAVE_TIMEGM = @HAVE_TIMEGM@ +HAVE_TIMEZONE_T = @HAVE_TIMEZONE_T@ +HAVE_TYPE_VOLATILE_SIG_ATOMIC_T = @HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@ +HAVE_UNAME = @HAVE_UNAME@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNLINKAT = @HAVE_UNLINKAT@ +HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ +HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_USLEEP = @HAVE_USLEEP@ +HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ +HAVE_VASPRINTF = @HAVE_VASPRINTF@ +HAVE_VDPRINTF = @HAVE_VDPRINTF@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCHAR_T = @HAVE_WCHAR_T@ +HAVE_WCPCPY = @HAVE_WCPCPY@ +HAVE_WCPNCPY = @HAVE_WCPNCPY@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSCASECMP = @HAVE_WCSCASECMP@ +HAVE_WCSCAT = @HAVE_WCSCAT@ +HAVE_WCSCHR = @HAVE_WCSCHR@ +HAVE_WCSCMP = @HAVE_WCSCMP@ +HAVE_WCSCOLL = @HAVE_WCSCOLL@ +HAVE_WCSCPY = @HAVE_WCSCPY@ +HAVE_WCSCSPN = @HAVE_WCSCSPN@ +HAVE_WCSDUP = @HAVE_WCSDUP@ +HAVE_WCSLEN = @HAVE_WCSLEN@ +HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@ +HAVE_WCSNCAT = @HAVE_WCSNCAT@ +HAVE_WCSNCMP = @HAVE_WCSNCMP@ +HAVE_WCSNCPY = @HAVE_WCSNCPY@ +HAVE_WCSNLEN = @HAVE_WCSNLEN@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSPBRK = @HAVE_WCSPBRK@ +HAVE_WCSRCHR = @HAVE_WCSRCHR@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WCSSPN = @HAVE_WCSSPN@ +HAVE_WCSSTR = @HAVE_WCSSTR@ +HAVE_WCSTOK = @HAVE_WCSTOK@ +HAVE_WCSWIDTH = @HAVE_WCSWIDTH@ +HAVE_WCSXFRM = @HAVE_WCSXFRM@ +HAVE_WCTRANS_T = @HAVE_WCTRANS_T@ +HAVE_WCTYPE_H = @HAVE_WCTYPE_H@ +HAVE_WCTYPE_T = @HAVE_WCTYPE_T@ +HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE_WMEMCHR = @HAVE_WMEMCHR@ +HAVE_WMEMCMP = @HAVE_WMEMCMP@ +HAVE_WMEMCPY = @HAVE_WMEMCPY@ +HAVE_WMEMMOVE = @HAVE_WMEMMOVE@ +HAVE_WMEMSET = @HAVE_WMEMSET@ +HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@ +HAVE_XLOCALE_H = @HAVE_XLOCALE_H@ +HAVE__BOOL = @HAVE__BOOL@ +HAVE__EXIT = @HAVE__EXIT@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ +INET_PTON_LIB = @INET_PTON_LIB@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@ +INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +ISFINITE_LIBM = @ISFINITE_LIBM@ +ISINF_LIBM = @ISINF_LIBM@ +LDFLAGS = @LDFLAGS@ +LIBGNULIB_LIBDEPS = @LIBGNULIB_LIBDEPS@ +LIBGNULIB_LTLIBDEPS = @LIBGNULIB_LTLIBDEPS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBSOCKET = @LIBSOCKET@ +LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ +LIBTHREAD = @LIBTHREAD@ +LIBUNISTRING_UNITYPES_H = @LIBUNISTRING_UNITYPES_H@ +LIBUNISTRING_UNIWIDTH_H = @LIBUNISTRING_UNIWIDTH_H@ +LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ +LIB_EACCESS = @LIB_EACCESS@ +LIB_NANOSLEEP = @LIB_NANOSLEEP@ +LIB_SELECT = @LIB_SELECT@ +LIB_SELINUX = @LIB_SELINUX@ +LN_S = @LN_S@ +LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@ +LOCALE_JA = @LOCALE_JA@ +LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ +LOCALE_ZH_CN = @LOCALE_ZH_CN@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MODF_LIBM = @MODF_LIBM@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NETINET_IN_H = @NETINET_IN_H@ +NEXT_ARPA_INET_H = @NEXT_ARPA_INET_H@ +NEXT_AS_FIRST_DIRECTIVE_ARPA_INET_H = @NEXT_AS_FIRST_DIRECTIVE_ARPA_INET_H@ +NEXT_AS_FIRST_DIRECTIVE_CTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_CTYPE_H@ +NEXT_AS_FIRST_DIRECTIVE_DIRENT_H = @NEXT_AS_FIRST_DIRECTIVE_DIRENT_H@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@ +NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@ +NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ +NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@ +NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@ +NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@ +NEXT_AS_FIRST_DIRECTIVE_MATH_H = @NEXT_AS_FIRST_DIRECTIVE_MATH_H@ +NEXT_AS_FIRST_DIRECTIVE_NETINET_IN_H = @NEXT_AS_FIRST_DIRECTIVE_NETINET_IN_H@ +NEXT_AS_FIRST_DIRECTIVE_SELINUX_SELINUX_H = @NEXT_AS_FIRST_DIRECTIVE_SELINUX_SELINUX_H@ +NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H = @NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H@ +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ +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_IOCTL_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_IOCTL_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_SELECT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_SELECT_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_SOCKET_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_SOCKET_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_UIO_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_UIO_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_UTSNAME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_UTSNAME_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H@ +NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@ +NEXT_CTYPE_H = @NEXT_CTYPE_H@ +NEXT_DIRENT_H = @NEXT_DIRENT_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_FCNTL_H = @NEXT_FCNTL_H@ +NEXT_FLOAT_H = @NEXT_FLOAT_H@ +NEXT_GETOPT_H = @NEXT_GETOPT_H@ +NEXT_INTTYPES_H = @NEXT_INTTYPES_H@ +NEXT_LANGINFO_H = @NEXT_LANGINFO_H@ +NEXT_LOCALE_H = @NEXT_LOCALE_H@ +NEXT_MATH_H = @NEXT_MATH_H@ +NEXT_NETINET_IN_H = @NEXT_NETINET_IN_H@ +NEXT_SELINUX_SELINUX_H = @NEXT_SELINUX_SELINUX_H@ +NEXT_SIGNAL_H = @NEXT_SIGNAL_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ +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_IOCTL_H = @NEXT_SYS_IOCTL_H@ +NEXT_SYS_SELECT_H = @NEXT_SYS_SELECT_H@ +NEXT_SYS_SOCKET_H = @NEXT_SYS_SOCKET_H@ +NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ +NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ +NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ +NEXT_SYS_UIO_H = @NEXT_SYS_UIO_H@ +NEXT_SYS_UTSNAME_H = @NEXT_SYS_UTSNAME_H@ +NEXT_SYS_WAIT_H = @NEXT_SYS_WAIT_H@ +NEXT_TIME_H = @NEXT_TIME_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NEXT_WCTYPE_H = @NEXT_WCTYPE_H@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POSUB = @POSUB@ +PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PRIPTR_PREFIX = @PRIPTR_PREFIX@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CALLOC = @REPLACE_CALLOC@ +REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CBRTF = @REPLACE_CBRTF@ +REPLACE_CBRTL = @REPLACE_CBRTL@ +REPLACE_CEIL = @REPLACE_CEIL@ +REPLACE_CEILF = @REPLACE_CEILF@ +REPLACE_CEILL = @REPLACE_CEILL@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_CLOSEDIR = @REPLACE_CLOSEDIR@ +REPLACE_DIRFD = @REPLACE_DIRFD@ +REPLACE_DPRINTF = @REPLACE_DPRINTF@ +REPLACE_DUP = @REPLACE_DUP@ +REPLACE_DUP2 = @REPLACE_DUP2@ +REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@ +REPLACE_EXP2 = @REPLACE_EXP2@ +REPLACE_EXP2L = @REPLACE_EXP2L@ +REPLACE_EXPM1 = @REPLACE_EXPM1@ +REPLACE_EXPM1F = @REPLACE_EXPM1F@ +REPLACE_FABSL = @REPLACE_FABSL@ +REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ +REPLACE_FCLOSE = @REPLACE_FCLOSE@ +REPLACE_FCNTL = @REPLACE_FCNTL@ +REPLACE_FDOPEN = @REPLACE_FDOPEN@ +REPLACE_FDOPENDIR = @REPLACE_FDOPENDIR@ +REPLACE_FFLUSH = @REPLACE_FFLUSH@ +REPLACE_FLOOR = @REPLACE_FLOOR@ +REPLACE_FLOORF = @REPLACE_FLOORF@ +REPLACE_FLOORL = @REPLACE_FLOORL@ +REPLACE_FMA = @REPLACE_FMA@ +REPLACE_FMAF = @REPLACE_FMAF@ +REPLACE_FMAL = @REPLACE_FMAL@ +REPLACE_FMOD = @REPLACE_FMOD@ +REPLACE_FMODF = @REPLACE_FMODF@ +REPLACE_FMODL = @REPLACE_FMODL@ +REPLACE_FOPEN = @REPLACE_FOPEN@ +REPLACE_FPRINTF = @REPLACE_FPRINTF@ +REPLACE_FPURGE = @REPLACE_FPURGE@ +REPLACE_FREOPEN = @REPLACE_FREOPEN@ +REPLACE_FREXP = @REPLACE_FREXP@ +REPLACE_FREXPF = @REPLACE_FREXPF@ +REPLACE_FREXPL = @REPLACE_FREXPL@ +REPLACE_FSEEK = @REPLACE_FSEEK@ +REPLACE_FSEEKO = @REPLACE_FSEEKO@ +REPLACE_FSTAT = @REPLACE_FSTAT@ +REPLACE_FSTATAT = @REPLACE_FSTATAT@ +REPLACE_FTELL = @REPLACE_FTELL@ +REPLACE_FTELLO = @REPLACE_FTELLO@ +REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ +REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETDELIM = @REPLACE_GETDELIM@ +REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ +REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ +REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ +REPLACE_GETLINE = @REPLACE_GETLINE@ +REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ +REPLACE_GMTIME = @REPLACE_GMTIME@ +REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@ +REPLACE_HYPOT = @REPLACE_HYPOT@ +REPLACE_HYPOTF = @REPLACE_HYPOTF@ +REPLACE_HYPOTL = @REPLACE_HYPOTL@ +REPLACE_ILOGB = @REPLACE_ILOGB@ +REPLACE_ILOGBF = @REPLACE_ILOGBF@ +REPLACE_INET_NTOP = @REPLACE_INET_NTOP@ +REPLACE_INET_PTON = @REPLACE_INET_PTON@ +REPLACE_IOCTL = @REPLACE_IOCTL@ +REPLACE_ISATTY = @REPLACE_ISATTY@ +REPLACE_ISFINITE = @REPLACE_ISFINITE@ +REPLACE_ISINF = @REPLACE_ISINF@ +REPLACE_ISNAN = @REPLACE_ISNAN@ +REPLACE_ISWBLANK = @REPLACE_ISWBLANK@ +REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@ +REPLACE_ITOLD = @REPLACE_ITOLD@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LDEXPL = @REPLACE_LDEXPL@ +REPLACE_LINK = @REPLACE_LINK@ +REPLACE_LINKAT = @REPLACE_LINKAT@ +REPLACE_LOCALECONV = @REPLACE_LOCALECONV@ +REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ +REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ +REPLACE_LOG = @REPLACE_LOG@ +REPLACE_LOG10 = @REPLACE_LOG10@ +REPLACE_LOG10F = @REPLACE_LOG10F@ +REPLACE_LOG10L = @REPLACE_LOG10L@ +REPLACE_LOG1P = @REPLACE_LOG1P@ +REPLACE_LOG1PF = @REPLACE_LOG1PF@ +REPLACE_LOG1PL = @REPLACE_LOG1PL@ +REPLACE_LOG2 = @REPLACE_LOG2@ +REPLACE_LOG2F = @REPLACE_LOG2F@ +REPLACE_LOG2L = @REPLACE_LOG2L@ +REPLACE_LOGB = @REPLACE_LOGB@ +REPLACE_LOGBF = @REPLACE_LOGBF@ +REPLACE_LOGBL = @REPLACE_LOGBL@ +REPLACE_LOGF = @REPLACE_LOGF@ +REPLACE_LOGL = @REPLACE_LOGL@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_LSTAT = @REPLACE_LSTAT@ +REPLACE_MALLOC = @REPLACE_MALLOC@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MBTOWC = @REPLACE_MBTOWC@ +REPLACE_MEMCHR = @REPLACE_MEMCHR@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_MKDIR = @REPLACE_MKDIR@ +REPLACE_MKFIFO = @REPLACE_MKFIFO@ +REPLACE_MKNOD = @REPLACE_MKNOD@ +REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ +REPLACE_MKTIME = @REPLACE_MKTIME@ +REPLACE_MODF = @REPLACE_MODF@ +REPLACE_MODFF = @REPLACE_MODFF@ +REPLACE_MODFL = @REPLACE_MODFL@ +REPLACE_NAN = @REPLACE_NAN@ +REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ +REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@ +REPLACE_NULL = @REPLACE_NULL@ +REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ +REPLACE_OPEN = @REPLACE_OPEN@ +REPLACE_OPENAT = @REPLACE_OPENAT@ +REPLACE_OPENDIR = @REPLACE_OPENDIR@ +REPLACE_PERROR = @REPLACE_PERROR@ +REPLACE_POPEN = @REPLACE_POPEN@ +REPLACE_PREAD = @REPLACE_PREAD@ +REPLACE_PRINTF = @REPLACE_PRINTF@ +REPLACE_PSELECT = @REPLACE_PSELECT@ +REPLACE_PTHREAD_SIGMASK = @REPLACE_PTHREAD_SIGMASK@ +REPLACE_PTSNAME = @REPLACE_PTSNAME@ +REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ +REPLACE_PUTENV = @REPLACE_PUTENV@ +REPLACE_PWRITE = @REPLACE_PWRITE@ +REPLACE_QSORT_R = @REPLACE_QSORT_R@ +REPLACE_RAISE = @REPLACE_RAISE@ +REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ +REPLACE_READ = @REPLACE_READ@ +REPLACE_READLINK = @REPLACE_READLINK@ +REPLACE_READLINKAT = @REPLACE_READLINKAT@ +REPLACE_REALLOC = @REPLACE_REALLOC@ +REPLACE_REALPATH = @REPLACE_REALPATH@ +REPLACE_REMAINDER = @REPLACE_REMAINDER@ +REPLACE_REMAINDERF = @REPLACE_REMAINDERF@ +REPLACE_REMAINDERL = @REPLACE_REMAINDERL@ +REPLACE_REMOVE = @REPLACE_REMOVE@ +REPLACE_RENAME = @REPLACE_RENAME@ +REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ +REPLACE_RMDIR = @REPLACE_RMDIR@ +REPLACE_ROUND = @REPLACE_ROUND@ +REPLACE_ROUNDF = @REPLACE_ROUNDF@ +REPLACE_ROUNDL = @REPLACE_ROUNDL@ +REPLACE_SELECT = @REPLACE_SELECT@ +REPLACE_SETENV = @REPLACE_SETENV@ +REPLACE_SETLOCALE = @REPLACE_SETLOCALE@ +REPLACE_SIGNBIT = @REPLACE_SIGNBIT@ +REPLACE_SIGNBIT_USING_GCC = @REPLACE_SIGNBIT_USING_GCC@ +REPLACE_SLEEP = @REPLACE_SLEEP@ +REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ +REPLACE_SPRINTF = @REPLACE_SPRINTF@ +REPLACE_SQRTL = @REPLACE_SQRTL@ +REPLACE_STAT = @REPLACE_STAT@ +REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ +REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ +REPLACE_STPNCPY = @REPLACE_STPNCPY@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ +REPLACE_STRNCAT = @REPLACE_STRNCAT@ +REPLACE_STRNDUP = @REPLACE_STRNDUP@ +REPLACE_STRNLEN = @REPLACE_STRNLEN@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_STRTOD = @REPLACE_STRTOD@ +REPLACE_STRTOIMAX = @REPLACE_STRTOIMAX@ +REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ +REPLACE_STRTOUMAX = @REPLACE_STRTOUMAX@ +REPLACE_STRUCT_LCONV = @REPLACE_STRUCT_LCONV@ +REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ +REPLACE_SYMLINK = @REPLACE_SYMLINK@ +REPLACE_SYMLINKAT = @REPLACE_SYMLINKAT@ +REPLACE_TIMEGM = @REPLACE_TIMEGM@ +REPLACE_TMPFILE = @REPLACE_TMPFILE@ +REPLACE_TOWLOWER = @REPLACE_TOWLOWER@ +REPLACE_TRUNC = @REPLACE_TRUNC@ +REPLACE_TRUNCF = @REPLACE_TRUNCF@ +REPLACE_TRUNCL = @REPLACE_TRUNCL@ +REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ +REPLACE_UNLINK = @REPLACE_UNLINK@ +REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ +REPLACE_UNSETENV = @REPLACE_UNSETENV@ +REPLACE_USLEEP = @REPLACE_USLEEP@ +REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ +REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ +REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ +REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ +REPLACE_VPRINTF = @REPLACE_VPRINTF@ +REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ +REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCTOMB = @REPLACE_WCTOMB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ +SED = @SED@ +SELINUX_CONTEXT_H = @SELINUX_CONTEXT_H@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +SORT = @SORT@ +SORT_SUPPORTS_Z = @SORT_SUPPORTS_Z@ +STDALIGN_H = @STDALIGN_H@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDDEF_H = @STDDEF_H@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +SYS_IOCTL_H_HAVE_WINSOCK2_H = @SYS_IOCTL_H_HAVE_WINSOCK2_H@ +SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ +SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ +TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ +TRUNC_LIBM = @TRUNC_LIBM@ +UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@ +UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@ +UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ +UNISTD_H_DEFINES_STRUCT_TIMESPEC = @UNISTD_H_DEFINES_STRUCT_TIMESPEC@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ +WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +YACC = @YACC@ +YFLAGS = @YFLAGS@ +YIELD_LIB = @YIELD_LIB@ +abs_aux_dir = @abs_aux_dir@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +gltests_WITNESS = @gltests_WITNESS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +lispdir = @lispdir@ +localedir = $(datadir)/locale +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +# The default database to build and search. +AUTOMAKE_OPTIONS = std-options +AM_CFLAGS = $(WARN_CFLAGS) +LOCATE_DB = $(localstatedir)/locatedb +AM_INSTALLCHECK_STD_OPTIONS_EXEMPT = \ + frcode$(EXEEXT) \ + code$(EXEEXT) \ + bigram$(EXEEXT) + +bin_SCRIPTS = updatedb +man_MANS = locate.1 updatedb.1 locatedb.5 +BUILT_SOURCES = dblocation.texi +EXTRA_DIST = locatedb.h updatedb.sh $(man_MANS) +CLEANFILES = updatedb +DISTCLEANFILES = dblocation.texi +locate_SOURCES = locate.c word_io.c +code_SOURCES = code.c word_io.c +nodist_locate_TEXINFOS = dblocation.texi +AM_CPPFLAGS = -I$(top_srcdir)/lib -I../gl/lib -I$(top_srcdir)/gl/lib -I../intl -DLOCATE_DB=\"$(LOCATE_DB)\" -DLOCALEDIR=\"$(localedir)\" +LDADD = ../lib/libfind.a ../gl/lib/libgnulib.a $(LIB_CLOSE) $(LIBINTL) +SUBDIRS = . testsuite +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits locate/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnits locate/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) + +installcheck-binPROGRAMS: $(bin_PROGRAMS) + bad=0; pid=$$$$; list="$(bin_PROGRAMS)"; for p in $$list; do \ + case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \ + *" $$p "* | *" $(srcdir)/$$p "*) continue;; \ + esac; \ + f=`echo "$$p" | \ + sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + for opt in --help --version; do \ + if "$(DESTDIR)$(bindir)/$$f" $$opt >c$${pid}_.out \ + 2>c$${pid}_.err </dev/null \ + && test -n "`cat c$${pid}_.out`" \ + && test -z "`cat c$${pid}_.err`"; then :; \ + else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \ + done; \ + done; rm -f c$${pid}_.???; exit $$bad +install-libexecPROGRAMS: $(libexec_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(libexecdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libexecdir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(libexecdir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(libexecdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-libexecPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(libexecdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(libexecdir)" && rm -f $$files + +clean-libexecPROGRAMS: + -test -z "$(libexec_PROGRAMS)" || rm -f $(libexec_PROGRAMS) + +installcheck-libexecPROGRAMS: $(libexec_PROGRAMS) + bad=0; pid=$$$$; list="$(libexec_PROGRAMS)"; for p in $$list; do \ + case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \ + *" $$p "* | *" $(srcdir)/$$p "*) continue;; \ + esac; \ + f=`echo "$$p" | \ + sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + for opt in --help --version; do \ + if "$(DESTDIR)$(libexecdir)/$$f" $$opt >c$${pid}_.out \ + 2>c$${pid}_.err </dev/null \ + && test -n "`cat c$${pid}_.out`" \ + && test -z "`cat c$${pid}_.err`"; then :; \ + else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \ + done; \ + done; rm -f c$${pid}_.???; exit $$bad + +bigram$(EXEEXT): $(bigram_OBJECTS) $(bigram_DEPENDENCIES) $(EXTRA_bigram_DEPENDENCIES) + @rm -f bigram$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(bigram_OBJECTS) $(bigram_LDADD) $(LIBS) + +code$(EXEEXT): $(code_OBJECTS) $(code_DEPENDENCIES) $(EXTRA_code_DEPENDENCIES) + @rm -f code$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(code_OBJECTS) $(code_LDADD) $(LIBS) + +frcode$(EXEEXT): $(frcode_OBJECTS) $(frcode_DEPENDENCIES) $(EXTRA_frcode_DEPENDENCIES) + @rm -f frcode$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(frcode_OBJECTS) $(frcode_LDADD) $(LIBS) + +locate$(EXEEXT): $(locate_OBJECTS) $(locate_DEPENDENCIES) $(EXTRA_locate_DEPENDENCIES) + @rm -f locate$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(locate_OBJECTS) $(locate_LDADD) $(LIBS) +install-binSCRIPTS: $(bin_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) + +installcheck-binSCRIPTS: $(bin_SCRIPTS) + bad=0; pid=$$$$; list="$(bin_SCRIPTS)"; for p in $$list; do \ + case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \ + *" $$p "* | *" $(srcdir)/$$p "*) continue;; \ + esac; \ + f=`echo "$$p" | sed 's,^.*/,,;$(transform)'`; \ + for opt in --help --version; do \ + if "$(DESTDIR)$(bindir)/$$f" $$opt >c$${pid}_.out \ + 2>c$${pid}_.err </dev/null \ + && test -n "`cat c$${pid}_.out`" \ + && test -z "`cat c$${pid}_.err`"; then :; \ + else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \ + done; \ + done; rm -f c$${pid}_.???; exit $$bad + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bigram.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/code.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/frcode.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/locate.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/word_io.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +install-man1: $(man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(man_MANS)'; \ + test -n "$(man1dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.1[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ + done; } + +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man1dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) +install-man5: $(man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(man_MANS)'; \ + test -n "$(man5dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man5dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man5dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.5[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man5dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man5dir)" || exit $$?; }; \ + done; } + +uninstall-man5: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man5dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.5[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man5dir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook +check-am: all-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-recursive +all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(MANS) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +clean: clean-recursive + +clean-am: clean-binPROGRAMS clean-generic clean-libexecPROGRAMS \ + clean-local mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-man + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-data-hook +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: install-binPROGRAMS install-binSCRIPTS \ + install-libexecPROGRAMS + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: install-man1 install-man5 + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: installcheck-binPROGRAMS installcheck-binSCRIPTS \ + installcheck-libexecPROGRAMS + +maintainer-clean: maintainer-clean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \ + uninstall-libexecPROGRAMS uninstall-man + +uninstall-man: uninstall-man1 uninstall-man5 + +.MAKE: $(am__recursive_targets) all check install install-am \ + install-data-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-binPROGRAMS clean-generic \ + clean-libexecPROGRAMS clean-local cscopelist-am ctags ctags-am \ + dist-hook distclean distclean-compile distclean-generic \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-binPROGRAMS install-binSCRIPTS \ + install-data install-data-am install-data-hook install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am \ + install-libexecPROGRAMS install-man install-man1 install-man5 \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am \ + installcheck-binPROGRAMS installcheck-binSCRIPTS \ + installcheck-libexecPROGRAMS installdirs installdirs-am \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-binPROGRAMS \ + uninstall-binSCRIPTS uninstall-libexecPROGRAMS uninstall-man \ + uninstall-man1 uninstall-man5 + + +$(PROGRAMS) $(LIBPROGRAMS): ../lib/libfind.a ../gl/lib/libgnulib.a + +# We generate updatedb from the Makefile rather than with AC_OUTPUT in +# configure.ac in order to allow the user better control of what goes +# into it by setting Makefile variables. +updatedb: updatedb.sh Makefile + rm -f $@ + find=`echo find|sed '$(transform)'`; \ + frcode=`echo frcode|sed '$(transform)'`; \ + bigram=`echo bigram|sed '$(transform)'`; \ + code=`echo code|sed '$(transform)'`; \ + sed \ + -e "s,@""bindir""@,$(bindir)," \ + -e "s,@""libexecdir""@,$(libexecdir)," \ + -e "s,@""LOCATE_DB""@,$(LOCATE_DB)," \ + -e "s,@""VERSION""@,$(VERSION)," \ + -e "s,@""PACKAGE_NAME""@,$(PACKAGE_NAME)," \ + -e "s,@""find""@,$${find}," \ + -e "s,@""frcode""@,$${frcode}," \ + -e "s,@""bigram""@,$${bigram}," \ + -e "s,@""code""@,$${code}," \ + -e "s,@""SORT""@,$(SORT)," \ + -e "s,@""SORT_SUPPORTS_Z""@,$(SORT_SUPPORTS_Z)," \ + $(srcdir)/updatedb.sh > $@ + chmod +x $@ + +install-data-hook: + $(top_srcdir)/build-aux/mkinstalldirs $(DESTDIR)$(localstatedir) + +dblocation.texi: + echo '@set LOCATE_DB $(LOCATE_DB)' > $@.tmp + if test -f $@ && cmp $@.tmp $@ >/dev/null ; then \ + rm $@.tmp ; \ + else \ + mv $@.tmp $@ ; \ + fi +.PHONY: dblocation.texi + +dist-hook: findutils-check-manpages + +findutils-check-manpages: + $(top_srcdir)/build-aux/man-lint.sh $(srcdir) $(man_MANS) + +# Clean coverage files generated by running binaries built with +# gcc -fprofile-arcs -ftest-coverage +coverage-clean: + $(RM) *.gcno *.gcda *.gcov *.lcov + +clean-local: coverage-clean + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/locate/bigram.c b/locate/bigram.c new file mode 100644 index 0000000..e83e9b1 --- /dev/null +++ b/locate/bigram.c @@ -0,0 +1,146 @@ +/* bigram -- list bigrams for locate + Copyright (C) 1994, 2007, 2009, 2010, 2011 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 <http://www.gnu.org/licenses/>. +*/ + +/* Usage: bigram < text > bigrams + Use `code' to encode a file using this output. + + Read a file from stdin and write out the bigrams (pairs of + adjacent characters), one bigram per line, to stdout. To reduce + needless duplication in the output, it starts finding the + bigrams on each input line at the character where that line + first differs from the previous line (i.e., in the ASCII + remainder). Therefore, the input should be sorted in order to + get the least redundant output. + + Written by James A. Woods <jwoods@adobe.com>. + Modified by David MacKenzie <djm@gnu.ai.mit.edu>. */ + +/* config.h must always be included first. */ +#include <config.h> + +/* system headers. */ +#include <errno.h> +#include <stdio.h> +#include <locale.h> +#include <string.h> +#include <stdlib.h> +#include <sys/types.h> + +/* gnulib headers. */ +#include "closeout.h" +#include "gettext.h" +#include "progname.h" +#include "xalloc.h" +#include "error.h" + +/* find headers would go here but we don't need any. */ + + +/* We use gettext because for example xmalloc may issue an error message. */ +#if ENABLE_NLS +# include <libintl.h> +# define _(Text) gettext (Text) +#else +# define _(Text) Text +#define textdomain(Domain) +#define bindtextdomain(Package, Directory) +#endif +#ifdef gettext_noop +# define N_(String) gettext_noop(String) +#else +/* See locate.c for explanation as to why not use (String) */ +# define N_(String) String +#endif + + +/* Return the length of the longest common prefix of strings S1 and S2. */ + +static int +prefix_length (char *s1, char *s2) +{ + register char *start; + + for (start = s1; *s1 == *s2 && *s1 != '\0'; s1++, s2++) + ; + return s1 - start; +} + +int +main (int argc, char **argv) +{ + char *path; /* The current input entry. */ + char *oldpath; /* The previous input entry. */ + size_t pathsize, oldpathsize; /* Amounts allocated for them. */ + int line_len; /* Length of input line. */ + + if (argv[0]) + set_program_name (argv[0]); + else + set_program_name ("bigram"); + +#ifdef HAVE_SETLOCALE + setlocale (LC_ALL, ""); +#endif + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); + + (void) argc; + if (atexit (close_stdout)) + { + error (EXIT_FAILURE, errno, _("The atexit library function failed")); + } + + pathsize = oldpathsize = 1026; /* Increased as necessary by getline. */ + path = xmalloc (pathsize); + oldpath = xmalloc (oldpathsize); + + /* Set to empty string, to force the first prefix count to 0. */ + oldpath[0] = '\0'; + + while ((line_len = getline (&path, &pathsize, stdin)) > 0) + { + register int count; /* The prefix length. */ + register int j; /* Index into input line. */ + + path[line_len - 1] = '\0'; /* Remove the newline. */ + + /* Output bigrams in the remainder only. */ + count = prefix_length (oldpath, path); + for (j = count; path[j] != '\0' && path[j + 1] != '\0'; j += 2) + { + putchar (path[j]); + putchar (path[j + 1]); + putchar ('\n'); + } + + { + /* Swap path and oldpath and their sizes. */ + char *tmppath = oldpath; + size_t tmppathsize = oldpathsize; + oldpath = path; + oldpathsize = pathsize; + path = tmppath; + pathsize = tmppathsize; + } + } + + free (path); + free (oldpath); + + return 0; +} diff --git a/locate/code.c b/locate/code.c new file mode 100644 index 0000000..eae02ce --- /dev/null +++ b/locate/code.c @@ -0,0 +1,291 @@ +/* code -- bigram- and front-encode filenames for locate + Copyright (C) 1994, 2005, 2007, 2008, 2010, 2011 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 <http://www.gnu.org/licenses/>. +*/ + +/* Compress a sorted list. + Works with `find' to encode a filename database to save space + and search time. + + Usage: + + bigram < file_list > bigrams + process-bigrams > most_common_bigrams + code most_common_bigrams < file_list > squeezed_list + + Uses `front compression' (see ";login:", March 1983, p. 8). + The output begins with the 128 most common bigrams. + After that, the output format is, for each line, + an offset (from the previous line) differential count byte + followed by a (partially bigram-encoded) ASCII remainder. + The output lines have no terminating byte; the start of the next line + is indicated by its first byte having a value <= 30. + + The encoding of the output bytes is: + + 0-28 likeliest differential counts + offset (14) to make nonnegative + 30 escape code for out-of-range count to follow in next halfword + 128-255 bigram codes (the 128 most common, as determined by `updatedb') + 32-127 single character (printable) ASCII remainder + + Written by James A. Woods <jwoods@adobe.com>. + Modified by David MacKenzie <djm@gnu.org>. */ + +/* config.h should always be included first. */ +#include <config.h> + +/* system headers. */ +#include <errno.h> +#include <stdbool.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/types.h> + +/* gnulib headers. */ +#include "closeout.h" +#include "error.h" +#include "gettext.h" +#include "progname.h" +#include "xalloc.h" + +/* find headers. */ +#include "findutils-version.h" +#include "locatedb.h" + +#if ENABLE_NLS +# include <libintl.h> +# define _(Text) gettext (Text) +#else +# define _(Text) Text +#define textdomain(Domain) +#define bindtextdomain(Package, Directory) +#endif +#ifdef gettext_noop +# define N_(String) gettext_noop (String) +#else +/* See locate.c for explanation as to why not use (String) */ +# define N_(String) String +#endif + + +#ifndef ATTRIBUTE_NORETURN +# define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__)) +#endif + + +/* The 128 most common bigrams in the file list, padded with NULs + if there are fewer. */ +static char bigrams[257] = {0}; + +/* Return the offset of PATTERN in STRING, or -1 if not found. */ + +static int +strindex (char *string, char *pattern) +{ + register char *s; + + for (s = string; *s != '\0'; s++) + /* Fast first char check. */ + if (*s == *pattern) + { + register char *p2 = pattern + 1, *s2 = s + 1; + while (*p2 != '\0' && *p2 == *s2) + p2++, s2++; + if (*p2 == '\0') + return s2 - strlen (pattern) - string; + } + return -1; +} + +/* Return the length of the longest common prefix of strings S1 and S2. */ + +static int +prefix_length (char *s1, char *s2) +{ + register char *start; + + for (start = s1; *s1 == *s2 && *s1 != '\0'; s1++, s2++) + ; + return s1 - start; +} + +extern char *version_string; + +static void +usage (FILE *stream) +{ + fprintf (stream, _("\ +Usage: %s [--version | --help]\n\ +or %s most_common_bigrams < file-list > locate-database\n"), + program_name, program_name); + fputs (_("\nReport bugs to <bug-findutils@gnu.org>.\n"), stream); +} + + +static void inerr (const char *filename) ATTRIBUTE_NORETURN; +static void outerr (void) ATTRIBUTE_NORETURN; + +static void +inerr (const char *filename) +{ + error (EXIT_FAILURE, errno, "%s", filename); + /*NOTREACHED*/ + abort (); +} + +static void +outerr (void) +{ + error (EXIT_FAILURE, errno, _("write error")); + /*NOTREACHED*/ + abort (); +} + + +int +main (int argc, char **argv) +{ + char *path; /* The current input entry. */ + char *oldpath; /* The previous input entry. */ + size_t pathsize, oldpathsize; /* Amounts allocated for them. */ + int count, oldcount, diffcount; /* Their prefix lengths & the difference. */ + char bigram[3]; /* Bigram to search for in table. */ + int code; /* Index of `bigram' in bigrams table. */ + FILE *fp; /* Most common bigrams file. */ + int line_len; /* Length of input line. */ + + set_program_name (argv[0]); + if (atexit (close_stdout)) + { + error (EXIT_FAILURE, errno, _("The atexit library function failed")); + } + + bigram[2] = '\0'; + + if (argc != 2) + { + usage (stderr); + return 2; + } + + if (0 == strcmp (argv[1], "--help")) + { + usage (stdout); + return 0; + } + else if (0 == strcmp (argv[1], "--version")) + { + display_findutils_version ("code"); + return 0; + } + + fp = fopen (argv[1], "r"); + if (fp == NULL) + { + fprintf (stderr, "%s: ", argv[0]); + perror (argv[1]); + return 1; + } + + pathsize = oldpathsize = 1026; /* Increased as necessary by getline. */ + path = xmalloc (pathsize); + oldpath = xmalloc (oldpathsize); + + /* Set to empty string, to force the first prefix count to 0. */ + oldpath[0] = '\0'; + oldcount = 0; + + /* Copy the list of most common bigrams to the output, + padding with NULs if there are <128 of them. */ + if (NULL == fgets (bigrams, 257, fp)) + inerr (argv[1]); + + if (256 != fwrite (bigrams, 1, 256, stdout)) + outerr (); + + if (EOF == fclose (fp)) + inerr (argv[1]); + + while ((line_len = getline (&path, &pathsize, stdin)) > 0) + { + char *pp; + + path[line_len - 1] = '\0'; /* Remove newline. */ + + /* Squelch unprintable chars in path so as not to botch decoding. */ + for (pp = path; *pp != '\0'; pp++) + { + if (!(*pp >= 040 && *pp < 0177)) + *pp = '?'; + } + + count = prefix_length (oldpath, path); + diffcount = count - oldcount; + oldcount = count; + /* If the difference is small, it fits in one byte; + otherwise, two bytes plus a marker noting that fact. */ + if (diffcount < -LOCATEDB_OLD_OFFSET || diffcount > LOCATEDB_OLD_OFFSET) + { + if (EOF ==- putc (LOCATEDB_OLD_ESCAPE, stdout)) + outerr (); + + if (!putword (stdout, + diffcount+LOCATEDB_OLD_OFFSET, + GetwordEndianStateNative)) + outerr (); + } + else + { + if (EOF == putc (diffcount + LOCATEDB_OLD_OFFSET, stdout)) + outerr (); + } + + /* Look for bigrams in the remainder of the path. */ + for (pp = path + count; *pp != '\0'; pp += 2) + { + if (pp[1] == '\0') + { + /* No bigram is possible; only one char is left. */ + putchar (*pp); + break; + } + bigram[0] = *pp; + bigram[1] = pp[1]; + /* Linear search for specific bigram in string table. */ + code = strindex (bigrams, bigram); + if (code % 2 == 0) + putchar ((code / 2) | 0200); /* It's a common bigram. */ + else + fputs (bigram, stdout); /* Write the text as printable ASCII. */ + } + + { + /* Swap path and oldpath and their sizes. */ + char *tmppath = oldpath; + size_t tmppathsize = oldpathsize; + oldpath = path; + oldpathsize = pathsize; + path = tmppath; + pathsize = tmppathsize; + } + } + + free (path); + free (oldpath); + + return 0; +} diff --git a/locate/frcode.c b/locate/frcode.c new file mode 100644 index 0000000..475b69a --- /dev/null +++ b/locate/frcode.c @@ -0,0 +1,362 @@ +/* frcode -- front-compress a sorted list + Copyright (C) 1994, 2005, 2006, 2007, 2010, 2011 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 <http://www.gnu.org/licenses/>. +*/ + +/* Usage: frcode < sorted-list > compressed-list + + Uses front compression (also known as incremental encoding); + see ";login:", March 1983, p. 8. + + The input is a sorted list of NUL-terminated strings (or + newline-terminated if the -0 option is not given). + + The output entries are in the same order as the input; each entry + consists of a signed offset-differential count byte (the additional + number of characters of prefix of the preceding entry to use beyond + the number that the preceding entry is using of its predecessor), + followed by a null-terminated ASCII remainder. + + If the offset-differential count is larger than can be stored + in a byte (+/-127), the byte has the value LOCATEDB_ESCAPE + and the count follows in a 2-byte word, with the high byte first + (network byte order). + + Example: + + Input, with NULs changed to newlines: + /usr/src + /usr/src/cmd/aardvark.c + /usr/src/cmd/armadillo.c + /usr/tmp/zoo + + Length of the longest prefix of the preceding entry to share: + 0 /usr/src + 8 /cmd/aardvark.c + 14 rmadillo.c + 5 tmp/zoo + + Output, with NULs changed to newlines and count bytes made printable: + 0 LOCATE02 + 0 /usr/src + 8 /cmd/aardvark.c + 6 rmadillo.c + -9 tmp/zoo + + (6 = 14 - 8, and -9 = 5 - 14) + + Written by James A. Woods <jwoods@adobe.com>. + Modified by David MacKenzie <djm@gnu.org>. + Modified by James Youngman <jay@gnu.org>. +*/ + +/* config.h must be included first. */ +#include <config.h> + +/* system headers. */ +#include <assert.h> +#include <errno.h> +#include <getopt.h> +#include <limits.h> +#include <stdbool.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/types.h> + +/* gnulib headers. */ +#include "closeout.h" +#include "error.h" +#include "gettext.h" +#include "progname.h" +#include "xalloc.h" + +/* find headers. */ +#include "findutils-version.h" +#include "locatedb.h" + +#if ENABLE_NLS +# include <libintl.h> +# define _(Text) gettext (Text) +#else +# define _(Text) Text +#define textdomain(Domain) +#define bindtextdomain(Package, Directory) +#endif +#ifdef gettext_noop +# define N_(String) gettext_noop (String) +#else +/* We used to use (String) instead of just String, but apparently ISO C + * doesn't allow this (at least, that's what HP said when someone reported + * this as a compiler bug). This is HP case number 1205608192. See + * also http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11250 (which references + * ANSI 3.5.7p14-15). The Intel icc compiler also rejects constructs + * like: static const char buf[] = ("string"); + */ +# define N_(String) String +#endif + + +/* Write out a 16-bit int, high byte first (network byte order). + * Return true iff all went well. + */ +static int +put_short (int c, FILE *fp) +{ + /* XXX: The value of c may be negative. ANSI C 1989 (section 6.3.7) + * indicates that the result of shifting a negative value right is + * implementation defined. + */ + assert (c <= SHRT_MAX); + assert (c >= SHRT_MIN); + return (putc (c >> 8, fp) != EOF) && (putc (c, fp) != EOF); +} + +/* Return the length of the longest common prefix of strings S1 and S2. */ + +static int +prefix_length (char *s1, char *s2) +{ + register char *start; + int limit = INT_MAX; + for (start = s1; *s1 == *s2 && *s1 != '\0'; s1++, s2++) + { + /* Don't emit a prefix length that will not fit into + * our return type. + */ + if (0 == --limit) + break; + } + return s1 - start; +} + +static struct option const longopts[] = +{ + {"help", no_argument, NULL, 'h'}, + {"version", no_argument, NULL, 'v'}, + {"null", no_argument, NULL, '0'}, + {NULL, no_argument, NULL, 0} +}; + +extern char *version_string; + +static void +usage (FILE *stream) +{ + fprintf (stream, + _("Usage: %s [-0 | --null] [--version] [--help]\n"), + program_name); + fputs (_("\nReport bugs to <bug-findutils@gnu.org>.\n"), stream); +} + +static long +get_seclevel (char *s) +{ + long result; + char *p; + + /* Reset errno in oreder to be able to distinguish LONG_MAX/LONG_MIN + * from values whichare actually out of range + */ + errno = 0; + + result = strtol (s, &p, 10); + if ((0==result) && (p == optarg)) + { + error (EXIT_FAILURE, 0, + _("You need to specify a security level as a decimal integer.")); + /*NOTREACHED*/ + return -1; + } + else if ((LONG_MIN==result || LONG_MAX==result) && errno) + + { + error (EXIT_FAILURE, 0, + _("Security level %s is outside the convertible range."), s); + /*NOTREACHED*/ + return -1; + } + else if (*p) + { + /* Some suffix exists */ + error (EXIT_FAILURE, 0, + _("Security level %s has unexpected suffix %s."), s, p); + /*NOTREACHED*/ + return -1; + } + else + { + return result; + } +} + +static void +outerr (void) +{ + /* Issue the same error message as closeout () would. */ + error (EXIT_FAILURE, errno, _("write error")); +} + +int +main (int argc, char **argv) +{ + char *path; /* The current input entry. */ + char *oldpath; /* The previous input entry. */ + size_t pathsize, oldpathsize; /* Amounts allocated for them. */ + int count, oldcount, diffcount; /* Their prefix lengths & the difference. */ + int line_len; /* Length of input line. */ + int delimiter = '\n'; + int optc; + int slocate_compat = 0; + long slocate_seclevel = 0L; + + if (argv[0]) + set_program_name (argv[0]); + else + set_program_name ("frcode"); + + if (atexit (close_stdout)) + { + error (EXIT_FAILURE, errno, _("The atexit library function failed")); + } + + pathsize = oldpathsize = 1026; /* Increased as necessary by getline. */ + path = xmalloc (pathsize); + oldpath = xmalloc (oldpathsize); + + oldpath[0] = 0; + oldcount = 0; + + + while ((optc = getopt_long (argc, argv, "hv0S:", longopts, (int *) 0)) != -1) + switch (optc) + { + case '0': + delimiter = 0; + break; + + case 'S': + slocate_compat = 1; + slocate_seclevel = get_seclevel (optarg); + if (slocate_seclevel < 0 || slocate_seclevel > 1) + { + error (EXIT_FAILURE, 0, + _("slocate security level %ld is unsupported."), + slocate_seclevel); + } + break; + + case 'h': + usage (stdout); + return 0; + + case 'v': + display_findutils_version ("frcode"); + return 0; + + default: + usage (stderr); + return 1; + } + + /* We expect to have no arguments. */ + if (optind != argc) + { + usage (stderr); + return 1; + } + + + if (slocate_compat) + { + fputc (slocate_seclevel ? '1' : '0', stdout); + fputc (0, stdout); + + } + else + { + /* GNU LOCATE02 format */ + if (fwrite (LOCATEDB_MAGIC, 1, sizeof (LOCATEDB_MAGIC), stdout) + != sizeof (LOCATEDB_MAGIC)) + { + error (EXIT_FAILURE, errno, _("Failed to write to standard output")); + } + } + + + while ((line_len = getdelim (&path, &pathsize, delimiter, stdin)) > 0) + { + path[line_len - 1] = '\0'; /* FIXME temporary: nuke the newline. */ + + count = prefix_length (oldpath, path); + diffcount = count - oldcount; + if ( (diffcount > SHRT_MAX) || (diffcount < SHRT_MIN) ) + { + /* We do this to prevent overflow of the value we + * write with put_short () + */ + count = 0; + diffcount = (-oldcount); + } + oldcount = count; + + if (slocate_compat) + { + /* Emit no count for the first pathname. */ + slocate_compat = 0; + } + else + { + /* If the difference is small, it fits in one byte; + otherwise, two bytes plus a marker noting that fact. */ + if (diffcount < LOCATEDB_ONEBYTE_MIN + || diffcount > LOCATEDB_ONEBYTE_MAX) + { + if (EOF == putc (LOCATEDB_ESCAPE, stdout)) + outerr (); + if (!put_short (diffcount, stdout)) + outerr (); + } + else + { + if (EOF == putc (diffcount, stdout)) + outerr (); + } + } + + if ( (EOF == fputs (path + count, stdout)) + || (EOF == putc ('\0', stdout))) + { + outerr (); + } + + if (1) + { + /* Swap path and oldpath and their sizes. */ + char *tmppath = oldpath; + size_t tmppathsize = oldpathsize; + oldpath = path; + oldpathsize = pathsize; + path = tmppath; + pathsize = tmppathsize; + } + } + + free (path); + free (oldpath); + + return 0; +} diff --git a/locate/locate.1 b/locate/locate.1 new file mode 100644 index 0000000..877d20f --- /dev/null +++ b/locate/locate.1 @@ -0,0 +1,283 @@ +.TH LOCATE 1 \" -*- nroff -*- +.SH NAME +locate \- list files in databases that match a pattern +.SH SYNOPSIS +.B locate +[\-d path | \-\-database=path] +[\-e | \-E | \-\-[non\-]existing] +[\-i | \-\-ignore-case] +[\-0 | \-\-null] +[\-c | \-\-count] +[\-w | \-\-wholename] +[\-b | \-\-basename] +[\-l N | \-\-limit=N] +[\-S | \-\-statistics] +[\-r | \-\-regex ] +[\-\-max-database-age D] +[\-P | \-H | \-\-nofollow] +[\-L | \-\-follow] +[\-\-version] +[\-A | \-\-all] +[\-p | \-\-print] +[\-\-help] +pattern... +.SH DESCRIPTION +This manual page +documents the GNU version of +.BR locate . +For each given pattern, +.B locate +searches one or more databases of file names and displays the +file names that contain the pattern. Patterns can contain shell-style +metacharacters: `*', `?', and `[]'. The metacharacters do not treat +`/' or `.' specially. Therefore, a pattern `foo*bar' can match a +file name that contains `foo3/bar', and a pattern `*duck*' can match a +file name that contains `lake/.ducky'. Patterns that contain +metacharacters should be quoted to protect them from expansion by the +shell. +.P +If a pattern is a plain string \(em it contains no metacharacters \(em +.B locate +displays all file names in the database that contain that string +anywhere. If a pattern does contain metacharacters, +.B locate +only displays file names that match the pattern exactly. As a result, +patterns that contain metacharacters should usually begin with a `*', +and will most often end with one as well. The exceptions are patterns +that are intended to explicitly match the beginning or end of a file +name. +.P +The file name databases contain lists of files that were on the system +when the databases were last updated. The system administrator can +choose the file name of the default database, the frequency with which +the databases are updated, and the directories for which they contain +entries; see \fBupdatedb\fP(1). +.P +If +.BR locate 's +output is going to a terminal, unusual characters in the output are +escaped in the same way as for the \-print action of the +.B find +command. If the output is not going to a terminal, file names are +printed exactly as-is. + +.SH OPTIONS +.TP +.I "\-0, \-\-null" +Use ASCII NUL as a separator, instead of newline. +.TP +.I "\-A, \-\-all" +Print only names which match all non-option arguments, not those matching +one or more non-option arguments. +.TP +.I "\-b, \-\-basename" +Results are considered to match if the pattern specified matches the +final component of the name of a file as listed in the database. +This final component is usually referred to as the `base name'. +.TP +.I "\-c, \-\-count" +Instead of printing the matched filenames, just print the total +number of matches we found, unless \-\-\fIprint\fP (\-p) is also present. +.TP +.I "\-d \fIpath\fP, \-\-database=\fIpath\fP" +Instead of searching the default file name database, search the file +name databases in \fIpath\fP, which is a colon-separated list of +database file names. You can also use the environment variable +.B LOCATE_PATH +to set the list of database files to search. +The option overrides the environment variable if both are used. Empty +elements in the path are taken to be synonyms for the file name of the +default database. +A database can be supplied on stdin, using `\-' as an element +of \fIpath\fP. If more than one element of \fIpath\fP is `\-', +later instances are ignored (and a warning message is printed). +.IP +The file name database format changed starting with GNU +.B find +and +.B locate +version 4.0 to allow machines with different byte orderings to share +the databases. This version of +.B locate +can automatically recognize and read databases produced for older +versions of GNU +.B locate +or Unix versions of +.B locate +or +.BR find . +Support for the old locate database format will be discontinued in a +future release. +.TP +.I "\-e, \-\-existing" +Only print out such names that currently exist (instead of such names +that existed when the database was created). +Note that this may slow down the program a lot, if there are many matches +in the database. If you are using this option within a program, +please note that it is possible for the file to be deleted after +.B locate +has checked that it exists, but before you use it. +.TP +.I "\-E, \-\-non\-existing" +Only print out such names that currently do not exist (instead of such names +that existed when the database was created). +Note that this may slow down the program a lot, if there are many matches +in the database. +.TP +.I "\-\-help" +Print a summary of the options to +.B locate +and exit. +.TP +.I "\-i, \-\-ignore-case" +Ignore case distinctions in both the pattern and the file names. +.TP +.I "\-l N, \-\-limit=N" +Limit the number of matches to N. If a limit is set via this option, +the number of results printed for the \-c option will never be larger +than this number. +.TP +.I "\-L, \-\-follow" +If testing for the existence of files (with the \-e or \-E options), +consider broken symbolic links to be non-existing. This is the default. +.TP +.I "\-\-max-database-age D" +Normally, +.B locate +will issue a warning message when it searches a database which is more +than 8 days old. This option changes that value to something other +than 8. The effect of specifying a negative value is undefined. +.TP +.I "\-m, \-\-mmap" +Accepted but does nothing, for compatibility with BSD +.BR locate . +.TP +.I "\-P, \-H, \-\-nofollow" +If testing for the existence of files (with the \-e or \-E options), treat +broken symbolic links as if they were existing files. The \-H +form of this option is provided purely for similarity with +.BR find ; +the use of \-P is recommended over \-H. +.TP +.I "\-p, \-\-print" +Print search results when they normally would not, because of the presence +of \-\-statistics (\-S) or \-\-count (\-c). +.TP +.I "\-r, \-\-regex " +The pattern specified on the command line is understood to be a +regular expression, as opposed to a glob pattern. The Regular +expressions work in the same was as in +.B emacs +and +.BR find , +except for the fact that "." will match a newline. +Filenames whose full paths match the specified regular expression are +printed (or, in the case of the \-c option, counted). If you wish to +anchor your regular expression at the ends of the full path name, then +as is usual with regular expressions, you should use the characters ^ +and $ to signify this. +.TP +.I "\-s, \-\-stdio" +Accepted but does nothing, for compatibility with BSD +.BR locate . +.TP +.I "\-S, \-\-statistics" +Print various statistics about each locate database and then exit +without performing a search, unless non-option arguments are given. +For compatibility with BSD, \-S is accepted as a synonym +for \-\-statistics. However, the output of +.B locate \-S +is different for the GNU and BSD implementations of +.BR locate . +.TP +.I "\-\-version" +Print the version number of +.B locate +and exit. +.TP +.I "\-w, \-\-wholename" +Match against the whole name of the file as listed in the database. +This is the default. +.SH ENVIRONMENT +.TP +.B LOCATE_PATH +Colon-separated list of databases to search. If the value has a +leading or trailing colon, or has two colons in a row, you may get +results that vary between different versions of +.BR locate . + +.SH "SEE ALSO" +\fBfind\fP(1), \fBlocatedb\fP(5), \fBupdatedb\fP(1), \fBxargs\fP(1), +\fBglob\fP(3) + +The full documentation for +.B locate +is maintained as a Texinfo manual. If the +.B info +and +.B locate +programs are properly installed at your site, the command +.B info locate +should give you access to the complete manual. + + +.SH "HISTORY" +The +.B locate +program started life as the BSD fast find program, contributed to BSD +by James A. Woods. This was described by his paper +.I Finding Files Fast +which was published in Usenix +.IR ;login: , +Vol 8, No 1, February/March, 1983, pp. 8-10. When the +.B find +program began to assume a default +.B -print +action if no action was specified, this changed the interpretation of +.B find +.BR pattern . +The BSD developers therefore moved the fast find functionality into +.BR locate . +The GNU implementation of +.B locate +appears to be derived from the same code. +.P +Significant changes to +.B locate +in reverse order: +.TS +tab(|); +LL. +4.3.7 | Byte-order independent support for old database format +4.3.3 | locate \fI\-i\fR supports multi-byte characters correctly + | Introduced \fI\-\-max_db_age\fR +4.3.2 | Support for the slocate database format +4.2.22| Introduced the \fI\-\-all\fR option +4.2.15| Introduced the \fI\-\-regex\fR option +4.2.14| Introduced options \fI\-L, \-P, \-H\fR +4.2.12| Empty items in \fBLOCATE_PATH\fR now indicate the default database +4.2.11| Introduced the \fI\-\-statistics\fR option +4.2.4 | Introduced \fI\-\-count\fR and \fI\-\-limit\fR +4.2.0 | Glob characters cause matching against the whole file name +4.0 | Introduced the LOCATE02 database format +3.7 | Locate can search multiple databases +.TE +.SH "BUGS" +.P +The locate database correctly handles filenames containing newlines, +but only if the system's sort command has a working +\-z +option. If you suspect that +.B locate +may need to return filenames containing newlines, consider using its +.I \-\-null +option. +.P +The best way to report a bug is to use the form at +http://savannah.gnu.org/bugs/?group=findutils. +The reason for this is that you will then be able to track progress in +fixing the problem. Other comments about \fBlocate\fP(1) and about +the findutils package in general can be sent to the +.I bug-findutils +mailing list. To join the list, send email to +.IR bug-findutils-request@gnu.org . diff --git a/locate/locate.c b/locate/locate.c new file mode 100644 index 0000000..7954895 --- /dev/null +++ b/locate/locate.c @@ -0,0 +1,1956 @@ +/* locate -- search databases for filenames that match patterns + Copyright (C) 1994, 1996, 1998, 1999, 2000, 2003, 2004, 2005, 2006, + 2007, 2008, 2010, 2011 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 <http://www.gnu.org/licenses/>. +*/ + +/* Usage: locate [options] pattern... + + Scan a pathname list for the full pathname of a file, given only + a piece of the name (possibly containing shell globbing metacharacters). + The list has been processed with front-compression, which reduces + the list size by a factor of 4-5. + Recognizes two database formats, old and new. The old format is + bigram coded, which reduces space by a further 20-25% and uses the + following encoding of the database bytes: + + 0-28 likeliest differential counts + offset (14) to make nonnegative + 30 escape code for out-of-range count to follow in next halfword + 128-255 bigram codes (the 128 most common, as determined by `updatedb') + 32-127 single character (printable) ASCII remainder + + Earlier versions of GNU locate used to use a novel two-tiered + string search technique, which was described in Usenix ;login:, Vol + 8, No 1, February/March, 1983, p. 8. + + However, latterly code changes to provide additional functionality + became dificult to make with the existing reading scheme, and so + we no longer perform the matching as efficiently as we used to (that is, + we no longer use the same algorithm). + + The old algorithm was: + + First, match a metacharacter-free subpattern and a partial + pathname BACKWARDS to avoid full expansion of the pathname list. + The time savings is 40-50% over forward matching, which cannot + efficiently handle overlapped search patterns and compressed + path remainders. + + Then, match the actual shell glob pattern (if in this form) + against the candidate pathnames using the slower shell filename + matching routines. + + + Written by James A. Woods <jwoods@adobe.com>. + Modified by David MacKenzie <djm@gnu.org>. + Additional work by James Youngman and Bas van Gompel. +*/ + +/* config.h must be included first. */ +#include <config.h> + +/* system headers. */ +#include <assert.h> +#include <ctype.h> +#include <errno.h> +#include <fcntl.h> +#include <getopt.h> +#include <grp.h> /* for setgroups() */ +#include <locale.h> +#include <regex.h> +#include <signal.h> +#include <stdbool.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/stat.h> +#include <sys/types.h> +#include <time.h> +#include <unistd.h> +#include <xstrtol.h> + +/* gnulib headers. */ +#include "fnmatch.h" +#include "gettext.h" +#include "progname.h" +#include "xalloc.h" +#include "error.h" +#include "human.h" +#include "dirname.h" +#include "closeout.h" +#include "quotearg.h" +#include "regextype.h" +#include "stat-time.h" + +/* find headers. */ +#include "findutils-version.h" +#include "locatedb.h" +#include "printquoted.h" +#include "splitstring.h" + + +#if ENABLE_NLS +# include <libintl.h> +# define _(Text) gettext (Text) +#else +# define _(Text) Text +#define textdomain(Domain) +#define bindtextdomain(Package, Directory) +#define ngettext(singular,plural,n) ((1==n) ? singular : plural) +#endif +#ifdef gettext_noop +# define N_(String) gettext_noop (String) +#else +/* We used to use (String) instead of just String, but apparently ISO C + * doesn't allow this (at least, that's what HP said when someone reported + * this as a compiler bug). This is HP case number 1205608192. See + * also http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11250 (which references + * ANSI 3.5.7p14-15). The Intel icc compiler also rejects constructs + * like: static const char buf[] = ("string"); + */ +# define N_(String) String +#endif + +/* Warn if a database is older than this. 8 days allows for a weekly + update that takes up to a day to perform. */ +static unsigned int warn_number_units = 8; + +/* Printable name of units used in WARN_SECONDS */ +static const char warn_name_units[] = N_("days"); +#define SECONDS_PER_UNIT (60 * 60 * 24) + +enum visit_result + { + VISIT_CONTINUE = 1, /* please call the next visitor */ + VISIT_ACCEPTED = 2, /* accepted, call no further callbacks for this file */ + VISIT_REJECTED = 4, /* rejected, process next file. */ + VISIT_ABORT = 8 /* rejected, process no more files. */ + }; + +enum ExistenceCheckType + { + ACCEPT_EITHER, /* Corresponds to lack of -E/-e option */ + ACCEPT_EXISTING, /* Corresponds to option -e */ + ACCEPT_NON_EXISTING /* Corresponds to option -E */ + }; + +/* Check for existence of files before printing them out? */ +enum ExistenceCheckType check_existence = ACCEPT_EITHER; + +static int follow_symlinks = 1; + +/* What to separate the results with. */ +static int separator = '\n'; + +static struct quoting_options * quote_opts = NULL; +static bool stdout_is_a_tty; +static bool print_quoted_filename; +static bool results_were_filtered; + +static const char *selected_secure_db = NULL; + + +/* Change the number of days old the database can be + * before we complain about it. + */ +static void +set_max_db_age (const char *s) +{ + char *end; + unsigned long int val; + /* XXX: we ignore the case where the input is negative, which is allowed(!). */ + + if (0 == *s) + { + error (EXIT_FAILURE, 0, + _("The argument for option --max-database-age must not be empty")); + } + + + /* We have to set errno here, otherwise when the function returns ULONG_MAX, + * we would not be able to tell if that is the correct answer, or whether it + * signifies an error. + */ + errno = 0; + val = strtoul (s, &end, 10); + + /* Diagnose number too large, non-numbes and trailing junk. */ + if ((ULONG_MAX == val && ERANGE == errno) || + (0 == val && EINVAL == errno)) + { + error (EXIT_FAILURE, errno, + _("Invalid argument %s for option --max-database-age"), + quotearg_n_style (0, locale_quoting_style, s)); + } + else if (*end) + { + /* errno wasn't set, don't print its message */ + error (EXIT_FAILURE, 0, + _("Invalid argument %s for option --max-database-age"), + quotearg_n_style (0, locale_quoting_style, s)); + } + else + { + warn_number_units = val; + } +} + + + +/* Read in a 16-bit int, high byte first (network byte order). */ + +static short +get_short (FILE *fp) +{ + + register short x; + + x = (signed char) fgetc (fp) << 8; + x |= (fgetc (fp) & 0xff); + return x; +} + +const char * const metacharacters = "*?[]\\"; + +/* Return nonzero if S contains any shell glob characters. + */ +static int +contains_metacharacter (const char *s) +{ + if (NULL == strpbrk (s, metacharacters)) + return 0; + else + return 1; +} + +/* locate_read_str() + * + * Read bytes from FP into the buffer at offset OFFSET in (*BUF), + * until we reach DELIMITER or end-of-file. We reallocate the buffer + * as necessary, altering (*BUF) and (*SIZ) as appropriate. No assumption + * is made regarding the content of the data (i.e. the implementation is + * 8-bit clean, the only delimiter is DELIMITER). + * + * Written Fri May 23 18:41:16 2003 by James Youngman, because getstr() + * has been removed from gnulib. + * + * We call the function locate_read_str() to avoid a name clash with the curses + * function getstr(). + */ +static int +locate_read_str (char **buf, size_t *siz, FILE *fp, int delimiter, int offs) +{ + char * p = NULL; + size_t sz = 0; + int nread; + size_t needed; + + nread = getdelim (&p, &sz, delimiter, fp); + if (nread >= 0) + { + assert (p != NULL); + + needed = offs + nread + 1u; + if (needed > (*siz)) + { + char *pnew = realloc (*buf, needed); + if (NULL == pnew) + { + return -1; /* FAIL */ + } + else + { + *siz = needed; + *buf = pnew; + } + } + memcpy((*buf)+offs, p, nread + 1); + free(p); + } + return nread; +} + + +struct locate_limits +{ + uintmax_t limit; + uintmax_t items_accepted; +}; +static struct locate_limits limits; + + +struct locate_stats +{ + uintmax_t compressed_bytes; + uintmax_t total_filename_count; + uintmax_t total_filename_length; + uintmax_t whitespace_count; + uintmax_t newline_count; + uintmax_t highbit_filename_count; +}; +static struct locate_stats statistics; + + +struct regular_expression +{ + struct re_pattern_buffer regex; /* for --regex */ +}; + + +struct process_data +{ + int c; /* An input byte. */ + int count; /* The length of the prefix shared with the previous database entry. */ + int len; + char *original_filename; /* The current input database entry. */ + size_t pathsize; /* Amount allocated for it. */ + char *munged_filename; /* path or basename(path) */ + FILE *fp; /* The pathname database. */ + const char *dbfile; /* Its name, or "<stdin>" */ + GetwordEndianState endian_state; + /* for the old database format, + the first and second characters of the most common bigrams. */ + char bigram1[128]; + char bigram2[128]; +}; + + +typedef int (*visitfunc)(struct process_data *procdata, + void *context); + +struct visitor +{ + visitfunc inspector; + void * context; + struct visitor *next; +}; + + +static struct visitor *inspectors = NULL; +static struct visitor *lastinspector = NULL; +static struct visitor *past_pat_inspector = NULL; + +static inline int visit (const struct visitor *p, + int accept_flags, + struct process_data *procdata, + const struct visitor * const stop) +{ + register int result = accept_flags; + while ( (accept_flags & result) && (stop != p) ) + { + result = (p->inspector)(procdata, p->context); + p = p->next; + } + return result; +} + +/* 0 or 1 pattern(s) */ +static int +process_simple (struct process_data *procdata) +{ + return visit (inspectors, (VISIT_CONTINUE|VISIT_ACCEPTED), procdata, NULL); +} + +/* Accept if any pattern matches. */ +static int +process_or (struct process_data *procdata) +{ + int result; + + result = visit (inspectors, (VISIT_CONTINUE|VISIT_REJECTED), procdata, past_pat_inspector); + if (result == VISIT_CONTINUE) + result = VISIT_REJECTED; + if (result & (VISIT_ABORT | VISIT_REJECTED)) + return result; + + result = visit (past_pat_inspector, VISIT_CONTINUE, procdata, NULL); + if (VISIT_CONTINUE == result) + return VISIT_ACCEPTED; + else + return result; +} + +/* Accept if all pattern match. */ +static int +process_and (struct process_data *procdata) +{ + int result; + + result = visit (inspectors, (VISIT_CONTINUE|VISIT_ACCEPTED), procdata, past_pat_inspector); + if (result == VISIT_CONTINUE) + result = VISIT_REJECTED; + if (result & (VISIT_ABORT | VISIT_REJECTED)) + return result; + + result = visit (past_pat_inspector, VISIT_CONTINUE, procdata, NULL); + if (VISIT_CONTINUE == result) + return VISIT_ACCEPTED; + else + return result; +} + +typedef int (*processfunc)(struct process_data *procdata); + +static processfunc mainprocessor = NULL; + +static void +add_visitor (visitfunc fn, void *context) +{ + struct visitor *p = xmalloc (sizeof (struct visitor)); + p->inspector = fn; + p->context = context; + p->next = NULL; + + if (NULL == lastinspector) + { + lastinspector = inspectors = p; + } + else + { + lastinspector->next = p; + lastinspector = p; + } +} + +static int +visit_justprint_quoted (struct process_data *procdata, void *context) +{ + (void) context; + print_quoted (stdout, quote_opts, stdout_is_a_tty, + "%s", + procdata->original_filename); + putchar (separator); + return VISIT_CONTINUE; +} + +static int +visit_justprint_unquoted (struct process_data *procdata, void *context) +{ + (void) context; + fputs (procdata->original_filename, stdout); + putchar (separator); + return VISIT_CONTINUE; +} + +static void +toolong (struct process_data *procdata) +{ + error (EXIT_FAILURE, 0, + _("locate database %s contains a " + "filename longer than locate can handle"), + procdata->dbfile); +} + +static void +extend (struct process_data *procdata, size_t siz1, size_t siz2) +{ + /* Figure out if the addition operation is safe before performing it. */ + if (SIZE_MAX - siz1 < siz2) + { + toolong (procdata); + } + else if (procdata->pathsize < (siz1+siz2)) + { + procdata->pathsize = siz1+siz2; + procdata->original_filename = x2nrealloc (procdata->original_filename, + &procdata->pathsize, + 1); + } +} + +static int +visit_old_format (struct process_data *procdata, void *context) +{ + register size_t i; + (void) context; + + if (EOF == procdata->c) + return VISIT_ABORT; + + /* Get the offset in the path where this path info starts. */ + if (procdata->c == LOCATEDB_OLD_ESCAPE) + { + int minval, maxval; + int word; + + procdata->count -= LOCATEDB_OLD_OFFSET; + minval = (0 - procdata->count); + if (procdata->count >= 0) + maxval = (procdata->len - procdata->count); + else + maxval = (procdata->len - 0); + word = getword (procdata->fp, procdata->dbfile, + minval, maxval, &procdata->endian_state); + procdata->count += word; + assert (procdata->count >= 0); + } + else + { + procdata->count += (procdata->c - LOCATEDB_OLD_OFFSET); + assert (procdata->count >= 0); + } + + /* Overlay the old path with the remainder of the new. Read + * more data until we get to the next filename. + */ + for (i=procdata->count; + (procdata->c = getc (procdata->fp)) > LOCATEDB_OLD_ESCAPE;) + { + if (EOF == procdata->c) + break; + + if (procdata->c < 0200) + { + /* An ordinary character. */ + extend (procdata, i, 1u); + procdata->original_filename[i++] = procdata->c; + } + else + { + /* Bigram markers have the high bit set. */ + extend (procdata, i, 2u); + procdata->c &= 0177; + procdata->original_filename[i++] = procdata->bigram1[procdata->c]; + procdata->original_filename[i++] = procdata->bigram2[procdata->c]; + } + } + + /* Consider the case where we executed the loop body zero times; we + * still need space for the terminating null byte. + */ + extend (procdata, i, 1u); + procdata->original_filename[i] = 0; + procdata->len = i; + procdata->munged_filename = procdata->original_filename; + + return VISIT_CONTINUE; +} + +static int +visit_locate02_format (struct process_data *procdata, void *context) +{ + register char *s; + int nread; + (void) context; + + if (procdata->c == LOCATEDB_ESCAPE) + procdata->count += (short)get_short (procdata->fp); + else if (procdata->c > 127) + procdata->count += procdata->c - 256; + else + procdata->count += procdata->c; + + if (procdata->count > procdata->len || procdata->count < 0) + { + /* This should not happen generally, but since we're + * reading in data which is outside our control, we + * cannot prevent it. + */ + error (EXIT_FAILURE, 0, _("locate database %s is corrupt or invalid"), + quotearg_n_style (0, locale_quoting_style, procdata->dbfile)); + } + + /* Overlay the old path with the remainder of the new. */ + nread = locate_read_str (&procdata->original_filename, + &procdata->pathsize, + procdata->fp, 0, procdata->count); + if (nread < 1) + return VISIT_ABORT; + procdata->c = getc (procdata->fp); + procdata->len = procdata->count + nread - 1; /* Number of chars in path. */ + + if (procdata->len < 1) + { + /* This should not happen generally, but since we're + * reading in data which is outside our control, we + * cannot prevent it. + */ + error(1, 0, _("locate database %s is corrupt or invalid"), + quotearg_n_style(0, locale_quoting_style, procdata->dbfile)); + } + + s = procdata->original_filename + procdata->len - 1; /* Move to the last char in path. */ + assert (s[0] != '\0'); + assert (s[1] == '\0'); /* Our terminator. */ + assert (s[2] == '\0'); /* Added by locate_read_str. */ + + procdata->munged_filename = procdata->original_filename; + + return VISIT_CONTINUE; +} + +static int +visit_basename (struct process_data *procdata, void *context) +{ + (void) context; + procdata->munged_filename = last_component (procdata->original_filename); + + return VISIT_CONTINUE; +} + + +/* visit_existing_follow implements -L -e */ +static int +visit_existing_follow (struct process_data *procdata, void *context) +{ + struct stat st; + (void) context; + + /* munged_filename has been converted in some way (to lower case, + * or is just the base name of the file), and original_filename has not. + * Hence only original_filename is still actually the name of the file + * whose existence we would need to check. + */ + if (stat (procdata->original_filename, &st) != 0) + { + return VISIT_REJECTED; + } + else + { + return VISIT_CONTINUE; + } +} + +/* visit_non_existing_follow implements -L -E */ +static int +visit_non_existing_follow (struct process_data *procdata, void *context) +{ + struct stat st; + (void) context; + + /* munged_filename has been converted in some way (to lower case, + * or is just the base name of the file), and original_filename has not. + * Hence only original_filename is still actually the name of the file + * whose existence we would need to check. + */ + if (stat (procdata->original_filename, &st) == 0) + { + return VISIT_REJECTED; + } + else + { + return VISIT_CONTINUE; + } +} + +/* visit_existing_nofollow implements -P -e */ +static int +visit_existing_nofollow (struct process_data *procdata, void *context) +{ + struct stat st; + (void) context; + + /* munged_filename has been converted in some way (to lower case, + * or is just the base name of the file), and original_filename has not. + * Hence only original_filename is still actually the name of the file + * whose existence we would need to check. + */ + if (lstat (procdata->original_filename, &st) != 0) + { + return VISIT_REJECTED; + } + else + { + return VISIT_CONTINUE; + } +} + +/* visit_non_existing_nofollow implements -P -E */ +static int +visit_non_existing_nofollow (struct process_data *procdata, void *context) +{ + struct stat st; + (void) context; + + /* munged_filename has been converted in some way (to lower case, + * or is just the base name of the file), and original_filename has not. + * Hence only original_filename is still actually the name of the file + * whose existence we would need to check. + */ + if (lstat (procdata->original_filename, &st) == 0) + { + return VISIT_REJECTED; + } + else + { + return VISIT_CONTINUE; + } +} + +static int +visit_substring_match_nocasefold_wide (struct process_data *procdata, void *context) +{ + const char *pattern = context; + + if (NULL != mbsstr (procdata->munged_filename, pattern)) + return VISIT_ACCEPTED; + else + return VISIT_REJECTED; +} + +static int +visit_substring_match_nocasefold_narrow (struct process_data *procdata, void *context) +{ + const char *pattern = context; + assert (MB_CUR_MAX == 1); + if (NULL != strstr (procdata->munged_filename, pattern)) + return VISIT_ACCEPTED; + else + return VISIT_REJECTED; +} + +static int +visit_substring_match_casefold_wide (struct process_data *procdata, void *context) +{ + const char *pattern = context; + + if (NULL != mbscasestr (procdata->munged_filename, pattern)) + return VISIT_ACCEPTED; + else + return VISIT_REJECTED; +} + + +static int +visit_substring_match_casefold_narrow (struct process_data *procdata, void *context) +{ + const char *pattern = context; + + assert (MB_CUR_MAX == 1); + if (NULL != strcasestr (procdata->munged_filename, pattern)) + return VISIT_ACCEPTED; + else + return VISIT_REJECTED; +} + + +static int +visit_globmatch_nofold (struct process_data *procdata, void *context) +{ + const char *glob = context; + if (fnmatch (glob, procdata->munged_filename, 0) != 0) + return VISIT_REJECTED; + else + return VISIT_ACCEPTED; +} + + +static int +visit_globmatch_casefold (struct process_data *procdata, void *context) +{ + const char *glob = context; + if (fnmatch (glob, procdata->munged_filename, FNM_CASEFOLD) != 0) + return VISIT_REJECTED; + else + return VISIT_ACCEPTED; +} + + +static int +visit_regex (struct process_data *procdata, void *context) +{ + struct regular_expression *p = context; + const size_t len = strlen (procdata->munged_filename); + + int rv = re_search (&p->regex, procdata->munged_filename, + len, 0, len, + (struct re_registers *) NULL); + if (rv < 0) + { + return VISIT_REJECTED; /* no match (-1), or internal error (-2) */ + } + else + { + return VISIT_ACCEPTED; /* match */ + } +} + + +static int +visit_stats (struct process_data *procdata, void *context) +{ + struct locate_stats *p = context; + size_t len = strlen (procdata->original_filename); + const char *s; + int highbit, whitespace, newline; + + ++(p->total_filename_count); + p->total_filename_length += len; + + highbit = whitespace = newline = 0; + for (s=procdata->original_filename; *s; ++s) + { + if ( (int)(*s) & 128 ) + highbit = 1; + if ('\n' == *s) + { + newline = whitespace = 1; + } + else if (isspace ((unsigned char)*s)) + { + whitespace = 1; + } + } + + if (highbit) + ++(p->highbit_filename_count); + if (whitespace) + ++(p->whitespace_count); + if (newline) + ++(p->newline_count); + + return VISIT_CONTINUE; +} + + +static int +visit_limit (struct process_data *procdata, void *context) +{ + struct locate_limits *p = context; + + (void) procdata; + + if (++p->items_accepted >= p->limit) + return VISIT_ABORT; + else + return VISIT_CONTINUE; +} + +static int +visit_count (struct process_data *procdata, void *context) +{ + struct locate_limits *p = context; + + (void) procdata; + + ++p->items_accepted; + return VISIT_CONTINUE; +} + +/* Emit the statistics. + */ +static void +print_stats (int argc, size_t database_file_size, const struct timespec* database_mtime) +{ + char hbuf1[LONGEST_HUMAN_READABLE + 1]; + char hbuf2[LONGEST_HUMAN_READABLE + 1]; + char hbuf3[LONGEST_HUMAN_READABLE + 1]; + char hbuf4[LONGEST_HUMAN_READABLE + 1]; + + if (database_mtime) + { + const struct tm *ptm = localtime (&(database_mtime->tv_sec)); + if (ptm) + { + enum { TIME_BUF_LEN = 20 }; + char whenbuf[TIME_BUF_LEN]; + size_t printed = strftime (whenbuf, TIME_BUF_LEN, + "%Y:%m:%d %H:%M:%S", ptm); + /* Ensure the buffer is exactly the right length. */ + assert (printed == TIME_BUF_LEN-1); + assert (whenbuf[TIME_BUF_LEN-1] == 0); + assert (whenbuf[TIME_BUF_LEN-2] != 0); + printf (_("Database was last modified at %s.%09ld"), + whenbuf, (long int) database_mtime->tv_nsec); + printed = strftime (whenbuf, TIME_BUF_LEN, "%z", ptm); + assert (printed == 5); + printf(" %s\n", whenbuf); + } + } + + printf (ngettext ("Locate database size: %s byte\n", + "Locate database size: %s bytes\n", + database_file_size), + human_readable ((uintmax_t) database_file_size, + hbuf1, human_ceiling, 1, 1)); + printf ( (results_were_filtered ? + _("Matching Filenames: %s\n") : + _("All Filenames: %s\n")), + human_readable (statistics.total_filename_count, + hbuf1, human_ceiling, 1, 1)); + /* XXX: We would ideally use ngettext () here, but I don't know + * how to use it to handle more than one possibly-plural thing/ + */ + printf (_("File names have a cumulative length of %s bytes.\n" + "Of those file names,\n" + "\n\t%s contain whitespace, " + "\n\t%s contain newline characters, " + "\n\tand %s contain characters with the high bit set.\n"), + human_readable (statistics.total_filename_length, hbuf1, human_ceiling, 1, 1), + human_readable (statistics.whitespace_count, hbuf2, human_ceiling, 1, 1), + human_readable (statistics.newline_count, hbuf3, human_ceiling, 1, 1), + human_readable (statistics.highbit_filename_count, hbuf4, human_ceiling, 1, 1)); + + if (!argc) + { + if (results_were_filtered) + { + printf (_("Some filenames may have been filtered out, " + "so we cannot compute the compression ratio.\n")); + } + else + { + if (statistics.total_filename_length) + { + /* A negative compression ratio just means that the + * compressed database is larger than the list of + * filenames. This can happen for example for + * old-format databases containing a small list of short + * filenames, because the bigram list is 256 bytes. + */ + printf (_("Compression ratio %4.2f%% (higher is better)\n"), + 100.0 * ((double)statistics.total_filename_length + - (double) database_file_size) + / (double) statistics.total_filename_length); + } + else + { + printf (_("Compression ratio is undefined\n")); + } + } + } + printf ("\n"); +} + +/* + * Return nonzero if the data we read in indicates that we are + * looking at a LOCATE02 locate database. + */ +static int +looking_at_gnu_locatedb (const char *data, size_t len) +{ + if (len < sizeof (LOCATEDB_MAGIC)) + return 0; + else if (0 == memcmp (data, LOCATEDB_MAGIC, sizeof (LOCATEDB_MAGIC))) + return 1; /* We saw the magic byte sequence */ + else + return 0; +} + +/* + * Return nonzero if the data we read in indicates that we are + * looking at an slocate database. + */ +static int +looking_at_slocate_locatedb (const char *filename, + const char *data, + size_t len, + int *seclevel) +{ + assert (len <= 2); + + if (len < 2) + { + return 0; + } + else + { + /* Check that the magic number is a one-byte string */ + if (0 == data[1]) + { + if (isdigit ((unsigned char)data[0])) + { + /* looks promising. */ + *seclevel = (data[0] - '0'); + + if (*seclevel > 1) + { + /* Hmm, well it's probably an slocate database + * of some awsomely huge security level, like 2. + * We don't know how to handle those. + */ + error (0, 0, + _("locate database %s looks like an slocate " + "database but it seems to have security level %c, " + "which GNU findutils does not currently support"), + quotearg_n_style (0, locale_quoting_style, filename), + data[1]); + return 1; + } + else + { + return 1; + } + } + else + { + /* Not a digit. */ + return 0; + } + } + else + { + /* Definitely not slocate. */ + return 0; + } + } +} + + +static int +i_am_little_endian (void) +{ + union + { + unsigned char uch[4]; + unsigned int ui; + } u; + u.ui = 0u; + u.uch[0] = 1; + u.uch[1] = u.uch[2] = u.uch[3] = 0; + return u.ui == 1; +} + + + + +/* Print or count the entries in DBFILE that match shell globbing patterns in + ARGV. Return the number of entries matched. */ + +static unsigned long +search_one_database (int argc, + char **argv, + const char *dbfile, + FILE *fp, + off_t filesize, + const struct timespec *database_mtime, + int ignore_case, + int enable_print, + int basename_only, + int use_limit, + struct locate_limits *plimit, + int stats, + int op_and, + int regex, + int regex_options) +{ + char *pathpart; /* A pattern to consider. */ + int argn; /* Index to current pattern in argv. */ + int nread; /* number of bytes read from an entry. */ + struct process_data procdata; /* Storage for data shared with visitors. */ + int slocate_seclevel; + int oldformat; + int slocatedb_format; + struct visitor* pvis; /* temp for determining past_pat_inspector. */ + const char *format_name; + enum ExistenceCheckType do_check_existence; + + + /* We may turn on existence checking for a given database. + * We ensure that we can return to the previous behaviour + * by using two variables, do_check_existence (which we act on) + * and check_existence (which indicates the default before we + * adjust it on the bassis of what kind of database we;re using + */ + do_check_existence = check_existence; + + + if (ignore_case) + regex_options |= RE_ICASE; + + oldformat = 0; + procdata.endian_state = GetwordEndianStateInitial; + procdata.len = procdata.count = 0; + + procdata.dbfile = dbfile; + procdata.fp = fp; + + /* Set up the inspection regime */ + inspectors = NULL; + lastinspector = NULL; + past_pat_inspector = NULL; + results_were_filtered = false; + procdata.pathsize = 128; /* Increased as necessary by locate_read_str. */ + procdata.original_filename = xmalloc (procdata.pathsize); + + + nread = fread (procdata.original_filename, 1, SLOCATE_DB_MAGIC_LEN, + procdata.fp); + slocate_seclevel = 0; + if (looking_at_slocate_locatedb (procdata.dbfile, + procdata.original_filename, + nread, + &slocate_seclevel)) + { + error (0, 0, + _("%s is an slocate database. " + "Support for these is new, expect problems for now."), + quotearg_n_style (0, locale_quoting_style, procdata.dbfile)); + + /* slocate also uses frcode, but with a different header. + * We handle the header here and then work with the data + * in the normal way. + */ + if (slocate_seclevel > 1) + { + /* We don't know what those security levels mean, + * so do nothing further + */ + error (0, 0, + _("%s is an slocate database of unsupported security level %d; skipping it."), + quotearg_n_style (0, locale_quoting_style, procdata.dbfile), + slocate_seclevel); + return 0; + } + else if (slocate_seclevel > 0) + { + /* Don't show the filenames to the user if they don't exist. + * Showing stats is safe since filenames are only counted + * after the existence check + */ + if (ACCEPT_NON_EXISTING == check_existence) + { + /* Do not allow the user to see a list of filenames that they + * cannot stat(). + */ + error (0, 0, + _("You specified the -E option, but that option " + "cannot be used with slocate-format databases " + "with a non-zero security level. No results will be " + "generated for this database.\n")); + return 0; + } + if (ACCEPT_EXISTING != do_check_existence) + { + if (enable_print || stats) + { + error (0, 0, + _("%s is an slocate database. " + "Turning on the '-e' option."), + quotearg_n_style (0, locale_quoting_style, procdata.dbfile)); + } + do_check_existence = ACCEPT_EXISTING; + } + } + add_visitor (visit_locate02_format, NULL); + format_name = "slocate"; + slocatedb_format = 1; + } + else + { + int nread2; + + slocatedb_format = 0; + extend (&procdata, sizeof (LOCATEDB_MAGIC), 0u); + nread2 = fread (procdata.original_filename+nread, 1, sizeof (LOCATEDB_MAGIC)-nread, + procdata.fp); + if (looking_at_gnu_locatedb (procdata.original_filename, nread+nread2)) + { + add_visitor (visit_locate02_format, NULL); + format_name = "GNU LOCATE02"; + } + else /* Use the old format */ + { + int i; + + nread += nread2; + extend (&procdata, 256u, 0u); + /* Read the list of the most common bigrams in the database. */ + if (nread < 256) + { + int more_read = fread (procdata.original_filename + nread, 1, + 256 - nread, procdata.fp); + if ( (more_read + nread) != 256 ) + { + error (EXIT_FAILURE, 0, + _("Old-format locate database %s is " + "too short to be valid"), + quotearg_n_style (0, locale_quoting_style, dbfile)); + + } + } + + for (i = 0; i < 128; i++) + { + procdata.bigram1[i] = procdata.original_filename[i << 1]; + procdata.bigram2[i] = procdata.original_filename[(i << 1) + 1]; + } + format_name = "old"; + oldformat = 1; + add_visitor (visit_old_format, NULL); + } + } + + if (basename_only) + add_visitor (visit_basename, NULL); + + /* Add an inspector for each pattern we're looking for. */ + for ( argn = 0; argn < argc; argn++ ) + { + results_were_filtered = true; + pathpart = argv[argn]; + if (regex) + { + struct regular_expression *p = xmalloc (sizeof (*p)); + const char *error_message = NULL; + + memset (&p->regex, 0, sizeof (p->regex)); + + re_set_syntax (regex_options); + p->regex.allocated = 100; + p->regex.buffer = xmalloc (p->regex.allocated); + p->regex.fastmap = NULL; + p->regex.syntax = regex_options; + p->regex.translate = NULL; + + error_message = re_compile_pattern (pathpart, strlen (pathpart), + &p->regex); + if (error_message) + { + error (EXIT_FAILURE, 0, "%s", error_message); + } + else + { + add_visitor (visit_regex, p); + } + } + else if (contains_metacharacter (pathpart)) + { + if (ignore_case) + add_visitor (visit_globmatch_casefold, pathpart); + else + add_visitor (visit_globmatch_nofold, pathpart); + } + else + { + /* No glob characters used. Hence we match on + * _any part_ of the filename, not just the + * basename. This seems odd to me, but it is the + * traditional behaviour. + * James Youngman <jay@gnu.org> + */ + visitfunc matcher; + if (1 == MB_CUR_MAX) + { + /* As an optimisation, use a strstr () matcher if we are + * in a unibyte locale. This can give a x2 speedup in + * the C locale. Some light testing reveals that + * glibc's strstr () is somewhere around 40% faster than + * gnulib's, so we just use strstr (). + */ + matcher = ignore_case ? + visit_substring_match_casefold_narrow : + visit_substring_match_nocasefold_narrow; + } + else + { + matcher = ignore_case ? + visit_substring_match_casefold_wide : + visit_substring_match_nocasefold_wide; + } + add_visitor (matcher, pathpart); + } + } + + pvis = lastinspector; + + /* We add visit_existing_*() as late as possible to reduce the + * number of stat() calls. + */ + switch (do_check_existence) + { + case ACCEPT_EXISTING: + results_were_filtered = true; + if (follow_symlinks) /* -L, default */ + add_visitor (visit_existing_follow, NULL); + else /* -P */ + add_visitor (visit_existing_nofollow, NULL); + break; + + case ACCEPT_NON_EXISTING: + results_were_filtered = true; + if (follow_symlinks) /* -L, default */ + add_visitor (visit_non_existing_follow, NULL); + else /* -P */ + add_visitor (visit_non_existing_nofollow, NULL); + break; + + case ACCEPT_EITHER: /* Default, neither -E nor -e */ + /* do nothing; no extra processing. */ + break; + } + + /* Security issue: The stats visitor must be added immediately + * before the print visitor, because otherwise the -S option would + * leak information about files that the caller cannot see. + */ + if (stats) + add_visitor (visit_stats, &statistics); + + if (enable_print) + { + if (print_quoted_filename) + add_visitor (visit_justprint_quoted, NULL); + else + add_visitor (visit_justprint_unquoted, NULL); + } + + + if (use_limit) + add_visitor (visit_limit, plimit); + else + add_visitor (visit_count, plimit); + + + if (argc > 1) + { + past_pat_inspector = pvis->next; + if (op_and) + mainprocessor = process_and; + else + mainprocessor = process_or; + } + else + mainprocessor = process_simple; + + if (stats) + { + printf (_("Database %s is in the %s format.\n"), + procdata.dbfile, + format_name); + } + + + procdata.c = getc (procdata.fp); + if (slocatedb_format && (procdata.c != EOF)) + { + /* Make slocate database look like GNU locate database. */ + ungetc(procdata.c, procdata.fp); + procdata.c = 0; + } + /* If we are searching for filename patterns, the inspector list + * will contain an entry for each pattern for which we are searching. + */ + while ( (procdata.c != EOF) && + (VISIT_ABORT != (mainprocessor)(&procdata)) ) + { + /* Do nothing; all the work is done in the visitor functions. */ + } + + if (stats) + { + if (oldformat) + { + int host_little_endian = i_am_little_endian (); + const char *little = _("The database has little-endian " + "machine-word encoding.\n"); + const char *big = _("The database has big-endian " + "machine-word encoding.\n"); + + if (GetwordEndianStateNative == procdata.endian_state) + { + printf ("%s", (host_little_endian ? little : big)); + } + else if (GetwordEndianStateSwab == procdata.endian_state) + { + printf ("%s", (host_little_endian ? big : little)); + } + else + { + printf (_("The database machine-word encoding order " + "is not obvious.\n")); + } + } + if (filesize || (database_mtime != NULL)) + print_stats (argc, filesize, database_mtime); + } + + if (ferror (procdata.fp)) + { + error (0, errno, "%s", + quotearg_n_style (0, locale_quoting_style, procdata.dbfile)); + return 0; + } + return plimit->items_accepted; +} + + +extern char *version_string; + +static void +usage (FILE *stream) +{ + fprintf (stream, _("\ +Usage: %s [-d path | --database=path] [-e | -E | --[non-]existing]\n\ + [-i | --ignore-case] [-w | --wholename] [-b | --basename] \n\ + [--limit=N | -l N] [-S | --statistics] [-0 | --null] [-c | --count]\n\ + [-P | -H | --nofollow] [-L | --follow] [-m | --mmap] [-s | --stdio]\n\ + [-A | --all] [-p | --print] [-r | --regex] [--regextype=TYPE]\n\ + [--max-database-age D] [--version] [--help]\n\ + pattern...\n"), + program_name); + fputs (_("\nReport bugs to <bug-findutils@gnu.org>.\n"), stream); +} +enum + { + REGEXTYPE_OPTION = CHAR_MAX + 1, + MAX_DB_AGE + }; + + +static struct option const longopts[] = +{ + {"database", required_argument, NULL, 'd'}, + {"existing", no_argument, NULL, 'e'}, + {"non-existing", no_argument, NULL, 'E'}, + {"ignore-case", no_argument, NULL, 'i'}, + {"all", no_argument, NULL, 'A'}, + {"help", no_argument, NULL, 'h'}, + {"version", no_argument, NULL, 'v'}, + {"null", no_argument, NULL, '0'}, + {"count", no_argument, NULL, 'c'}, + {"wholename", no_argument, NULL, 'w'}, + {"wholepath", no_argument, NULL, 'w'}, /* Synonym. */ + {"basename", no_argument, NULL, 'b'}, + {"print", no_argument, NULL, 'p'}, + {"stdio", no_argument, NULL, 's'}, + {"mmap", no_argument, NULL, 'm'}, + {"limit", required_argument, NULL, 'l'}, + {"regex", no_argument, NULL, 'r'}, + {"regextype", required_argument, NULL, REGEXTYPE_OPTION}, + {"statistics", no_argument, NULL, 'S'}, + {"follow", no_argument, NULL, 'L'}, + {"nofollow", no_argument, NULL, 'P'}, + {"max-database-age", required_argument, NULL, MAX_DB_AGE}, + {NULL, no_argument, NULL, 0} +}; + + +static int +drop_privs (void) +{ + const char * what = "failed"; + const uid_t orig_euid = geteuid (); + const uid_t uid = getuid (); + const gid_t gid = getgid (); + +#if HAVE_SETGROUPS + /* Use of setgroups () is restricted to root only. */ + if (0 == orig_euid) + { + /* We're either root or running setuid-root. */ + gid_t groups[1]; + groups[0] = gid; + if (0 != setgroups (1u, groups)) + { + what = _("failed to drop group privileges"); + goto fail; + } + } +#endif + + /* Drop any setuid privileges */ + if (uid != orig_euid) + { + if (0 == uid) + { + /* We're really root anyway, but are setuid to something else. Leave it. */ + } + else + { + errno = 0; + if (0 != setuid (getuid ())) + { + what = _("failed to drop setuid privileges"); + goto fail; + } + + /* Defend against the case where the attacker runs us with the + * capability to call setuid () turned off, which on some systems + * will cause the above attempt to drop privileges fail (leaving us + * privileged). + */ + else + { + /* Check that we can no longer switch bask to root */ + if (0 == setuid (0)) + { + what = _("Failed to fully drop privileges"); + /* The errno value here is not interesting (since + * the system call we are complaining about + * succeeded when we wanted it to fail). Arrange + * for the call to error () not to print the errno + * value by setting errno=0. + */ + errno = 0; + goto fail; + } + } + } + } + + /* Drop any setgid privileges */ + errno = 0; + if (0 != setgid (gid)) + { + what = _("failed to drop setgid privileges"); + goto fail; + } + + /* success. */ + return 0; + + fail: + error (EXIT_FAILURE, errno, "%s", + quotearg_n_style (0, locale_quoting_style, what)); + abort (); + kill (0, SIGKILL); + _exit (1); + /*NOTREACHED*/ + /* ... we hope. */ + for (;;) + { + /* deliberate infinite loop */ + } +} + +static int +opendb (const char *name) +{ + int fd = open (name, O_RDONLY +#if defined O_LARGEFILE + |O_LARGEFILE +#endif + ); + if (fd >= 0) + { + /* Make sure it won't survive an exec */ + if (0 != fcntl (fd, F_SETFD, FD_CLOEXEC)) + { + close (fd); + fd = -1; + } + } + return fd; +} + +static void +cleanup_quote_opts (void) +{ + free (quote_opts); +} + + +int +dolocate (int argc, char **argv, int secure_db_fd) +{ + char *path_element = NULL; + size_t path_element_pos, path_element_len; + const char *user_selected_locate_path; + const char *db_name; + const char *path_separators = ":"; + unsigned long int found = 0uL; + int ignore_case = 0; + int print = 0; + int just_count = 0; + int basename_only = 0; + int use_limit = 0; + int regex = 0; + int regex_options = RE_SYNTAX_EMACS; + int stats = 0; + int op_and = 0; + FILE *fp; + bool did_stdin = false; /* Set to prevent rereading stdin. */ + + if (argv[0]) + set_program_name (argv[0]); + else + set_program_name ("locate"); + +#ifdef HAVE_SETLOCALE + setlocale (LC_ALL, ""); +#endif + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); + + quote_opts = clone_quoting_options (NULL); + if (atexit (close_stdout) || atexit (cleanup_quote_opts)) + { + error (EXIT_FAILURE, errno, _("The atexit library function failed")); + } + + limits.limit = 0; + limits.items_accepted = 0; + + print_quoted_filename = true; + + /* We cannot simultaneously trust $LOCATE_PATH and use the + * setuid-access-controlled database,, since that could cause a leak + * of private data. + */ + user_selected_locate_path = getenv ("LOCATE_PATH"); + + check_existence = ACCEPT_EITHER; + + for (;;) + { + int opti = -1; + int optc = getopt_long (argc, argv, "Abcd:eEil:prsm0SwHPL", longopts, + &opti); + if (optc == -1) + break; + + switch (optc) + { + case '0': + separator = 0; + print_quoted_filename = false; /* print filename 'raw'. */ + break; + + case 'A': + op_and = 1; + break; + + case 'b': + basename_only = 1; + break; + + case 'c': + just_count = 1; + break; + + case 'd': + user_selected_locate_path = optarg; + assert (optarg != NULL); + break; + + case 'e': + check_existence = ACCEPT_EXISTING; + break; + + case 'E': + check_existence = ACCEPT_NON_EXISTING; + break; + + case 'i': + ignore_case = 1; + break; + + case 'h': + usage (stdout); + return 0; + + case MAX_DB_AGE: + /* XXX: nothing in the test suite for this option. */ + set_max_db_age (optarg); + break; + + case 'p': + print = 1; + break; + + case 'v': + display_findutils_version ("locate"); + return 0; + + case 'w': + basename_only = 0; + break; + + case 'r': + regex = 1; + break; + + case REGEXTYPE_OPTION: + regex_options = get_regex_type (optarg); + break; + + case 'S': + stats = 1; + break; + + case 'L': + follow_symlinks = 1; + break; + + /* In find, -P and -H differ in the way they handle paths + * given on the command line. This is not relevant for + * locate, but the -H option is supported because it is + * probably more intuitive to do so. + */ + case 'P': + case 'H': + follow_symlinks = 0; + break; + + case 'l': + { + char *end = optarg; + strtol_error err = xstrtoumax (optarg, &end, 10, &limits.limit, + NULL); + if (LONGINT_OK != err) + xstrtol_fatal (err, opti, optc, longopts, optarg); + use_limit = 1; + } + break; + + case 's': /* use stdio */ + case 'm': /* use mmap */ + /* These options are implemented simply for + * compatibility with FreeBSD + */ + break; + + default: + usage (stderr); + return 1; + } + } + + + /* If the user gave the -d option or set LOCATE_PATH, + * relinquish access to the secure database. + */ + if (user_selected_locate_path) + { + if (secure_db_fd >= 0) + { + close (secure_db_fd); + secure_db_fd = -1; + } + } + + if (!just_count && !stats) + print = 1; + + if (stats) + { + if (optind == argc) + use_limit = 0; + } + else + { + if (!just_count && optind == argc) + { + usage (stderr); + return 1; + } + } + + if (1 == isatty (STDOUT_FILENO)) + stdout_is_a_tty = true; + else + stdout_is_a_tty = false; + + if (user_selected_locate_path) + { + splitstring (user_selected_locate_path, path_separators, true, + &path_element_pos, &path_element_len); + } + + /* Bail out early if limit already reached. */ + while (!use_limit || limits.limit > limits.items_accepted) + { + struct stat st; + struct timespec database_mtime; + int have_mtime; + int fd; + off_t filesize; + + statistics.compressed_bytes = + statistics.total_filename_count = + statistics.total_filename_length = + statistics.whitespace_count = + statistics.newline_count = + statistics.highbit_filename_count = 0u; + + if (user_selected_locate_path) + { + /* Take the next element from the list of databases */ + if (1 == path_element_len + && '-' == user_selected_locate_path[path_element_pos]) + { + if (did_stdin) + { + error (0, 0, + _("warning: the locate database can only be read from stdin once.")); + return 0; + } + else + { + db_name = "<stdin>"; + fd = 0; + did_stdin = true; + } + } + else + { + if (0 == path_element_len + || (1 == path_element_len + && '.' == user_selected_locate_path[path_element_pos])) + { + db_name = LOCATE_DB; + } + else + { + path_element = strndup (&user_selected_locate_path[path_element_pos], + path_element_len); + db_name = path_element; + } + + /* open the database */ + fd = opendb (db_name); + if (fd < 0) + { + error (0, errno, "%s", + quotearg_n_style (0, locale_quoting_style, db_name)); + return 0; + } + } + } + else + { + if (-1 == secure_db_fd) + { + /* Already searched the database, it's time to exit the loop */ + break; + } + else + { + db_name = selected_secure_db; + fd = secure_db_fd; + secure_db_fd = -1; + } + } + + /* Check the database to see if it is old. */ + if (fstat (fd, &st)) + { + error (0, errno, "%s", + quotearg_n_style (0, locale_quoting_style, db_name)); + /* continue anyway */ + filesize = (off_t)0; + have_mtime = 0; + } + else + { + time_t now; + + filesize = st.st_size; + database_mtime = get_stat_mtime(&st); + have_mtime = 1; + + if ((time_t)-1 == time (&now)) + { + /* If we can't tell the time, we don't know how old the + * database is. But since the message is just advisory, + * we continue anyway. + */ + error (0, errno, _("time system call failed")); + } + else + { + double age = difftime (now, st.st_mtime); + double warn_seconds = SECONDS_PER_UNIT * warn_number_units; + if (age > warn_seconds) + { + /* For example: + warning: database `fred' is more than 8 days old (actual age is 10 days)*/ + error (0, 0, + _("warning: database %s is more than %d %s old (actual age is %.1f %s)"), + quotearg_n_style (0, locale_quoting_style, db_name), + warn_number_units, _(warn_name_units), + (age/(double)SECONDS_PER_UNIT), _(warn_name_units)); + } + } + } + + fp = fdopen (fd, "r"); + if (NULL == fp) + { + error (0, errno, "%s", + quotearg_n_style (0, locale_quoting_style, db_name)); + return 0; + } + + /* Search this database for all patterns simultaneously */ + found = search_one_database (argc - optind, &argv[optind], + db_name, fp, filesize, + have_mtime ? (&database_mtime) : NULL, + ignore_case, print, basename_only, + use_limit, &limits, stats, + op_and, regex, regex_options); + + /* Close the databsase (even if it is stdin) */ + if (fclose (fp) == EOF) + { + error (0, errno, "%s", + quotearg_n_style (0, locale_quoting_style, db_name)); + return 0; + } + if (path_element) + { + free (path_element); + path_element = NULL; + } + + if (!user_selected_locate_path) + { + /* We're not actually iterating through the values in + $LOCATE_PATH so we don't want to check for the next + element in user_selected_locate_path (since we manually set db_name = + LOCATE_DB without using user_selected_locate_path). */ + break; + } + else if (!splitstring (user_selected_locate_path, path_separators, false, + &path_element_pos, &path_element_len)) + { + break; + } + } + + if (just_count) + { + printf ("%ld\n", found); + } + + if (found || (use_limit && (limits.limit==0)) || stats ) + return 0; + else + return 1; +} + +#define ARRAYSIZE(a) (sizeof (a)/sizeof (a[0])) +static int +open_secure_db (void) +{ + int fd, i; + + const char * secure_db_list[] = + { + LOCATE_DB, + "/var/lib/slocate/slocate.db", + NULL + }; + for (i=0; secure_db_list[i]; ++i) + { + fd = opendb (secure_db_list[i]); + if (fd >= 0) + { + selected_secure_db = secure_db_list[i]; + return fd; + } + } + return -1; +} + +int +main (int argc, char **argv) +{ + int dbfd = open_secure_db (); + drop_privs (); + + return dolocate (argc, argv, dbfd); +} diff --git a/locate/locatedb.5 b/locate/locatedb.5 new file mode 100644 index 0000000..79c732d --- /dev/null +++ b/locate/locatedb.5 @@ -0,0 +1,153 @@ +.TH LOCATEDB 5 \" -*- nroff -*- +.SH NAME +locatedb \- front-compressed file name database +.SH DESCRIPTION +This manual page documents the format of file name databases for the +GNU version of +.BR locate . +The file name databases contain lists of files that were in +particular directory trees when the databases were last updated. +.P +There can be multiple databases. Users can select which databases +\fBlocate\fP searches using an environment variable or command line +option; see \fBlocate\fP(1). The system administrator can choose the +file name of the default database, the frequency with which the +databases are updated, and the directories for which they contain +entries. Normally, file name databases are updated by running the +\fBupdatedb\fP program periodically, typically nightly; see +\fBupdatedb\fP(1). + +.SH GNU LOCATE02 database format +This is the default format of databases produced by +.BR updatedb . +The +.B updatedb +program runs +.B frcode +to compress the list of file names using front-compression, which +reduces the database size by a factor of 4 to 5. Front-compression +(also known as incremental encoding) works as follows. +.P +The database entries are a sorted list (case-insensitively, for users' +convenience). Since the list is sorted, each entry is likely to share +a prefix (initial string) with the previous entry. Each database +entry begins with an signed offset-differential count byte, which is +the additional number of characters of prefix of the preceding entry +to use beyond the number that the preceding entry is using of its +predecessor. (The counts can be negative.) Following the count is a +null-terminated ASCII remainder \(em the part of the name that follows +the shared prefix. +.P +If the offset-differential count is larger than can be stored in a +signed byte (\(+-127), the byte has the value 0x80 (binary 10000000) +and the actual count follows in a 2-byte word, with the high byte +first (network byte order). This count can also be negative (the sign +bit being in the first of the two bytes). +.P +Every database begins with a dummy entry for a file called `LOCATE02', +which \fBlocate\fP checks for to ensure that the database file has the +correct format; it ignores the entry in doing the search. +.P +Databases cannot be concatenated together, even if the first +(dummy) entry is trimmed from all but the first database. This +is because the offset-differential count in the first entry of the +second and following databases will be wrong. +.P +In the future, the data within the locate database may not be sorted +in any particular order. To obtain sorted results, pipe the output of +.B locate +through +.BR "sort -f" . +.SH slocate database format +The +.B slocate +program uses a database format similar to, but not quite the same as, +GNU +.BR locate . +The first byte of the database specifies its +.I security +.IR level . +If the security level is 0, +.B slocate +will read, match and print filenames on the basis of the information +in the database only. However, if the security level byte is 1, +.B slocate +omits entries from its output if the invoking user is unable to access +them. The second byte of the database is zero. The second byte is +followed by the first database entry. The first entry in the database +is not preceded by any differential count or dummy entry. Instead +the differential count for the first item is assumed to be zero. +.P +Starting with the second entry (if any) in the database, data is +interpreted as for the GNU LOCATE02 format. + +.SH Old Locate Database format +There is also an old database format, used by Unix +.B locate +and +.B find +programs and earlier releases of the GNU ones. \fBupdatedb\fP runs +programs called \fBbigram\fP and \fBcode\fP to produce old-format +databases. The old format differs from the above description in the +following ways. Instead of each entry starting with an +offset-differential count byte and ending with a null, byte values +from 0 through 28 indicate offset-differential counts from -14 through +14. The byte value indicating that a long offset-differential count +follows is 0x1e (30), not 0x80. The long counts are stored in host +byte order, which is not necessarily network byte order, and host +integer word size, which is usually 4 bytes. They also represent a +count 14 less than their value. The database lines have no +termination byte; the start of the next line is indicated by its first +byte having a value \(<= 30. +.P +In addition, instead of starting with a dummy entry, the old database +format starts with a 256 byte table containing the 128 most common +bigrams in the file list. A bigram is a pair of adjacent bytes. +Bytes in the database that have the high bit set are indexes (with the +high bit cleared) into the bigram table. The bigram and +offset-differential count coding makes these databases 20\(en25% smaller +than the new format, but makes them not 8-bit clean. Any byte in a +file name that is in the ranges used for the special codes is replaced +in the database by a question mark, which not coincidentally is the +shell wildcard to match a single character. +.SH EXAMPLE +.nf + +Input to \fBfrcode\fP: +.\" with nulls changed to newlines: +/usr/src +/usr/src/cmd/aardvark.c +/usr/src/cmd/armadillo.c +/usr/tmp/zoo + +Length of the longest prefix of the preceding entry to share: +0 /usr/src +8 /cmd/aardvark.c +14 rmadillo.c +5 tmp/zoo + +.fi +Output from \fBfrcode\fP, with trailing nulls changed to newlines +and count bytes made printable: +.nf +0 LOCATE02 +0 /usr/src +8 /cmd/aardvark.c +6 rmadillo.c +\-9 tmp/zoo + +(6 = 14 - 8, and -9 = 5 - 14) +.fi +.SH "SEE ALSO" +\fBfind\fP(1), \fBlocate\fP(1), \fBlocatedb\fP(5), \fBxargs\fP(1), +\fBFinding Files\fP (on-line in Info, or printed) +.SH "BUGS" +.P +The best way to report a bug is to use the form at +http://savannah.gnu.org/bugs/?group=findutils. +The reason for this is that you will then be able to track progress in +fixing the problem. Other comments about \fBlocate\fP(1) and about +the findutils package in general can be sent to the +.I bug-findutils +mailing list. To join the list, send email to +.IR bug-findutils-request@gnu.org . diff --git a/locate/locatedb.h b/locate/locatedb.h new file mode 100644 index 0000000..048a2ea --- /dev/null +++ b/locate/locatedb.h @@ -0,0 +1,72 @@ +/* locatedb.h -- declarations for the locate database + Copyright (C) 1994, 2010, 2011 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 <http://www.gnu.org/licenses/>. +*/ + +#ifndef INC_LOCATEDB_H +#define INC_LOCATEDB_H 1 + +/* The magic string at the start of a locate database, to make sure + it's in the right format. The 02 is the database format version number. + This string has the same format as a database entry, but you can't + concatenate databases even if you remove it, since the differential count + in the first entry of the second database will be wrong. */ +#define LOCATEDB_MAGIC "\0LOCATE02" + +/* Common-prefix length differences in the ranges + 0..127, -127..-1 (0x00..0x7f, 0x81..0xff) fit into one byte. + This value (which is -128) indicates that the difference is + too large to fit into one byte, and a two-byte integer follows. */ +#define LOCATEDB_ESCAPE 0x80 +#define LOCATEDB_ONEBYTE_MAX (127) +#define LOCATEDB_ONEBYTE_MIN (-127) + + +/* If it is ever possible to try to encode LOCATEDB_MAGIC as a + * single-byte offset, then an unfortunate length of common prefix + * will produce a spurious escape character, desynchronising the data + * stream. We use a compile-time check in the preprocessor to prevent + * this. + */ +#if LOCATEDB_ESCAPE <= LOCATEDB_ONEBYTE_MAX +#error "You have a bad combination of LOCATEDB_ESCAPE and LOCATEDB_ONEBYTE_MAX, see above" +#endif + +/* These are used for old, bigram-encoded databases: */ + +/* Means the differential count follows in a 2-byte int instead. */ +#define LOCATEDB_OLD_ESCAPE 30 + +/* Offset added to differential counts to encode them as positive numbers. */ +#define LOCATEDB_OLD_OFFSET 14 + +typedef enum + { + GetwordEndianStateInitial = 0, + GetwordEndianStateNative = 1, + GetwordEndianStateSwab = 2 + } GetwordEndianState; + +int getword (FILE *fp, const char *filename, + size_t minvalue, size_t maxvalue, + GetwordEndianState *endian_state_flag); + +bool putword (FILE *fp, int word, + GetwordEndianState endian_state_flag); + + +#define SLOCATE_DB_MAGIC_LEN 2 + +#endif /* !INC_LOCATEDB_H */ diff --git a/locate/testsuite/Makefile.am b/locate/testsuite/Makefile.am new file mode 100644 index 0000000..fc2580a --- /dev/null +++ b/locate/testsuite/Makefile.am @@ -0,0 +1,74 @@ +# Copyright (C) 2001,2003-2015 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 <http://www.gnu.org/licenses/>. + +# The 2001 copyright line above was added in 2015 based on James +# Youngman's best estimate of the original publication date of this +# file (it appeared in findutils release 4.1.7 but may have appeared +# in earlier releases which I don't have copies of). + +AUTOMAKE_OPTIONS=dejagnu +LOCATE = ../locate +UPDATEDB = ../updatedb +LOCATEFLAGS = +UPDATEDBFLAGS = +DEJATOOL = locate + +EXTRA_DIST_EXP = \ +config/unix.exp \ +locate.gnu/bigendian.exp \ +locate.gnu/littleendian.exp \ +locate.gnu/ignore_case1.exp \ +locate.gnu/ignore_case2.exp \ +locate.gnu/ignore_case3.exp \ +locate.gnu/bigprefix1.exp \ +locate.gnu/regex1.exp \ +locate.gnu/exists1.exp \ +locate.gnu/exists2.exp \ +locate.gnu/exists3.exp \ +locate.gnu/slocate.exp \ +locate.gnu/notexists1.exp \ +locate.gnu/notexists2.exp \ +locate.gnu/notexists3.exp \ +locate.gnu/old_prefix.exp \ +locate.gnu/oldformat.exp \ +locate.gnu/space1st.exp \ +locate.gnu/sv-bug-14535.exp \ +locate.gnu/exceedshort.exp + +EXTRA_DIST_XI = \ +locate.gnu/locateddb.old.powerpc.xi \ +locate.gnu/locateddb.old.x86.xi + +EXTRA_DIST_XO = \ +locate.gnu/bigendian.xo \ +locate.gnu/littleendian.xo \ +locate.gnu/ignore_case1.xo \ +locate.gnu/ignore_case2.xo \ +locate.gnu/ignore_case3.xo \ +locate.gnu/exists1.xo \ +locate.gnu/exists2.xo \ +locate.gnu/exists3.xo \ +locate.gnu/slocate.xo \ +locate.gnu/notexists1.xo \ +locate.gnu/notexists2.xo \ +locate.gnu/notexists3.xo \ +locate.gnu/old_prefix.xo \ +locate.gnu/oldformat.xo + +EXTRA_DIST = $(EXTRA_DIST_EXP) $(EXTRA_DIST_XO) $(EXTRA_DIST_XI) + +# DIST_SUBDIRS = config locate.gnu + +CLEANFILES = *.log *.sum site.exp site.bak diff --git a/locate/testsuite/Makefile.in b/locate/testsuite/Makefile.in new file mode 100644 index 0000000..b40d2d1 --- /dev/null +++ b/locate/testsuite/Makefile.in @@ -0,0 +1,1849 @@ +# Makefile.in generated by automake 1.14.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Copyright (C) 2001,2003-2015 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 <http://www.gnu.org/licenses/>. + +# The 2001 copyright line above was added in 2015 based on James +# Youngman's best estimate of the original publication date of this +# file (it appeared in findutils release 4.1.7 but may have appeared +# in earlier releases which I don't have copies of). +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = locate/testsuite +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/build-aux/mkinstalldirs +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/findlib.m4 \ + $(top_srcdir)/m4/mkinstalldirs.m4 $(top_srcdir)/m4/noreturn.m4 \ + $(top_srcdir)/m4/nullsort.m4 $(top_srcdir)/m4/withfts.m4 \ + $(top_srcdir)/gl/m4/00gnulib.m4 \ + $(top_srcdir)/gl/m4/absolute-header.m4 \ + $(top_srcdir)/gl/m4/alloca.m4 \ + $(top_srcdir)/gl/m4/arpa_inet_h.m4 \ + $(top_srcdir)/gl/m4/assert.m4 $(top_srcdir)/gl/m4/bison.m4 \ + $(top_srcdir)/gl/m4/btowc.m4 $(top_srcdir)/gl/m4/byteswap.m4 \ + $(top_srcdir)/gl/m4/canonicalize.m4 \ + $(top_srcdir)/gl/m4/chdir-long.m4 \ + $(top_srcdir)/gl/m4/check-math-lib.m4 \ + $(top_srcdir)/gl/m4/clock_time.m4 \ + $(top_srcdir)/gl/m4/close-stream.m4 \ + $(top_srcdir)/gl/m4/close.m4 $(top_srcdir)/gl/m4/closedir.m4 \ + $(top_srcdir)/gl/m4/closein.m4 $(top_srcdir)/gl/m4/closeout.m4 \ + $(top_srcdir)/gl/m4/codeset.m4 \ + $(top_srcdir)/gl/m4/configmake.m4 $(top_srcdir)/gl/m4/ctype.m4 \ + $(top_srcdir)/gl/m4/cycle-check.m4 \ + $(top_srcdir)/gl/m4/d-ino.m4 $(top_srcdir)/gl/m4/d-type.m4 \ + $(top_srcdir)/gl/m4/dirent-safer.m4 \ + $(top_srcdir)/gl/m4/dirent_h.m4 $(top_srcdir)/gl/m4/dirfd.m4 \ + $(top_srcdir)/gl/m4/dirname.m4 \ + $(top_srcdir)/gl/m4/double-slash-root.m4 \ + $(top_srcdir)/gl/m4/dup.m4 $(top_srcdir)/gl/m4/dup2.m4 \ + $(top_srcdir)/gl/m4/eealloc.m4 $(top_srcdir)/gl/m4/environ.m4 \ + $(top_srcdir)/gl/m4/errno_h.m4 $(top_srcdir)/gl/m4/error.m4 \ + $(top_srcdir)/gl/m4/euidaccess.m4 \ + $(top_srcdir)/gl/m4/exponentd.m4 \ + $(top_srcdir)/gl/m4/exponentf.m4 \ + $(top_srcdir)/gl/m4/exponentl.m4 \ + $(top_srcdir)/gl/m4/extensions.m4 \ + $(top_srcdir)/gl/m4/extern-inline.m4 \ + $(top_srcdir)/gl/m4/faccessat.m4 $(top_srcdir)/gl/m4/fchdir.m4 \ + $(top_srcdir)/gl/m4/fcntl-o.m4 \ + $(top_srcdir)/gl/m4/fcntl-safer.m4 \ + $(top_srcdir)/gl/m4/fcntl.m4 $(top_srcdir)/gl/m4/fcntl_h.m4 \ + $(top_srcdir)/gl/m4/fdopen.m4 $(top_srcdir)/gl/m4/fdopendir.m4 \ + $(top_srcdir)/gl/m4/fflush.m4 \ + $(top_srcdir)/gl/m4/fileblocks.m4 \ + $(top_srcdir)/gl/m4/filemode.m4 \ + $(top_srcdir)/gl/m4/filenamecat.m4 \ + $(top_srcdir)/gl/m4/flexmember.m4 \ + $(top_srcdir)/gl/m4/float_h.m4 $(top_srcdir)/gl/m4/fnmatch.m4 \ + $(top_srcdir)/gl/m4/fopen.m4 $(top_srcdir)/gl/m4/fpending.m4 \ + $(top_srcdir)/gl/m4/fpieee.m4 $(top_srcdir)/gl/m4/fpurge.m4 \ + $(top_srcdir)/gl/m4/freadahead.m4 \ + $(top_srcdir)/gl/m4/freading.m4 $(top_srcdir)/gl/m4/fseek.m4 \ + $(top_srcdir)/gl/m4/fseeko.m4 $(top_srcdir)/gl/m4/fstat.m4 \ + $(top_srcdir)/gl/m4/fstatat.m4 \ + $(top_srcdir)/gl/m4/fstypename.m4 $(top_srcdir)/gl/m4/ftell.m4 \ + $(top_srcdir)/gl/m4/ftello.m4 $(top_srcdir)/gl/m4/ftruncate.m4 \ + $(top_srcdir)/gl/m4/fts.m4 \ + $(top_srcdir)/gl/m4/getcwd-abort-bug.m4 \ + $(top_srcdir)/gl/m4/getcwd-path-max.m4 \ + $(top_srcdir)/gl/m4/getcwd.m4 $(top_srcdir)/gl/m4/getdelim.m4 \ + $(top_srcdir)/gl/m4/getdtablesize.m4 \ + $(top_srcdir)/gl/m4/getgroups.m4 \ + $(top_srcdir)/gl/m4/gethostname.m4 \ + $(top_srcdir)/gl/m4/getline.m4 $(top_srcdir)/gl/m4/getopt.m4 \ + $(top_srcdir)/gl/m4/getpagesize.m4 \ + $(top_srcdir)/gl/m4/gettext.m4 $(top_srcdir)/gl/m4/gettime.m4 \ + $(top_srcdir)/gl/m4/gettimeofday.m4 \ + $(top_srcdir)/gl/m4/glibc21.m4 \ + $(top_srcdir)/gl/m4/gnulib-common.m4 \ + $(top_srcdir)/gl/m4/gnulib-comp.m4 \ + $(top_srcdir)/gl/m4/group-member.m4 \ + $(top_srcdir)/gl/m4/human.m4 $(top_srcdir)/gl/m4/i-ring.m4 \ + $(top_srcdir)/gl/m4/iconv.m4 $(top_srcdir)/gl/m4/idcache.m4 \ + $(top_srcdir)/gl/m4/include_next.m4 \ + $(top_srcdir)/gl/m4/inet_pton.m4 $(top_srcdir)/gl/m4/inline.m4 \ + $(top_srcdir)/gl/m4/intlmacosx.m4 \ + $(top_srcdir)/gl/m4/intmax_t.m4 \ + $(top_srcdir)/gl/m4/inttostr.m4 \ + $(top_srcdir)/gl/m4/inttypes-pri.m4 \ + $(top_srcdir)/gl/m4/inttypes.m4 \ + $(top_srcdir)/gl/m4/inttypes_h.m4 $(top_srcdir)/gl/m4/ioctl.m4 \ + $(top_srcdir)/gl/m4/isblank.m4 $(top_srcdir)/gl/m4/isfinite.m4 \ + $(top_srcdir)/gl/m4/isinf.m4 $(top_srcdir)/gl/m4/isnand.m4 \ + $(top_srcdir)/gl/m4/isnanf.m4 $(top_srcdir)/gl/m4/isnanl.m4 \ + $(top_srcdir)/gl/m4/iswblank.m4 \ + $(top_srcdir)/gl/m4/langinfo_h.m4 \ + $(top_srcdir)/gl/m4/largefile.m4 \ + $(top_srcdir)/gl/m4/lcmessage.m4 $(top_srcdir)/gl/m4/lib-ld.m4 \ + $(top_srcdir)/gl/m4/lib-link.m4 \ + $(top_srcdir)/gl/m4/lib-prefix.m4 \ + $(top_srcdir)/gl/m4/libunistring-base.m4 \ + $(top_srcdir)/gl/m4/localcharset.m4 \ + $(top_srcdir)/gl/m4/locale-fr.m4 \ + $(top_srcdir)/gl/m4/locale-ja.m4 \ + $(top_srcdir)/gl/m4/locale-tr.m4 \ + $(top_srcdir)/gl/m4/locale-zh.m4 \ + $(top_srcdir)/gl/m4/locale_h.m4 \ + $(top_srcdir)/gl/m4/localeconv.m4 \ + $(top_srcdir)/gl/m4/localename.m4 $(top_srcdir)/gl/m4/lock.m4 \ + $(top_srcdir)/gl/m4/longlong.m4 \ + $(top_srcdir)/gl/m4/ls-mntd-fs.m4 $(top_srcdir)/gl/m4/lseek.m4 \ + $(top_srcdir)/gl/m4/lstat.m4 $(top_srcdir)/gl/m4/malloc.m4 \ + $(top_srcdir)/gl/m4/malloca.m4 \ + $(top_srcdir)/gl/m4/manywarnings.m4 \ + $(top_srcdir)/gl/m4/math_h.m4 $(top_srcdir)/gl/m4/mathfunc.m4 \ + $(top_srcdir)/gl/m4/mbchar.m4 $(top_srcdir)/gl/m4/mbiter.m4 \ + $(top_srcdir)/gl/m4/mbrtowc.m4 $(top_srcdir)/gl/m4/mbsinit.m4 \ + $(top_srcdir)/gl/m4/mbslen.m4 $(top_srcdir)/gl/m4/mbsrtowcs.m4 \ + $(top_srcdir)/gl/m4/mbstate_t.m4 \ + $(top_srcdir)/gl/m4/mbswidth.m4 $(top_srcdir)/gl/m4/mbtowc.m4 \ + $(top_srcdir)/gl/m4/memchr.m4 $(top_srcdir)/gl/m4/mempcpy.m4 \ + $(top_srcdir)/gl/m4/memrchr.m4 $(top_srcdir)/gl/m4/mktime.m4 \ + $(top_srcdir)/gl/m4/mmap-anon.m4 $(top_srcdir)/gl/m4/mode_t.m4 \ + $(top_srcdir)/gl/m4/modechange.m4 $(top_srcdir)/gl/m4/modf.m4 \ + $(top_srcdir)/gl/m4/mountlist.m4 \ + $(top_srcdir)/gl/m4/msvc-inval.m4 \ + $(top_srcdir)/gl/m4/msvc-nothrow.m4 \ + $(top_srcdir)/gl/m4/multiarch.m4 \ + $(top_srcdir)/gl/m4/nanosleep.m4 \ + $(top_srcdir)/gl/m4/netinet_in_h.m4 \ + $(top_srcdir)/gl/m4/nl_langinfo.m4 $(top_srcdir)/gl/m4/nls.m4 \ + $(top_srcdir)/gl/m4/nocrash.m4 $(top_srcdir)/gl/m4/off_t.m4 \ + $(top_srcdir)/gl/m4/onceonly.m4 $(top_srcdir)/gl/m4/open.m4 \ + $(top_srcdir)/gl/m4/openat.m4 $(top_srcdir)/gl/m4/opendir.m4 \ + $(top_srcdir)/gl/m4/parse-datetime.m4 \ + $(top_srcdir)/gl/m4/pathmax.m4 $(top_srcdir)/gl/m4/perror.m4 \ + $(top_srcdir)/gl/m4/pipe.m4 $(top_srcdir)/gl/m4/po.m4 \ + $(top_srcdir)/gl/m4/printf.m4 $(top_srcdir)/gl/m4/priv-set.m4 \ + $(top_srcdir)/gl/m4/progtest.m4 $(top_srcdir)/gl/m4/putenv.m4 \ + $(top_srcdir)/gl/m4/quote.m4 $(top_srcdir)/gl/m4/quotearg.m4 \ + $(top_srcdir)/gl/m4/raise.m4 $(top_srcdir)/gl/m4/read.m4 \ + $(top_srcdir)/gl/m4/readdir.m4 $(top_srcdir)/gl/m4/readlink.m4 \ + $(top_srcdir)/gl/m4/readlinkat.m4 \ + $(top_srcdir)/gl/m4/realloc.m4 $(top_srcdir)/gl/m4/regex.m4 \ + $(top_srcdir)/gl/m4/rewinddir.m4 $(top_srcdir)/gl/m4/rmdir.m4 \ + $(top_srcdir)/gl/m4/rpmatch.m4 \ + $(top_srcdir)/gl/m4/safe-read.m4 $(top_srcdir)/gl/m4/same.m4 \ + $(top_srcdir)/gl/m4/save-cwd.m4 $(top_srcdir)/gl/m4/savedir.m4 \ + $(top_srcdir)/gl/m4/select.m4 \ + $(top_srcdir)/gl/m4/selinux-context-h.m4 \ + $(top_srcdir)/gl/m4/selinux-selinux-h.m4 \ + $(top_srcdir)/gl/m4/setenv.m4 $(top_srcdir)/gl/m4/setlocale.m4 \ + $(top_srcdir)/gl/m4/sigaction.m4 \ + $(top_srcdir)/gl/m4/signal_h.m4 \ + $(top_srcdir)/gl/m4/signalblocking.m4 \ + $(top_srcdir)/gl/m4/size_max.m4 $(top_srcdir)/gl/m4/sleep.m4 \ + $(top_srcdir)/gl/m4/snprintf.m4 \ + $(top_srcdir)/gl/m4/socketlib.m4 \ + $(top_srcdir)/gl/m4/sockets.m4 $(top_srcdir)/gl/m4/socklen.m4 \ + $(top_srcdir)/gl/m4/sockpfaf.m4 $(top_srcdir)/gl/m4/ssize_t.m4 \ + $(top_srcdir)/gl/m4/st_dm_mode.m4 \ + $(top_srcdir)/gl/m4/stat-size.m4 \ + $(top_srcdir)/gl/m4/stat-time.m4 $(top_srcdir)/gl/m4/stat.m4 \ + $(top_srcdir)/gl/m4/stdalign.m4 $(top_srcdir)/gl/m4/stdarg.m4 \ + $(top_srcdir)/gl/m4/stdbool.m4 $(top_srcdir)/gl/m4/stddef_h.m4 \ + $(top_srcdir)/gl/m4/stdint.m4 $(top_srcdir)/gl/m4/stdint_h.m4 \ + $(top_srcdir)/gl/m4/stdio_h.m4 $(top_srcdir)/gl/m4/stdlib_h.m4 \ + $(top_srcdir)/gl/m4/stpcpy.m4 $(top_srcdir)/gl/m4/strcase.m4 \ + $(top_srcdir)/gl/m4/strcasestr.m4 \ + $(top_srcdir)/gl/m4/strdup.m4 $(top_srcdir)/gl/m4/strerror.m4 \ + $(top_srcdir)/gl/m4/strerror_r.m4 \ + $(top_srcdir)/gl/m4/strftime.m4 \ + $(top_srcdir)/gl/m4/string_h.m4 \ + $(top_srcdir)/gl/m4/strings_h.m4 \ + $(top_srcdir)/gl/m4/strndup.m4 $(top_srcdir)/gl/m4/strnlen.m4 \ + $(top_srcdir)/gl/m4/strstr.m4 $(top_srcdir)/gl/m4/strtoull.m4 \ + $(top_srcdir)/gl/m4/strtoumax.m4 \ + $(top_srcdir)/gl/m4/symlink.m4 \ + $(top_srcdir)/gl/m4/symlinkat.m4 \ + $(top_srcdir)/gl/m4/sys_ioctl_h.m4 \ + $(top_srcdir)/gl/m4/sys_select_h.m4 \ + $(top_srcdir)/gl/m4/sys_socket_h.m4 \ + $(top_srcdir)/gl/m4/sys_stat_h.m4 \ + $(top_srcdir)/gl/m4/sys_time_h.m4 \ + $(top_srcdir)/gl/m4/sys_types_h.m4 \ + $(top_srcdir)/gl/m4/sys_uio_h.m4 \ + $(top_srcdir)/gl/m4/sys_utsname_h.m4 \ + $(top_srcdir)/gl/m4/sys_wait_h.m4 \ + $(top_srcdir)/gl/m4/thread.m4 $(top_srcdir)/gl/m4/threadlib.m4 \ + $(top_srcdir)/gl/m4/time_h.m4 $(top_srcdir)/gl/m4/time_r.m4 \ + $(top_srcdir)/gl/m4/time_rz.m4 $(top_srcdir)/gl/m4/timegm.m4 \ + $(top_srcdir)/gl/m4/timespec.m4 \ + $(top_srcdir)/gl/m4/tm_gmtoff.m4 $(top_srcdir)/gl/m4/trunc.m4 \ + $(top_srcdir)/gl/m4/uname.m4 $(top_srcdir)/gl/m4/ungetc.m4 \ + $(top_srcdir)/gl/m4/unistd-safer.m4 \ + $(top_srcdir)/gl/m4/unistd_h.m4 $(top_srcdir)/gl/m4/unlink.m4 \ + $(top_srcdir)/gl/m4/unlinkat.m4 \ + $(top_srcdir)/gl/m4/unlinkdir.m4 \ + $(top_srcdir)/gl/m4/vasnprintf.m4 \ + $(top_srcdir)/gl/m4/version-etc.m4 \ + $(top_srcdir)/gl/m4/warn-on-use.m4 \ + $(top_srcdir)/gl/m4/warnings.m4 $(top_srcdir)/gl/m4/wchar_h.m4 \ + $(top_srcdir)/gl/m4/wchar_t.m4 $(top_srcdir)/gl/m4/wcrtomb.m4 \ + $(top_srcdir)/gl/m4/wctob.m4 $(top_srcdir)/gl/m4/wctomb.m4 \ + $(top_srcdir)/gl/m4/wctype_h.m4 $(top_srcdir)/gl/m4/wcwidth.m4 \ + $(top_srcdir)/gl/m4/wint_t.m4 $(top_srcdir)/gl/m4/xalloc.m4 \ + $(top_srcdir)/gl/m4/xgetcwd.m4 $(top_srcdir)/gl/m4/xsize.m4 \ + $(top_srcdir)/gl/m4/xstrndup.m4 $(top_srcdir)/gl/m4/xstrtod.m4 \ + $(top_srcdir)/gl/m4/xstrtol.m4 $(top_srcdir)/gl/m4/yesno.m4 \ + $(top_srcdir)/gl/m4/yield.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +RUNTESTDEFAULTFLAGS = --tool $$tool --srcdir $$srcdir +EXPECT = expect +RUNTEST = runtest +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +pkglibexecdir = @pkglibexecdir@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALLOCA_H = @ALLOCA_H@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ +AR = @AR@ +ARFLAGS = @ARFLAGS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AUXDIR = @AUXDIR@ +AWK = @AWK@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ +BYTESWAP_H = @BYTESWAP_H@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CONFIG_INCLUDE = @CONFIG_INCLUDE@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFAULT_ARG_SIZE = @DEFAULT_ARG_SIZE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +EXEEXT = @EXEEXT@ +FAKETIME = @FAKETIME@ +FINDLIBOBJS = @FINDLIBOBJS@ +FINDLIBS = @FINDLIBS@ +FLOAT_H = @FLOAT_H@ +FNMATCH_H = @FNMATCH_H@ +GETHOSTNAME_LIB = @GETHOSTNAME_LIB@ +GETOPT_H = @GETOPT_H@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_ACCEPT = @GNULIB_ACCEPT@ +GNULIB_ACCEPT4 = @GNULIB_ACCEPT4@ +GNULIB_ACOSF = @GNULIB_ACOSF@ +GNULIB_ACOSL = @GNULIB_ACOSL@ +GNULIB_ALPHASORT = @GNULIB_ALPHASORT@ +GNULIB_ASINF = @GNULIB_ASINF@ +GNULIB_ASINL = @GNULIB_ASINL@ +GNULIB_ATAN2F = @GNULIB_ATAN2F@ +GNULIB_ATANF = @GNULIB_ATANF@ +GNULIB_ATANL = @GNULIB_ATANL@ +GNULIB_ATOLL = @GNULIB_ATOLL@ +GNULIB_BIND = @GNULIB_BIND@ +GNULIB_BTOWC = @GNULIB_BTOWC@ +GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ +GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ +GNULIB_CBRT = @GNULIB_CBRT@ +GNULIB_CBRTF = @GNULIB_CBRTF@ +GNULIB_CBRTL = @GNULIB_CBRTL@ +GNULIB_CEIL = @GNULIB_CEIL@ +GNULIB_CEILF = @GNULIB_CEILF@ +GNULIB_CEILL = @GNULIB_CEILL@ +GNULIB_CHDIR = @GNULIB_CHDIR@ +GNULIB_CHOWN = @GNULIB_CHOWN@ +GNULIB_CLOSE = @GNULIB_CLOSE@ +GNULIB_CLOSEDIR = @GNULIB_CLOSEDIR@ +GNULIB_CONNECT = @GNULIB_CONNECT@ +GNULIB_COPYSIGN = @GNULIB_COPYSIGN@ +GNULIB_COPYSIGNF = @GNULIB_COPYSIGNF@ +GNULIB_COPYSIGNL = @GNULIB_COPYSIGNL@ +GNULIB_COSF = @GNULIB_COSF@ +GNULIB_COSHF = @GNULIB_COSHF@ +GNULIB_COSL = @GNULIB_COSL@ +GNULIB_DIRFD = @GNULIB_DIRFD@ +GNULIB_DPRINTF = @GNULIB_DPRINTF@ +GNULIB_DUP = @GNULIB_DUP@ +GNULIB_DUP2 = @GNULIB_DUP2@ +GNULIB_DUP3 = @GNULIB_DUP3@ +GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@ +GNULIB_ENVIRON = @GNULIB_ENVIRON@ +GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_EXP2 = @GNULIB_EXP2@ +GNULIB_EXP2F = @GNULIB_EXP2F@ +GNULIB_EXP2L = @GNULIB_EXP2L@ +GNULIB_EXPF = @GNULIB_EXPF@ +GNULIB_EXPL = @GNULIB_EXPL@ +GNULIB_EXPM1 = @GNULIB_EXPM1@ +GNULIB_EXPM1F = @GNULIB_EXPM1F@ +GNULIB_EXPM1L = @GNULIB_EXPM1L@ +GNULIB_FABSF = @GNULIB_FABSF@ +GNULIB_FABSL = @GNULIB_FABSL@ +GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ +GNULIB_FCHDIR = @GNULIB_FCHDIR@ +GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ +GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ +GNULIB_FCLOSE = @GNULIB_FCLOSE@ +GNULIB_FCNTL = @GNULIB_FCNTL@ +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@ +GNULIB_FGETS = @GNULIB_FGETS@ +GNULIB_FLOOR = @GNULIB_FLOOR@ +GNULIB_FLOORF = @GNULIB_FLOORF@ +GNULIB_FLOORL = @GNULIB_FLOORL@ +GNULIB_FMA = @GNULIB_FMA@ +GNULIB_FMAF = @GNULIB_FMAF@ +GNULIB_FMAL = @GNULIB_FMAL@ +GNULIB_FMOD = @GNULIB_FMOD@ +GNULIB_FMODF = @GNULIB_FMODF@ +GNULIB_FMODL = @GNULIB_FMODL@ +GNULIB_FOPEN = @GNULIB_FOPEN@ +GNULIB_FPRINTF = @GNULIB_FPRINTF@ +GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ +GNULIB_FPURGE = @GNULIB_FPURGE@ +GNULIB_FPUTC = @GNULIB_FPUTC@ +GNULIB_FPUTS = @GNULIB_FPUTS@ +GNULIB_FREAD = @GNULIB_FREAD@ +GNULIB_FREOPEN = @GNULIB_FREOPEN@ +GNULIB_FREXP = @GNULIB_FREXP@ +GNULIB_FREXPF = @GNULIB_FREXPF@ +GNULIB_FREXPL = @GNULIB_FREXPL@ +GNULIB_FSCANF = @GNULIB_FSCANF@ +GNULIB_FSEEK = @GNULIB_FSEEK@ +GNULIB_FSEEKO = @GNULIB_FSEEKO@ +GNULIB_FSTAT = @GNULIB_FSTAT@ +GNULIB_FSTATAT = @GNULIB_FSTATAT@ +GNULIB_FSYNC = @GNULIB_FSYNC@ +GNULIB_FTELL = @GNULIB_FTELL@ +GNULIB_FTELLO = @GNULIB_FTELLO@ +GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ +GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ +GNULIB_FWRITE = @GNULIB_FWRITE@ +GNULIB_GETC = @GNULIB_GETC@ +GNULIB_GETCHAR = @GNULIB_GETCHAR@ +GNULIB_GETCWD = @GNULIB_GETCWD@ +GNULIB_GETDELIM = @GNULIB_GETDELIM@ +GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ +GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ +GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ +GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ +GNULIB_GETLINE = @GNULIB_GETLINE@ +GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ +GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ +GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ +GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ +GNULIB_GETPEERNAME = @GNULIB_GETPEERNAME@ +GNULIB_GETSOCKNAME = @GNULIB_GETSOCKNAME@ +GNULIB_GETSOCKOPT = @GNULIB_GETSOCKOPT@ +GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ +GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ +GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ +GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ +GNULIB_GRANTPT = @GNULIB_GRANTPT@ +GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ +GNULIB_HYPOT = @GNULIB_HYPOT@ +GNULIB_HYPOTF = @GNULIB_HYPOTF@ +GNULIB_HYPOTL = @GNULIB_HYPOTL@ +GNULIB_ILOGB = @GNULIB_ILOGB@ +GNULIB_ILOGBF = @GNULIB_ILOGBF@ +GNULIB_ILOGBL = @GNULIB_ILOGBL@ +GNULIB_IMAXABS = @GNULIB_IMAXABS@ +GNULIB_IMAXDIV = @GNULIB_IMAXDIV@ +GNULIB_INET_NTOP = @GNULIB_INET_NTOP@ +GNULIB_INET_PTON = @GNULIB_INET_PTON@ +GNULIB_IOCTL = @GNULIB_IOCTL@ +GNULIB_ISATTY = @GNULIB_ISATTY@ +GNULIB_ISBLANK = @GNULIB_ISBLANK@ +GNULIB_ISFINITE = @GNULIB_ISFINITE@ +GNULIB_ISINF = @GNULIB_ISINF@ +GNULIB_ISNAN = @GNULIB_ISNAN@ +GNULIB_ISNAND = @GNULIB_ISNAND@ +GNULIB_ISNANF = @GNULIB_ISNANF@ +GNULIB_ISNANL = @GNULIB_ISNANL@ +GNULIB_ISWBLANK = @GNULIB_ISWBLANK@ +GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@ +GNULIB_LCHMOD = @GNULIB_LCHMOD@ +GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LDEXPF = @GNULIB_LDEXPF@ +GNULIB_LDEXPL = @GNULIB_LDEXPL@ +GNULIB_LINK = @GNULIB_LINK@ +GNULIB_LINKAT = @GNULIB_LINKAT@ +GNULIB_LISTEN = @GNULIB_LISTEN@ +GNULIB_LOCALECONV = @GNULIB_LOCALECONV@ +GNULIB_LOG = @GNULIB_LOG@ +GNULIB_LOG10 = @GNULIB_LOG10@ +GNULIB_LOG10F = @GNULIB_LOG10F@ +GNULIB_LOG10L = @GNULIB_LOG10L@ +GNULIB_LOG1P = @GNULIB_LOG1P@ +GNULIB_LOG1PF = @GNULIB_LOG1PF@ +GNULIB_LOG1PL = @GNULIB_LOG1PL@ +GNULIB_LOG2 = @GNULIB_LOG2@ +GNULIB_LOG2F = @GNULIB_LOG2F@ +GNULIB_LOG2L = @GNULIB_LOG2L@ +GNULIB_LOGB = @GNULIB_LOGB@ +GNULIB_LOGBF = @GNULIB_LOGBF@ +GNULIB_LOGBL = @GNULIB_LOGBL@ +GNULIB_LOGF = @GNULIB_LOGF@ +GNULIB_LOGL = @GNULIB_LOGL@ +GNULIB_LSEEK = @GNULIB_LSEEK@ +GNULIB_LSTAT = @GNULIB_LSTAT@ +GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ +GNULIB_MBRLEN = @GNULIB_MBRLEN@ +GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ +GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ +GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ +GNULIB_MBSCHR = @GNULIB_MBSCHR@ +GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ +GNULIB_MBSINIT = @GNULIB_MBSINIT@ +GNULIB_MBSLEN = @GNULIB_MBSLEN@ +GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ +GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ +GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ +GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ +GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ +GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ +GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ +GNULIB_MBSSEP = @GNULIB_MBSSEP@ +GNULIB_MBSSPN = @GNULIB_MBSSPN@ +GNULIB_MBSSTR = @GNULIB_MBSSTR@ +GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ +GNULIB_MBTOWC = @GNULIB_MBTOWC@ +GNULIB_MEMCHR = @GNULIB_MEMCHR@ +GNULIB_MEMMEM = @GNULIB_MEMMEM@ +GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ +GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ +GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ +GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ +GNULIB_MKFIFO = @GNULIB_MKFIFO@ +GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ +GNULIB_MKNOD = @GNULIB_MKNOD@ +GNULIB_MKNODAT = @GNULIB_MKNODAT@ +GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ +GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ +GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ +GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ +GNULIB_MKTIME = @GNULIB_MKTIME@ +GNULIB_MODF = @GNULIB_MODF@ +GNULIB_MODFF = @GNULIB_MODFF@ +GNULIB_MODFL = @GNULIB_MODFL@ +GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ +GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@ +GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@ +GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ +GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ +GNULIB_OPEN = @GNULIB_OPEN@ +GNULIB_OPENAT = @GNULIB_OPENAT@ +GNULIB_OPENDIR = @GNULIB_OPENDIR@ +GNULIB_PCLOSE = @GNULIB_PCLOSE@ +GNULIB_PERROR = @GNULIB_PERROR@ +GNULIB_PIPE = @GNULIB_PIPE@ +GNULIB_PIPE2 = @GNULIB_PIPE2@ +GNULIB_POPEN = @GNULIB_POPEN@ +GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ +GNULIB_POWF = @GNULIB_POWF@ +GNULIB_PREAD = @GNULIB_PREAD@ +GNULIB_PRINTF = @GNULIB_PRINTF@ +GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ +GNULIB_PSELECT = @GNULIB_PSELECT@ +GNULIB_PTHREAD_SIGMASK = @GNULIB_PTHREAD_SIGMASK@ +GNULIB_PTSNAME = @GNULIB_PTSNAME@ +GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ +GNULIB_PUTC = @GNULIB_PUTC@ +GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ +GNULIB_PUTENV = @GNULIB_PUTENV@ +GNULIB_PUTS = @GNULIB_PUTS@ +GNULIB_PWRITE = @GNULIB_PWRITE@ +GNULIB_QSORT_R = @GNULIB_QSORT_R@ +GNULIB_RAISE = @GNULIB_RAISE@ +GNULIB_RANDOM = @GNULIB_RANDOM@ +GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ +GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ +GNULIB_READ = @GNULIB_READ@ +GNULIB_READDIR = @GNULIB_READDIR@ +GNULIB_READLINK = @GNULIB_READLINK@ +GNULIB_READLINKAT = @GNULIB_READLINKAT@ +GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ +GNULIB_REALPATH = @GNULIB_REALPATH@ +GNULIB_RECV = @GNULIB_RECV@ +GNULIB_RECVFROM = @GNULIB_RECVFROM@ +GNULIB_REMAINDER = @GNULIB_REMAINDER@ +GNULIB_REMAINDERF = @GNULIB_REMAINDERF@ +GNULIB_REMAINDERL = @GNULIB_REMAINDERL@ +GNULIB_REMOVE = @GNULIB_REMOVE@ +GNULIB_RENAME = @GNULIB_RENAME@ +GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ +GNULIB_REWINDDIR = @GNULIB_REWINDDIR@ +GNULIB_RINT = @GNULIB_RINT@ +GNULIB_RINTF = @GNULIB_RINTF@ +GNULIB_RINTL = @GNULIB_RINTL@ +GNULIB_RMDIR = @GNULIB_RMDIR@ +GNULIB_ROUND = @GNULIB_ROUND@ +GNULIB_ROUNDF = @GNULIB_ROUNDF@ +GNULIB_ROUNDL = @GNULIB_ROUNDL@ +GNULIB_RPMATCH = @GNULIB_RPMATCH@ +GNULIB_SCANDIR = @GNULIB_SCANDIR@ +GNULIB_SCANF = @GNULIB_SCANF@ +GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ +GNULIB_SELECT = @GNULIB_SELECT@ +GNULIB_SEND = @GNULIB_SEND@ +GNULIB_SENDTO = @GNULIB_SENDTO@ +GNULIB_SETENV = @GNULIB_SETENV@ +GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ +GNULIB_SETLOCALE = @GNULIB_SETLOCALE@ +GNULIB_SETSOCKOPT = @GNULIB_SETSOCKOPT@ +GNULIB_SHUTDOWN = @GNULIB_SHUTDOWN@ +GNULIB_SIGACTION = @GNULIB_SIGACTION@ +GNULIB_SIGNAL_H_SIGPIPE = @GNULIB_SIGNAL_H_SIGPIPE@ +GNULIB_SIGNBIT = @GNULIB_SIGNBIT@ +GNULIB_SIGPROCMASK = @GNULIB_SIGPROCMASK@ +GNULIB_SINF = @GNULIB_SINF@ +GNULIB_SINHF = @GNULIB_SINHF@ +GNULIB_SINL = @GNULIB_SINL@ +GNULIB_SLEEP = @GNULIB_SLEEP@ +GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ +GNULIB_SOCKET = @GNULIB_SOCKET@ +GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ +GNULIB_SQRTF = @GNULIB_SQRTF@ +GNULIB_SQRTL = @GNULIB_SQRTL@ +GNULIB_STAT = @GNULIB_STAT@ +GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ +GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ +GNULIB_STPCPY = @GNULIB_STPCPY@ +GNULIB_STPNCPY = @GNULIB_STPNCPY@ +GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ +GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ +GNULIB_STRDUP = @GNULIB_STRDUP@ +GNULIB_STRERROR = @GNULIB_STRERROR@ +GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ +GNULIB_STRNCAT = @GNULIB_STRNCAT@ +GNULIB_STRNDUP = @GNULIB_STRNDUP@ +GNULIB_STRNLEN = @GNULIB_STRNLEN@ +GNULIB_STRPBRK = @GNULIB_STRPBRK@ +GNULIB_STRPTIME = @GNULIB_STRPTIME@ +GNULIB_STRSEP = @GNULIB_STRSEP@ +GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ +GNULIB_STRSTR = @GNULIB_STRSTR@ +GNULIB_STRTOD = @GNULIB_STRTOD@ +GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@ +GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ +GNULIB_STRTOLL = @GNULIB_STRTOLL@ +GNULIB_STRTOULL = @GNULIB_STRTOULL@ +GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@ +GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GNULIB_SYMLINK = @GNULIB_SYMLINK@ +GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ +GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ +GNULIB_TANF = @GNULIB_TANF@ +GNULIB_TANHF = @GNULIB_TANHF@ +GNULIB_TANL = @GNULIB_TANL@ +GNULIB_TIMEGM = @GNULIB_TIMEGM@ +GNULIB_TIME_R = @GNULIB_TIME_R@ +GNULIB_TIME_RZ = @GNULIB_TIME_RZ@ +GNULIB_TMPFILE = @GNULIB_TMPFILE@ +GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@ +GNULIB_TRUNC = @GNULIB_TRUNC@ +GNULIB_TRUNCF = @GNULIB_TRUNCF@ +GNULIB_TRUNCL = @GNULIB_TRUNCL@ +GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ +GNULIB_UNAME = @GNULIB_UNAME@ +GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ +GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ +GNULIB_UNLINK = @GNULIB_UNLINK@ +GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ +GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ +GNULIB_UNSETENV = @GNULIB_UNSETENV@ +GNULIB_USLEEP = @GNULIB_USLEEP@ +GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ +GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ +GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ +GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ +GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ +GNULIB_VFSCANF = @GNULIB_VFSCANF@ +GNULIB_VPRINTF = @GNULIB_VPRINTF@ +GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ +GNULIB_VSCANF = @GNULIB_VSCANF@ +GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ +GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ +GNULIB_WAITPID = @GNULIB_WAITPID@ +GNULIB_WCPCPY = @GNULIB_WCPCPY@ +GNULIB_WCPNCPY = @GNULIB_WCPNCPY@ +GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ +GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@ +GNULIB_WCSCAT = @GNULIB_WCSCAT@ +GNULIB_WCSCHR = @GNULIB_WCSCHR@ +GNULIB_WCSCMP = @GNULIB_WCSCMP@ +GNULIB_WCSCOLL = @GNULIB_WCSCOLL@ +GNULIB_WCSCPY = @GNULIB_WCSCPY@ +GNULIB_WCSCSPN = @GNULIB_WCSCSPN@ +GNULIB_WCSDUP = @GNULIB_WCSDUP@ +GNULIB_WCSLEN = @GNULIB_WCSLEN@ +GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@ +GNULIB_WCSNCAT = @GNULIB_WCSNCAT@ +GNULIB_WCSNCMP = @GNULIB_WCSNCMP@ +GNULIB_WCSNCPY = @GNULIB_WCSNCPY@ +GNULIB_WCSNLEN = @GNULIB_WCSNLEN@ +GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ +GNULIB_WCSPBRK = @GNULIB_WCSPBRK@ +GNULIB_WCSRCHR = @GNULIB_WCSRCHR@ +GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ +GNULIB_WCSSPN = @GNULIB_WCSSPN@ +GNULIB_WCSSTR = @GNULIB_WCSSTR@ +GNULIB_WCSTOK = @GNULIB_WCSTOK@ +GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@ +GNULIB_WCSXFRM = @GNULIB_WCSXFRM@ +GNULIB_WCTOB = @GNULIB_WCTOB@ +GNULIB_WCTOMB = @GNULIB_WCTOMB@ +GNULIB_WCTRANS = @GNULIB_WCTRANS@ +GNULIB_WCTYPE = @GNULIB_WCTYPE@ +GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ +GNULIB_WMEMCHR = @GNULIB_WMEMCHR@ +GNULIB_WMEMCMP = @GNULIB_WMEMCMP@ +GNULIB_WMEMCPY = @GNULIB_WMEMCPY@ +GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@ +GNULIB_WMEMSET = @GNULIB_WMEMSET@ +GNULIB_WRITE = @GNULIB_WRITE@ +GNULIB__EXIT = @GNULIB__EXIT@ +GREP = @GREP@ +HAVE_ACCEPT4 = @HAVE_ACCEPT4@ +HAVE_ACOSF = @HAVE_ACOSF@ +HAVE_ACOSL = @HAVE_ACOSL@ +HAVE_ALPHASORT = @HAVE_ALPHASORT@ +HAVE_ARPA_INET_H = @HAVE_ARPA_INET_H@ +HAVE_ASINF = @HAVE_ASINF@ +HAVE_ASINL = @HAVE_ASINL@ +HAVE_ATAN2F = @HAVE_ATAN2F@ +HAVE_ATANF = @HAVE_ATANF@ +HAVE_ATANL = @HAVE_ATANL@ +HAVE_ATOLL = @HAVE_ATOLL@ +HAVE_ATTRIBUTE_NORETURN = @HAVE_ATTRIBUTE_NORETURN@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ +HAVE_CBRT = @HAVE_CBRT@ +HAVE_CBRTF = @HAVE_CBRTF@ +HAVE_CBRTL = @HAVE_CBRTL@ +HAVE_CHOWN = @HAVE_CHOWN@ +HAVE_CLOSEDIR = @HAVE_CLOSEDIR@ +HAVE_COPYSIGN = @HAVE_COPYSIGN@ +HAVE_COPYSIGNL = @HAVE_COPYSIGNL@ +HAVE_COSF = @HAVE_COSF@ +HAVE_COSHF = @HAVE_COSHF@ +HAVE_COSL = @HAVE_COSL@ +HAVE_DECL_ACOSL = @HAVE_DECL_ACOSL@ +HAVE_DECL_ASINL = @HAVE_DECL_ASINL@ +HAVE_DECL_ATANL = @HAVE_DECL_ATANL@ +HAVE_DECL_CBRTF = @HAVE_DECL_CBRTF@ +HAVE_DECL_CBRTL = @HAVE_DECL_CBRTL@ +HAVE_DECL_CEILF = @HAVE_DECL_CEILF@ +HAVE_DECL_CEILL = @HAVE_DECL_CEILL@ +HAVE_DECL_COPYSIGNF = @HAVE_DECL_COPYSIGNF@ +HAVE_DECL_COSL = @HAVE_DECL_COSL@ +HAVE_DECL_DIRFD = @HAVE_DECL_DIRFD@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_EXP2 = @HAVE_DECL_EXP2@ +HAVE_DECL_EXP2F = @HAVE_DECL_EXP2F@ +HAVE_DECL_EXP2L = @HAVE_DECL_EXP2L@ +HAVE_DECL_EXPL = @HAVE_DECL_EXPL@ +HAVE_DECL_EXPM1L = @HAVE_DECL_EXPM1L@ +HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ +HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ +HAVE_DECL_FDOPENDIR = @HAVE_DECL_FDOPENDIR@ +HAVE_DECL_FLOORF = @HAVE_DECL_FLOORF@ +HAVE_DECL_FLOORL = @HAVE_DECL_FLOORL@ +HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ +HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@ +HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ +HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ +HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ +HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ +HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ +HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ +HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ +HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@ +HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@ +HAVE_DECL_INET_NTOP = @HAVE_DECL_INET_NTOP@ +HAVE_DECL_INET_PTON = @HAVE_DECL_INET_PTON@ +HAVE_DECL_LDEXPL = @HAVE_DECL_LDEXPL@ +HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ +HAVE_DECL_LOG10L = @HAVE_DECL_LOG10L@ +HAVE_DECL_LOG2 = @HAVE_DECL_LOG2@ +HAVE_DECL_LOG2F = @HAVE_DECL_LOG2F@ +HAVE_DECL_LOG2L = @HAVE_DECL_LOG2L@ +HAVE_DECL_LOGB = @HAVE_DECL_LOGB@ +HAVE_DECL_LOGL = @HAVE_DECL_LOGL@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ +HAVE_DECL_REMAINDER = @HAVE_DECL_REMAINDER@ +HAVE_DECL_REMAINDERL = @HAVE_DECL_REMAINDERL@ +HAVE_DECL_RINTF = @HAVE_DECL_RINTF@ +HAVE_DECL_ROUND = @HAVE_DECL_ROUND@ +HAVE_DECL_ROUNDF = @HAVE_DECL_ROUNDF@ +HAVE_DECL_ROUNDL = @HAVE_DECL_ROUNDL@ +HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ +HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ +HAVE_DECL_SINL = @HAVE_DECL_SINL@ +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@ +HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@ +HAVE_DECL_TANL = @HAVE_DECL_TANL@ +HAVE_DECL_TRUNC = @HAVE_DECL_TRUNC@ +HAVE_DECL_TRUNCF = @HAVE_DECL_TRUNCF@ +HAVE_DECL_TRUNCL = @HAVE_DECL_TRUNCL@ +HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ +HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ +HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DIRENT_H = @HAVE_DIRENT_H@ +HAVE_DPRINTF = @HAVE_DPRINTF@ +HAVE_DUP2 = @HAVE_DUP2@ +HAVE_DUP3 = @HAVE_DUP3@ +HAVE_DUPLOCALE = @HAVE_DUPLOCALE@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_EXPF = @HAVE_EXPF@ +HAVE_EXPL = @HAVE_EXPL@ +HAVE_EXPM1 = @HAVE_EXPM1@ +HAVE_EXPM1F = @HAVE_EXPM1F@ +HAVE_FABSF = @HAVE_FABSF@ +HAVE_FABSL = @HAVE_FABSL@ +HAVE_FACCESSAT = @HAVE_FACCESSAT@ +HAVE_FCHDIR = @HAVE_FCHDIR@ +HAVE_FCHMODAT = @HAVE_FCHMODAT@ +HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ +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@ +HAVE_FMAF = @HAVE_FMAF@ +HAVE_FMAL = @HAVE_FMAL@ +HAVE_FMODF = @HAVE_FMODF@ +HAVE_FMODL = @HAVE_FMODL@ +HAVE_FREXPF = @HAVE_FREXPF@ +HAVE_FSEEKO = @HAVE_FSEEKO@ +HAVE_FSTATAT = @HAVE_FSTATAT@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTELLO = @HAVE_FTELLO@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_FUTIMENS = @HAVE_FUTIMENS@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETGROUPS = @HAVE_GETGROUPS@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETLOGIN = @HAVE_GETLOGIN@ +HAVE_GETOPT_H = @HAVE_GETOPT_H@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ +HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ +HAVE_GRANTPT = @HAVE_GRANTPT@ +HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ +HAVE_HYPOTF = @HAVE_HYPOTF@ +HAVE_HYPOTL = @HAVE_HYPOTL@ +HAVE_ILOGB = @HAVE_ILOGB@ +HAVE_ILOGBF = @HAVE_ILOGBF@ +HAVE_ILOGBL = @HAVE_ILOGBL@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_ISBLANK = @HAVE_ISBLANK@ +HAVE_ISNAND = @HAVE_ISNAND@ +HAVE_ISNANF = @HAVE_ISNANF@ +HAVE_ISNANL = @HAVE_ISNANL@ +HAVE_ISWBLANK = @HAVE_ISWBLANK@ +HAVE_ISWCNTRL = @HAVE_ISWCNTRL@ +HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@ +HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@ +HAVE_LANGINFO_H = @HAVE_LANGINFO_H@ +HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@ +HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@ +HAVE_LCHMOD = @HAVE_LCHMOD@ +HAVE_LCHOWN = @HAVE_LCHOWN@ +HAVE_LDEXPF = @HAVE_LDEXPF@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LINKAT = @HAVE_LINKAT@ +HAVE_LOG10F = @HAVE_LOG10F@ +HAVE_LOG10L = @HAVE_LOG10L@ +HAVE_LOG1P = @HAVE_LOG1P@ +HAVE_LOG1PF = @HAVE_LOG1PF@ +HAVE_LOG1PL = @HAVE_LOG1PL@ +HAVE_LOGBF = @HAVE_LOGBF@ +HAVE_LOGBL = @HAVE_LOGBL@ +HAVE_LOGF = @HAVE_LOGF@ +HAVE_LOGL = @HAVE_LOGL@ +HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_LSTAT = @HAVE_LSTAT@ +HAVE_MAX_ALIGN_T = @HAVE_MAX_ALIGN_T@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSLEN = @HAVE_MBSLEN@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MEMCHR = @HAVE_MEMCHR@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_MKDIRAT = @HAVE_MKDIRAT@ +HAVE_MKDTEMP = @HAVE_MKDTEMP@ +HAVE_MKFIFO = @HAVE_MKFIFO@ +HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ +HAVE_MKNOD = @HAVE_MKNOD@ +HAVE_MKNODAT = @HAVE_MKNODAT@ +HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ +HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ +HAVE_MKSTEMP = @HAVE_MKSTEMP@ +HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ +HAVE_MODFF = @HAVE_MODFF@ +HAVE_MODFL = @HAVE_MODFL@ +HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ +HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ +HAVE_NETINET_IN_H = @HAVE_NETINET_IN_H@ +HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@ +HAVE_OPENAT = @HAVE_OPENAT@ +HAVE_OPENDIR = @HAVE_OPENDIR@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_PCLOSE = @HAVE_PCLOSE@ +HAVE_PIPE = @HAVE_PIPE@ +HAVE_PIPE2 = @HAVE_PIPE2@ +HAVE_POPEN = @HAVE_POPEN@ +HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ +HAVE_POSIX_SIGNALBLOCKING = @HAVE_POSIX_SIGNALBLOCKING@ +HAVE_POWF = @HAVE_POWF@ +HAVE_PREAD = @HAVE_PREAD@ +HAVE_PSELECT = @HAVE_PSELECT@ +HAVE_PTHREAD_SIGMASK = @HAVE_PTHREAD_SIGMASK@ +HAVE_PTSNAME = @HAVE_PTSNAME@ +HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ +HAVE_PWRITE = @HAVE_PWRITE@ +HAVE_RAISE = @HAVE_RAISE@ +HAVE_RANDOM = @HAVE_RANDOM@ +HAVE_RANDOM_H = @HAVE_RANDOM_H@ +HAVE_RANDOM_R = @HAVE_RANDOM_R@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READDIR = @HAVE_READDIR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_READLINKAT = @HAVE_READLINKAT@ +HAVE_REALPATH = @HAVE_REALPATH@ +HAVE_REMAINDER = @HAVE_REMAINDER@ +HAVE_REMAINDERF = @HAVE_REMAINDERF@ +HAVE_RENAMEAT = @HAVE_RENAMEAT@ +HAVE_REWINDDIR = @HAVE_REWINDDIR@ +HAVE_RINT = @HAVE_RINT@ +HAVE_RINTL = @HAVE_RINTL@ +HAVE_RPMATCH = @HAVE_RPMATCH@ +HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = @HAVE_SAME_LONG_DOUBLE_AS_DOUBLE@ +HAVE_SA_FAMILY_T = @HAVE_SA_FAMILY_T@ +HAVE_SCANDIR = @HAVE_SCANDIR@ +HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ +HAVE_SETENV = @HAVE_SETENV@ +HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ +HAVE_SIGACTION = @HAVE_SIGACTION@ +HAVE_SIGHANDLER_T = @HAVE_SIGHANDLER_T@ +HAVE_SIGINFO_T = @HAVE_SIGINFO_T@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SIGSET_T = @HAVE_SIGSET_T@ +HAVE_SINF = @HAVE_SINF@ +HAVE_SINHF = @HAVE_SINHF@ +HAVE_SINL = @HAVE_SINL@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_SQRTF = @HAVE_SQRTF@ +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_STRINGS_H = @HAVE_STRINGS_H@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRPTIME = @HAVE_STRPTIME@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRTOD = @HAVE_STRTOD@ +HAVE_STRTOLL = @HAVE_STRTOLL@ +HAVE_STRTOULL = @HAVE_STRTOULL@ +HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ +HAVE_STRUCT_SIGACTION_SA_SIGACTION = @HAVE_STRUCT_SIGACTION_SA_SIGACTION@ +HAVE_STRUCT_SOCKADDR_STORAGE = @HAVE_STRUCT_SOCKADDR_STORAGE@ +HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY = @HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY@ +HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ +HAVE_STRUCT_UTSNAME = @HAVE_STRUCT_UTSNAME@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYMLINK = @HAVE_SYMLINK@ +HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_IOCTL_H = @HAVE_SYS_IOCTL_H@ +HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_SELECT_H = @HAVE_SYS_SELECT_H@ +HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@ +HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_SYS_UIO_H = @HAVE_SYS_UIO_H@ +HAVE_SYS_UTSNAME_H = @HAVE_SYS_UTSNAME_H@ +HAVE_TANF = @HAVE_TANF@ +HAVE_TANHF = @HAVE_TANHF@ +HAVE_TANL = @HAVE_TANL@ +HAVE_TIMEGM = @HAVE_TIMEGM@ +HAVE_TIMEZONE_T = @HAVE_TIMEZONE_T@ +HAVE_TYPE_VOLATILE_SIG_ATOMIC_T = @HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@ +HAVE_UNAME = @HAVE_UNAME@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNLINKAT = @HAVE_UNLINKAT@ +HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ +HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_USLEEP = @HAVE_USLEEP@ +HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ +HAVE_VASPRINTF = @HAVE_VASPRINTF@ +HAVE_VDPRINTF = @HAVE_VDPRINTF@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCHAR_T = @HAVE_WCHAR_T@ +HAVE_WCPCPY = @HAVE_WCPCPY@ +HAVE_WCPNCPY = @HAVE_WCPNCPY@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSCASECMP = @HAVE_WCSCASECMP@ +HAVE_WCSCAT = @HAVE_WCSCAT@ +HAVE_WCSCHR = @HAVE_WCSCHR@ +HAVE_WCSCMP = @HAVE_WCSCMP@ +HAVE_WCSCOLL = @HAVE_WCSCOLL@ +HAVE_WCSCPY = @HAVE_WCSCPY@ +HAVE_WCSCSPN = @HAVE_WCSCSPN@ +HAVE_WCSDUP = @HAVE_WCSDUP@ +HAVE_WCSLEN = @HAVE_WCSLEN@ +HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@ +HAVE_WCSNCAT = @HAVE_WCSNCAT@ +HAVE_WCSNCMP = @HAVE_WCSNCMP@ +HAVE_WCSNCPY = @HAVE_WCSNCPY@ +HAVE_WCSNLEN = @HAVE_WCSNLEN@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSPBRK = @HAVE_WCSPBRK@ +HAVE_WCSRCHR = @HAVE_WCSRCHR@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WCSSPN = @HAVE_WCSSPN@ +HAVE_WCSSTR = @HAVE_WCSSTR@ +HAVE_WCSTOK = @HAVE_WCSTOK@ +HAVE_WCSWIDTH = @HAVE_WCSWIDTH@ +HAVE_WCSXFRM = @HAVE_WCSXFRM@ +HAVE_WCTRANS_T = @HAVE_WCTRANS_T@ +HAVE_WCTYPE_H = @HAVE_WCTYPE_H@ +HAVE_WCTYPE_T = @HAVE_WCTYPE_T@ +HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE_WMEMCHR = @HAVE_WMEMCHR@ +HAVE_WMEMCMP = @HAVE_WMEMCMP@ +HAVE_WMEMCPY = @HAVE_WMEMCPY@ +HAVE_WMEMMOVE = @HAVE_WMEMMOVE@ +HAVE_WMEMSET = @HAVE_WMEMSET@ +HAVE_WS2TCPIP_H = @HAVE_WS2TCPIP_H@ +HAVE_XLOCALE_H = @HAVE_XLOCALE_H@ +HAVE__BOOL = @HAVE__BOOL@ +HAVE__EXIT = @HAVE__EXIT@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ +INET_PTON_LIB = @INET_PTON_LIB@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@ +INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +ISFINITE_LIBM = @ISFINITE_LIBM@ +ISINF_LIBM = @ISINF_LIBM@ +LDFLAGS = @LDFLAGS@ +LIBGNULIB_LIBDEPS = @LIBGNULIB_LIBDEPS@ +LIBGNULIB_LTLIBDEPS = @LIBGNULIB_LTLIBDEPS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBSOCKET = @LIBSOCKET@ +LIBTESTS_LIBDEPS = @LIBTESTS_LIBDEPS@ +LIBTHREAD = @LIBTHREAD@ +LIBUNISTRING_UNITYPES_H = @LIBUNISTRING_UNITYPES_H@ +LIBUNISTRING_UNIWIDTH_H = @LIBUNISTRING_UNIWIDTH_H@ +LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ +LIB_EACCESS = @LIB_EACCESS@ +LIB_NANOSLEEP = @LIB_NANOSLEEP@ +LIB_SELECT = @LIB_SELECT@ +LIB_SELINUX = @LIB_SELINUX@ +LN_S = @LN_S@ +LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@ +LOCALE_JA = @LOCALE_JA@ +LOCALE_TR_UTF8 = @LOCALE_TR_UTF8@ +LOCALE_ZH_CN = @LOCALE_ZH_CN@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MODF_LIBM = @MODF_LIBM@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NETINET_IN_H = @NETINET_IN_H@ +NEXT_ARPA_INET_H = @NEXT_ARPA_INET_H@ +NEXT_AS_FIRST_DIRECTIVE_ARPA_INET_H = @NEXT_AS_FIRST_DIRECTIVE_ARPA_INET_H@ +NEXT_AS_FIRST_DIRECTIVE_CTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_CTYPE_H@ +NEXT_AS_FIRST_DIRECTIVE_DIRENT_H = @NEXT_AS_FIRST_DIRECTIVE_DIRENT_H@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@ +NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@ +NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ +NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@ +NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@ +NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@ +NEXT_AS_FIRST_DIRECTIVE_MATH_H = @NEXT_AS_FIRST_DIRECTIVE_MATH_H@ +NEXT_AS_FIRST_DIRECTIVE_NETINET_IN_H = @NEXT_AS_FIRST_DIRECTIVE_NETINET_IN_H@ +NEXT_AS_FIRST_DIRECTIVE_SELINUX_SELINUX_H = @NEXT_AS_FIRST_DIRECTIVE_SELINUX_SELINUX_H@ +NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H = @NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H@ +NEXT_AS_FIRST_DIRECTIVE_STDARG_H = @NEXT_AS_FIRST_DIRECTIVE_STDARG_H@ +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_IOCTL_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_IOCTL_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_SELECT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_SELECT_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_SOCKET_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_SOCKET_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_UIO_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_UIO_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_UTSNAME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_UTSNAME_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H@ +NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@ +NEXT_CTYPE_H = @NEXT_CTYPE_H@ +NEXT_DIRENT_H = @NEXT_DIRENT_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_FCNTL_H = @NEXT_FCNTL_H@ +NEXT_FLOAT_H = @NEXT_FLOAT_H@ +NEXT_GETOPT_H = @NEXT_GETOPT_H@ +NEXT_INTTYPES_H = @NEXT_INTTYPES_H@ +NEXT_LANGINFO_H = @NEXT_LANGINFO_H@ +NEXT_LOCALE_H = @NEXT_LOCALE_H@ +NEXT_MATH_H = @NEXT_MATH_H@ +NEXT_NETINET_IN_H = @NEXT_NETINET_IN_H@ +NEXT_SELINUX_SELINUX_H = @NEXT_SELINUX_SELINUX_H@ +NEXT_SIGNAL_H = @NEXT_SIGNAL_H@ +NEXT_STDARG_H = @NEXT_STDARG_H@ +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_IOCTL_H = @NEXT_SYS_IOCTL_H@ +NEXT_SYS_SELECT_H = @NEXT_SYS_SELECT_H@ +NEXT_SYS_SOCKET_H = @NEXT_SYS_SOCKET_H@ +NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ +NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ +NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ +NEXT_SYS_UIO_H = @NEXT_SYS_UIO_H@ +NEXT_SYS_UTSNAME_H = @NEXT_SYS_UTSNAME_H@ +NEXT_SYS_WAIT_H = @NEXT_SYS_WAIT_H@ +NEXT_TIME_H = @NEXT_TIME_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NEXT_WCTYPE_H = @NEXT_WCTYPE_H@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POSUB = @POSUB@ +PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PRIPTR_PREFIX = @PRIPTR_PREFIX@ +PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ +PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CALLOC = @REPLACE_CALLOC@ +REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CBRTF = @REPLACE_CBRTF@ +REPLACE_CBRTL = @REPLACE_CBRTL@ +REPLACE_CEIL = @REPLACE_CEIL@ +REPLACE_CEILF = @REPLACE_CEILF@ +REPLACE_CEILL = @REPLACE_CEILL@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_CLOSEDIR = @REPLACE_CLOSEDIR@ +REPLACE_DIRFD = @REPLACE_DIRFD@ +REPLACE_DPRINTF = @REPLACE_DPRINTF@ +REPLACE_DUP = @REPLACE_DUP@ +REPLACE_DUP2 = @REPLACE_DUP2@ +REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@ +REPLACE_EXP2 = @REPLACE_EXP2@ +REPLACE_EXP2L = @REPLACE_EXP2L@ +REPLACE_EXPM1 = @REPLACE_EXPM1@ +REPLACE_EXPM1F = @REPLACE_EXPM1F@ +REPLACE_FABSL = @REPLACE_FABSL@ +REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ +REPLACE_FCLOSE = @REPLACE_FCLOSE@ +REPLACE_FCNTL = @REPLACE_FCNTL@ +REPLACE_FDOPEN = @REPLACE_FDOPEN@ +REPLACE_FDOPENDIR = @REPLACE_FDOPENDIR@ +REPLACE_FFLUSH = @REPLACE_FFLUSH@ +REPLACE_FLOOR = @REPLACE_FLOOR@ +REPLACE_FLOORF = @REPLACE_FLOORF@ +REPLACE_FLOORL = @REPLACE_FLOORL@ +REPLACE_FMA = @REPLACE_FMA@ +REPLACE_FMAF = @REPLACE_FMAF@ +REPLACE_FMAL = @REPLACE_FMAL@ +REPLACE_FMOD = @REPLACE_FMOD@ +REPLACE_FMODF = @REPLACE_FMODF@ +REPLACE_FMODL = @REPLACE_FMODL@ +REPLACE_FOPEN = @REPLACE_FOPEN@ +REPLACE_FPRINTF = @REPLACE_FPRINTF@ +REPLACE_FPURGE = @REPLACE_FPURGE@ +REPLACE_FREOPEN = @REPLACE_FREOPEN@ +REPLACE_FREXP = @REPLACE_FREXP@ +REPLACE_FREXPF = @REPLACE_FREXPF@ +REPLACE_FREXPL = @REPLACE_FREXPL@ +REPLACE_FSEEK = @REPLACE_FSEEK@ +REPLACE_FSEEKO = @REPLACE_FSEEKO@ +REPLACE_FSTAT = @REPLACE_FSTAT@ +REPLACE_FSTATAT = @REPLACE_FSTATAT@ +REPLACE_FTELL = @REPLACE_FTELL@ +REPLACE_FTELLO = @REPLACE_FTELLO@ +REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ +REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETDELIM = @REPLACE_GETDELIM@ +REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ +REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@ +REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ +REPLACE_GETLINE = @REPLACE_GETLINE@ +REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ +REPLACE_GMTIME = @REPLACE_GMTIME@ +REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@ +REPLACE_HYPOT = @REPLACE_HYPOT@ +REPLACE_HYPOTF = @REPLACE_HYPOTF@ +REPLACE_HYPOTL = @REPLACE_HYPOTL@ +REPLACE_ILOGB = @REPLACE_ILOGB@ +REPLACE_ILOGBF = @REPLACE_ILOGBF@ +REPLACE_INET_NTOP = @REPLACE_INET_NTOP@ +REPLACE_INET_PTON = @REPLACE_INET_PTON@ +REPLACE_IOCTL = @REPLACE_IOCTL@ +REPLACE_ISATTY = @REPLACE_ISATTY@ +REPLACE_ISFINITE = @REPLACE_ISFINITE@ +REPLACE_ISINF = @REPLACE_ISINF@ +REPLACE_ISNAN = @REPLACE_ISNAN@ +REPLACE_ISWBLANK = @REPLACE_ISWBLANK@ +REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@ +REPLACE_ITOLD = @REPLACE_ITOLD@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LDEXPL = @REPLACE_LDEXPL@ +REPLACE_LINK = @REPLACE_LINK@ +REPLACE_LINKAT = @REPLACE_LINKAT@ +REPLACE_LOCALECONV = @REPLACE_LOCALECONV@ +REPLACE_LOCALTIME = @REPLACE_LOCALTIME@ +REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ +REPLACE_LOG = @REPLACE_LOG@ +REPLACE_LOG10 = @REPLACE_LOG10@ +REPLACE_LOG10F = @REPLACE_LOG10F@ +REPLACE_LOG10L = @REPLACE_LOG10L@ +REPLACE_LOG1P = @REPLACE_LOG1P@ +REPLACE_LOG1PF = @REPLACE_LOG1PF@ +REPLACE_LOG1PL = @REPLACE_LOG1PL@ +REPLACE_LOG2 = @REPLACE_LOG2@ +REPLACE_LOG2F = @REPLACE_LOG2F@ +REPLACE_LOG2L = @REPLACE_LOG2L@ +REPLACE_LOGB = @REPLACE_LOGB@ +REPLACE_LOGBF = @REPLACE_LOGBF@ +REPLACE_LOGBL = @REPLACE_LOGBL@ +REPLACE_LOGF = @REPLACE_LOGF@ +REPLACE_LOGL = @REPLACE_LOGL@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_LSTAT = @REPLACE_LSTAT@ +REPLACE_MALLOC = @REPLACE_MALLOC@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MBTOWC = @REPLACE_MBTOWC@ +REPLACE_MEMCHR = @REPLACE_MEMCHR@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_MKDIR = @REPLACE_MKDIR@ +REPLACE_MKFIFO = @REPLACE_MKFIFO@ +REPLACE_MKNOD = @REPLACE_MKNOD@ +REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ +REPLACE_MKTIME = @REPLACE_MKTIME@ +REPLACE_MODF = @REPLACE_MODF@ +REPLACE_MODFF = @REPLACE_MODFF@ +REPLACE_MODFL = @REPLACE_MODFL@ +REPLACE_NAN = @REPLACE_NAN@ +REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ +REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@ +REPLACE_NULL = @REPLACE_NULL@ +REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ +REPLACE_OPEN = @REPLACE_OPEN@ +REPLACE_OPENAT = @REPLACE_OPENAT@ +REPLACE_OPENDIR = @REPLACE_OPENDIR@ +REPLACE_PERROR = @REPLACE_PERROR@ +REPLACE_POPEN = @REPLACE_POPEN@ +REPLACE_PREAD = @REPLACE_PREAD@ +REPLACE_PRINTF = @REPLACE_PRINTF@ +REPLACE_PSELECT = @REPLACE_PSELECT@ +REPLACE_PTHREAD_SIGMASK = @REPLACE_PTHREAD_SIGMASK@ +REPLACE_PTSNAME = @REPLACE_PTSNAME@ +REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ +REPLACE_PUTENV = @REPLACE_PUTENV@ +REPLACE_PWRITE = @REPLACE_PWRITE@ +REPLACE_QSORT_R = @REPLACE_QSORT_R@ +REPLACE_RAISE = @REPLACE_RAISE@ +REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ +REPLACE_READ = @REPLACE_READ@ +REPLACE_READLINK = @REPLACE_READLINK@ +REPLACE_READLINKAT = @REPLACE_READLINKAT@ +REPLACE_REALLOC = @REPLACE_REALLOC@ +REPLACE_REALPATH = @REPLACE_REALPATH@ +REPLACE_REMAINDER = @REPLACE_REMAINDER@ +REPLACE_REMAINDERF = @REPLACE_REMAINDERF@ +REPLACE_REMAINDERL = @REPLACE_REMAINDERL@ +REPLACE_REMOVE = @REPLACE_REMOVE@ +REPLACE_RENAME = @REPLACE_RENAME@ +REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ +REPLACE_RMDIR = @REPLACE_RMDIR@ +REPLACE_ROUND = @REPLACE_ROUND@ +REPLACE_ROUNDF = @REPLACE_ROUNDF@ +REPLACE_ROUNDL = @REPLACE_ROUNDL@ +REPLACE_SELECT = @REPLACE_SELECT@ +REPLACE_SETENV = @REPLACE_SETENV@ +REPLACE_SETLOCALE = @REPLACE_SETLOCALE@ +REPLACE_SIGNBIT = @REPLACE_SIGNBIT@ +REPLACE_SIGNBIT_USING_GCC = @REPLACE_SIGNBIT_USING_GCC@ +REPLACE_SLEEP = @REPLACE_SLEEP@ +REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ +REPLACE_SPRINTF = @REPLACE_SPRINTF@ +REPLACE_SQRTL = @REPLACE_SQRTL@ +REPLACE_STAT = @REPLACE_STAT@ +REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ +REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ +REPLACE_STPNCPY = @REPLACE_STPNCPY@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ +REPLACE_STRNCAT = @REPLACE_STRNCAT@ +REPLACE_STRNDUP = @REPLACE_STRNDUP@ +REPLACE_STRNLEN = @REPLACE_STRNLEN@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_STRTOD = @REPLACE_STRTOD@ +REPLACE_STRTOIMAX = @REPLACE_STRTOIMAX@ +REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ +REPLACE_STRTOUMAX = @REPLACE_STRTOUMAX@ +REPLACE_STRUCT_LCONV = @REPLACE_STRUCT_LCONV@ +REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ +REPLACE_SYMLINK = @REPLACE_SYMLINK@ +REPLACE_SYMLINKAT = @REPLACE_SYMLINKAT@ +REPLACE_TIMEGM = @REPLACE_TIMEGM@ +REPLACE_TMPFILE = @REPLACE_TMPFILE@ +REPLACE_TOWLOWER = @REPLACE_TOWLOWER@ +REPLACE_TRUNC = @REPLACE_TRUNC@ +REPLACE_TRUNCF = @REPLACE_TRUNCF@ +REPLACE_TRUNCL = @REPLACE_TRUNCL@ +REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ +REPLACE_UNLINK = @REPLACE_UNLINK@ +REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ +REPLACE_UNSETENV = @REPLACE_UNSETENV@ +REPLACE_USLEEP = @REPLACE_USLEEP@ +REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ +REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ +REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ +REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ +REPLACE_VPRINTF = @REPLACE_VPRINTF@ +REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ +REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCTOMB = @REPLACE_WCTOMB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ +SED = @SED@ +SELINUX_CONTEXT_H = @SELINUX_CONTEXT_H@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +SORT = @SORT@ +SORT_SUPPORTS_Z = @SORT_SUPPORTS_Z@ +STDALIGN_H = @STDALIGN_H@ +STDARG_H = @STDARG_H@ +STDBOOL_H = @STDBOOL_H@ +STDDEF_H = @STDDEF_H@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +SYS_IOCTL_H_HAVE_WINSOCK2_H = @SYS_IOCTL_H_HAVE_WINSOCK2_H@ +SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ +SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ +TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ +TRUNC_LIBM = @TRUNC_LIBM@ +UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@ +UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@ +UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ +UNISTD_H_DEFINES_STRUCT_TIMESPEC = @UNISTD_H_DEFINES_STRUCT_TIMESPEC@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ +WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +YACC = @YACC@ +YFLAGS = @YFLAGS@ +YIELD_LIB = @YIELD_LIB@ +abs_aux_dir = @abs_aux_dir@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +gltests_WITNESS = @gltests_WITNESS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +lispdir = @lispdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = dejagnu +LOCATE = ../locate +UPDATEDB = ../updatedb +LOCATEFLAGS = +UPDATEDBFLAGS = +DEJATOOL = locate +EXTRA_DIST_EXP = \ +config/unix.exp \ +locate.gnu/bigendian.exp \ +locate.gnu/littleendian.exp \ +locate.gnu/ignore_case1.exp \ +locate.gnu/ignore_case2.exp \ +locate.gnu/ignore_case3.exp \ +locate.gnu/bigprefix1.exp \ +locate.gnu/regex1.exp \ +locate.gnu/exists1.exp \ +locate.gnu/exists2.exp \ +locate.gnu/exists3.exp \ +locate.gnu/slocate.exp \ +locate.gnu/notexists1.exp \ +locate.gnu/notexists2.exp \ +locate.gnu/notexists3.exp \ +locate.gnu/old_prefix.exp \ +locate.gnu/oldformat.exp \ +locate.gnu/space1st.exp \ +locate.gnu/sv-bug-14535.exp \ +locate.gnu/exceedshort.exp + +EXTRA_DIST_XI = \ +locate.gnu/locateddb.old.powerpc.xi \ +locate.gnu/locateddb.old.x86.xi + +EXTRA_DIST_XO = \ +locate.gnu/bigendian.xo \ +locate.gnu/littleendian.xo \ +locate.gnu/ignore_case1.xo \ +locate.gnu/ignore_case2.xo \ +locate.gnu/ignore_case3.xo \ +locate.gnu/exists1.xo \ +locate.gnu/exists2.xo \ +locate.gnu/exists3.xo \ +locate.gnu/slocate.xo \ +locate.gnu/notexists1.xo \ +locate.gnu/notexists2.xo \ +locate.gnu/notexists3.xo \ +locate.gnu/old_prefix.xo \ +locate.gnu/oldformat.xo + +EXTRA_DIST = $(EXTRA_DIST_EXP) $(EXTRA_DIST_XO) $(EXTRA_DIST_XI) + +# DIST_SUBDIRS = config locate.gnu +CLEANFILES = *.log *.sum site.exp site.bak +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits locate/testsuite/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnits locate/testsuite/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +check-DEJAGNU: site.exp + srcdir='$(srcdir)'; export srcdir; \ + EXPECT=$(EXPECT); export EXPECT; \ + if $(SHELL) -c "$(RUNTEST) --version" > /dev/null 2>&1; then \ + exit_status=0; l='$(DEJATOOL)'; for tool in $$l; do \ + if $(RUNTEST) $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) $(RUNTESTFLAGS); \ + then :; else exit_status=1; fi; \ + done; \ + else echo "WARNING: could not find '$(RUNTEST)'" 1>&2; :;\ + fi; \ + exit $$exit_status +site.exp: Makefile $(EXTRA_DEJAGNU_SITE_CONFIG) + @echo 'Making a new site.exp file ...' + @echo '## these variables are automatically generated by make ##' >site.tmp + @echo '# Do not edit here. If you wish to override these values' >>site.tmp + @echo '# edit the last section' >>site.tmp + @echo 'set srcdir "$(srcdir)"' >>site.tmp + @echo "set objdir `pwd`" >>site.tmp + @echo 'set build_alias "$(build_alias)"' >>site.tmp + @echo 'set build_triplet $(build_triplet)' >>site.tmp + @echo 'set host_alias "$(host_alias)"' >>site.tmp + @echo 'set host_triplet $(host_triplet)' >>site.tmp + @list='$(EXTRA_DEJAGNU_SITE_CONFIG)'; for f in $$list; do \ + echo "## Begin content included from file $$f. Do not modify. ##" \ + && cat `test -f "$$f" || echo '$(srcdir)/'`$$f \ + && echo "## End content included from file $$f. ##" \ + || exit 1; \ + done >> site.tmp + @echo "## End of auto-generated content; you can edit from here. ##" >> site.tmp + @if test -f site.exp; then \ + sed -e '1,/^## End of auto-generated content.*##/d' site.exp >> site.tmp; \ + fi + @-rm -f site.bak + @test ! -f site.exp || mv site.exp site.bak + @mv site.tmp site.exp + +distclean-DEJAGNU: + -rm -f site.exp site.bak + -l='$(DEJATOOL)'; for tool in $$l; do \ + rm -f $$tool.sum $$tool.log; \ + done + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-DEJAGNU distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: check-am install-am install-strip + +.PHONY: all all-am check check-DEJAGNU check-am clean clean-generic \ + cscopelist-am ctags-am distclean distclean-DEJAGNU \ + distclean-generic distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic pdf pdf-am ps ps-am tags-am uninstall \ + uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/locate/testsuite/config/unix.exp b/locate/testsuite/config/unix.exp new file mode 100644 index 0000000..2c0f015 --- /dev/null +++ b/locate/testsuite/config/unix.exp @@ -0,0 +1,341 @@ +# -*- TCL -*- +# Test-specific TCL procedures required by DejaGNU. +# Copyright (C) 1994, 2003, 2004, 2005, 2006, 2007, 2010, 2011 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 <http://www.gnu.org/licenses/>. + + +# Modified by David MacKenzie <djm@gnu.org> from the gcc files +# written by Rob Savoye <rob@cygnus.com>. + + +# use the local version of find for updatedb +# +# We normalise (normalize for those over the water) pathnames +# because the updatedb shell script uses "cd", which means that +# any relative paths no longer point where we thought they did. +# Because "file normalize" requires tcl 8.4, we have a plan B +# for normalising the name of a directory, but it is slower. + +proc normalize_dir { dir } { + if [ catch { file normalize $dir } result ] then { + return [ exec /bin/sh -c "cd $dir && /bin/pwd" ] + } else { + return $result; + } +} + +set fulldir [ normalize_dir "../../find" ] +set env{find} "$fulldir/find" + +# use the local help commands for updatedb +set env(LIBEXECDIR) [ normalize_dir .. ] +# use our local version of find, too. + +# do not ignore any file systems for this test +set env(PRUNEFS) "" +global UPDATEDB +global FRCODE +global LOCATE +global FIND + +# look for binaries +set UPDATEDB [findfile $base_dir/../updatedb $base_dir/../updatedb [transform updatedb]] +set FRCODE [findfile $base_dir/../frcode $base_dir/../frcode [transform frcode ]] +set LOCATE [findfile $base_dir/../locate $base_dir/../locate [transform locate ]] +set FIND [findfile $base_dir/../../find/find $base_dir/../../find/find [transform find ]] +verbose "UPDATEDB is $UPDATEDB" 1 +verbose "FRCODE is $FRCODE" 1 +verbose "LOCATE is $LOCATE" 1 +verbose "FIND is $FIND" 1 + + +foreach exe "$UPDATEDB $FRCODE $LOCATE $FIND" { + if ![ string match "/*" $exe ] { + error "Failed to find a binary to test for $exe" + } +} + +global UPDATEDBFLAGS +if ![info exists UPDATEDBFLAGS] then { + set UPDATEDBFLAGS "" +} + +set env(find) "$FIND" + +global LOCATEFLAGS +if ![info exists LOCATEFLAGS] then { + set LOCATEFLAGS "" +} + +# Called by runtest. +# Extract and print the version number of locate. +proc locate_version {} { + global UPDATEDB + global UPDATEDBFLAGS + global LOCATE + global LOCATEFLAGS + + if {[which $LOCATE] != 0} then { + set tmp [ eval exec $LOCATE $LOCATEFLAGS --version </dev/null | sed 1q] + clone_output $tmp + } else { + warning "$LOCATE, program does not exist" + } +} + + +# Run locate and leave the output in $comp_output. +# Called by individual test scripts. +proc locate_textonly { passfail id intext locateoptions outtext } { + global LOCATE + global FRCODE + + set fail_good [string match "f*" $passfail] + + set scriptname [uplevel {info script}] + set testbase [file rootname $scriptname] + set testname [file tail $testbase] + set listfile "updatedb-paths.txt" + set dbfile "locate.db" + set outfile "locate.out" + + # Generate the "frcode" input. + catch { file delete -force $listfle } + set f [open $listfile w] + puts $f "$intext" + close $f + + # Run frcode + exec $FRCODE < $listfile > $dbfile + + # Now run locate. + set locatecmd "$LOCATE -d $dbfile $locateoptions" + send_log "Running $locatecmd \n" + catch "exec $locatecmd > $outfile" + + set result "" + set f [open "$outfile" r] + while { [ gets $f line ] >= 0 } { + # send_log "Output fragment is $line\n" + append result "$line\n" + } + close $f + + # send_log "Output is $result\n" + + if {[string equal $result $outtext]} { + if $fail_good then { + fail "$testname-$id" + } else { + pass "$testname-$id" + } + } else { + send_log "Output mismatch.\n" + send_log "Expected: $outtext\n" + send_log "Got : $result\n" + fail "$testname-$id" + } +} + + +# Do a test in which we expect an input text file to be preserved unchanged. +proc locate_roundtrip { id intext } { + if ![regexp "\n$" $intext] { + # We like the items to be terminated by newlines. + error "The input text is not terminated by newline" + } + + locate_textonly p $id $intext "-r ." $intext +} + + + +# Run locate and leave the output in $comp_output. +# Called by individual test scripts. +proc locate_start { passfail updatedb_options locate_options + {updatedb_infile ""} {locate_infile ""} + { between_hook "" } + } { + global verbose + global LOCATE + global LOCATEFLAGS + global UPDATEDB + global UPDATEDBFLAGS + global comp_output + + set fail_good [string match "f*" $passfail] + + set scriptname [uplevel {info script}] + set testbase [file rootname $scriptname] + set testname [file tail $testbase] + + set outfile "$testbase.xo" + if {"$updatedb_infile" != ""} then { + set updatedb_infile "[file dirname [file dirname $testbase]]/inputs/$updatedb_infile" + } else { + set updatedb_infile /dev/null + } + if {"$locate_infile" != ""} then { + set locate_infile "[file dirname [file dirname $testbase]]/inputs/$locate_infile" + } else { + set locate_infile /dev/null + } + + catch "exec rm -f locate.out" + + set updatedb_cmd "$UPDATEDB $UPDATEDBFLAGS $updatedb_options < $updatedb_infile" + send_log "$updatedb_cmd\n" + if $verbose>1 then { + send_user "Spawning \"$updatedb_cmd\"\n" + } + catch "exec $updatedb_cmd" comp_output + + if {$comp_output != ""} then { + send_log "$comp_output\n" + if $verbose>1 then { + send_user "$comp_output\n" + } + # If fail_good is set, that refers to the exit + # status of locate, not updatedb... + fail "$testname: updatedb is supposed to be silent, $comp_output" + return + } else { + send_log "updatedb: OK.\n" + } + + + eval $between_hook + + set locate_cmd "$LOCATE $LOCATEFLAGS $locate_options < $locate_infile > locate.out" + send_log "$locate_cmd\n" + if $verbose>1 then { + send_user "Spawning \"$locate_cmd\"\n" + } + + catch "exec $locate_cmd" comp_output + if {$comp_output != ""} then { + send_log "$comp_output\n" + if $verbose>1 then { + send_user "$comp_output\n" + } + if $fail_good then { + pass "$testname" + } else { + fail "$testname: locate failed, $comp_output" + } + return + } + + if [file exists $outfile] then { + set cmp_cmd "cmp locate.out $outfile" + send_log "$cmp_cmd\n" + catch "exec $cmp_cmd" cmpout + if {$cmpout != ""} then { + #catch "exec diff locate.out $outfile" diffout + #puts $diffout + fail "$testname, $cmpout" + return + } + } else { + if {[file size locate.out] != 0} then { + fail "$testname, output should be empty" + return + } + } + pass "$testname" + catch "exec rm -rf tmp" +} + + + +proc locate_from_db { passfail locate_options locate_database } { + global LOCATE + global LOCATEFLAGS + global verbose + + set fail_good [string match "f*" $passfail] + set scriptname [uplevel {info script}] + set testbase [file rootname $scriptname] + set testname [file tail $testbase] + set testdir [file dirname $scriptname] + + set dbpath "$testdir/$locate_database" + set outfile "$testbase.xo" + + set locate_cmd "$LOCATE $LOCATEFLAGS -d $dbpath $locate_options > locate.out" + send_log "$locate_cmd\n" + if $verbose>1 then { + send_user "Spawning \"$locate_cmd\"\n" + } + + catch "exec $locate_cmd 2>/dev/null" comp_output + if {$comp_output != ""} then { + send_log "$comp_output\n" + if $verbose>1 then { + send_user "$comp_output\n" + } + if $fail_good then { + # XXX: in general may want to compare output, too. + pass "$testname" + } else { + fail "$testname: locate unfortunately failed, $comp_output" + } + return + } + + + if [file exists $outfile] then { + set cmp_cmd "cmp locate.out $outfile" + send_log "$cmp_cmd\n" + catch "exec $cmp_cmd" cmpout + if {$cmpout != ""} then { + #catch "exec diff locate.out $outfile" diffout + #puts $diffout + fail "$testname, $cmpout" + return + } + } else { + if {[file size locate.out] != 0} then { + fail "$testname, output should be empty" + return + } + } + pass "$testname" +} + + + + + +# Called by runtest. +# Clean up (remove temporary files) before runtest exits. +proc locate_exit {} { + catch "exec rm -f locate.out updatedb-paths.txt locate.db" +} + +# Called by runtest. +# Extract and print the version number of updatedb. +proc updatedb_version {} { + global UPDATEDB + global UPDATEDBFLAGS + + if {[which $UPDATEDB] != 0} then { + set tmp [eval exec $UPDATEDB $UPDATEDBFLAGS --version </dev/null|sed 1q] + clone_output $tmp + } else { + warning "$UPDATEDB, program does not exist" + } +} diff --git a/locate/testsuite/locate.gnu/bigendian.exp b/locate/testsuite/locate.gnu/bigendian.exp new file mode 100644 index 0000000..32f711d --- /dev/null +++ b/locate/testsuite/locate.gnu/bigendian.exp @@ -0,0 +1,2 @@ +# Make sure we can read a big-endian old-format database. +locate_from_db p "-r ." "locateddb.old.powerpc.xi" diff --git a/locate/testsuite/locate.gnu/bigendian.xo b/locate/testsuite/locate.gnu/bigendian.xo new file mode 100644 index 0000000..484cd8a --- /dev/null +++ b/locate/testsuite/locate.gnu/bigendian.xo @@ -0,0 +1,8 @@ +/tmp/findtest +/tmp/findtest/tmp +/tmp/findtest/tmp/subdir +/tmp/findtest/tmp/subdir/foo +/tmp/findtest/tmp/subdir/________________________________________________________________________________fred1 +/tmp/findtest/tmp/subdir/________________________________________________________________________________fred2 +/tmp/findtest/tmp/subdir/________________________________________________________________________________fred3 +/tmp/findtest/tmp/subdir/________________________________________________________________________________fred4 diff --git a/locate/testsuite/locate.gnu/bigprefix1.exp b/locate/testsuite/locate.gnu/bigprefix1.exp new file mode 100644 index 0000000..f776d74 --- /dev/null +++ b/locate/testsuite/locate.gnu/bigprefix1.exp @@ -0,0 +1,12 @@ + +locate_roundtrip 0 "/foo\n" + +set text "________________________________________________________________________________________________________________________________________________________________________________________________________abcd +________________________________________________________________________________________________________________________________________________________________________________________________________abcx +________________________________________________________________________________________________________________________________________________________________________________________________________abcd +abcd +________________________________________________________________________________________________________________________________________________________________________________________________________abcdF +________________________________________________________________________________________________________________________________________________________________________________________________________abcF\n" + + +locate_roundtrip 1 $text diff --git a/locate/testsuite/locate.gnu/exceedshort.exp b/locate/testsuite/locate.gnu/exceedshort.exp new file mode 100644 index 0000000..5a14e8e --- /dev/null +++ b/locate/testsuite/locate.gnu/exceedshort.exp @@ -0,0 +1,4 @@ +# check frcode correctly encodes paths that have more than 2^16 characters in common +set fmt "%0*d\n%0*d\n" +set match [format $fmt 32768 0 32769 0] +locate_textonly p 0 "$match" "-i 00" "$match" diff --git a/locate/testsuite/locate.gnu/exists1.exp b/locate/testsuite/locate.gnu/exists1.exp new file mode 100644 index 0000000..a3185c4 --- /dev/null +++ b/locate/testsuite/locate.gnu/exists1.exp @@ -0,0 +1,7 @@ +# tests for -e: make sure we print a file if it exists. +set tmp "tmp" +exec rm -rf $tmp +exec mkdir $tmp +exec mkdir $tmp/subdir +exec touch $tmp/subdir/fred +locate_start p "--changecwd=. --output=$tmp/locatedb --localpaths=tmp/subdir/" "--database=$tmp/locatedb -e fred" {} diff --git a/locate/testsuite/locate.gnu/exists1.xo b/locate/testsuite/locate.gnu/exists1.xo new file mode 100644 index 0000000..fdda926 --- /dev/null +++ b/locate/testsuite/locate.gnu/exists1.xo @@ -0,0 +1 @@ +tmp/subdir/fred diff --git a/locate/testsuite/locate.gnu/exists2.exp b/locate/testsuite/locate.gnu/exists2.exp new file mode 100644 index 0000000..a775543 --- /dev/null +++ b/locate/testsuite/locate.gnu/exists2.exp @@ -0,0 +1,8 @@ +# tests for -e: make sure we do not print a file if it does not exist. +set tmp "tmp" +exec rm -rf $tmp +exec mkdir $tmp +exec mkdir $tmp/subdir +exec touch $tmp/subdir/fred1 +exec touch $tmp/subdir/fred2 +locate_start p "--changecwd=. --output=$tmp/locatedb --localpaths=tmp/subdir/" "--database=$tmp/locatedb -e fred" {} {} { exec rm "tmp/subdir/fred2" } diff --git a/locate/testsuite/locate.gnu/exists2.xo b/locate/testsuite/locate.gnu/exists2.xo new file mode 100644 index 0000000..95fec6e --- /dev/null +++ b/locate/testsuite/locate.gnu/exists2.xo @@ -0,0 +1 @@ +tmp/subdir/fred1 diff --git a/locate/testsuite/locate.gnu/exists3.exp b/locate/testsuite/locate.gnu/exists3.exp new file mode 100644 index 0000000..89c27a5 --- /dev/null +++ b/locate/testsuite/locate.gnu/exists3.exp @@ -0,0 +1,8 @@ +# tests for -e: make sure we do not print a file if it does not exist. +set tmp "tmp" +exec rm -rf $tmp +exec mkdir $tmp +exec mkdir $tmp/subdir +exec touch $tmp/subdir/fred1 +exec touch $tmp/subdir/fred2 +locate_start p "--changecwd=. --output=$tmp/locatedb --localpaths=tmp/subdir/" "--database=$tmp/locatedb -e fred" {} {} { exec rm "tmp/subdir/fred1" } diff --git a/locate/testsuite/locate.gnu/exists3.xo b/locate/testsuite/locate.gnu/exists3.xo new file mode 100644 index 0000000..091224f --- /dev/null +++ b/locate/testsuite/locate.gnu/exists3.xo @@ -0,0 +1 @@ +tmp/subdir/fred2 diff --git a/locate/testsuite/locate.gnu/ignore_case1.exp b/locate/testsuite/locate.gnu/ignore_case1.exp new file mode 100644 index 0000000..ee7abb2 --- /dev/null +++ b/locate/testsuite/locate.gnu/ignore_case1.exp @@ -0,0 +1,7 @@ +# tests to determine if "-i" causes the match to ignore the case +set tmp "tmp" +exec rm -rf $tmp +exec mkdir $tmp +exec mkdir $tmp/subdir +exec touch $tmp/subdir/fred +locate_start p "--changecwd=. --output=$tmp/locatedb --localpaths=tmp/subdir/" "--database=$tmp/locatedb -i FRed" {} diff --git a/locate/testsuite/locate.gnu/ignore_case1.xo b/locate/testsuite/locate.gnu/ignore_case1.xo new file mode 100644 index 0000000..fdda926 --- /dev/null +++ b/locate/testsuite/locate.gnu/ignore_case1.xo @@ -0,0 +1 @@ +tmp/subdir/fred diff --git a/locate/testsuite/locate.gnu/ignore_case2.exp b/locate/testsuite/locate.gnu/ignore_case2.exp new file mode 100644 index 0000000..1fd0628 --- /dev/null +++ b/locate/testsuite/locate.gnu/ignore_case2.exp @@ -0,0 +1,7 @@ +# tests to determine if "-i" causes the match to ignore the case +# make sure that match fails when "-i" is skipped +exec rm -rf tmp +exec mkdir tmp +exec mkdir tmp/subdir +exec touch tmp/subdir/fred +locate_start f {--changecwd=. --output=tmp/locatedb --localpaths=tmp/subdir/} {--database=tmp/locatedb FRed} {} diff --git a/locate/testsuite/locate.gnu/ignore_case2.xo b/locate/testsuite/locate.gnu/ignore_case2.xo new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/locate/testsuite/locate.gnu/ignore_case2.xo diff --git a/locate/testsuite/locate.gnu/ignore_case3.exp b/locate/testsuite/locate.gnu/ignore_case3.exp new file mode 100644 index 0000000..b4c0a9e --- /dev/null +++ b/locate/testsuite/locate.gnu/ignore_case3.exp @@ -0,0 +1,10 @@ +# tests to determine if "-i" causes the match to ignore the case +set tmp "tmp" +exec rm -rf $tmp +exec mkdir $tmp +exec mkdir $tmp/subdir +exec touch $tmp/subdir/fred +locate_start p {--changecwd=. --output=tmp/locatedb --localpaths=tmp/subdir/} {--database=tmp/locatedb fred} {} +#updatedb --output=locatedb +#locate --database=locatedb FRed +#locate --database=locatedb -i FRed diff --git a/locate/testsuite/locate.gnu/ignore_case3.xo b/locate/testsuite/locate.gnu/ignore_case3.xo new file mode 100644 index 0000000..fdda926 --- /dev/null +++ b/locate/testsuite/locate.gnu/ignore_case3.xo @@ -0,0 +1 @@ +tmp/subdir/fred diff --git a/locate/testsuite/locate.gnu/littleendian.exp b/locate/testsuite/locate.gnu/littleendian.exp new file mode 100644 index 0000000..9b73154 --- /dev/null +++ b/locate/testsuite/locate.gnu/littleendian.exp @@ -0,0 +1,2 @@ +# Make sure we can read a little-endian old-format database. +locate_from_db p "-r ." "locateddb.old.x86.xi" diff --git a/locate/testsuite/locate.gnu/littleendian.xo b/locate/testsuite/locate.gnu/littleendian.xo new file mode 100644 index 0000000..484cd8a --- /dev/null +++ b/locate/testsuite/locate.gnu/littleendian.xo @@ -0,0 +1,8 @@ +/tmp/findtest +/tmp/findtest/tmp +/tmp/findtest/tmp/subdir +/tmp/findtest/tmp/subdir/foo +/tmp/findtest/tmp/subdir/________________________________________________________________________________fred1 +/tmp/findtest/tmp/subdir/________________________________________________________________________________fred2 +/tmp/findtest/tmp/subdir/________________________________________________________________________________fred3 +/tmp/findtest/tmp/subdir/________________________________________________________________________________fred4 diff --git a/locate/testsuite/locate.gnu/locateddb.old.powerpc.xi b/locate/testsuite/locate.gnu/locateddb.old.powerpc.xi Binary files differnew file mode 100644 index 0000000..88988cb --- /dev/null +++ b/locate/testsuite/locate.gnu/locateddb.old.powerpc.xi diff --git a/locate/testsuite/locate.gnu/locateddb.old.x86.xi b/locate/testsuite/locate.gnu/locateddb.old.x86.xi Binary files differnew file mode 100644 index 0000000..943e902 --- /dev/null +++ b/locate/testsuite/locate.gnu/locateddb.old.x86.xi diff --git a/locate/testsuite/locate.gnu/notexists1.exp b/locate/testsuite/locate.gnu/notexists1.exp new file mode 100644 index 0000000..0b07a31 --- /dev/null +++ b/locate/testsuite/locate.gnu/notexists1.exp @@ -0,0 +1,9 @@ +# tests for -E: make sure we don't print a file if it exists. +# Since there are no matches in this case, we expect a nonzero +# return value as well. +set tmp "tmp" +exec rm -rf $tmp +exec mkdir $tmp +exec mkdir $tmp/subdir +exec touch $tmp/subdir/fred +locate_start f "--changecwd=. --output=$tmp/locatedb --localpaths=tmp/subdir/" "--database=$tmp/locatedb -E fred" {} diff --git a/locate/testsuite/locate.gnu/notexists1.xo b/locate/testsuite/locate.gnu/notexists1.xo new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/locate/testsuite/locate.gnu/notexists1.xo diff --git a/locate/testsuite/locate.gnu/notexists2.exp b/locate/testsuite/locate.gnu/notexists2.exp new file mode 100644 index 0000000..1ff42f6 --- /dev/null +++ b/locate/testsuite/locate.gnu/notexists2.exp @@ -0,0 +1,8 @@ +# tests for -E: make sure we do print a file if it does not exist. +set tmp "tmp" +exec rm -rf $tmp +exec mkdir $tmp +exec mkdir $tmp/subdir +exec touch $tmp/subdir/fred1 +exec touch $tmp/subdir/fred2 +locate_start p "--changecwd=. --output=$tmp/locatedb --localpaths=tmp/subdir/" "--database=$tmp/locatedb -E fred" {} {} { exec rm "tmp/subdir/fred2" } diff --git a/locate/testsuite/locate.gnu/notexists2.xo b/locate/testsuite/locate.gnu/notexists2.xo new file mode 100644 index 0000000..091224f --- /dev/null +++ b/locate/testsuite/locate.gnu/notexists2.xo @@ -0,0 +1 @@ +tmp/subdir/fred2 diff --git a/locate/testsuite/locate.gnu/notexists3.exp b/locate/testsuite/locate.gnu/notexists3.exp new file mode 100644 index 0000000..06652d1 --- /dev/null +++ b/locate/testsuite/locate.gnu/notexists3.exp @@ -0,0 +1,8 @@ +# tests for -E: make sure we do not print a file if it does not exist. +set tmp "tmp" +exec rm -rf $tmp +exec mkdir $tmp +exec mkdir $tmp/subdir +exec touch $tmp/subdir/fred1 +exec touch $tmp/subdir/fred2 +locate_start p "--changecwd=. --output=$tmp/locatedb --localpaths=tmp/subdir/" "--database=$tmp/locatedb -E fred" {} {} { exec rm "tmp/subdir/fred1" } diff --git a/locate/testsuite/locate.gnu/notexists3.xo b/locate/testsuite/locate.gnu/notexists3.xo new file mode 100644 index 0000000..95fec6e --- /dev/null +++ b/locate/testsuite/locate.gnu/notexists3.xo @@ -0,0 +1 @@ +tmp/subdir/fred1 diff --git a/locate/testsuite/locate.gnu/old_prefix.exp b/locate/testsuite/locate.gnu/old_prefix.exp new file mode 100644 index 0000000..e21cc61 --- /dev/null +++ b/locate/testsuite/locate.gnu/old_prefix.exp @@ -0,0 +1,13 @@ +set tmp "tmp" +exec rm -rf $tmp +exec mkdir $tmp +exec mkdir $tmp/subdir +exec touch $tmp/subdir/________________________________________________________________________________fred1 +exec touch $tmp/subdir/________________________________________________________________________________fred2 +exec touch $tmp/subdir/________________________________________________________________________________fred3 +exec touch $tmp/subdir/________________________________________________________________________________fred4 + +locate_start p "--changecwd=. --output=$tmp/locatedb --old-format --localpaths=tmp/subdir 2>/dev/null" "--database=$tmp/locatedb tmp" {} + + +exec rm -rf $tmp diff --git a/locate/testsuite/locate.gnu/old_prefix.xo b/locate/testsuite/locate.gnu/old_prefix.xo new file mode 100644 index 0000000..909b8e7 --- /dev/null +++ b/locate/testsuite/locate.gnu/old_prefix.xo @@ -0,0 +1,5 @@ +tmp/subdir +tmp/subdir/________________________________________________________________________________fred1 +tmp/subdir/________________________________________________________________________________fred2 +tmp/subdir/________________________________________________________________________________fred3 +tmp/subdir/________________________________________________________________________________fred4 diff --git a/locate/testsuite/locate.gnu/oldformat.exp b/locate/testsuite/locate.gnu/oldformat.exp new file mode 100644 index 0000000..a85c8b9 --- /dev/null +++ b/locate/testsuite/locate.gnu/oldformat.exp @@ -0,0 +1,12 @@ +# A basic test for the old database format. We need this test because (among +# other reasons) the updatedb script only uses our mktemp replacement when +# it needs to run bigram/code. +set tmp "tmp" +exec rm -rf $tmp +exec mkdir $tmp +exec mkdir $tmp/subdir +exec touch $tmp/subdir/fred +# Redirect stderr to /dev/null to throw away the warning message about using +# the old format, because otherwise the presence of the error message would +# cause locate_start to signal a test case failure. +locate_start p "--changecwd=. --output=$tmp/locatedb --old-format --localpaths=tmp/subdir/ 2>/dev/null" "--database=$tmp/locatedb -e fred" {} diff --git a/locate/testsuite/locate.gnu/oldformat.xo b/locate/testsuite/locate.gnu/oldformat.xo new file mode 100644 index 0000000..fdda926 --- /dev/null +++ b/locate/testsuite/locate.gnu/oldformat.xo @@ -0,0 +1 @@ +tmp/subdir/fred diff --git a/locate/testsuite/locate.gnu/regex1.exp b/locate/testsuite/locate.gnu/regex1.exp new file mode 100644 index 0000000..8989210 --- /dev/null +++ b/locate/testsuite/locate.gnu/regex1.exp @@ -0,0 +1,9 @@ +# regular expression tests +locate_textonly p 0 "/\n" "?" "/\n" +locate_textonly p 1 "/\n" "-r ." "/\n" +locate_textonly p 2 "/" "-r X" "" +locate_textonly p 3 "/\n/bin" "-r n" "/bin\n" +locate_textonly p 4 "/\n/bin" "-i -r BIN" "/bin\n" +locate_textonly p 5 "/\n/bin\n/binary" "-r bin\$" "/bin\n" +locate_textonly p 6 "/\n/bin\n/binary" {-r ^\[^/\]} "" +locate_textonly p 7 "/\n/bin\n/binary" {-r ^\[^X\]} "/\n/bin\n/binary\n" diff --git a/locate/testsuite/locate.gnu/slocate.exp b/locate/testsuite/locate.gnu/slocate.exp new file mode 100644 index 0000000..0d7f0fc --- /dev/null +++ b/locate/testsuite/locate.gnu/slocate.exp @@ -0,0 +1,8 @@ +# tests an slocate database, string1 (tmp/subdia) is not prefix of string2 (tmp/subdir). +set tmp "tmp" +exec rm -rf $tmp +exec mkdir $tmp +exec touch $tmp/subdia +exec mkdir $tmp/subdir +exec touch $tmp/subdir/fred +locate_start p "--changecwd=. --output=$tmp/locatedb --dbformat=slocate --localpaths=$tmp/subdi*" "--database=$tmp/locatedb -e subdi 2>/dev/null" {} diff --git a/locate/testsuite/locate.gnu/slocate.xo b/locate/testsuite/locate.gnu/slocate.xo new file mode 100644 index 0000000..ad0208c --- /dev/null +++ b/locate/testsuite/locate.gnu/slocate.xo @@ -0,0 +1,3 @@ +tmp/subdia +tmp/subdir +tmp/subdir/fred diff --git a/locate/testsuite/locate.gnu/space1st.exp b/locate/testsuite/locate.gnu/space1st.exp new file mode 100644 index 0000000..dc070da --- /dev/null +++ b/locate/testsuite/locate.gnu/space1st.exp @@ -0,0 +1,2 @@ +# check frcode handles space as first character +locate_textonly p 0 " fred\n" "-i fred" " fred\n" diff --git a/locate/testsuite/locate.gnu/sv-bug-14535.exp b/locate/testsuite/locate.gnu/sv-bug-14535.exp new file mode 100644 index 0000000..3f3056c --- /dev/null +++ b/locate/testsuite/locate.gnu/sv-bug-14535.exp @@ -0,0 +1,60 @@ +# NOTE: this file contains UTF8 characters. + + +proc selectlocale { pattern } { + if [ catch { set locale_list [ split [ eval exec locale -a ] "\n" ] } ] { + # Failed to figure out which tests are supported. + return "" + } + foreach locale $locale_list { + if { [string match $pattern $locale] } { + global env + set env(LC_ALL) $locale + return $locale + } + } + return "" +} + +proc select_any_locale { patternlist } { + foreach pattern $patternlist { + set locale [ selectlocale $pattern ] + if { [ string length $locale ] } { + return $locale + } + } + return "" +} + +# localeoptions contains a list (in order of preference) of the +# locales in which we want to perform part of this test. If we can +# use any locale matching any of the patterns, we run an extra four +# tests. Otherwise, we skip them and issue a warning message. +set localeoptions { + "hu_HU.UTF-8" + "hu_*.UTF-8" + "en_IE.utf8" + "en_GB.utf8" + "en_US.utf8" + "en_*.utf8" + "*.utf8" +} + + + +# Do the regular case-fold tests which only need ASCII support. +locate_textonly p a "teste\n" "-i teste" "teste\n" +locate_textonly p b "testE\n" "-i testE" "testE\n" +locate_textonly p c "testE\n" "-i teste" "testE\n" +locate_textonly p d "teste\n" "-i testE" "teste\n" + +set locale [ select_any_locale $localeoptions ] +if { [ string length $locale ] } { + # We have a UTF-8 locale. Do the extra tests. + locate_textonly p 0 "testé\n" "-i testé" "testé\n" + locate_textonly p 1 "testÉ\n" "-i testé" "testÉ\n" + locate_textonly p 2 "testé\n" "-i testÉ" "testé\n" + locate_textonly p 3 "testÉ\n" "-i testÉ" "testÉ\n" +} else { + warning "Four tests have been skipped because I cannot find a UTF-8 locale configured on your system" +} diff --git a/locate/updatedb.1 b/locate/updatedb.1 new file mode 100644 index 0000000..ebba3da --- /dev/null +++ b/locate/updatedb.1 @@ -0,0 +1,154 @@ +.TH UPDATEDB 1 \" -*- nroff -*- +.SH NAME +updatedb \- update a file name database +.SH SYNOPSIS +.B updatedb [\fIoptions\fP] +.SH DESCRIPTION +This manual page +documents the GNU version of +.BR updatedb , +which updates file name databases used by GNU +.BR locate . +The file name databases contain lists of files that were in +particular directory trees when the databases were last updated. +The file name of the default database is determined when \fBlocate\fP +and \fBupdatedb\fP are configured and installed. The frequency with +which the databases are updated and the directories for which they +contain entries depend on how often \fBupdatedb\fP is run, and with +which arguments. +.P +In networked environments, it often makes sense to build a database at +the root of each filesystem, containing the entries for that filesystem. +.B updatedb +is then run for each filesystem on the fileserver where that +filesystem is on a local disk, to prevent thrashing the network. +Users can select which databases \fBlocate\fP searches using an +environment variable or command line option; see \fBlocate\fP(1). +Databases cannot be concatenated together. +.P +The file name database format changed starting with GNU +.B find +and +.B locate +version 4.0 to allow machines with different byte orderings to share +the databases. The new GNU +.B locate +can read both the old and new database formats. +However, old versions of +.B locate +and +.B find +produce incorrect results if given a new-format database. +.SH OPTIONS +.TP +.B \-\-findoptions='\fI\-option1 \-option2...\fP' +Global options to pass on to \fBfind\fP. +The environment variable \fBFINDOPTIONS\fP also sets this value. +Default is none. +.TP +.B \-\-localpaths='\fIpath1 path2...\fP' +Non-network directories to put in the database. +Default is /. +.TP +.B \-\-netpaths='\fIpath1 path2...\fP' +Network (NFS, AFS, RFS, etc.) directories to put in the database. +The environment variable \fBNETPATHS\fP also sets this value. +Default is none. +.TP +.B \-\-prunepaths='\fIpath1 path2...\fP' +Directories to not put in the database, which would otherwise be. +Remove any trailing slashes from the path names, otherwise +.B updatedb +won\'t recognise the paths you want to omit (because it uses them as +regular expression patterns). +The environment variable \fBPRUNEPATHS\fP also sets this value. +Default is /tmp /usr/tmp /var/tmp /afs. +.TP +.B \-\-prunefs='\fIpath...\fP' +File systems to not put in the database, which would otherwise be. +Note that files are pruned when a file system is reached; +any file system mounted under an undesired file system will be +ignored. +The environment variable +\fBPRUNEFS\fP also sets this value. +Default is \fInfs NFS proc\fP. +.TP +.B \-\-output=\fIdbfile\fP +The database file to build. +Default is system-dependent. In Debian GNU/Linux, the default +is /var/cache/locate/locatedb. +.TP +.B \-\-localuser=\fIuser\fP +The user to search non-network directories as, using \fBsu\fP(1). +Default is to search the non-network directories as the current user. +You can also use the environment variable \fBLOCALUSER\fP to set this user. +.TP +.B \-\-netuser=\fIuser\fP +The user to search network directories as, using \fBsu\fP(1). +Default is \fBdaemon\fP. +You can also use the environment variable \fBNETUSER\fP to set this user. +.TP +.B \-\-old\-format +Create the database in the old format. This is a synonym for +.BR \-\-dbformat=old . +.TP +.B \-\-dbformat=F +Create the database in format F. The default format is called LOCATE02. +F can be +.B old +to select the old database format (this is the same as specifying +.BR \-\-old\-format ). +Alternatively the +.B slocate +format is also supported. When the +.B slocate +format is in use, the database produced is marked as having security +level 1. If you want to build a system-wide +.B slocate +database, you may want to run +.B updatedb +as root. +.TP +.B \-\-version +Print the version number of +.B updatedb +and exit. +.TP +.B "\-\-help" +Print a summary of the options to +.B updatedb +and exit. +.SH "SEE ALSO" +\fBfind\fP(1), \fBlocate\fP(1), \fBlocatedb\fP(5), \fBxargs\fP(1) + +The full documentation for +.B updatedb +is maintained as a Texinfo manual. If the +.B info +and +.B updatedb +programs are properly installed at your site, the command +.B info updatedb +should give you access to the complete manual. + +.SH "BUGS" +.P +The +.B updatedb +program correctly handles filenames containing newlines, +but only if the system's sort command has a working +.I \-z +option. If you suspect that +.B locate +may need to return filenames containing newlines, consider using its +.I \-\-null +option. +.P +The best way to report a bug is to use the form at +http://savannah.gnu.org/bugs/?group=findutils. +The reason for this is that you will then be able to track progress in +fixing the problem. Other comments about \fBupdatedb\fP(1) and about +the findutils package in general can be sent to the +.I bug-findutils +mailing list. To join the list, send email to +.IR bug-findutils-request@gnu.org . diff --git a/locate/updatedb.sh b/locate/updatedb.sh new file mode 100644 index 0000000..16515c0 --- /dev/null +++ b/locate/updatedb.sh @@ -0,0 +1,413 @@ +#! /bin/sh +# updatedb -- build a locate pathname database +# Copyright (C) 1994, 1996, 1997, 2000, 2001, 2003, 2004, 2005, 2006, +# 2010, 2011 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 <http://www.gnu.org/licenses/>. + +# csh original by James Woods; sh conversion by David MacKenzie. + +#exec 2> /tmp/updatedb-trace.txt +#set -x + +version=' +updatedb (@PACKAGE_NAME@) @VERSION@ +Copyright (C) 2007,2008,2009,2010 Free Software Foundation, Inc. +License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. + +Written by Eric B. Decker, James Youngman, and Kevin Dalley. +' + + +usage="\ +Usage: $0 [--findoptions='-option1 -option2...'] + [--localpaths='dir1 dir2...'] [--netpaths='dir1 dir2...'] + [--prunepaths='dir1 dir2...'] [--prunefs='fs1 fs2...'] + [--output=dbfile] [--netuser=user] [--localuser=user] + [--old-format] [--dbformat] [--version] [--help] + +Report bugs to <bug-findutils@gnu.org>." +changeto=/ +old=no +for arg +do + # If we are unable to fork, the back-tick operator will + # fail (and the shell will emit an error message). When + # this happens, we exit with error value 71 (EX_OSERR). + # Alternative candidate - 75, EX_TEMPFAIL. + opt=`echo $arg|sed 's/^\([^=]*\).*/\1/'` || exit 71 + val=`echo $arg|sed 's/^[^=]*=\(.*\)/\1/'` || exit 71 + case "$opt" in + --findoptions) FINDOPTIONS="$val" ;; + --localpaths) SEARCHPATHS="$val" ;; + --netpaths) NETPATHS="$val" ;; + --prunepaths) PRUNEPATHS="$val" ;; + --prunefs) PRUNEFS="$val" ;; + --output) LOCATE_DB="$val" ;; + --netuser) NETUSER="$val" ;; + --localuser) LOCALUSER="$val" ;; + --old-format) old=yes ;; + --changecwd) changeto="$val" ;; + --dbformat) dbformat="$val" ;; + --version) fail=0; echo "$version" || fail=1; exit $fail ;; + --help) fail=0; echo "$usage" || fail=1; exit $fail ;; + *) echo "updatedb: invalid option $opt +$usage" >&2 + exit 1 ;; + esac +done + + + + +case "${dbformat:+yes}_${old}" in + yes_yes) + echo "The --dbformat and --old cannot both be specified." >&2 + exit 1 + ;; + *) + ;; +esac + +if test "$old" = yes || test "$dbformat" = "old" ; then + echo "Warning: future versions of findutils will shortly discontinue support for the old locate database format." >&2 + old=yes + sort="@SORT@" + print_option="-print" + frcode_options="" +else + frcode_options="" + case "$dbformat" in + "") + # Default, use LOCATE02 + ;; + LOCATE02) + ;; + slocate) + frcode_options="$frcode_options -S 1" + ;; + *) + echo "Unsupported locate database format ${dbformat}: Supported formats are:" >&2 + echo "LOCATE02, slocate, old" >&2 + exit 1 + esac + + + if @SORT_SUPPORTS_Z@ + then + sort="@SORT@ -z" + print_option="-print0" + frcode_options="$frcode_options -0" + else + sort="@SORT@" + print_option="-print" + fi +fi + +getuid() { + # format of "id" output is ... + # uid=1(daemon) gid=1(other) + # for `id's that don't understand -u + id | cut -d'(' -f 1 | cut -d'=' -f2 +} + +# figure out if su supports the -s option +select_shell() { + if su "$1" -s $SHELL -c false < /dev/null ; then + # No. + echo "" + else + if su "$1" -s $SHELL -c true < /dev/null ; then + # Yes. + echo "-s $SHELL" + else + # su is unconditionally failing. We won't be able to + # figure out what is wrong, so be conservative. + echo "" + fi + fi +} + + +# You can set these in the environment, or use command-line options, +# to override their defaults: + +# Any global options for find? +: ${FINDOPTIONS=} + +# What shell shoud we use? We should use a POSIX-ish sh. +: ${SHELL="/bin/sh"} + +# Non-network directories to put in the database. +: ${SEARCHPATHS="/"} + +# Network (NFS, AFS, RFS, etc.) directories to put in the database. +: ${NETPATHS=} + +# Directories to not put in the database, which would otherwise be. +: ${PRUNEPATHS=" +/afs +/amd +/proc +/sfs +/tmp +/usr/tmp +/var/tmp +"} + +# Trailing slashes result in regex items that are never matched, which +# is not what the user will expect. Therefore we now reject such +# constructs. +for p in $PRUNEPATHS; do + case "$p" in + /*/) echo "$0: $p: pruned paths should not contain trailing slashes" >&2 + exit 1 + esac +done + +# The same, in the form of a regex that find can use. +test -z "$PRUNEREGEX" && + PRUNEREGEX=`echo $PRUNEPATHS|sed -e 's,^,\\\(^,' -e 's, ,$\\\)\\\|\\\(^,g' -e 's,$,$\\\),'` + +# The database file to build. +: ${LOCATE_DB=@LOCATE_DB@} + +# Directory to hold intermediate files. +if test -d /var/tmp; then + : ${TMPDIR=/var/tmp} +elif test -d /usr/tmp; then + : ${TMPDIR=/usr/tmp} +else + : ${TMPDIR=/tmp} +fi +export TMPDIR + +# The user to search network directories as. +: ${NETUSER=daemon} + +# The directory containing the subprograms. +if test -n "$LIBEXECDIR" ; then + : LIBEXECDIR already set, do nothing +else + : ${LIBEXECDIR=@libexecdir@} +fi + +# The directory containing find. +if test -n "$BINDIR" ; then + : BINDIR already set, do nothing +else + : ${BINDIR=@bindir@} +fi + +# The names of the utilities to run to build the database. +: ${find:=${BINDIR}/@find@} +: ${frcode:=${LIBEXECDIR}/@frcode@} +: ${bigram:=${LIBEXECDIR}/@bigram@} +: ${code:=${LIBEXECDIR}/@code@} + +make_tempdir () { + # This implementation is adapted from the GNU Autoconf manual. + { + tmp=` + (umask 077 && mktemp -d "$TMPDIR/updatedbXXXXXX") 2>/dev/null + ` && + test -n "$tmp" && test -d "$tmp" + } || { + # This method is less secure than mktemp -d, but it's a fallback. + # + # We use $$ as well as $RANDOM since $RANDOM may not be available. + # We also add a time-dependent suffix. This is actually somewhat + # predictable, but then so is $$. POSIX does not require date to + # support +%N. + ts=`date +%N%S || date +%S 2>/dev/null` + tmp="$TMPDIR"/updatedb"$$"-"${RANDOM:-}${ts}" + (umask 077 && mkdir "$tmp") + } + echo "$tmp" +} + +checkbinary () { + if test -x "$1" ; then + : ok + else + eval echo "updatedb needs to be able to execute $1, but cannot." >&2 + exit 1 + fi +} + +for binary in $find $frcode $bigram $code +do + checkbinary $binary +done + + +: ${PRUNEFS=" +9P +NFS +afs +autofs +cifs +coda +devfs +devpts +ftpfs +iso9660 +mfs +ncpfs +nfs +nfs4 +proc +shfs +smbfs +sysfs +"} + +if test -n "$PRUNEFS"; then +prunefs_exp=`echo $PRUNEFS |sed -e 's/\([^ ][^ ]*\)/-o -fstype \1/g' \ + -e 's/-o //' -e 's/$/ -o/'` +else + prunefs_exp='' +fi + +# Make and code the file list. +# Sort case insensitively for users' convenience. + +rm -f $LOCATE_DB.n +trap 'rm -f $LOCATE_DB.n; exit' HUP TERM + +if test $old = no; then +# LOCATE02 or slocate format +if { +cd "$changeto" +if test -n "$SEARCHPATHS"; then + if [ "$LOCALUSER" != "" ]; then + # : A1 + su $LOCALUSER `select_shell $LOCALUSER` -c \ + "$find $SEARCHPATHS $FINDOPTIONS \ + \\( $prunefs_exp \ + -type d -regex '$PRUNEREGEX' \\) -prune -o $print_option" + else + # : A2 + $find $SEARCHPATHS $FINDOPTIONS \ + \( $prunefs_exp \ + -type d -regex "$PRUNEREGEX" \) -prune -o $print_option + fi +fi + +if test -n "$NETPATHS"; then +myuid=`getuid` +if [ "$myuid" = 0 ]; then + # : A3 + su $NETUSER `select_shell $NETUSER` -c \ + "$find $NETPATHS $FINDOPTIONS \\( -type d -regex '$PRUNEREGEX' -prune \\) -o $print_option" || + exit $? + else + # : A4 + $find $NETPATHS $FINDOPTIONS \( -type d -regex "$PRUNEREGEX" -prune \) -o $print_option || + exit $? + fi +fi +} | $sort -f | $frcode $frcode_options > $LOCATE_DB.n +then + : OK so far + true +else + rv=$? + echo "Failed to generate $LOCATE_DB.n" >&2 + rm -f $LOCATE_DB.n + exit $rv +fi + +# To avoid breaking locate while this script is running, put the +# results in a temp file, then rename it atomically. +if test -s $LOCATE_DB.n; then + chmod 644 ${LOCATE_DB}.n + mv ${LOCATE_DB}.n $LOCATE_DB +else + echo "updatedb: new database would be empty" >&2 + rm -f $LOCATE_DB.n +fi + +else # old + +if temp_directory="`make_tempdir`"; then + bigrams="${temp_directory}"/bigrams + filelist="${temp_directory}"/filelist +else + echo "failed to create temporary directory" >&2 + exit 1 +fi + +rm -f $LOCATE_DB.n +trap 'rm -f $LOCATE_DB.n; rm -rf "${temp_directory}"; exit' HUP TERM + +# Alphabetize subdirectories before file entries using tr. James Woods says: +# "to get everything in monotonic collating sequence, to avoid some +# breakage i'll have to think about." +{ +cd "$changeto" +if test -n "$SEARCHPATHS"; then + if [ "$LOCALUSER" != "" ]; then + # : A5 + su $LOCALUSER `select_shell $LOCALUSER` -c \ + "$find $SEARCHPATHS $FINDOPTIONS \ + \( $prunefs_exp \ + -type d -regex '$PRUNEREGEX' \) -prune -o $print_option" || exit $? + else + # : A6 + $find $SEARCHPATHS $FINDOPTIONS \ + \( $prunefs_exp \ + -type d -regex "$PRUNEREGEX" \) -prune -o $print_option || exit $? + fi +fi + +if test -n "$NETPATHS"; then + myuid=`getuid` + if [ "$myuid" = 0 ]; then + # : A7 + su $NETUSER `select_shell $NETUSER` -c \ + "$find $NETPATHS $FINDOPTIONS \\( -type d -regex '$PRUNEREGEX' -prune \\) -o $print_option" || + exit $? + else + # : A8 + $find $NETPATHS $FINDOPTIONS \( -type d -regex "$PRUNEREGEX" -prune \) -o $print_option || + exit $? + fi +fi +} | tr / '\001' | $sort -f | tr '\001' / > "$filelist" + +# Compute the (at most 128) most common bigrams in the file list. +$bigram $bigram_opts < $filelist | sort | uniq -c | sort -nr | + awk '{ if (NR <= 128) print $2 }' | tr -d '\012' > "$bigrams" + +# Code the file list. +$code "$bigrams" < "$filelist" > $LOCATE_DB.n + +rm -rf "${temp_directory}" + +# To reduce the chances of breaking locate while this script is running, +# put the results in a temp file, then rename it atomically. +if test -s $LOCATE_DB.n; then + chmod 644 ${LOCATE_DB}.n + mv ${LOCATE_DB}.n $LOCATE_DB +else + echo "updatedb: new database would be empty" >&2 + rm -f $LOCATE_DB.n +fi + +fi + +exit 0 diff --git a/locate/word_io.c b/locate/word_io.c new file mode 100644 index 0000000..6e92f01 --- /dev/null +++ b/locate/word_io.c @@ -0,0 +1,178 @@ +/* word_io.c -- word oriented I/O + Copyright (C) 2007, 2010, 2011 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 <http://www.gnu.org/licenses/>. +*/ + +/* config.h must be included first. */ +#include <config.h> + +/* system headers. */ +#include <assert.h> +#include <errno.h> +#include <stdbool.h> /* for bool */ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +/* gnulib headers. */ +#include "byteswap.h" +#include "error.h" +#include "gettext.h" +#include "quotearg.h" + +/* find headers. */ +#include "locatedb.h" + +#if ENABLE_NLS +# include <libintl.h> +# define _(Text) gettext (Text) +#else +# define _(Text) Text +#define textdomain(Domain) +#define bindtextdomain(Package, Directory) +#endif +#ifdef gettext_noop +# define N_(String) gettext_noop (String) +#else +/* We used to use (String) instead of just String, but apparently ISO C + * doesn't allow this (at least, that's what HP said when someone reported + * this as a compiler bug). This is HP case number 1205608192. See + * also http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11250 (which references + * ANSI 3.5.7p14-15). The Intel icc compiler also rejects constructs + * like: static const char buf[] = ("string"); + */ +# define N_(String) String +#endif + + +enum { WORDBYTES=4 }; + +static int +decode_value (const unsigned char data[], + int limit, + GetwordEndianState *endian_state_flag, + const char *filename) +{ + int swapped; + union + { + int ival; /* native representation */ + unsigned char data[WORDBYTES]; + } u; + u.ival = 0; + memcpy (&u.data, data, WORDBYTES); + swapped = bswap_32(u.ival); /* byteswapped */ + + if (*endian_state_flag == GetwordEndianStateInitial) + { + if (u.ival <= limit) + { + if (swapped > limit) + { + /* the native value is inside the limit and the + * swapped value is not. We take this as proof + * that we should be using the ative byte order. + */ + *endian_state_flag = GetwordEndianStateNative; + } + return u.ival; + } + else + { + if (swapped <= limit) + { + /* Aha, now we know we have to byte-swap. */ + error (0, 0, + _("WARNING: locate database %s was " + "built with a different byte order"), + quotearg_n_style (0, locale_quoting_style, filename)); + *endian_state_flag = GetwordEndianStateSwab; + return swapped; + } + else + { + /* u.ival > limit and swapped > limit. For the moment, assume + * native ordering. + */ + return u.ival; + } + } + } + else + { + /* We already know the byte order. */ + if (*endian_state_flag == GetwordEndianStateSwab) + return swapped; + else + return u.ival; + } +} + + + +int +getword (FILE *fp, + const char *filename, + size_t minvalue, + size_t maxvalue, + GetwordEndianState *endian_state_flag) +{ + unsigned char data[4]; + size_t bytes_read; + + clearerr (fp); + bytes_read = fread (data, WORDBYTES, 1, fp); + if (bytes_read != 1) + { + const char * quoted_name = quotearg_n_style (0, locale_quoting_style, + filename); + /* Distinguish between a truncated database and an I/O error. + * Either condition is fatal. + */ + if (feof (fp)) + error (EXIT_FAILURE, 0, _("unexpected EOF in %s"), quoted_name); + else + error (EXIT_FAILURE, errno, + _("error reading a word from %s"), quoted_name); + abort (); + } + else + { + return decode_value (data, maxvalue, endian_state_flag, filename); + } +} + + +bool +putword (FILE *fp, int word, + GetwordEndianState endian_state_flag) +{ + size_t items_written; + + /* You must decide before calling this function which + * endianness you want to use. + */ + assert (endian_state_flag != GetwordEndianStateInitial); + if (GetwordEndianStateSwab == endian_state_flag) + { + word = bswap_32(word); + } + + items_written = fwrite (&word, sizeof (word), 1, fp); + if (1 == items_written) + return true; + else + return false; +} |
