summaryrefslogtreecommitdiff
path: root/locate
diff options
context:
space:
mode:
Diffstat (limited to 'locate')
-rw-r--r--locate/Makefile.am78
-rw-r--r--locate/Makefile.in2385
-rw-r--r--locate/bigram.c146
-rw-r--r--locate/code.c291
-rw-r--r--locate/frcode.c362
-rw-r--r--locate/locate.1283
-rw-r--r--locate/locate.c1956
-rw-r--r--locate/locatedb.5153
-rw-r--r--locate/locatedb.h72
-rw-r--r--locate/testsuite/Makefile.am74
-rw-r--r--locate/testsuite/Makefile.in1849
-rw-r--r--locate/testsuite/config/unix.exp341
-rw-r--r--locate/testsuite/locate.gnu/bigendian.exp2
-rw-r--r--locate/testsuite/locate.gnu/bigendian.xo8
-rw-r--r--locate/testsuite/locate.gnu/bigprefix1.exp12
-rw-r--r--locate/testsuite/locate.gnu/exceedshort.exp4
-rw-r--r--locate/testsuite/locate.gnu/exists1.exp7
-rw-r--r--locate/testsuite/locate.gnu/exists1.xo1
-rw-r--r--locate/testsuite/locate.gnu/exists2.exp8
-rw-r--r--locate/testsuite/locate.gnu/exists2.xo1
-rw-r--r--locate/testsuite/locate.gnu/exists3.exp8
-rw-r--r--locate/testsuite/locate.gnu/exists3.xo1
-rw-r--r--locate/testsuite/locate.gnu/ignore_case1.exp7
-rw-r--r--locate/testsuite/locate.gnu/ignore_case1.xo1
-rw-r--r--locate/testsuite/locate.gnu/ignore_case2.exp7
-rw-r--r--locate/testsuite/locate.gnu/ignore_case2.xo0
-rw-r--r--locate/testsuite/locate.gnu/ignore_case3.exp10
-rw-r--r--locate/testsuite/locate.gnu/ignore_case3.xo1
-rw-r--r--locate/testsuite/locate.gnu/littleendian.exp2
-rw-r--r--locate/testsuite/locate.gnu/littleendian.xo8
-rw-r--r--locate/testsuite/locate.gnu/locateddb.old.powerpc.xibin0 -> 329 bytes
-rw-r--r--locate/testsuite/locate.gnu/locateddb.old.x86.xibin0 -> 329 bytes
-rw-r--r--locate/testsuite/locate.gnu/notexists1.exp9
-rw-r--r--locate/testsuite/locate.gnu/notexists1.xo0
-rw-r--r--locate/testsuite/locate.gnu/notexists2.exp8
-rw-r--r--locate/testsuite/locate.gnu/notexists2.xo1
-rw-r--r--locate/testsuite/locate.gnu/notexists3.exp8
-rw-r--r--locate/testsuite/locate.gnu/notexists3.xo1
-rw-r--r--locate/testsuite/locate.gnu/old_prefix.exp13
-rw-r--r--locate/testsuite/locate.gnu/old_prefix.xo5
-rw-r--r--locate/testsuite/locate.gnu/oldformat.exp12
-rw-r--r--locate/testsuite/locate.gnu/oldformat.xo1
-rw-r--r--locate/testsuite/locate.gnu/regex1.exp9
-rw-r--r--locate/testsuite/locate.gnu/slocate.exp8
-rw-r--r--locate/testsuite/locate.gnu/slocate.xo3
-rw-r--r--locate/testsuite/locate.gnu/space1st.exp2
-rw-r--r--locate/testsuite/locate.gnu/sv-bug-14535.exp60
-rw-r--r--locate/updatedb.1154
-rw-r--r--locate/updatedb.sh413
-rw-r--r--locate/word_io.c178
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
new file mode 100644
index 0000000..88988cb
--- /dev/null
+++ b/locate/testsuite/locate.gnu/locateddb.old.powerpc.xi
Binary files differ
diff --git a/locate/testsuite/locate.gnu/locateddb.old.x86.xi b/locate/testsuite/locate.gnu/locateddb.old.x86.xi
new file mode 100644
index 0000000..943e902
--- /dev/null
+++ b/locate/testsuite/locate.gnu/locateddb.old.x86.xi
Binary files differ
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;
+}