From e4d14a652a91eb7b5bbe2fb7ab8865602995bb9b Mon Sep 17 00:00:00 2001 From: thecookingsenpai Date: Thu, 28 Dec 2023 09:12:53 +0100 Subject: [PATCH] Added detox --- README.md | 9 + detox/install.sh | 3 + detox/latest/Makefile | 977 +++ detox/latest/Makefile.am | 28 + detox/latest/Makefile.in | 977 +++ detox/latest/README.md | 42 + detox/latest/aclocal.m4 | 1135 ++++ detox/latest/compile | 348 ++ detox/latest/config.log | 2286 +++++++ detox/latest/config.status | 1199 ++++ detox/latest/configure | 6078 +++++++++++++++++++ detox/latest/configure.ac | 19 + detox/latest/depcomp | 791 +++ detox/latest/etc/detoxrc.sample | 84 + detox/latest/install-sh | 518 ++ detox/latest/man/detox.1 | 149 + detox/latest/man/detox.tbl.5 | 56 + detox/latest/man/detoxrc.5 | 214 + detox/latest/man/inline-detox.1 | 126 + detox/latest/missing | 215 + detox/latest/src/.deps/clean_string.Po | 147 + detox/latest/src/.deps/config_file_dump.Po | 134 + detox/latest/src/.deps/config_file_lex.Po | 166 + detox/latest/src/.deps/config_file_spoof.Po | 143 + detox/latest/src/.deps/config_file_yacc.Po | 134 + detox/latest/src/.deps/detox.Po | 172 + detox/latest/src/.deps/file.Po | 180 + detox/latest/src/.deps/parse_options.Po | 168 + detox/latest/src/.deps/parse_table.Po | 151 + detox/latest/src/.deps/table.Po | 142 + detox/latest/src/Makefile | 676 +++ detox/latest/src/Makefile.am | 10 + detox/latest/src/Makefile.in | 676 +++ detox/latest/src/clean_string.c | 773 +++ detox/latest/src/clean_string.h | 33 + detox/latest/src/clean_string.o | Bin 0 -> 43592 bytes detox/latest/src/config.h | 81 + detox/latest/src/config.h.in | 80 + detox/latest/src/config_file.h | 19 + detox/latest/src/config_file_dump.c | 112 + detox/latest/src/config_file_dump.h | 17 + detox/latest/src/config_file_dump.o | Bin 0 -> 16928 bytes detox/latest/src/config_file_lex.c | 1946 ++++++ detox/latest/src/config_file_lex.l | 86 + detox/latest/src/config_file_lex.o | Bin 0 -> 57144 bytes detox/latest/src/config_file_spoof.c | 124 + detox/latest/src/config_file_spoof.h | 17 + detox/latest/src/config_file_spoof.o | Bin 0 -> 13800 bytes detox/latest/src/config_file_yacc.c | 1949 ++++++ detox/latest/src/config_file_yacc.h | 113 + detox/latest/src/config_file_yacc.o | Bin 0 -> 42856 bytes detox/latest/src/config_file_yacc.y | 412 ++ detox/latest/src/detox | Bin 0 -> 159720 bytes detox/latest/src/detox.c | 356 ++ detox/latest/src/detox.h | 79 + detox/latest/src/detox.o | Bin 0 -> 33696 bytes detox/latest/src/file.c | 378 ++ detox/latest/src/file.h | 23 + detox/latest/src/file.o | Bin 0 -> 40360 bytes detox/latest/src/inline-detox | Bin 0 -> 159720 bytes detox/latest/src/iso8859_1.h | 149 + detox/latest/src/parse_options.c | 282 + detox/latest/src/parse_options.h | 25 + detox/latest/src/parse_options.o | Bin 0 -> 23344 bytes detox/latest/src/parse_table.c | 222 + detox/latest/src/parse_table.h | 18 + detox/latest/src/parse_table.o | Bin 0 -> 20360 bytes detox/latest/src/stamp-h1 | 1 + detox/latest/src/table.c | 177 + detox/latest/src/table.h | 37 + detox/latest/src/table.o | Bin 0 -> 12520 bytes detox/latest/src/unicode.h | 275 + detox/latest/table/iso8859_1.tbl.sample | 131 + detox/latest/table/safe.tbl.sample | 136 + detox/latest/table/unicode.tbl.sample | 386 ++ detox/latest/ylwrap | 247 + 76 files changed, 26837 insertions(+) create mode 100755 detox/install.sh create mode 100644 detox/latest/Makefile create mode 100644 detox/latest/Makefile.am create mode 100644 detox/latest/Makefile.in create mode 100644 detox/latest/README.md create mode 100644 detox/latest/aclocal.m4 create mode 100755 detox/latest/compile create mode 100644 detox/latest/config.log create mode 100755 detox/latest/config.status create mode 100755 detox/latest/configure create mode 100644 detox/latest/configure.ac create mode 100755 detox/latest/depcomp create mode 100644 detox/latest/etc/detoxrc.sample create mode 100755 detox/latest/install-sh create mode 100644 detox/latest/man/detox.1 create mode 100644 detox/latest/man/detox.tbl.5 create mode 100644 detox/latest/man/detoxrc.5 create mode 100644 detox/latest/man/inline-detox.1 create mode 100755 detox/latest/missing create mode 100644 detox/latest/src/.deps/clean_string.Po create mode 100644 detox/latest/src/.deps/config_file_dump.Po create mode 100644 detox/latest/src/.deps/config_file_lex.Po create mode 100644 detox/latest/src/.deps/config_file_spoof.Po create mode 100644 detox/latest/src/.deps/config_file_yacc.Po create mode 100644 detox/latest/src/.deps/detox.Po create mode 100644 detox/latest/src/.deps/file.Po create mode 100644 detox/latest/src/.deps/parse_options.Po create mode 100644 detox/latest/src/.deps/parse_table.Po create mode 100644 detox/latest/src/.deps/table.Po create mode 100644 detox/latest/src/Makefile create mode 100644 detox/latest/src/Makefile.am create mode 100644 detox/latest/src/Makefile.in create mode 100644 detox/latest/src/clean_string.c create mode 100644 detox/latest/src/clean_string.h create mode 100644 detox/latest/src/clean_string.o create mode 100644 detox/latest/src/config.h create mode 100644 detox/latest/src/config.h.in create mode 100644 detox/latest/src/config_file.h create mode 100644 detox/latest/src/config_file_dump.c create mode 100644 detox/latest/src/config_file_dump.h create mode 100644 detox/latest/src/config_file_dump.o create mode 100644 detox/latest/src/config_file_lex.c create mode 100644 detox/latest/src/config_file_lex.l create mode 100644 detox/latest/src/config_file_lex.o create mode 100644 detox/latest/src/config_file_spoof.c create mode 100644 detox/latest/src/config_file_spoof.h create mode 100644 detox/latest/src/config_file_spoof.o create mode 100644 detox/latest/src/config_file_yacc.c create mode 100644 detox/latest/src/config_file_yacc.h create mode 100644 detox/latest/src/config_file_yacc.o create mode 100644 detox/latest/src/config_file_yacc.y create mode 100755 detox/latest/src/detox create mode 100644 detox/latest/src/detox.c create mode 100644 detox/latest/src/detox.h create mode 100644 detox/latest/src/detox.o create mode 100644 detox/latest/src/file.c create mode 100644 detox/latest/src/file.h create mode 100644 detox/latest/src/file.o create mode 100755 detox/latest/src/inline-detox create mode 100644 detox/latest/src/iso8859_1.h create mode 100644 detox/latest/src/parse_options.c create mode 100644 detox/latest/src/parse_options.h create mode 100644 detox/latest/src/parse_options.o create mode 100644 detox/latest/src/parse_table.c create mode 100644 detox/latest/src/parse_table.h create mode 100644 detox/latest/src/parse_table.o create mode 100644 detox/latest/src/stamp-h1 create mode 100644 detox/latest/src/table.c create mode 100644 detox/latest/src/table.h create mode 100644 detox/latest/src/table.o create mode 100644 detox/latest/src/unicode.h create mode 100644 detox/latest/table/iso8859_1.tbl.sample create mode 100644 detox/latest/table/safe.tbl.sample create mode 100644 detox/latest/table/unicode.tbl.sample create mode 100755 detox/latest/ylwrap diff --git a/README.md b/README.md index 8808d73..71ddeb8 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,12 @@ # Dynamic and updating list of prebuilt linux binaries ## Content + +### Utilities + +#### detox +*ensures a filename is sanitized* +cd detox && ./install.sh +**USAGE: detox -h** + + diff --git a/detox/install.sh b/detox/install.sh new file mode 100755 index 0000000..30a8770 --- /dev/null +++ b/detox/install.sh @@ -0,0 +1,3 @@ +#!/bin/bash +cd latest +sudo make install diff --git a/detox/latest/Makefile b/detox/latest/Makefile new file mode 100644 index 0000000..dbafa63 --- /dev/null +++ b/detox/latest/Makefile @@ -0,0 +1,977 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2018 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. + + + + +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +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)/detox +pkgincludedir = $(includedir)/detox +pkglibdir = $(libdir)/detox +pkglibexecdir = $(libexecdir)/detox +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 = : +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(dist_doc_DATA) $(dist_pkgdata_DATA) \ + $(dist_sysconf_DATA) $(am__DIST_COMMON) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/src/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_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 +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; }; \ + } +man1dir = $(mandir)/man1 +am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" \ + "$(DESTDIR)$(docdir)" "$(DESTDIR)$(pkgdatadir)" \ + "$(DESTDIR)$(sysconfdir)" +man5dir = $(mandir)/man5 +NROFF = nroff +MANS = $(dist_man1_MANS) $(dist_man5_MANS) +DATA = $(dist_doc_DATA) $(dist_pkgdata_DATA) $(dist_sysconf_DATA) +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 \ + cscope distdir distdir-am dist dist-all distcheck +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 +CSCOPE = cscope +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(dist_man1_MANS) $(dist_man5_MANS) \ + $(srcdir)/Makefile.in compile depcomp install-sh missing \ + ylwrap +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +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" +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +DIST_TARGETS = dist-gzip +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = ${SHELL} /home/tcsenpai/Downloads/detox-1.4.5/missing aclocal-1.16 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AUTOCONF = ${SHELL} /home/tcsenpai/Downloads/detox-1.4.5/missing autoconf +AUTOHEADER = ${SHELL} /home/tcsenpai/Downloads/detox-1.4.5/missing autoheader +AUTOMAKE = ${SHELL} /home/tcsenpai/Downloads/detox-1.4.5/missing automake-1.16 +AWK = mawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +GREP = /usr/bin/grep +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LDFLAGS = +LEX = flex +LEXLIB = -lfl +LEX_OUTPUT_ROOT = lex.yy +LIBOBJS = +LIBS = +LTLIBOBJS = +MAKEINFO = ${SHELL} /home/tcsenpai/Downloads/detox-1.4.5/missing makeinfo +MKDIR_P = /usr/bin/mkdir -p +OBJEXT = o +PACKAGE = detox +PACKAGE_BUGREPORT = detox.dharple at gmail.com +PACKAGE_NAME = detox +PACKAGE_STRING = detox 1.4.5 +PACKAGE_TARNAME = detox +PACKAGE_URL = https://github.com/dharple/detox +PACKAGE_VERSION = 1.4.5 +PATH_SEPARATOR = : +SET_MAKE = +SHELL = /bin/bash +STRIP = +VERSION = 1.4.5 +YACC = bison -y +YFLAGS = +abs_builddir = /home/tcsenpai/Downloads/detox-1.4.5 +abs_srcdir = /home/tcsenpai/Downloads/detox-1.4.5 +abs_top_builddir = /home/tcsenpai/Downloads/detox-1.4.5 +abs_top_srcdir = /home/tcsenpai/Downloads/detox-1.4.5 +ac_ct_CC = gcc +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build_alias = +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host_alias = +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/tcsenpai/Downloads/detox-1.4.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +runstatedir = ${localstatedir}/run +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = +top_builddir = . +top_srcdir = . +SUBDIRS = src +dist_doc_DATA = README.md +dist_man1_MANS = man/detox.1 man/inline-detox.1 +dist_man5_MANS = man/detox.tbl.5 man/detoxrc.5 +dist_sysconf_DATA = etc/detoxrc.sample +dist_pkgdata_DATA = table/iso8859_1.tbl.sample table/safe.tbl.sample table/unicode.tbl.sample +all: all-recursive + +.SUFFIXES: +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): +install-man1: $(dist_man1_MANS) + @$(NORMAL_INSTALL) + @list1='$(dist_man1_MANS)'; \ + list2=''; \ + 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='$(dist_man1_MANS)'; test -n "$(man1dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + } | 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: $(dist_man5_MANS) + @$(NORMAL_INSTALL) + @list1='$(dist_man5_MANS)'; \ + list2=''; \ + 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='$(dist_man5_MANS)'; test -n "$(man5dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + } | 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) +install-dist_docDATA: $(dist_doc_DATA) + @$(NORMAL_INSTALL) + @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ + done + +uninstall-dist_docDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) +install-dist_pkgdataDATA: $(dist_pkgdata_DATA) + @$(NORMAL_INSTALL) + @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgdatadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ + done + +uninstall-dist_pkgdataDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgdatadir)'; $(am__uninstall_files_from_dir) +install-dist_sysconfDATA: $(dist_sysconf_DATA) + @$(NORMAL_INSTALL) + @list='$(dist_sysconf_DATA)'; test -n "$(sysconfdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(sysconfdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(sysconfdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(sysconfdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(sysconfdir)" || exit $$?; \ + done + +uninstall-dist_sysconfDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_sysconf_DATA)'; test -n "$(sysconfdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(sysconfdir)'; $(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" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +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 + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @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 + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz + $(am__post_remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile $(MANS) $(DATA) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(docdir)" "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(sysconfdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: 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: + +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-recursive + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-dist_docDATA install-dist_pkgdataDATA \ + install-man + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-data-hook +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: install-dist_sysconfDATA + +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: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-dist_docDATA uninstall-dist_pkgdataDATA \ + uninstall-dist_sysconfDATA uninstall-man + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) uninstall-hook +uninstall-man: uninstall-man1 uninstall-man5 + +.MAKE: $(am__recursive_targets) install-am install-data-am \ + install-strip uninstall-am + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--refresh check check-am clean clean-cscope clean-generic \ + cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ + dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ + distcheck distclean distclean-generic distclean-tags \ + distcleancheck distdir distuninstallcheck dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-data-hook install-dist_docDATA \ + install-dist_pkgdataDATA install-dist_sysconfDATA install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-man1 install-man5 install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ + pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-dist_docDATA uninstall-dist_pkgdataDATA \ + uninstall-dist_sysconfDATA uninstall-hook uninstall-man \ + uninstall-man1 uninstall-man5 + +.PRECIOUS: Makefile + + +install-data-hook: + test -f $(DESTDIR)$(sysconfdir)/detoxrc || $(INSTALL_DATA) $(DESTDIR)$(sysconfdir)/detoxrc.sample $(DESTDIR)$(sysconfdir)/detoxrc + test -f $(DESTDIR)$(pkgdatadir)/iso8859_1.tbl || $(INSTALL_DATA) $(DESTDIR)$(pkgdatadir)/iso8859_1.tbl.sample $(DESTDIR)$(pkgdatadir)/iso8859_1.tbl + test -f $(DESTDIR)$(pkgdatadir)/safe.tbl || $(INSTALL_DATA) $(DESTDIR)$(pkgdatadir)/safe.tbl.sample $(DESTDIR)$(pkgdatadir)/safe.tbl + test -f $(DESTDIR)$(pkgdatadir)/unicode.tbl || $(INSTALL_DATA) $(DESTDIR)$(pkgdatadir)/unicode.tbl.sample $(DESTDIR)$(pkgdatadir)/unicode.tbl + +.PHONY: force-install +force-install: install + $(INSTALL_DATA) $(DESTDIR)$(sysconfdir)/detoxrc.sample $(DESTDIR)$(sysconfdir)/detoxrc + $(INSTALL_DATA) $(DESTDIR)$(pkgdatadir)/iso8859_1.tbl.sample $(DESTDIR)$(pkgdatadir)/iso8859_1.tbl + $(INSTALL_DATA) $(DESTDIR)$(pkgdatadir)/safe.tbl.sample $(DESTDIR)$(pkgdatadir)/safe.tbl + $(INSTALL_DATA) $(DESTDIR)$(pkgdatadir)/unicode.tbl.sample $(DESTDIR)$(pkgdatadir)/unicode.tbl + +uninstall-hook: + rm $(DESTDIR)$(sysconfdir)/detoxrc + rm $(DESTDIR)$(pkgdatadir)/iso8859_1.tbl + rm $(DESTDIR)$(pkgdatadir)/safe.tbl + rm $(DESTDIR)$(pkgdatadir)/unicode.tbl + +# 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/detox/latest/Makefile.am b/detox/latest/Makefile.am new file mode 100644 index 0000000..d224c1a --- /dev/null +++ b/detox/latest/Makefile.am @@ -0,0 +1,28 @@ +SUBDIRS = src +dist_doc_DATA = README.md + +dist_man1_MANS = man/detox.1 man/inline-detox.1 +dist_man5_MANS = man/detox.tbl.5 man/detoxrc.5 + +dist_sysconf_DATA = etc/detoxrc.sample + +dist_pkgdata_DATA = table/iso8859_1.tbl.sample table/safe.tbl.sample table/unicode.tbl.sample + +install-data-hook: + test -f $(DESTDIR)$(sysconfdir)/detoxrc || $(INSTALL_DATA) $(DESTDIR)$(sysconfdir)/detoxrc.sample $(DESTDIR)$(sysconfdir)/detoxrc + test -f $(DESTDIR)$(pkgdatadir)/iso8859_1.tbl || $(INSTALL_DATA) $(DESTDIR)$(pkgdatadir)/iso8859_1.tbl.sample $(DESTDIR)$(pkgdatadir)/iso8859_1.tbl + test -f $(DESTDIR)$(pkgdatadir)/safe.tbl || $(INSTALL_DATA) $(DESTDIR)$(pkgdatadir)/safe.tbl.sample $(DESTDIR)$(pkgdatadir)/safe.tbl + test -f $(DESTDIR)$(pkgdatadir)/unicode.tbl || $(INSTALL_DATA) $(DESTDIR)$(pkgdatadir)/unicode.tbl.sample $(DESTDIR)$(pkgdatadir)/unicode.tbl + +.PHONY: force-install +force-install: install + $(INSTALL_DATA) $(DESTDIR)$(sysconfdir)/detoxrc.sample $(DESTDIR)$(sysconfdir)/detoxrc + $(INSTALL_DATA) $(DESTDIR)$(pkgdatadir)/iso8859_1.tbl.sample $(DESTDIR)$(pkgdatadir)/iso8859_1.tbl + $(INSTALL_DATA) $(DESTDIR)$(pkgdatadir)/safe.tbl.sample $(DESTDIR)$(pkgdatadir)/safe.tbl + $(INSTALL_DATA) $(DESTDIR)$(pkgdatadir)/unicode.tbl.sample $(DESTDIR)$(pkgdatadir)/unicode.tbl + +uninstall-hook: + rm $(DESTDIR)$(sysconfdir)/detoxrc + rm $(DESTDIR)$(pkgdatadir)/iso8859_1.tbl + rm $(DESTDIR)$(pkgdatadir)/safe.tbl + rm $(DESTDIR)$(pkgdatadir)/unicode.tbl diff --git a/detox/latest/Makefile.in b/detox/latest/Makefile.in new file mode 100644 index 0000000..bc9c4cf --- /dev/null +++ b/detox/latest/Makefile.in @@ -0,0 +1,977 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2018 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 = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +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@ +pkglibexecdir = $(libexecdir)/@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 = : +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(dist_doc_DATA) $(dist_pkgdata_DATA) \ + $(dist_sysconf_DATA) $(am__DIST_COMMON) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/src/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 = +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 +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; }; \ + } +man1dir = $(mandir)/man1 +am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" \ + "$(DESTDIR)$(docdir)" "$(DESTDIR)$(pkgdatadir)" \ + "$(DESTDIR)$(sysconfdir)" +man5dir = $(mandir)/man5 +NROFF = nroff +MANS = $(dist_man1_MANS) $(dist_man5_MANS) +DATA = $(dist_doc_DATA) $(dist_pkgdata_DATA) $(dist_sysconf_DATA) +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 \ + cscope distdir distdir-am dist dist-all distcheck +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 +CSCOPE = cscope +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(dist_man1_MANS) $(dist_man5_MANS) \ + $(srcdir)/Makefile.in compile depcomp install-sh missing \ + ylwrap +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +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" +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +DIST_TARGETS = dist-gzip +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LEX = @LEX@ +LEXLIB = @LEXLIB@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +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@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +YACC = @YACC@ +YFLAGS = @YFLAGS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +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_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +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@ +SUBDIRS = src +dist_doc_DATA = README.md +dist_man1_MANS = man/detox.1 man/inline-detox.1 +dist_man5_MANS = man/detox.tbl.5 man/detoxrc.5 +dist_sysconf_DATA = etc/detoxrc.sample +dist_pkgdata_DATA = table/iso8859_1.tbl.sample table/safe.tbl.sample table/unicode.tbl.sample +all: all-recursive + +.SUFFIXES: +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): +install-man1: $(dist_man1_MANS) + @$(NORMAL_INSTALL) + @list1='$(dist_man1_MANS)'; \ + list2=''; \ + 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='$(dist_man1_MANS)'; test -n "$(man1dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + } | 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: $(dist_man5_MANS) + @$(NORMAL_INSTALL) + @list1='$(dist_man5_MANS)'; \ + list2=''; \ + 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='$(dist_man5_MANS)'; test -n "$(man5dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + } | 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) +install-dist_docDATA: $(dist_doc_DATA) + @$(NORMAL_INSTALL) + @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ + done + +uninstall-dist_docDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) +install-dist_pkgdataDATA: $(dist_pkgdata_DATA) + @$(NORMAL_INSTALL) + @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgdatadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ + done + +uninstall-dist_pkgdataDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgdatadir)'; $(am__uninstall_files_from_dir) +install-dist_sysconfDATA: $(dist_sysconf_DATA) + @$(NORMAL_INSTALL) + @list='$(dist_sysconf_DATA)'; test -n "$(sysconfdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(sysconfdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(sysconfdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(sysconfdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(sysconfdir)" || exit $$?; \ + done + +uninstall-dist_sysconfDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_sysconf_DATA)'; test -n "$(sysconfdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(sysconfdir)'; $(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" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +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 + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @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 + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz + $(am__post_remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile $(MANS) $(DATA) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(docdir)" "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(sysconfdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: 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: + +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-recursive + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-dist_docDATA install-dist_pkgdataDATA \ + install-man + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-data-hook +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: install-dist_sysconfDATA + +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: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-dist_docDATA uninstall-dist_pkgdataDATA \ + uninstall-dist_sysconfDATA uninstall-man + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) uninstall-hook +uninstall-man: uninstall-man1 uninstall-man5 + +.MAKE: $(am__recursive_targets) install-am install-data-am \ + install-strip uninstall-am + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--refresh check check-am clean clean-cscope clean-generic \ + cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ + dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ + distcheck distclean distclean-generic distclean-tags \ + distcleancheck distdir distuninstallcheck dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-data-hook install-dist_docDATA \ + install-dist_pkgdataDATA install-dist_sysconfDATA install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-man1 install-man5 install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ + pdf-am ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-dist_docDATA uninstall-dist_pkgdataDATA \ + uninstall-dist_sysconfDATA uninstall-hook uninstall-man \ + uninstall-man1 uninstall-man5 + +.PRECIOUS: Makefile + + +install-data-hook: + test -f $(DESTDIR)$(sysconfdir)/detoxrc || $(INSTALL_DATA) $(DESTDIR)$(sysconfdir)/detoxrc.sample $(DESTDIR)$(sysconfdir)/detoxrc + test -f $(DESTDIR)$(pkgdatadir)/iso8859_1.tbl || $(INSTALL_DATA) $(DESTDIR)$(pkgdatadir)/iso8859_1.tbl.sample $(DESTDIR)$(pkgdatadir)/iso8859_1.tbl + test -f $(DESTDIR)$(pkgdatadir)/safe.tbl || $(INSTALL_DATA) $(DESTDIR)$(pkgdatadir)/safe.tbl.sample $(DESTDIR)$(pkgdatadir)/safe.tbl + test -f $(DESTDIR)$(pkgdatadir)/unicode.tbl || $(INSTALL_DATA) $(DESTDIR)$(pkgdatadir)/unicode.tbl.sample $(DESTDIR)$(pkgdatadir)/unicode.tbl + +.PHONY: force-install +force-install: install + $(INSTALL_DATA) $(DESTDIR)$(sysconfdir)/detoxrc.sample $(DESTDIR)$(sysconfdir)/detoxrc + $(INSTALL_DATA) $(DESTDIR)$(pkgdatadir)/iso8859_1.tbl.sample $(DESTDIR)$(pkgdatadir)/iso8859_1.tbl + $(INSTALL_DATA) $(DESTDIR)$(pkgdatadir)/safe.tbl.sample $(DESTDIR)$(pkgdatadir)/safe.tbl + $(INSTALL_DATA) $(DESTDIR)$(pkgdatadir)/unicode.tbl.sample $(DESTDIR)$(pkgdatadir)/unicode.tbl + +uninstall-hook: + rm $(DESTDIR)$(sysconfdir)/detoxrc + rm $(DESTDIR)$(pkgdatadir)/iso8859_1.tbl + rm $(DESTDIR)$(pkgdatadir)/safe.tbl + rm $(DESTDIR)$(pkgdatadir)/unicode.tbl + +# 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/detox/latest/README.md b/detox/latest/README.md new file mode 100644 index 0000000..7b3e667 --- /dev/null +++ b/detox/latest/README.md @@ -0,0 +1,42 @@ +# Overview + +`detox` is a program that renames files to make them easier to work with under +Unix and related operating systems. Spaces and various other unsafe +characters (such as "$") get replaced with "_". ISO 8859-1 (Latin-1) +characters can be transliterated to ASCII, as can UTF-8 characters. +More details are contained in the `detox.1` man page. + +# Runtime Notes + +The most important option to learn is `-n`, aka `--dry-run`. This will let you +run `detox` without actually changing any files, so that you can get an idea +of what `detox` is all about. + +The simplest way to run `detox` is to just run it on a directory containing +files that need work: + + detox xfer_files/ + +You can also just to specify the filename: + + detox my\ bad\ file.txt + +You can also specify recursion (this works best on directories): + + detox -r /music/transferred_from_elsewhere/ + +# Build + +To build `detox` from source, run: + +``` +git clone https://github.com/dharple/detox.git +cd detox +autoreconf --install +./configure +make +``` + +# Contact + +Doug Harple diff --git a/detox/latest/aclocal.m4 b/detox/latest/aclocal.m4 new file mode 100644 index 0000000..8c6b78f --- /dev/null +++ b/detox/latest/aclocal.m4 @@ -0,0 +1,1135 @@ +# generated automatically by aclocal 1.16.1 -*- Autoconf -*- + +# Copyright (C) 1996-2018 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# 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. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +[m4_warning([this file was generated for autoconf 2.69. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +# Copyright (C) 2002-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.16' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.16.1], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.16.1])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is '.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + AS_CASE([$CONFIG_FILES], + [*\'*], [eval set x "$CONFIG_FILES"], + [*], [set x $CONFIG_FILES]) + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`AS_DIRNAME(["$am_mf"])` + am_filepart=`AS_BASENAME(["$am_mf"])` + AM_RUN_LOG([cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles]) || am_rc=$? + done + if test $am_rc -ne 0; then + AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. Try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking).]) + fi + AS_UNSET([am_dirpart]) + AS_UNSET([am_filepart]) + AS_UNSET([am_mf]) + AS_UNSET([am_rc]) + rm -f conftest-deps.mk +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking is enabled. +# This creates each '.Po' and '.Plo' makefile fragment that we'll need in +# order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.65])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) + +# Copyright (C) 2003-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAKE_INCLUDE() +# ----------------- +# Check whether make has an 'include' directive that can support all +# the idioms we need for our automatic dependency tracking code. +AC_DEFUN([AM_MAKE_INCLUDE], +[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) + AS_CASE([$?:`cat confinc.out 2>/dev/null`], + ['0:this is the am__doit target'], + [AS_CASE([$s], + [BSD], [am__include='.include' am__quote='"'], + [am__include='include' am__quote=''])]) + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +AC_MSG_RESULT([${_am_result}]) +AC_SUBST([am__include])]) +AC_SUBST([am__quote])]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# -------------------- +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) + +# _AM_SET_OPTIONS(OPTIONS) +# ------------------------ +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) + +# Copyright (C) 2009-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# ("yes" being less verbose, "no" or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor 'install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in "make install-strip", and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +# +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + diff --git a/detox/latest/compile b/detox/latest/compile new file mode 100755 index 0000000..99e5052 --- /dev/null +++ b/detox/latest/compile @@ -0,0 +1,348 @@ +#! /bin/sh +# Wrapper for compilers which do not understand '-c -o'. + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# Written by Tom Tromey . +# +# 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 2, 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 . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file 'INSTALL'. + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ + icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; +esac + +ofile= +cfile= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no '-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # '.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` + +# Create the lock directory. +# Note: use '[/\\:.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/detox/latest/config.log b/detox/latest/config.log new file mode 100644 index 0000000..fac562d --- /dev/null +++ b/detox/latest/config.log @@ -0,0 +1,2286 @@ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by detox configure 1.4.5, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ ./configure + +## --------- ## +## Platform. ## +## --------- ## + +hostname = roguenova +uname -m = x86_64 +uname -r = 6.5.0-14-generic +uname -s = Linux +uname -v = #14-Ubuntu SMP PREEMPT_DYNAMIC Tue Nov 14 14:59:49 UTC 2023 + +/usr/bin/uname -p = x86_64 +/bin/uname -X = unknown + +/bin/arch = x86_64 +/usr/bin/arch -k = unknown +/usr/convex/getsysinfo = unknown +/usr/bin/hostinfo = unknown +/bin/machine = unknown +/usr/bin/oslevel = unknown +/bin/universe = unknown + +PATH: /home/linuxbrew/.linuxbrew/bin +PATH: /home/linuxbrew/.linuxbrew/sbin +PATH: /usr/local/sbin +PATH: /usr/local/bin +PATH: /usr/sbin +PATH: /usr/bin +PATH: /sbin +PATH: /bin +PATH: /usr/games +PATH: /usr/local/games +PATH: /snap/bin +PATH: /home/tcsenpai/custom/bin +PATH: /home/tcsenpai/custom/local/bin +PATH: /home/tcsenpai/powertux_folder/bin + + +## ----------- ## +## Core tests. ## +## ----------- ## + +configure:2181: checking for a BSD-compatible install +configure:2249: result: /usr/bin/install -c +configure:2260: checking whether build environment is sane +configure:2315: result: yes +configure:2466: checking for a thread-safe mkdir -p +configure:2505: result: /usr/bin/mkdir -p +configure:2512: checking for gawk +configure:2542: result: no +configure:2512: checking for mawk +configure:2528: found /usr/bin/mawk +configure:2539: result: mawk +configure:2550: checking whether make sets $(MAKE) +configure:2572: result: yes +configure:2601: checking whether make supports nested variables +configure:2618: result: yes +configure:2793: checking for gcc +configure:2809: found /usr/bin/gcc +configure:2820: result: gcc +configure:3049: checking for C compiler version +configure:3058: gcc --version >&5 +gcc (Ubuntu 13.2.0-4ubuntu3) 13.2.0 +Copyright (C) 2023 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +configure:3069: $? = 0 +configure:3058: gcc -v >&5 +Using built-in specs. +COLLECT_GCC=gcc +COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper +OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 13.2.0-4ubuntu3' --with-bugurl=file:///usr/share/doc/gcc-13/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-13 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-13-XYspKM/gcc-13-13.2.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-13-XYspKM/gcc-13-13.2.0/debian/tmp-gcn/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2 +Thread model: posix +Supported LTO compression algorithms: zlib zstd +gcc version 13.2.0 (Ubuntu 13.2.0-4ubuntu3) +... rest of stderr output deleted ... +configure:3069: $? = 0 +configure:3058: gcc -V >&5 +gcc: error: unrecognized command-line option '-V' +gcc: fatal error: no input files +compilation terminated. +configure:3069: $? = 1 +configure:3058: gcc -qversion >&5 +gcc: error: unrecognized command-line option '-qversion'; did you mean '--version'? +gcc: fatal error: no input files +compilation terminated. +configure:3069: $? = 1 +configure:3089: checking whether the C compiler works +configure:3111: gcc conftest.c >&5 +configure:3115: $? = 0 +configure:3163: result: yes +configure:3166: checking for C compiler default output file name +configure:3168: result: a.out +configure:3174: checking for suffix of executables +configure:3181: gcc -o conftest conftest.c >&5 +configure:3185: $? = 0 +configure:3207: result: +configure:3229: checking whether we are cross compiling +configure:3237: gcc -o conftest conftest.c >&5 +configure:3241: $? = 0 +configure:3248: ./conftest +configure:3252: $? = 0 +configure:3267: result: no +configure:3272: checking for suffix of object files +configure:3294: gcc -c conftest.c >&5 +configure:3298: $? = 0 +configure:3319: result: o +configure:3323: checking whether we are using the GNU C compiler +configure:3342: gcc -c conftest.c >&5 +configure:3342: $? = 0 +configure:3351: result: yes +configure:3360: checking whether gcc accepts -g +configure:3380: gcc -c -g conftest.c >&5 +configure:3380: $? = 0 +configure:3421: result: yes +configure:3438: checking for gcc option to accept ISO C89 +configure:3501: gcc -c -g -O2 conftest.c >&5 +configure:3501: $? = 0 +configure:3514: result: none needed +configure:3539: checking whether gcc understands -c and -o together +configure:3561: gcc -c conftest.c -o conftest2.o +configure:3564: $? = 0 +configure:3561: gcc -c conftest.c -o conftest2.o +configure:3564: $? = 0 +configure:3576: result: yes +configure:3596: checking whether make supports the include directive +configure:3611: make -f confmf.GNU && cat confinc.out +this is the am__doit target +configure:3614: $? = 0 +configure:3633: result: yes (GNU style) +configure:3658: checking dependency style of gcc +configure:3769: result: gcc3 +configure:3789: checking for flex +configure:3805: found /usr/bin/flex +configure:3816: result: flex +configure:3854: flex conftest.l +configure:3858: $? = 0 +configure:3860: checking lex output file root +configure:3874: result: lex.yy +configure:3879: checking lex library +configure:3893: gcc -o conftest -g -O2 conftest.c >&5 +/usr/bin/ld: /tmp/cc7hSeTi.o: in function `input': +/home/tcsenpai/Downloads/detox-1.4.5/lex.yy.c:1180:(.text+0xf17): undefined reference to `yywrap' +/usr/bin/ld: /tmp/cc7hSeTi.o: in function `yylex': +/home/tcsenpai/Downloads/detox-1.4.5/lex.yy.c:871:(.text+0x1129): undefined reference to `yywrap' +/usr/bin/ld: /tmp/cc7hSeTi.o: in function `main': +/home/tcsenpai/Downloads/detox-1.4.5/conftest.l:17:(.text.startup+0xd): undefined reference to `yywrap' +collect2: error: ld returned 1 exit status +configure:3893: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "detox" +| #define PACKAGE_TARNAME "detox" +| #define PACKAGE_VERSION "1.4.5" +| #define PACKAGE_STRING "detox 1.4.5" +| #define PACKAGE_BUGREPORT "detox.dharple at gmail.com" +| #define PACKAGE_URL "https://github.com/dharple/detox" +| #define PACKAGE "detox" +| #define VERSION "1.4.5" +| /* end confdefs.h. */ +| +| #line 3 "lex.yy.c" +| +| #define YY_INT_ALIGNED short int +| +| /* A lexical scanner generated by flex */ +| +| #define FLEX_SCANNER +| #define YY_FLEX_MAJOR_VERSION 2 +| #define YY_FLEX_MINOR_VERSION 6 +| #define YY_FLEX_SUBMINOR_VERSION 4 +| #if YY_FLEX_SUBMINOR_VERSION > 0 +| #define FLEX_BETA +| #endif +| +| /* First, we deal with platform-specific or compiler-specific issues. */ +| +| /* begin standard C headers. */ +| #include +| #include +| #include +| #include +| +| /* end standard C headers. */ +| +| /* flex integer type definitions */ +| +| #ifndef FLEXINT_H +| #define FLEXINT_H +| +| /* C99 systems have . Non-C99 systems may or may not. */ +| +| #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +| +| /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, +| * if you want the limit (max/min) macros for int types. +| */ +| #ifndef __STDC_LIMIT_MACROS +| #define __STDC_LIMIT_MACROS 1 +| #endif +| +| #include +| typedef int8_t flex_int8_t; +| typedef uint8_t flex_uint8_t; +| typedef int16_t flex_int16_t; +| typedef uint16_t flex_uint16_t; +| typedef int32_t flex_int32_t; +| typedef uint32_t flex_uint32_t; +| #else +| typedef signed char flex_int8_t; +| typedef short int flex_int16_t; +| typedef int flex_int32_t; +| typedef unsigned char flex_uint8_t; +| typedef unsigned short int flex_uint16_t; +| typedef unsigned int flex_uint32_t; +| +| /* Limits of integral types. */ +| #ifndef INT8_MIN +| #define INT8_MIN (-128) +| #endif +| #ifndef INT16_MIN +| #define INT16_MIN (-32767-1) +| #endif +| #ifndef INT32_MIN +| #define INT32_MIN (-2147483647-1) +| #endif +| #ifndef INT8_MAX +| #define INT8_MAX (127) +| #endif +| #ifndef INT16_MAX +| #define INT16_MAX (32767) +| #endif +| #ifndef INT32_MAX +| #define INT32_MAX (2147483647) +| #endif +| #ifndef UINT8_MAX +| #define UINT8_MAX (255U) +| #endif +| #ifndef UINT16_MAX +| #define UINT16_MAX (65535U) +| #endif +| #ifndef UINT32_MAX +| #define UINT32_MAX (4294967295U) +| #endif +| +| #ifndef SIZE_MAX +| #define SIZE_MAX (~(size_t)0) +| #endif +| +| #endif /* ! C99 */ +| +| #endif /* ! FLEXINT_H */ +| +| /* begin standard C++ headers. */ +| +| /* TODO: this is always defined, so inline it */ +| #define yyconst const +| +| #if defined(__GNUC__) && __GNUC__ >= 3 +| #define yynoreturn __attribute__((__noreturn__)) +| #else +| #define yynoreturn +| #endif +| +| /* Returned upon end-of-file. */ +| #define YY_NULL 0 +| +| /* Promotes a possibly negative, possibly signed char to an +| * integer in range [0..255] for use as an array index. +| */ +| #define YY_SC_TO_UI(c) ((YY_CHAR) (c)) +| +| /* Enter a start condition. This macro really ought to take a parameter, +| * but we do it the disgusting crufty way forced on us by the ()-less +| * definition of BEGIN. +| */ +| #define BEGIN (yy_start) = 1 + 2 * +| /* Translate the current start state into a value that can be later handed +| * to BEGIN to return to the state. The YYSTATE alias is for lex +| * compatibility. +| */ +| #define YY_START (((yy_start) - 1) / 2) +| #define YYSTATE YY_START +| /* Action number for EOF rule of a given start state. */ +| #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) +| /* Special action meaning "start processing a new file". */ +| #define YY_NEW_FILE yyrestart( yyin ) +| #define YY_END_OF_BUFFER_CHAR 0 +| +| /* Size of default input buffer. */ +| #ifndef YY_BUF_SIZE +| #ifdef __ia64__ +| /* On IA-64, the buffer size is 16k, not 8k. +| * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. +| * Ditto for the __ia64__ case accordingly. +| */ +| #define YY_BUF_SIZE 32768 +| #else +| #define YY_BUF_SIZE 16384 +| #endif /* __ia64__ */ +| #endif +| +| /* The state buf must be large enough to hold one state per character in the main buffer. +| */ +| #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) +| +| #ifndef YY_TYPEDEF_YY_BUFFER_STATE +| #define YY_TYPEDEF_YY_BUFFER_STATE +| typedef struct yy_buffer_state *YY_BUFFER_STATE; +| #endif +| +| #ifndef YY_TYPEDEF_YY_SIZE_T +| #define YY_TYPEDEF_YY_SIZE_T +| typedef size_t yy_size_t; +| #endif +| +| extern int yyleng; +| +| extern FILE *yyin, *yyout; +| +| #define EOB_ACT_CONTINUE_SCAN 0 +| #define EOB_ACT_END_OF_FILE 1 +| #define EOB_ACT_LAST_MATCH 2 +| +| #define YY_LESS_LINENO(n) +| #define YY_LINENO_REWIND_TO(ptr) +| +| /* Return all but the first "n" matched characters back to the input stream. */ +| #define yyless(n) \ +| do \ +| { \ +| /* Undo effects of setting up yytext. */ \ +| int yyless_macro_arg = (n); \ +| YY_LESS_LINENO(yyless_macro_arg);\ +| *yy_cp = (yy_hold_char); \ +| YY_RESTORE_YY_MORE_OFFSET \ +| (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ +| YY_DO_BEFORE_ACTION; /* set up yytext again */ \ +| } \ +| while ( 0 ) +| #define unput(c) yyunput( c, (yytext_ptr) ) +| +| #ifndef YY_STRUCT_YY_BUFFER_STATE +| #define YY_STRUCT_YY_BUFFER_STATE +| struct yy_buffer_state +| { +| FILE *yy_input_file; +| +| char *yy_ch_buf; /* input buffer */ +| char *yy_buf_pos; /* current position in input buffer */ +| +| /* Size of input buffer in bytes, not including room for EOB +| * characters. +| */ +| int yy_buf_size; +| +| /* Number of characters read into yy_ch_buf, not including EOB +| * characters. +| */ +| int yy_n_chars; +| +| /* Whether we "own" the buffer - i.e., we know we created it, +| * and can realloc() it to grow it, and should free() it to +| * delete it. +| */ +| int yy_is_our_buffer; +| +| /* Whether this is an "interactive" input source; if so, and +| * if we're using stdio for input, then we want to use getc() +| * instead of fread(), to make sure we stop fetching input after +| * each newline. +| */ +| int yy_is_interactive; +| +| /* Whether we're considered to be at the beginning of a line. +| * If so, '^' rules will be active on the next match, otherwise +| * not. +| */ +| int yy_at_bol; +| +| int yy_bs_lineno; /**< The line count. */ +| int yy_bs_column; /**< The column count. */ +| +| /* Whether to try to fill the input buffer when we reach the +| * end of it. +| */ +| int yy_fill_buffer; +| +| int yy_buffer_status; +| +| #define YY_BUFFER_NEW 0 +| #define YY_BUFFER_NORMAL 1 +| /* When an EOF's been seen but there's still some text to process +| * then we mark the buffer as YY_EOF_PENDING, to indicate that we +| * shouldn't try reading from the input source any more. We might +| * still have a bunch of tokens to match, though, because of +| * possible backing-up. +| * +| * When we actually see the EOF, we change the status to "new" +| * (via yyrestart()), so that the user can continue scanning by +| * just pointing yyin at a new input file. +| */ +| #define YY_BUFFER_EOF_PENDING 2 +| +| }; +| #endif /* !YY_STRUCT_YY_BUFFER_STATE */ +| +| /* Stack of input buffers. */ +| static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +| static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +| static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ +| +| /* We provide macros for accessing buffer states in case in the +| * future we want to put the buffer states in a more general +| * "scanner state". +| * +| * Returns the top of the stack, or NULL. +| */ +| #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ +| ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ +| : NULL) +| /* Same as previous macro, but useful when we know that the buffer stack is not +| * NULL or when we need an lvalue. For internal use only. +| */ +| #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] +| +| /* yy_hold_char holds the character lost when yytext is formed. */ +| static char yy_hold_char; +| static int yy_n_chars; /* number of characters read into yy_ch_buf */ +| int yyleng; +| +| /* Points to current character in buffer. */ +| static char *yy_c_buf_p = NULL; +| static int yy_init = 0; /* whether we need to initialize */ +| static int yy_start = 0; /* start state number */ +| +| /* Flag which is used to allow yywrap()'s to do buffer switches +| * instead of setting up a fresh yyin. A bit of a hack ... +| */ +| static int yy_did_buffer_switch_on_eof; +| +| void yyrestart ( FILE *input_file ); +| void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); +| YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); +| void yy_delete_buffer ( YY_BUFFER_STATE b ); +| void yy_flush_buffer ( YY_BUFFER_STATE b ); +| void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); +| void yypop_buffer_state ( void ); +| +| static void yyensure_buffer_stack ( void ); +| static void yy_load_buffer_state ( void ); +| static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); +| #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) +| +| YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); +| YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); +| YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); +| +| void *yyalloc ( yy_size_t ); +| void *yyrealloc ( void *, yy_size_t ); +| void yyfree ( void * ); +| +| #define yy_new_buffer yy_create_buffer +| #define yy_set_interactive(is_interactive) \ +| { \ +| if ( ! YY_CURRENT_BUFFER ){ \ +| yyensure_buffer_stack (); \ +| YY_CURRENT_BUFFER_LVALUE = \ +| yy_create_buffer( yyin, YY_BUF_SIZE ); \ +| } \ +| YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ +| } +| #define yy_set_bol(at_bol) \ +| { \ +| if ( ! YY_CURRENT_BUFFER ){\ +| yyensure_buffer_stack (); \ +| YY_CURRENT_BUFFER_LVALUE = \ +| yy_create_buffer( yyin, YY_BUF_SIZE ); \ +| } \ +| YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ +| } +| #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) +| +| /* Begin user sect3 */ +| typedef flex_uint8_t YY_CHAR; +| +| FILE *yyin = NULL, *yyout = NULL; +| +| typedef int yy_state_type; +| +| extern int yylineno; +| int yylineno = 1; +| +| extern char *yytext; +| #ifdef yytext_ptr +| #undef yytext_ptr +| #endif +| #define yytext_ptr yytext +| +| static yy_state_type yy_get_previous_state ( void ); +| static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); +| static int yy_get_next_buffer ( void ); +| static void yynoreturn yy_fatal_error ( const char* msg ); +| +| /* Done after the current pattern has been matched and before the +| * corresponding action - sets up yytext. +| */ +| #define YY_DO_BEFORE_ACTION \ +| (yytext_ptr) = yy_bp; \ +| (yytext_ptr) -= (yy_more_len); \ +| yyleng = (int) (yy_cp - (yytext_ptr)); \ +| (yy_hold_char) = *yy_cp; \ +| *yy_cp = '\0'; \ +| (yy_c_buf_p) = yy_cp; +| #define YY_NUM_RULES 8 +| #define YY_END_OF_BUFFER 9 +| /* This struct is not used in this scanner, +| but its presence is necessary. */ +| struct yy_trans_info +| { +| flex_int32_t yy_verify; +| flex_int32_t yy_nxt; +| }; +| static const flex_int16_t yy_acclist[23] = +| { 0, +| 9, 7, 8, 8, 1, 7, 8, 2, 7, 8, +| 3, 7, 8, 4, 7, 8, 5, 7, 8, 6, +| 7, 8 +| } ; +| +| static const flex_int16_t yy_accept[14] = +| { 0, +| 1, 1, 1, 2, 4, 5, 8, 11, 14, 17, +| 20, 23, 23 +| } ; +| +| static const YY_CHAR yy_ec[256] = +| { 0, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 3, 4, 5, 6, +| +| 7, 8, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +| 1, 1, 1, 1, 1 +| } ; +| +| static const YY_CHAR yy_meta[9] = +| { 0, +| 1, 1, 1, 1, 1, 1, 1, 1 +| } ; +| +| static const flex_int16_t yy_base[13] = +| { 0, +| 0, 0, 9, 10, 10, 10, 10, 10, 10, 10, +| 10, 10 +| } ; +| +| static const flex_int16_t yy_def[13] = +| { 0, +| 12, 1, 12, 12, 12, 12, 12, 12, 12, 12, +| 12, 0 +| } ; +| +| static const flex_int16_t yy_nxt[19] = +| { 0, +| 4, 5, 6, 7, 8, 9, 10, 11, 12, 3, +| 12, 12, 12, 12, 12, 12, 12, 12 +| } ; +| +| static const flex_int16_t yy_chk[19] = +| { 0, +| 1, 1, 1, 1, 1, 1, 1, 1, 3, 12, +| 12, 12, 12, 12, 12, 12, 12, 12 +| } ; +| +| extern int yy_flex_debug; +| int yy_flex_debug = 0; +| +| static yy_state_type *yy_state_buf=0, *yy_state_ptr=0; +| static char *yy_full_match; +| static int yy_lp; +| #define REJECT \ +| { \ +| *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ \ +| yy_cp = (yy_full_match); /* restore poss. backed-over text */ \ +| ++(yy_lp); \ +| goto find_rule; \ +| } +| +| static int yy_more_flag = 0; +| static int yy_more_len = 0; +| #define yymore() ((yy_more_flag) = 1) +| #define YY_MORE_ADJ (yy_more_len) +| #define YY_RESTORE_YY_MORE_OFFSET +| char *yytext; +| #line 1 "conftest.l" +| #line 460 "lex.yy.c" +| +| #define INITIAL 0 +| +| #ifndef YY_NO_UNISTD_H +| /* Special case for "unistd.h", since it is non-ANSI. We include it way +| * down here because we want the user's section 1 to have been scanned first. +| * The user has a chance to override it with an option. +| */ +| #include +| #endif +| +| #ifndef YY_EXTRA_TYPE +| #define YY_EXTRA_TYPE void * +| #endif +| +| static int yy_init_globals ( void ); +| +| /* Accessor methods to globals. +| These are made visible to non-reentrant scanners for convenience. */ +| +| int yylex_destroy ( void ); +| +| int yyget_debug ( void ); +| +| void yyset_debug ( int debug_flag ); +| +| YY_EXTRA_TYPE yyget_extra ( void ); +| +| void yyset_extra ( YY_EXTRA_TYPE user_defined ); +| +| FILE *yyget_in ( void ); +| +| void yyset_in ( FILE * _in_str ); +| +| FILE *yyget_out ( void ); +| +| void yyset_out ( FILE * _out_str ); +| +| int yyget_leng ( void ); +| +| char *yyget_text ( void ); +| +| int yyget_lineno ( void ); +| +| void yyset_lineno ( int _line_number ); +| +| /* Macros after this point can all be overridden by user definitions in +| * section 1. +| */ +| +| #ifndef YY_SKIP_YYWRAP +| #ifdef __cplusplus +| extern "C" int yywrap ( void ); +| #else +| extern int yywrap ( void ); +| #endif +| #endif +| +| #ifndef YY_NO_UNPUT +| +| static void yyunput ( int c, char *buf_ptr ); +| +| #endif +| +| #ifndef yytext_ptr +| static void yy_flex_strncpy ( char *, const char *, int ); +| #endif +| +| #ifdef YY_NEED_STRLEN +| static int yy_flex_strlen ( const char * ); +| #endif +| +| #ifndef YY_NO_INPUT +| #ifdef __cplusplus +| static int yyinput ( void ); +| #else +| static int input ( void ); +| #endif +| +| #endif +| +| /* Amount of stuff to slurp up with each read. */ +| #ifndef YY_READ_BUF_SIZE +| #ifdef __ia64__ +| /* On IA-64, the buffer size is 16k, not 8k */ +| #define YY_READ_BUF_SIZE 16384 +| #else +| #define YY_READ_BUF_SIZE 8192 +| #endif /* __ia64__ */ +| #endif +| +| /* Copy whatever the last rule matched to the standard output. */ +| #ifndef ECHO +| /* This used to be an fputs(), but since the string might contain NUL's, +| * we now use fwrite(). +| */ +| #define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) +| #endif +| +| /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, +| * is returned in "result". +| */ +| #ifndef YY_INPUT +| #define YY_INPUT(buf,result,max_size) \ +| if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ +| { \ +| int c = '*'; \ +| int n; \ +| for ( n = 0; n < max_size && \ +| (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ +| buf[n] = (char) c; \ +| if ( c == '\n' ) \ +| buf[n++] = (char) c; \ +| if ( c == EOF && ferror( yyin ) ) \ +| YY_FATAL_ERROR( "input in flex scanner failed" ); \ +| result = n; \ +| } \ +| else \ +| { \ +| errno=0; \ +| while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ +| { \ +| if( errno != EINTR) \ +| { \ +| YY_FATAL_ERROR( "input in flex scanner failed" ); \ +| break; \ +| } \ +| errno=0; \ +| clearerr(yyin); \ +| } \ +| }\ +| \ +| +| #endif +| +| /* No semi-colon after return; correct usage is to write "yyterminate();" - +| * we don't want an extra ';' after the "return" because that will cause +| * some compilers to complain about unreachable statements. +| */ +| #ifndef yyterminate +| #define yyterminate() return YY_NULL +| #endif +| +| /* Number of entries by which start-condition stack grows. */ +| #ifndef YY_START_STACK_INCR +| #define YY_START_STACK_INCR 25 +| #endif +| +| /* Report a fatal error. */ +| #ifndef YY_FATAL_ERROR +| #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +| #endif +| +| /* end tables serialization structures and prototypes */ +| +| /* Default declaration of generated scanner - a define so the user can +| * easily add parameters. +| */ +| #ifndef YY_DECL +| #define YY_DECL_IS_OURS 1 +| +| extern int yylex (void); +| +| #define YY_DECL int yylex (void) +| #endif /* !YY_DECL */ +| +| /* Code executed at the beginning of each rule, after yytext and yyleng +| * have been set up. +| */ +| #ifndef YY_USER_ACTION +| #define YY_USER_ACTION +| #endif +| +| /* Code executed at the end of each rule. */ +| #ifndef YY_BREAK +| #define YY_BREAK /*LINTED*/break; +| #endif +| +| #define YY_RULE_SETUP \ +| YY_USER_ACTION +| +| /** The main scanner function which does all the work. +| */ +| YY_DECL +| { +| yy_state_type yy_current_state; +| char *yy_cp, *yy_bp; +| int yy_act; +| +| if ( !(yy_init) ) +| { +| (yy_init) = 1; +| +| #ifdef YY_USER_INIT +| YY_USER_INIT; +| #endif +| +| /* Create the reject buffer large enough to save one state per allowed character. */ +| if ( ! (yy_state_buf) ) +| (yy_state_buf) = (yy_state_type *)yyalloc(YY_STATE_BUF_SIZE ); +| if ( ! (yy_state_buf) ) +| YY_FATAL_ERROR( "out of dynamic memory in yylex()" ); +| +| if ( ! (yy_start) ) +| (yy_start) = 1; /* first start state */ +| +| if ( ! yyin ) +| yyin = stdin; +| +| if ( ! yyout ) +| yyout = stdout; +| +| if ( ! YY_CURRENT_BUFFER ) { +| yyensure_buffer_stack (); +| YY_CURRENT_BUFFER_LVALUE = +| yy_create_buffer( yyin, YY_BUF_SIZE ); +| } +| +| yy_load_buffer_state( ); +| } +| +| { +| #line 1 "conftest.l" +| +| #line 685 "lex.yy.c" +| +| while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ +| { +| (yy_more_len) = 0; +| if ( (yy_more_flag) ) +| { +| (yy_more_len) = (int) ((yy_c_buf_p) - (yytext_ptr)); +| (yy_more_flag) = 0; +| } +| yy_cp = (yy_c_buf_p); +| +| /* Support of yytext. */ +| *yy_cp = (yy_hold_char); +| +| /* yy_bp points to the position in yy_ch_buf of the start of +| * the current run. +| */ +| yy_bp = yy_cp; +| +| yy_current_state = (yy_start); +| +| (yy_state_ptr) = (yy_state_buf); +| *(yy_state_ptr)++ = yy_current_state; +| +| yy_match: +| do +| { +| YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; +| while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) +| { +| yy_current_state = (int) yy_def[yy_current_state]; +| if ( yy_current_state >= 13 ) +| yy_c = yy_meta[yy_c]; +| } +| yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; +| *(yy_state_ptr)++ = yy_current_state; +| ++yy_cp; +| } +| while ( yy_base[yy_current_state] != 10 ); +| +| yy_find_action: +| yy_current_state = *--(yy_state_ptr); +| (yy_lp) = yy_accept[yy_current_state]; +| +| find_rule: /* we branch to this label when backing up */ +| +| for ( ; ; ) /* until we find what rule we matched */ +| { +| if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] ) +| { +| yy_act = yy_acclist[(yy_lp)]; +| { +| (yy_full_match) = yy_cp; +| break; +| } +| } +| --yy_cp; +| yy_current_state = *--(yy_state_ptr); +| (yy_lp) = yy_accept[yy_current_state]; +| } +| +| YY_DO_BEFORE_ACTION; +| +| do_action: /* This label is used only to access EOF actions. */ +| +| switch ( yy_act ) +| { /* beginning of action switch */ +| case 1: +| YY_RULE_SETUP +| #line 2 "conftest.l" +| { ECHO; } +| YY_BREAK +| case 2: +| YY_RULE_SETUP +| #line 3 "conftest.l" +| { REJECT; } +| YY_BREAK +| case 3: +| YY_RULE_SETUP +| #line 4 "conftest.l" +| { yymore (); } +| YY_BREAK +| case 4: +| YY_RULE_SETUP +| #line 5 "conftest.l" +| { yyless (1); } +| YY_BREAK +| case 5: +| YY_RULE_SETUP +| #line 6 "conftest.l" +| { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */ +| yyless ((input () != 0)); } +| YY_BREAK +| case 6: +| YY_RULE_SETUP +| #line 8 "conftest.l" +| { unput (yytext[0]); } +| YY_BREAK +| case 7: +| YY_RULE_SETUP +| #line 9 "conftest.l" +| { BEGIN INITIAL; } +| YY_BREAK +| case 8: +| YY_RULE_SETUP +| #line 10 "conftest.l" +| ECHO; +| YY_BREAK +| #line 794 "lex.yy.c" +| case YY_STATE_EOF(INITIAL): +| yyterminate(); +| +| case YY_END_OF_BUFFER: +| { +| /* Amount of text matched not including the EOB char. */ +| int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; +| +| /* Undo the effects of YY_DO_BEFORE_ACTION. */ +| *yy_cp = (yy_hold_char); +| YY_RESTORE_YY_MORE_OFFSET +| +| if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) +| { +| /* We're scanning a new file or input source. It's +| * possible that this happened because the user +| * just pointed yyin at a new source and called +| * yylex(). If so, then we have to assure +| * consistency between YY_CURRENT_BUFFER and our +| * globals. Here is the right place to do so, because +| * this is the first action (other than possibly a +| * back-up) that will match for the new input source. +| */ +| (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; +| YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; +| YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; +| } +| +| /* Note that here we test for yy_c_buf_p "<=" to the position +| * of the first EOB in the buffer, since yy_c_buf_p will +| * already have been incremented past the NUL character +| * (since all states make transitions on EOB to the +| * end-of-buffer state). Contrast this with the test +| * in input(). +| */ +| if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) +| { /* This was really a NUL. */ +| yy_state_type yy_next_state; +| +| (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; +| +| yy_current_state = yy_get_previous_state( ); +| +| /* Okay, we're now positioned to make the NUL +| * transition. We couldn't have +| * yy_get_previous_state() go ahead and do it +| * for us because it doesn't know how to deal +| * with the possibility of jamming (and we don't +| * want to build jamming into it because then it +| * will run more slowly). +| */ +| +| yy_next_state = yy_try_NUL_trans( yy_current_state ); +| +| yy_bp = (yytext_ptr) + YY_MORE_ADJ; +| +| if ( yy_next_state ) +| { +| /* Consume the NUL. */ +| yy_cp = ++(yy_c_buf_p); +| yy_current_state = yy_next_state; +| goto yy_match; +| } +| +| else +| { +| yy_cp = (yy_c_buf_p); +| goto yy_find_action; +| } +| } +| +| else switch ( yy_get_next_buffer( ) ) +| { +| case EOB_ACT_END_OF_FILE: +| { +| (yy_did_buffer_switch_on_eof) = 0; +| +| if ( yywrap( ) ) +| { +| /* Note: because we've taken care in +| * yy_get_next_buffer() to have set up +| * yytext, we can now set up +| * yy_c_buf_p so that if some total +| * hoser (like flex itself) wants to +| * call the scanner after we return the +| * YY_NULL, it'll still work - another +| * YY_NULL will get returned. +| */ +| (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; +| +| yy_act = YY_STATE_EOF(YY_START); +| goto do_action; +| } +| +| else +| { +| if ( ! (yy_did_buffer_switch_on_eof) ) +| YY_NEW_FILE; +| } +| break; +| } +| +| case EOB_ACT_CONTINUE_SCAN: +| (yy_c_buf_p) = +| (yytext_ptr) + yy_amount_of_matched_text; +| +| yy_current_state = yy_get_previous_state( ); +| +| yy_cp = (yy_c_buf_p); +| yy_bp = (yytext_ptr) + YY_MORE_ADJ; +| goto yy_match; +| +| case EOB_ACT_LAST_MATCH: +| (yy_c_buf_p) = +| &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; +| +| yy_current_state = yy_get_previous_state( ); +| +| yy_cp = (yy_c_buf_p); +| yy_bp = (yytext_ptr) + YY_MORE_ADJ; +| goto yy_find_action; +| } +| break; +| } +| +| default: +| YY_FATAL_ERROR( +| "fatal flex scanner internal error--no action found" ); +| } /* end of action switch */ +| } /* end of scanning one token */ +| } /* end of user's declarations */ +| } /* end of yylex */ +| +| /* yy_get_next_buffer - try to read in a new buffer +| * +| * Returns a code representing an action: +| * EOB_ACT_LAST_MATCH - +| * EOB_ACT_CONTINUE_SCAN - continue scanning from current position +| * EOB_ACT_END_OF_FILE - end of file +| */ +| static int yy_get_next_buffer (void) +| { +| char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; +| char *source = (yytext_ptr); +| int number_to_move, i; +| int ret_val; +| +| if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) +| YY_FATAL_ERROR( +| "fatal flex scanner internal error--end of buffer missed" ); +| +| if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) +| { /* Don't try to fill the buffer, so this is an EOF. */ +| if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) +| { +| /* We matched a single character, the EOB, so +| * treat this as a final EOF. +| */ +| return EOB_ACT_END_OF_FILE; +| } +| +| else +| { +| /* We matched some text prior to the EOB, first +| * process it. +| */ +| return EOB_ACT_LAST_MATCH; +| } +| } +| +| /* Try to read more data. */ +| +| /* First move last chars to start of buffer. */ +| number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); +| +| for ( i = 0; i < number_to_move; ++i ) +| *(dest++) = *(source++); +| +| if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) +| /* don't do the read, it's not guaranteed to return an EOF, +| * just force an EOF +| */ +| YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; +| +| else +| { +| int num_to_read = +| YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; +| +| while ( num_to_read <= 0 ) +| { /* Not enough room in the buffer - grow it. */ +| +| YY_FATAL_ERROR( +| "input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); +| +| } +| +| if ( num_to_read > YY_READ_BUF_SIZE ) +| num_to_read = YY_READ_BUF_SIZE; +| +| /* Read in more data. */ +| YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), +| (yy_n_chars), num_to_read ); +| +| YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); +| } +| +| if ( (yy_n_chars) == 0 ) +| { +| if ( number_to_move == YY_MORE_ADJ ) +| { +| ret_val = EOB_ACT_END_OF_FILE; +| yyrestart( yyin ); +| } +| +| else +| { +| ret_val = EOB_ACT_LAST_MATCH; +| YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = +| YY_BUFFER_EOF_PENDING; +| } +| } +| +| else +| ret_val = EOB_ACT_CONTINUE_SCAN; +| +| if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { +| /* Extend the array by 50%, plus the number we really need. */ +| int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); +| YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( +| (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); +| if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) +| YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); +| /* "- 2" to take care of EOB's */ +| YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); +| } +| +| (yy_n_chars) += number_to_move; +| YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; +| YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; +| +| (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; +| +| return ret_val; +| } +| +| /* yy_get_previous_state - get the state just before the EOB char was reached */ +| +| static yy_state_type yy_get_previous_state (void) +| { +| yy_state_type yy_current_state; +| char *yy_cp; +| +| yy_current_state = (yy_start); +| +| (yy_state_ptr) = (yy_state_buf); +| *(yy_state_ptr)++ = yy_current_state; +| +| for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) +| { +| YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); +| while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) +| { +| yy_current_state = (int) yy_def[yy_current_state]; +| if ( yy_current_state >= 13 ) +| yy_c = yy_meta[yy_c]; +| } +| yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; +| *(yy_state_ptr)++ = yy_current_state; +| } +| +| return yy_current_state; +| } +| +| /* yy_try_NUL_trans - try to make a transition on the NUL character +| * +| * synopsis +| * next_state = yy_try_NUL_trans( current_state ); +| */ +| static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +| { +| int yy_is_jam; +| +| YY_CHAR yy_c = 1; +| while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) +| { +| yy_current_state = (int) yy_def[yy_current_state]; +| if ( yy_current_state >= 13 ) +| yy_c = yy_meta[yy_c]; +| } +| yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; +| yy_is_jam = (yy_current_state == 12); +| if ( ! yy_is_jam ) +| *(yy_state_ptr)++ = yy_current_state; +| +| return yy_is_jam ? 0 : yy_current_state; +| } +| +| #ifndef YY_NO_UNPUT +| +| static void yyunput (int c, char * yy_bp ) +| { +| char *yy_cp; +| +| yy_cp = (yy_c_buf_p); +| +| /* undo effects of setting up yytext */ +| *yy_cp = (yy_hold_char); +| +| if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) +| { /* need to shift things up to make room */ +| /* +2 for EOB chars. */ +| int number_to_move = (yy_n_chars) + 2; +| char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ +| YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; +| char *source = +| &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; +| +| while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) +| *--dest = *--source; +| +| yy_cp += (int) (dest - source); +| yy_bp += (int) (dest - source); +| YY_CURRENT_BUFFER_LVALUE->yy_n_chars = +| (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; +| +| if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) +| YY_FATAL_ERROR( "flex scanner push-back overflow" ); +| } +| +| *--yy_cp = (char) c; +| +| (yytext_ptr) = yy_bp; +| (yy_hold_char) = *yy_cp; +| (yy_c_buf_p) = yy_cp; +| } +| +| #endif +| +| #ifndef YY_NO_INPUT +| #ifdef __cplusplus +| static int yyinput (void) +| #else +| static int input (void) +| #endif +| +| { +| int c; +| +| *(yy_c_buf_p) = (yy_hold_char); +| +| if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) +| { +| /* yy_c_buf_p now points to the character we want to return. +| * If this occurs *before* the EOB characters, then it's a +| * valid NUL; if not, then we've hit the end of the buffer. +| */ +| if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) +| /* This was really a NUL. */ +| *(yy_c_buf_p) = '\0'; +| +| else +| { /* need more input */ +| int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); +| ++(yy_c_buf_p); +| +| switch ( yy_get_next_buffer( ) ) +| { +| case EOB_ACT_LAST_MATCH: +| /* This happens because yy_g_n_b() +| * sees that we've accumulated a +| * token and flags that we need to +| * try matching the token before +| * proceeding. But for input(), +| * there's no matching to consider. +| * So convert the EOB_ACT_LAST_MATCH +| * to EOB_ACT_END_OF_FILE. +| */ +| +| /* Reset buffer status. */ +| yyrestart( yyin ); +| +| /*FALLTHROUGH*/ +| +| case EOB_ACT_END_OF_FILE: +| { +| if ( yywrap( ) ) +| return 0; +| +| if ( ! (yy_did_buffer_switch_on_eof) ) +| YY_NEW_FILE; +| #ifdef __cplusplus +| return yyinput(); +| #else +| return input(); +| #endif +| } +| +| case EOB_ACT_CONTINUE_SCAN: +| (yy_c_buf_p) = (yytext_ptr) + offset; +| break; +| } +| } +| } +| +| c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ +| *(yy_c_buf_p) = '\0'; /* preserve yytext */ +| (yy_hold_char) = *++(yy_c_buf_p); +| +| return c; +| } +| #endif /* ifndef YY_NO_INPUT */ +| +| /** Immediately switch to a different input stream. +| * @param input_file A readable stream. +| * +| * @note This function does not reset the start condition to @c INITIAL . +| */ +| void yyrestart (FILE * input_file ) +| { +| +| if ( ! YY_CURRENT_BUFFER ){ +| yyensure_buffer_stack (); +| YY_CURRENT_BUFFER_LVALUE = +| yy_create_buffer( yyin, YY_BUF_SIZE ); +| } +| +| yy_init_buffer( YY_CURRENT_BUFFER, input_file ); +| yy_load_buffer_state( ); +| } +| +| /** Switch to a different input buffer. +| * @param new_buffer The new input buffer. +| * +| */ +| void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +| { +| +| /* TODO. We should be able to replace this entire function body +| * with +| * yypop_buffer_state(); +| * yypush_buffer_state(new_buffer); +| */ +| yyensure_buffer_stack (); +| if ( YY_CURRENT_BUFFER == new_buffer ) +| return; +| +| if ( YY_CURRENT_BUFFER ) +| { +| /* Flush out information for old buffer. */ +| *(yy_c_buf_p) = (yy_hold_char); +| YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); +| YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); +| } +| +| YY_CURRENT_BUFFER_LVALUE = new_buffer; +| yy_load_buffer_state( ); +| +| /* We don't actually know whether we did this switch during +| * EOF (yywrap()) processing, but the only time this flag +| * is looked at is after yywrap() is called, so it's safe +| * to go ahead and always set it. +| */ +| (yy_did_buffer_switch_on_eof) = 1; +| } +| +| static void yy_load_buffer_state (void) +| { +| (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; +| (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; +| yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; +| (yy_hold_char) = *(yy_c_buf_p); +| } +| +| /** Allocate and initialize an input buffer state. +| * @param file A readable stream. +| * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. +| * +| * @return the allocated buffer state. +| */ +| YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) +| { +| YY_BUFFER_STATE b; +| +| b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); +| if ( ! b ) +| YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); +| +| b->yy_buf_size = size; +| +| /* yy_ch_buf has to be 2 characters longer than the size given because +| * we need to put in 2 end-of-buffer characters. +| */ +| b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); +| if ( ! b->yy_ch_buf ) +| YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); +| +| b->yy_is_our_buffer = 1; +| +| yy_init_buffer( b, file ); +| +| return b; +| } +| +| /** Destroy the buffer. +| * @param b a buffer created with yy_create_buffer() +| * +| */ +| void yy_delete_buffer (YY_BUFFER_STATE b ) +| { +| +| if ( ! b ) +| return; +| +| if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ +| YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; +| +| if ( b->yy_is_our_buffer ) +| yyfree( (void *) b->yy_ch_buf ); +| +| yyfree( (void *) b ); +| } +| +| /* Initializes or reinitializes a buffer. +| * This function is sometimes called more than once on the same buffer, +| * such as during a yyrestart() or at EOF. +| */ +| static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) +| +| { +| int oerrno = errno; +| +| yy_flush_buffer( b ); +| +| b->yy_input_file = file; +| b->yy_fill_buffer = 1; +| +| /* If b is the current buffer, then yy_init_buffer was _probably_ +| * called from yyrestart() or through yy_get_next_buffer. +| * In that case, we don't want to reset the lineno or column. +| */ +| if (b != YY_CURRENT_BUFFER){ +| b->yy_bs_lineno = 1; +| b->yy_bs_column = 0; +| } +| +| b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; +| +| errno = oerrno; +| } +| +| /** Discard all buffered characters. On the next scan, YY_INPUT will be called. +| * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. +| * +| */ +| void yy_flush_buffer (YY_BUFFER_STATE b ) +| { +| if ( ! b ) +| return; +| +| b->yy_n_chars = 0; +| +| /* We always need two end-of-buffer characters. The first causes +| * a transition to the end-of-buffer state. The second causes +| * a jam in that state. +| */ +| b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; +| b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; +| +| b->yy_buf_pos = &b->yy_ch_buf[0]; +| +| b->yy_at_bol = 1; +| b->yy_buffer_status = YY_BUFFER_NEW; +| +| if ( b == YY_CURRENT_BUFFER ) +| yy_load_buffer_state( ); +| } +| +| /** Pushes the new state onto the stack. The new state becomes +| * the current state. This function will allocate the stack +| * if necessary. +| * @param new_buffer The new state. +| * +| */ +| void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) +| { +| if (new_buffer == NULL) +| return; +| +| yyensure_buffer_stack(); +| +| /* This block is copied from yy_switch_to_buffer. */ +| if ( YY_CURRENT_BUFFER ) +| { +| /* Flush out information for old buffer. */ +| *(yy_c_buf_p) = (yy_hold_char); +| YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); +| YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); +| } +| +| /* Only push if top exists. Otherwise, replace top. */ +| if (YY_CURRENT_BUFFER) +| (yy_buffer_stack_top)++; +| YY_CURRENT_BUFFER_LVALUE = new_buffer; +| +| /* copied from yy_switch_to_buffer. */ +| yy_load_buffer_state( ); +| (yy_did_buffer_switch_on_eof) = 1; +| } +| +| /** Removes and deletes the top of the stack, if present. +| * The next element becomes the new top. +| * +| */ +| void yypop_buffer_state (void) +| { +| if (!YY_CURRENT_BUFFER) +| return; +| +| yy_delete_buffer(YY_CURRENT_BUFFER ); +| YY_CURRENT_BUFFER_LVALUE = NULL; +| if ((yy_buffer_stack_top) > 0) +| --(yy_buffer_stack_top); +| +| if (YY_CURRENT_BUFFER) { +| yy_load_buffer_state( ); +| (yy_did_buffer_switch_on_eof) = 1; +| } +| } +| +| /* Allocates the stack if it does not exist. +| * Guarantees space for at least one push. +| */ +| static void yyensure_buffer_stack (void) +| { +| yy_size_t num_to_alloc; +| +| if (!(yy_buffer_stack)) { +| +| /* First allocation is just for 2 elements, since we don't know if this +| * scanner will even need a stack. We use 2 instead of 1 to avoid an +| * immediate realloc on the next call. +| */ +| num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ +| (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc +| (num_to_alloc * sizeof(struct yy_buffer_state*) +| ); +| if ( ! (yy_buffer_stack) ) +| YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); +| +| memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); +| +| (yy_buffer_stack_max) = num_to_alloc; +| (yy_buffer_stack_top) = 0; +| return; +| } +| +| if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ +| +| /* Increase the buffer to prepare for a possible push. */ +| yy_size_t grow_size = 8 /* arbitrary grow size */; +| +| num_to_alloc = (yy_buffer_stack_max) + grow_size; +| (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc +| ((yy_buffer_stack), +| num_to_alloc * sizeof(struct yy_buffer_state*) +| ); +| if ( ! (yy_buffer_stack) ) +| YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); +| +| /* zero only the new slots.*/ +| memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); +| (yy_buffer_stack_max) = num_to_alloc; +| } +| } +| +| /** Setup the input buffer state to scan directly from a user-specified character buffer. +| * @param base the character buffer +| * @param size the size in bytes of the character buffer +| * +| * @return the newly allocated buffer state object. +| */ +| YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) +| { +| YY_BUFFER_STATE b; +| +| if ( size < 2 || +| base[size-2] != YY_END_OF_BUFFER_CHAR || +| base[size-1] != YY_END_OF_BUFFER_CHAR ) +| /* They forgot to leave room for the EOB's. */ +| return NULL; +| +| b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); +| if ( ! b ) +| YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); +| +| b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ +| b->yy_buf_pos = b->yy_ch_buf = base; +| b->yy_is_our_buffer = 0; +| b->yy_input_file = NULL; +| b->yy_n_chars = b->yy_buf_size; +| b->yy_is_interactive = 0; +| b->yy_at_bol = 1; +| b->yy_fill_buffer = 0; +| b->yy_buffer_status = YY_BUFFER_NEW; +| +| yy_switch_to_buffer( b ); +| +| return b; +| } +| +| /** Setup the input buffer state to scan a string. The next call to yylex() will +| * scan from a @e copy of @a str. +| * @param yystr a NUL-terminated string to scan +| * +| * @return the newly allocated buffer state object. +| * @note If you want to scan bytes that may contain NUL values, then use +| * yy_scan_bytes() instead. +| */ +| YY_BUFFER_STATE yy_scan_string (const char * yystr ) +| { +| +| return yy_scan_bytes( yystr, (int) strlen(yystr) ); +| } +| +| /** Setup the input buffer state to scan the given bytes. The next call to yylex() will +| * scan from a @e copy of @a bytes. +| * @param yybytes the byte buffer to scan +| * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. +| * +| * @return the newly allocated buffer state object. +| */ +| YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) +| { +| YY_BUFFER_STATE b; +| char *buf; +| yy_size_t n; +| int i; +| +| /* Get memory for full buffer, including space for trailing EOB's. */ +| n = (yy_size_t) (_yybytes_len + 2); +| buf = (char *) yyalloc( n ); +| if ( ! buf ) +| YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); +| +| for ( i = 0; i < _yybytes_len; ++i ) +| buf[i] = yybytes[i]; +| +| buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; +| +| b = yy_scan_buffer( buf, n ); +| if ( ! b ) +| YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); +| +| /* It's okay to grow etc. this buffer, and we should throw it +| * away when we're done. +| */ +| b->yy_is_our_buffer = 1; +| +| return b; +| } +| +| #ifndef YY_EXIT_FAILURE +| #define YY_EXIT_FAILURE 2 +| #endif +| +| static void yynoreturn yy_fatal_error (const char* msg ) +| { +| fprintf( stderr, "%s\n", msg ); +| exit( YY_EXIT_FAILURE ); +| } +| +| /* Redefine yyless() so it works in section 3 code. */ +| +| #undef yyless +| #define yyless(n) \ +| do \ +| { \ +| /* Undo effects of setting up yytext. */ \ +| int yyless_macro_arg = (n); \ +| YY_LESS_LINENO(yyless_macro_arg);\ +| yytext[yyleng] = (yy_hold_char); \ +| (yy_c_buf_p) = yytext + yyless_macro_arg; \ +| (yy_hold_char) = *(yy_c_buf_p); \ +| *(yy_c_buf_p) = '\0'; \ +| yyleng = yyless_macro_arg; \ +| } \ +| while ( 0 ) +| +| /* Accessor methods (get/set functions) to struct members. */ +| +| /** Get the current line number. +| * +| */ +| int yyget_lineno (void) +| { +| +| return yylineno; +| } +| +| /** Get the input stream. +| * +| */ +| FILE *yyget_in (void) +| { +| return yyin; +| } +| +| /** Get the output stream. +| * +| */ +| FILE *yyget_out (void) +| { +| return yyout; +| } +| +| /** Get the length of the current token. +| * +| */ +| int yyget_leng (void) +| { +| return yyleng; +| } +| +| /** Get the current token. +| * +| */ +| +| char *yyget_text (void) +| { +| return yytext; +| } +| +| /** Set the current line number. +| * @param _line_number line number +| * +| */ +| void yyset_lineno (int _line_number ) +| { +| +| yylineno = _line_number; +| } +| +| /** Set the input stream. This does not discard the current +| * input buffer. +| * @param _in_str A readable stream. +| * +| * @see yy_switch_to_buffer +| */ +| void yyset_in (FILE * _in_str ) +| { +| yyin = _in_str ; +| } +| +| void yyset_out (FILE * _out_str ) +| { +| yyout = _out_str ; +| } +| +| int yyget_debug (void) +| { +| return yy_flex_debug; +| } +| +| void yyset_debug (int _bdebug ) +| { +| yy_flex_debug = _bdebug ; +| } +| +| static int yy_init_globals (void) +| { +| /* Initialization is the same as for the non-reentrant scanner. +| * This function is called from yylex_destroy(), so don't allocate here. +| */ +| +| (yy_buffer_stack) = NULL; +| (yy_buffer_stack_top) = 0; +| (yy_buffer_stack_max) = 0; +| (yy_c_buf_p) = NULL; +| (yy_init) = 0; +| (yy_start) = 0; +| +| (yy_state_buf) = 0; +| (yy_state_ptr) = 0; +| (yy_full_match) = 0; +| (yy_lp) = 0; +| +| /* Defined in main.c */ +| #ifdef YY_STDINIT +| yyin = stdin; +| yyout = stdout; +| #else +| yyin = NULL; +| yyout = NULL; +| #endif +| +| /* For future reference: Set errno on error, since we are called by +| * yylex_init() +| */ +| return 0; +| } +| +| /* yylex_destroy is for both reentrant and non-reentrant scanners. */ +| int yylex_destroy (void) +| { +| +| /* Pop the buffer stack, destroying each element. */ +| while(YY_CURRENT_BUFFER){ +| yy_delete_buffer( YY_CURRENT_BUFFER ); +| YY_CURRENT_BUFFER_LVALUE = NULL; +| yypop_buffer_state(); +| } +| +| /* Destroy the stack itself. */ +| yyfree((yy_buffer_stack) ); +| (yy_buffer_stack) = NULL; +| +| yyfree ( (yy_state_buf) ); +| (yy_state_buf) = NULL; +| +| /* Reset the globals. This is important in a non-reentrant scanner so the next time +| * yylex() is called, initialization will occur. */ +| yy_init_globals( ); +| +| return 0; +| } +| +| /* +| * Internal utility routines. +| */ +| +| #ifndef yytext_ptr +| static void yy_flex_strncpy (char* s1, const char * s2, int n ) +| { +| +| int i; +| for ( i = 0; i < n; ++i ) +| s1[i] = s2[i]; +| } +| #endif +| +| #ifdef YY_NEED_STRLEN +| static int yy_flex_strlen (const char * s ) +| { +| int n; +| for ( n = 0; s[n]; ++n ) +| ; +| +| return n; +| } +| #endif +| +| void *yyalloc (yy_size_t size ) +| { +| return malloc(size); +| } +| +| void *yyrealloc (void * ptr, yy_size_t size ) +| { +| +| /* The cast to (char *) in the following accommodates both +| * implementations that use char* generic pointers, and those +| * that use void* generic pointers. It works with the latter +| * because both ANSI C and C++ allow castless assignment from +| * any pointer type to void*, and deal with argument conversions +| * as though doing an assignment. +| */ +| return realloc(ptr, size); +| } +| +| void yyfree (void * ptr ) +| { +| free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ +| } +| +| #define YYTABLES_NAME "yytables" +| +| #line 10 "conftest.l" +| +| #ifdef YYTEXT_POINTER +| extern char *yytext; +| #endif +| int +| main (void) +| { +| return ! yylex () + ! yywrap (); +| } +configure:3893: gcc -o conftest -g -O2 conftest.c -lfl >&5 +configure:3893: $? = 0 +configure:3903: result: -lfl +configure:3909: checking whether yytext is a pointer +configure:3926: gcc -o conftest -g -O2 conftest.c -lfl >&5 +configure:3926: $? = 0 +configure:3934: result: yes +configure:3948: checking for bison +configure:3964: found /usr/bin/bison +configure:3975: result: bison -y +configure:3990: checking for getopt_long +configure:3990: gcc -o conftest -g -O2 conftest.c >&5 +configure:3990: $? = 0 +configure:3990: result: yes +configure:4004: checking how to run the C preprocessor +configure:4035: gcc -E conftest.c +configure:4035: $? = 0 +configure:4049: gcc -E conftest.c +conftest.c:13:10: fatal error: ac_nonexistent.h: No such file or directory + 13 | #include + | ^~~~~~~~~~~~~~~~~~ +compilation terminated. +configure:4049: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "detox" +| #define PACKAGE_TARNAME "detox" +| #define PACKAGE_VERSION "1.4.5" +| #define PACKAGE_STRING "detox 1.4.5" +| #define PACKAGE_BUGREPORT "detox.dharple at gmail.com" +| #define PACKAGE_URL "https://github.com/dharple/detox" +| #define PACKAGE "detox" +| #define VERSION "1.4.5" +| #define YYTEXT_POINTER 1 +| #define HAVE_GETOPT_LONG 1 +| /* end confdefs.h. */ +| #include +configure:4074: result: gcc -E +configure:4094: gcc -E conftest.c +configure:4094: $? = 0 +configure:4108: gcc -E conftest.c +conftest.c:13:10: fatal error: ac_nonexistent.h: No such file or directory + 13 | #include + | ^~~~~~~~~~~~~~~~~~ +compilation terminated. +configure:4108: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "detox" +| #define PACKAGE_TARNAME "detox" +| #define PACKAGE_VERSION "1.4.5" +| #define PACKAGE_STRING "detox 1.4.5" +| #define PACKAGE_BUGREPORT "detox.dharple at gmail.com" +| #define PACKAGE_URL "https://github.com/dharple/detox" +| #define PACKAGE "detox" +| #define VERSION "1.4.5" +| #define YYTEXT_POINTER 1 +| #define HAVE_GETOPT_LONG 1 +| /* end confdefs.h. */ +| #include +configure:4137: checking for grep that handles long lines and -e +configure:4195: result: /usr/bin/grep +configure:4200: checking for egrep +configure:4262: result: /usr/bin/grep -E +configure:4267: checking for ANSI C header files +configure:4287: gcc -c -g -O2 conftest.c >&5 +configure:4287: $? = 0 +configure:4360: gcc -o conftest -g -O2 conftest.c >&5 +configure:4360: $? = 0 +configure:4360: ./conftest +configure:4360: $? = 0 +configure:4371: result: yes +configure:4384: checking for sys/types.h +configure:4384: gcc -c -g -O2 conftest.c >&5 +configure:4384: $? = 0 +configure:4384: result: yes +configure:4384: checking for sys/stat.h +configure:4384: gcc -c -g -O2 conftest.c >&5 +configure:4384: $? = 0 +configure:4384: result: yes +configure:4384: checking for stdlib.h +configure:4384: gcc -c -g -O2 conftest.c >&5 +configure:4384: $? = 0 +configure:4384: result: yes +configure:4384: checking for string.h +configure:4384: gcc -c -g -O2 conftest.c >&5 +configure:4384: $? = 0 +configure:4384: result: yes +configure:4384: checking for memory.h +configure:4384: gcc -c -g -O2 conftest.c >&5 +configure:4384: $? = 0 +configure:4384: result: yes +configure:4384: checking for strings.h +configure:4384: gcc -c -g -O2 conftest.c >&5 +configure:4384: $? = 0 +configure:4384: result: yes +configure:4384: checking for inttypes.h +configure:4384: gcc -c -g -O2 conftest.c >&5 +configure:4384: $? = 0 +configure:4384: result: yes +configure:4384: checking for stdint.h +configure:4384: gcc -c -g -O2 conftest.c >&5 +configure:4384: $? = 0 +configure:4384: result: yes +configure:4384: checking for unistd.h +configure:4384: gcc -c -g -O2 conftest.c >&5 +configure:4384: $? = 0 +configure:4384: result: yes +configure:4396: checking for struct stat.st_blocks +configure:4396: gcc -c -g -O2 conftest.c >&5 +configure:4396: $? = 0 +configure:4396: result: yes +configure:4424: checking for special C compiler options needed for large files +configure:4469: result: no +configure:4475: checking for _FILE_OFFSET_BITS value needed for large files +configure:4500: gcc -c -g -O2 conftest.c >&5 +configure:4500: $? = 0 +configure:4532: result: no +configure:4723: checking that generated files are newer than configure +configure:4729: result: done +configure:4752: creating ./config.status + +## ---------------------- ## +## Running config.status. ## +## ---------------------- ## + +This file was extended by detox config.status 1.4.5, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = + CONFIG_HEADERS = + CONFIG_LINKS = + CONFIG_COMMANDS = + $ ./config.status + +on roguenova + +config.status:864: creating Makefile +config.status:864: creating src/Makefile +config.status:864: creating src/config.h +config.status:1045: src/config.h is unchanged +config.status:1093: executing depfiles commands +config.status:1170: cd src && sed -e '/# am--include-marker/d' Makefile | make -f - am--depfiles +config.status:1175: $? = 0 + +## ---------------- ## +## Cache variables. ## +## ---------------- ## + +ac_cv_c_compiler_gnu=yes +ac_cv_env_CC_set= +ac_cv_env_CC_value= +ac_cv_env_CFLAGS_set= +ac_cv_env_CFLAGS_value= +ac_cv_env_CPPFLAGS_set= +ac_cv_env_CPPFLAGS_value= +ac_cv_env_CPP_set= +ac_cv_env_CPP_value= +ac_cv_env_LDFLAGS_set= +ac_cv_env_LDFLAGS_value= +ac_cv_env_LIBS_set= +ac_cv_env_LIBS_value= +ac_cv_env_YACC_set= +ac_cv_env_YACC_value= +ac_cv_env_YFLAGS_set= +ac_cv_env_YFLAGS_value= +ac_cv_env_build_alias_set= +ac_cv_env_build_alias_value= +ac_cv_env_host_alias_set= +ac_cv_env_host_alias_value= +ac_cv_env_target_alias_set= +ac_cv_env_target_alias_value= +ac_cv_func_getopt_long=yes +ac_cv_header_inttypes_h=yes +ac_cv_header_memory_h=yes +ac_cv_header_stdc=yes +ac_cv_header_stdint_h=yes +ac_cv_header_stdlib_h=yes +ac_cv_header_string_h=yes +ac_cv_header_strings_h=yes +ac_cv_header_sys_stat_h=yes +ac_cv_header_sys_types_h=yes +ac_cv_header_unistd_h=yes +ac_cv_lib_lex=-lfl +ac_cv_member_struct_stat_st_blocks=yes +ac_cv_objext=o +ac_cv_path_EGREP='/usr/bin/grep -E' +ac_cv_path_GREP=/usr/bin/grep +ac_cv_path_install='/usr/bin/install -c' +ac_cv_path_mkdir=/usr/bin/mkdir +ac_cv_prog_AWK=mawk +ac_cv_prog_CPP='gcc -E' +ac_cv_prog_LEX=flex +ac_cv_prog_YACC='bison -y' +ac_cv_prog_ac_ct_CC=gcc +ac_cv_prog_cc_c89= +ac_cv_prog_cc_g=yes +ac_cv_prog_lex_root=lex.yy +ac_cv_prog_lex_yytext_pointer=yes +ac_cv_prog_make_make_set=yes +ac_cv_sys_file_offset_bits=no +ac_cv_sys_largefile_CC=no +am_cv_CC_dependencies_compiler_type=gcc3 +am_cv_make_support_nested_variables=yes +am_cv_prog_cc_c_o=yes + +## ----------------- ## +## Output variables. ## +## ----------------- ## + +ACLOCAL='${SHELL} /home/tcsenpai/Downloads/detox-1.4.5/missing aclocal-1.16' +AMDEPBACKSLASH='\' +AMDEP_FALSE='#' +AMDEP_TRUE='' +AMTAR='$${TAR-tar}' +AM_BACKSLASH='\' +AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +AM_DEFAULT_VERBOSITY='1' +AM_V='$(V)' +AUTOCONF='${SHELL} /home/tcsenpai/Downloads/detox-1.4.5/missing autoconf' +AUTOHEADER='${SHELL} /home/tcsenpai/Downloads/detox-1.4.5/missing autoheader' +AUTOMAKE='${SHELL} /home/tcsenpai/Downloads/detox-1.4.5/missing automake-1.16' +AWK='mawk' +CC='gcc' +CCDEPMODE='depmode=gcc3' +CFLAGS='-g -O2' +CPP='gcc -E' +CPPFLAGS='' +CYGPATH_W='echo' +DEFS='-DHAVE_CONFIG_H' +DEPDIR='.deps' +ECHO_C='' +ECHO_N='-n' +ECHO_T='' +EGREP='/usr/bin/grep -E' +EXEEXT='' +GREP='/usr/bin/grep' +INSTALL_DATA='${INSTALL} -m 644' +INSTALL_PROGRAM='${INSTALL}' +INSTALL_SCRIPT='${INSTALL}' +INSTALL_STRIP_PROGRAM='$(install_sh) -c -s' +LDFLAGS='' +LEX='flex' +LEXLIB='-lfl' +LEX_OUTPUT_ROOT='lex.yy' +LIBOBJS='' +LIBS='' +LTLIBOBJS='' +MAKEINFO='${SHELL} /home/tcsenpai/Downloads/detox-1.4.5/missing makeinfo' +MKDIR_P='/usr/bin/mkdir -p' +OBJEXT='o' +PACKAGE='detox' +PACKAGE_BUGREPORT='detox.dharple at gmail.com' +PACKAGE_NAME='detox' +PACKAGE_STRING='detox 1.4.5' +PACKAGE_TARNAME='detox' +PACKAGE_URL='https://github.com/dharple/detox' +PACKAGE_VERSION='1.4.5' +PATH_SEPARATOR=':' +SET_MAKE='' +SHELL='/bin/bash' +STRIP='' +VERSION='1.4.5' +YACC='bison -y' +YFLAGS='' +ac_ct_CC='gcc' +am__EXEEXT_FALSE='' +am__EXEEXT_TRUE='#' +am__fastdepCC_FALSE='#' +am__fastdepCC_TRUE='' +am__include='include' +am__isrc='' +am__leading_dot='.' +am__nodep='_no' +am__quote='' +am__tar='$${TAR-tar} chof - "$$tardir"' +am__untar='$${TAR-tar} xf -' +bindir='${exec_prefix}/bin' +build_alias='' +datadir='${datarootdir}' +datarootdir='${prefix}/share' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +dvidir='${docdir}' +exec_prefix='${prefix}' +host_alias='' +htmldir='${docdir}' +includedir='${prefix}/include' +infodir='${datarootdir}/info' +install_sh='${SHELL} /home/tcsenpai/Downloads/detox-1.4.5/install-sh' +libdir='${exec_prefix}/lib' +libexecdir='${exec_prefix}/libexec' +localedir='${datarootdir}/locale' +localstatedir='${prefix}/var' +mandir='${datarootdir}/man' +mkdir_p='$(MKDIR_P)' +oldincludedir='/usr/include' +pdfdir='${docdir}' +prefix='/usr/local' +program_transform_name='s,x,x,' +psdir='${docdir}' +runstatedir='${localstatedir}/run' +sbindir='${exec_prefix}/sbin' +sharedstatedir='${prefix}/com' +sysconfdir='${prefix}/etc' +target_alias='' + +## ----------- ## +## confdefs.h. ## +## ----------- ## + +/* confdefs.h */ +#define PACKAGE_NAME "detox" +#define PACKAGE_TARNAME "detox" +#define PACKAGE_VERSION "1.4.5" +#define PACKAGE_STRING "detox 1.4.5" +#define PACKAGE_BUGREPORT "detox.dharple at gmail.com" +#define PACKAGE_URL "https://github.com/dharple/detox" +#define PACKAGE "detox" +#define VERSION "1.4.5" +#define YYTEXT_POINTER 1 +#define HAVE_GETOPT_LONG 1 +#define STDC_HEADERS 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRING_H 1 +#define HAVE_MEMORY_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_STRUCT_STAT_ST_BLOCKS 1 +#define HAVE_ST_BLOCKS 1 + +configure: exit 0 diff --git a/detox/latest/config.status b/detox/latest/config.status new file mode 100755 index 0000000..a389949 --- /dev/null +++ b/detox/latest/config.status @@ -0,0 +1,1199 @@ +#! /bin/bash +# Generated by configure. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=${CONFIG_SHELL-/bin/bash} +export SHELL +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by detox $as_me 1.4.5, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +# Files that config.status was made for. +config_files=" Makefile src/Makefile" +config_headers=" src/config.h" +config_commands=" depfiles" + +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to . +detox home page: ." + +ac_cs_config="" +ac_cs_version="\ +detox config.status 1.4.5 +configured by ./configure, generated by GNU Autoconf 2.69, + with options \"$ac_cs_config\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='/home/tcsenpai/Downloads/detox-1.4.5' +srcdir='.' +INSTALL='/usr/bin/install -c' +MKDIR_P='/usr/bin/mkdir -p' +AWK='mawk' +test -n "$AWK" || AWK=awk +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +if $ac_cs_recheck; then + set X /bin/bash './configure' $ac_configure_extra_args --no-create --no-recursion + shift + $as_echo "running CONFIG_SHELL=/bin/bash $*" >&6 + CONFIG_SHELL='/bin/bash' + export CONFIG_SHELL + exec "$@" +fi + +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +# +# INIT-COMMANDS +# +AMDEP_TRUE="" MAKE="make" + + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +cat >>"$ac_tmp/subs1.awk" <<\_ACAWK && +S["am__EXEEXT_FALSE"]="" +S["am__EXEEXT_TRUE"]="#" +S["LTLIBOBJS"]="" +S["LIBOBJS"]="" +S["EGREP"]="/usr/bin/grep -E" +S["GREP"]="/usr/bin/grep" +S["CPP"]="gcc -E" +S["YFLAGS"]="" +S["YACC"]="bison -y" +S["LEXLIB"]="-lfl" +S["LEX_OUTPUT_ROOT"]="lex.yy" +S["LEX"]="flex" +S["am__fastdepCC_FALSE"]="#" +S["am__fastdepCC_TRUE"]="" +S["CCDEPMODE"]="depmode=gcc3" +S["am__nodep"]="_no" +S["AMDEPBACKSLASH"]="\\" +S["AMDEP_FALSE"]="#" +S["AMDEP_TRUE"]="" +S["am__include"]="include" +S["DEPDIR"]=".deps" +S["OBJEXT"]="o" +S["EXEEXT"]="" +S["ac_ct_CC"]="gcc" +S["CPPFLAGS"]="" +S["LDFLAGS"]="" +S["CFLAGS"]="-g -O2" +S["CC"]="gcc" +S["AM_BACKSLASH"]="\\" +S["AM_DEFAULT_VERBOSITY"]="1" +S["AM_DEFAULT_V"]="$(AM_DEFAULT_VERBOSITY)" +S["AM_V"]="$(V)" +S["am__untar"]="$${TAR-tar} xf -" +S["am__tar"]="$${TAR-tar} chof - \"$$tardir\"" +S["AMTAR"]="$${TAR-tar}" +S["am__leading_dot"]="." +S["SET_MAKE"]="" +S["AWK"]="mawk" +S["mkdir_p"]="$(MKDIR_P)" +S["MKDIR_P"]="/usr/bin/mkdir -p" +S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s" +S["STRIP"]="" +S["install_sh"]="${SHELL} /home/tcsenpai/Downloads/detox-1.4.5/install-sh" +S["MAKEINFO"]="${SHELL} /home/tcsenpai/Downloads/detox-1.4.5/missing makeinfo" +S["AUTOHEADER"]="${SHELL} /home/tcsenpai/Downloads/detox-1.4.5/missing autoheader" +S["AUTOMAKE"]="${SHELL} /home/tcsenpai/Downloads/detox-1.4.5/missing automake-1.16" +S["AUTOCONF"]="${SHELL} /home/tcsenpai/Downloads/detox-1.4.5/missing autoconf" +S["ACLOCAL"]="${SHELL} /home/tcsenpai/Downloads/detox-1.4.5/missing aclocal-1.16" +S["VERSION"]="1.4.5" +S["PACKAGE"]="detox" +S["CYGPATH_W"]="echo" +S["am__isrc"]="" +S["INSTALL_DATA"]="${INSTALL} -m 644" +S["INSTALL_SCRIPT"]="${INSTALL}" +S["INSTALL_PROGRAM"]="${INSTALL}" +S["target_alias"]="" +S["host_alias"]="" +S["build_alias"]="" +S["LIBS"]="" +S["ECHO_T"]="" +S["ECHO_N"]="-n" +S["ECHO_C"]="" +S["DEFS"]="-DHAVE_CONFIG_H" +S["mandir"]="${datarootdir}/man" +S["localedir"]="${datarootdir}/locale" +S["libdir"]="${exec_prefix}/lib" +S["psdir"]="${docdir}" +S["pdfdir"]="${docdir}" +S["dvidir"]="${docdir}" +S["htmldir"]="${docdir}" +S["infodir"]="${datarootdir}/info" +S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}" +S["oldincludedir"]="/usr/include" +S["includedir"]="${prefix}/include" +S["runstatedir"]="${localstatedir}/run" +S["localstatedir"]="${prefix}/var" +S["sharedstatedir"]="${prefix}/com" +S["sysconfdir"]="${prefix}/etc" +S["datadir"]="${datarootdir}" +S["datarootdir"]="${prefix}/share" +S["libexecdir"]="${exec_prefix}/libexec" +S["sbindir"]="${exec_prefix}/sbin" +S["bindir"]="${exec_prefix}/bin" +S["program_transform_name"]="s,x,x," +S["prefix"]="/usr/local" +S["exec_prefix"]="${prefix}" +S["PACKAGE_URL"]="https://github.com/dharple/detox" +S["PACKAGE_BUGREPORT"]="detox.dharple at gmail.com" +S["PACKAGE_STRING"]="detox 1.4.5" +S["PACKAGE_VERSION"]="1.4.5" +S["PACKAGE_TARNAME"]="detox" +S["PACKAGE_NAME"]="detox" +S["PATH_SEPARATOR"]=":" +S["SHELL"]="/bin/bash" +S["am__quote"]="" +_ACAWK +cat >>"$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +D["PACKAGE_NAME"]=" \"detox\"" +D["PACKAGE_TARNAME"]=" \"detox\"" +D["PACKAGE_VERSION"]=" \"1.4.5\"" +D["PACKAGE_STRING"]=" \"detox 1.4.5\"" +D["PACKAGE_BUGREPORT"]=" \"detox.dharple at gmail.com\"" +D["PACKAGE_URL"]=" \"https://github.com/dharple/detox\"" +D["PACKAGE"]=" \"detox\"" +D["VERSION"]=" \"1.4.5\"" +D["YYTEXT_POINTER"]=" 1" +D["HAVE_GETOPT_LONG"]=" 1" +D["STDC_HEADERS"]=" 1" +D["HAVE_SYS_TYPES_H"]=" 1" +D["HAVE_SYS_STAT_H"]=" 1" +D["HAVE_STDLIB_H"]=" 1" +D["HAVE_STRING_H"]=" 1" +D["HAVE_MEMORY_H"]=" 1" +D["HAVE_STRINGS_H"]=" 1" +D["HAVE_INTTYPES_H"]=" 1" +D["HAVE_STDINT_H"]=" 1" +D["HAVE_UNISTD_H"]=" 1" +D["HAVE_STRUCT_STAT_ST_BLOCKS"]=" 1" +D["HAVE_ST_BLOCKS"]=" 1" + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*([\t (]|$)/ { + line = $ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + ac_datarootdir_hack=' + s&@datadir@&${datarootdir}&g + s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g + s&@infodir@&${datarootdir}/info&g + s&@localedir@&${datarootdir}/locale&g + s&@mandir@&${datarootdir}/man&g + s&\${datarootdir}&${prefix}/share&g' ;; +esac +ac_sed_extra="/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +} + +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + case $CONFIG_FILES in #( + *\'*) : + eval set x "$CONFIG_FILES" ;; #( + *) : + set x $CONFIG_FILES ;; #( + *) : + ;; +esac + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`$as_dirname -- "$am_mf" || +$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$am_mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + am_filepart=`$as_basename -- "$am_mf" || +$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { echo "$as_me:$LINENO: cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles" >&5 + (cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } || am_rc=$? + done + if test $am_rc -ne 0; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. Try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking). +See \`config.log' for more details" "$LINENO" 5; } + fi + { am_dirpart=; unset am_dirpart;} + { am_filepart=; unset am_filepart;} + { am_mf=; unset am_mf;} + { am_rc=; unset am_rc;} + rm -f conftest-deps.mk +} + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 diff --git a/detox/latest/configure b/detox/latest/configure new file mode 100755 index 0000000..7897f95 --- /dev/null +++ b/detox/latest/configure @@ -0,0 +1,6078 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69 for detox 1.4.5. +# +# Report bugs to . +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and detox.dharple at +$0: gmail.com about your system, including any error +$0: possibly output before this message. Then install a +$0: modern shell, or manually run the script under such a +$0: shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='detox' +PACKAGE_TARNAME='detox' +PACKAGE_VERSION='1.4.5' +PACKAGE_STRING='detox 1.4.5' +PACKAGE_BUGREPORT='detox.dharple at gmail.com' +PACKAGE_URL='https://github.com/dharple/detox' + +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIBOBJS +EGREP +GREP +CPP +YFLAGS +YACC +LEXLIB +LEX_OUTPUT_ROOT +LEX +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL +am__quote' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_dependency_tracking +enable_largefile +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +YACC +YFLAGS +CPP' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures detox 1.4.5 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/detox] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of detox 1.4.5:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --disable-largefile omit support for large files + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + YACC The `Yet Another Compiler Compiler' implementation to use. + Defaults to the first program found out of: `bison -y', `byacc', + `yacc'. + YFLAGS The list of arguments that will be passed by default to $YACC. + This script will default YFLAGS to the empty string to avoid a + default value of `-d' given by some make applications. + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +detox home page: . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +detox configure 1.4.5 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES +# ---------------------------------------------------- +# Tries to find if the field MEMBER exists in type AGGR, after including +# INCLUDES, setting cache variable VAR accordingly. +ac_fn_c_check_member () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 +$as_echo_n "checking for $2.$3... " >&6; } +if eval \${$4+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main () +{ +static $2 ac_aggr; +if (ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$4=yes" +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main () +{ +static $2 ac_aggr; +if (sizeof ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$4=yes" +else + eval "$4=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$4 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_member + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by detox $as_me 1.4.5, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +am__api_version='1.16' + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='detox' + VERSION='1.4.5' + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + + + + + + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; } +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 + (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + case $?:`cat confinc.out 2>/dev/null` in #( + '0:this is the am__doit target') : + case $s in #( + BSD) : + am__include='.include' am__quote='"' ;; #( + *) : + am__include='include' am__quote='' ;; +esac ;; #( + *) : + ;; +esac + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +$as_echo "${_am_result}" >&6; } + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +for ac_prog in flex lex +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LEX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LEX"; then + ac_cv_prog_LEX="$LEX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LEX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LEX=$ac_cv_prog_LEX +if test -n "$LEX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5 +$as_echo "$LEX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$LEX" && break +done +test -n "$LEX" || LEX=":" + +if test "x$LEX" != "x:"; then + cat >conftest.l <<_ACEOF +%% +a { ECHO; } +b { REJECT; } +c { yymore (); } +d { yyless (1); } +e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */ + yyless ((input () != 0)); } +f { unput (yytext[0]); } +. { BEGIN INITIAL; } +%% +#ifdef YYTEXT_POINTER +extern char *yytext; +#endif +int +main (void) +{ + return ! yylex () + ! yywrap (); +} +_ACEOF +{ { ac_try="$LEX conftest.l" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$LEX conftest.l") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking lex output file root" >&5 +$as_echo_n "checking lex output file root... " >&6; } +if ${ac_cv_prog_lex_root+:} false; then : + $as_echo_n "(cached) " >&6 +else + +if test -f lex.yy.c; then + ac_cv_prog_lex_root=lex.yy +elif test -f lexyy.c; then + ac_cv_prog_lex_root=lexyy +else + as_fn_error $? "cannot find output from $LEX; giving up" "$LINENO" 5 +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5 +$as_echo "$ac_cv_prog_lex_root" >&6; } +LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root + +if test -z "${LEXLIB+set}"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex library" >&5 +$as_echo_n "checking lex library... " >&6; } +if ${ac_cv_lib_lex+:} false; then : + $as_echo_n "(cached) " >&6 +else + + ac_save_LIBS=$LIBS + ac_cv_lib_lex='none needed' + for ac_lib in '' -lfl -ll; do + LIBS="$ac_lib $ac_save_LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +`cat $LEX_OUTPUT_ROOT.c` +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_lex=$ac_lib +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + test "$ac_cv_lib_lex" != 'none needed' && break + done + LIBS=$ac_save_LIBS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5 +$as_echo "$ac_cv_lib_lex" >&6; } + test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5 +$as_echo_n "checking whether yytext is a pointer... " >&6; } +if ${ac_cv_prog_lex_yytext_pointer+:} false; then : + $as_echo_n "(cached) " >&6 +else + # POSIX says lex can declare yytext either as a pointer or an array; the +# default is implementation-dependent. Figure out which it is, since +# not all implementations provide the %pointer and %array declarations. +ac_cv_prog_lex_yytext_pointer=no +ac_save_LIBS=$LIBS +LIBS="$LEXLIB $ac_save_LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #define YYTEXT_POINTER 1 +`cat $LEX_OUTPUT_ROOT.c` +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_prog_lex_yytext_pointer=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_save_LIBS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5 +$as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; } +if test $ac_cv_prog_lex_yytext_pointer = yes; then + +$as_echo "#define YYTEXT_POINTER 1" >>confdefs.h + +fi +rm -f conftest.l $LEX_OUTPUT_ROOT.c + +fi +for ac_prog in 'bison -y' byacc +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_YACC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$YACC"; then + ac_cv_prog_YACC="$YACC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_YACC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +YACC=$ac_cv_prog_YACC +if test -n "$YACC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5 +$as_echo "$YACC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$YACC" && break +done +test -n "$YACC" || YACC="yacc" + + +for ac_func in getopt_long +do : + ac_fn_c_check_func "$LINENO" "getopt_long" "ac_cv_func_getopt_long" +if test "x$ac_cv_func_getopt_long" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GETOPT_LONG 1 +_ACEOF + +fi +done + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +ac_fn_c_check_member "$LINENO" "struct stat" "st_blocks" "ac_cv_member_struct_stat_st_blocks" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_blocks" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_BLOCKS 1 +_ACEOF + + +$as_echo "#define HAVE_ST_BLOCKS 1" >>confdefs.h + +else + case " $LIBOBJS " in + *" fileblocks.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS fileblocks.$ac_objext" + ;; +esac + +fi + + + +# Check whether --enable-largefile was given. +if test "${enable_largefile+set}" = set; then : + enableval=$enable_largefile; +fi + +if test "$enable_largefile" != no; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 +$as_echo_n "checking for special C compiler options needed for large files... " >&6; } +if ${ac_cv_sys_largefile_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF + if ac_fn_c_try_compile "$LINENO"; then : + break +fi +rm -f core conftest.err conftest.$ac_objext + CC="$CC -n32" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_largefile_CC=' -n32'; break +fi +rm -f core conftest.err conftest.$ac_objext + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 +$as_echo "$ac_cv_sys_largefile_CC" >&6; } + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } +if ${ac_cv_sys_file_offset_bits+:} false; then : + $as_echo_n "(cached) " >&6 +else + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_file_offset_bits=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _FILE_OFFSET_BITS 64 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_file_offset_bits=64; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_sys_file_offset_bits=unknown + break +done +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 +$as_echo "$ac_cv_sys_file_offset_bits" >&6; } +case $ac_cv_sys_file_offset_bits in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits +_ACEOF +;; +esac +rm -rf conftest* + if test $ac_cv_sys_file_offset_bits = unknown; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 +$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } +if ${ac_cv_sys_large_files+:} false; then : + $as_echo_n "(cached) " >&6 +else + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_large_files=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _LARGE_FILES 1 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_large_files=1; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_sys_large_files=unknown + break +done +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 +$as_echo "$ac_cv_sys_large_files" >&6; } +case $ac_cv_sys_large_files in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _LARGE_FILES $ac_cv_sys_large_files +_ACEOF +;; +esac +rm -rf conftest* + fi + + +fi + + +ac_config_headers="$ac_config_headers src/config.h" + +ac_config_files="$ac_config_files Makefile src/Makefile" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +$as_echo_n "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +$as_echo "done" >&6; } + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by detox $as_me 1.4.5, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to . +detox home page: ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +detox config.status 1.4.5 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "src/config.h") CONFIG_HEADERS="$CONFIG_HEADERS src/config.h" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + case $CONFIG_FILES in #( + *\'*) : + eval set x "$CONFIG_FILES" ;; #( + *) : + set x $CONFIG_FILES ;; #( + *) : + ;; +esac + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`$as_dirname -- "$am_mf" || +$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$am_mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + am_filepart=`$as_basename -- "$am_mf" || +$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { echo "$as_me:$LINENO: cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles" >&5 + (cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } || am_rc=$? + done + if test $am_rc -ne 0; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. Try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking). +See \`config.log' for more details" "$LINENO" 5; } + fi + { am_dirpart=; unset am_dirpart;} + { am_filepart=; unset am_filepart;} + { am_mf=; unset am_mf;} + { am_rc=; unset am_rc;} + rm -f conftest-deps.mk +} + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/detox/latest/configure.ac b/detox/latest/configure.ac new file mode 100644 index 0000000..aba80ae --- /dev/null +++ b/detox/latest/configure.ac @@ -0,0 +1,19 @@ +# Process this file with autoconf to produce a configure script. +AC_INIT([detox], [1.4.5], [detox.dharple at gmail.com], [], [https://github.com/dharple/detox]) +AM_INIT_AUTOMAKE([foreign -Wall -Werror]) + +AC_PROG_CC +AC_PROG_LEX([noyywrap]) +AC_PROG_YACC + +AC_CHECK_FUNCS([getopt_long]) +AC_STRUCT_ST_BLOCKS + +AC_SYS_LARGEFILE + +AC_CONFIG_HEADERS([src/config.h]) +AC_CONFIG_FILES([ + Makefile + src/Makefile +]) +AC_OUTPUT diff --git a/detox/latest/depcomp b/detox/latest/depcomp new file mode 100755 index 0000000..65cbf70 --- /dev/null +++ b/detox/latest/depcomp @@ -0,0 +1,791 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 1999-2018 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 2, 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 . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by 'PROGRAMS ARGS'. + object Object file output by 'PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputting dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +# Get the directory component of the given path, and save it in the +# global variables '$dir'. Note that this directory component will +# be either empty or ending with a '/' character. This is deliberate. +set_dir_from () +{ + case $1 in + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; + *) dir=;; + esac +} + +# Get the suffix-stripped basename of the given path, and save it the +# global variable '$base'. +set_base_from () +{ + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` +} + +# If no dependency file was actually created by the compiler invocation, +# we still have to create a dummy depfile, to avoid errors with the +# Makefile "include basename.Plo" scheme. +make_dummy_depfile () +{ + echo "#dummy" > "$depfile" +} + +# Factor out some common post-processing of the generated depfile. +# Requires the auxiliary global variable '$tmpdepfile' to be set. +aix_post_process_depfile () +{ + # If the compiler actually managed to produce a dependency file, + # post-process it. + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependency.h'. + # Do two passes, one to just change these to + # $object: dependency.h + # and one to simply output + # dependency.h: + # which is needed to avoid the deleted-header problem. + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" + } > "$depfile" + rm -f "$tmpdepfile" + else + make_dummy_depfile + fi +} + +# A tabulation character. +tab=' ' +# A newline character. +nl=' +' +# Character ranges might be problematic outside the C locale. +# These definitions help. +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ +lower=abcdefghijklmnopqrstuvwxyz +digits=0123456789 +alpha=${upper}${lower} + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Avoid interferences from the environment. +gccflag= dashmflag= + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp +fi + +if test "$depmode" = msvc7msys; then + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 +fi + +if test "$depmode" = xlc; then + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. + gccflag=-qmakedep=gcc,-MF + depmode=gcc +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. +## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. +## (see the conditional assignment to $gccflag above). +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). Also, it might not be +## supported by the other compilers which use the 'gcc' depmode. +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The second -e expression handles DOS-style file names with drive + # letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the "deleted header file" problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. +## Some versions of gcc put a space before the ':'. On the theory +## that the space means something, we add a space to the output as +## well. hp depmode also adds that space, but also prefixes the VPATH +## to the object. Take care to not repeat it in the output. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like '#:fec' to the end of the + # dependency line. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ + | tr "$nl" ' ' >> "$depfile" + echo >> "$depfile" + # The second pass generates a dummy entry for each header file. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" + ;; + +xlc) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts '$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u + "$@" -Wc,-M + else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u + "$@" -M + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + aix_post_process_depfile + ;; + +tcc) + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 + # FIXME: That version still under development at the moment of writing. + # Make that this statement remains true also for stable, released + # versions. + # It will wrap lines (doesn't matter whether long or short) with a + # trailing '\', as in: + # + # foo.o : \ + # foo.c \ + # foo.h \ + # + # It will put a trailing '\' even on the last line, and will use leading + # spaces rather than leading tabs (at least since its commit 0394caf7 + # "Emit spaces for -MD"). + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. + # We have to change lines of the first kind to '$object: \'. + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" + # And for each line of the second kind, we have to emit a 'dep.h:' + # dummy dependency, to avoid the deleted-header problem. + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" + rm -f "$tmpdepfile" + ;; + +## The order of this option in the case statement is important, since the +## shell code in configure will try each of these formats in the order +## listed in this file. A plain '-MD' option would be understood by many +## compilers, so we must ensure this comes after the gcc and icc options. +pgcc) + # Portland's C compiler understands '-MD'. + # Will always output deps to 'file.d' where file is the root name of the + # source file under compilation, even if file resides in a subdirectory. + # The object file name does not affect the name of the '.d' file. + # pgcc 10.2 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using '\' : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + set_dir_from "$object" + # Use the source, not the object, to determine the base name, since + # that's sadly what pgcc will do too. + set_base_from "$source" + tmpdepfile=$base.d + + # For projects that build the same source file twice into different object + # files, the pgcc approach of using the *source* file root name can cause + # problems in parallel builds. Use a locking strategy to avoid stomping on + # the same $tmpdepfile. + lockdir=$base.d-lock + trap " + echo '$0: caught signal, cleaning up...' >&2 + rmdir '$lockdir' + exit 1 + " 1 2 13 15 + numtries=100 + i=$numtries + while test $i -gt 0; do + # mkdir is a portable test-and-set. + if mkdir "$lockdir" 2>/dev/null; then + # This process acquired the lock. + "$@" -MD + stat=$? + # Release the lock. + rmdir "$lockdir" + break + else + # If the lock is being held by a different process, wait + # until the winning process is done or we timeout. + while test -d "$lockdir" && test $i -gt 0; do + sleep 1 + i=`expr $i - 1` + done + fi + i=`expr $i - 1` + done + trap - 1 2 13 15 + if test $i -le 0; then + echo "$0: failed to acquire lock after $numtries attempts" >&2 + echo "$0: check lockdir '$lockdir'" >&2 + exit 1 + fi + + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" + # Add 'dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in 'foo.d' instead, so we check for that too. + # Subdirectories are respected. + set_dir_from "$object" + set_base_from "$object" + + if test "$libtool" = yes; then + # Libtool generates 2 separate objects for the 2 libraries. These + # two compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir$base.o.d # libtool 1.5 + tmpdepfile2=$dir.libs/$base.o.d # Likewise. + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + # Same post-processing that is required for AIX mode. + aix_post_process_depfile + ;; + +msvc7) + if test "$libtool" = yes; then + showIncludes=-Wc,-showIncludes + else + showIncludes=-showIncludes + fi + "$@" $showIncludes > "$tmpdepfile" + stat=$? + grep -v '^Note: including file: ' "$tmpdepfile" + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The first sed program below extracts the file names and escapes + # backslashes for cygpath. The second sed program outputs the file + # name when reading, but also accumulates all include files in the + # hold buffer in order to output them again at the end. This only + # works with sed implementations that can handle large buffers. + sed < "$tmpdepfile" -n ' +/^Note: including file: *\(.*\)/ { + s//\1/ + s/\\/\\\\/g + p +}' | $cygpath_u | sort -u | sed -n ' +s/ /\\ /g +s/\(.*\)/'"$tab"'\1 \\/p +s/.\(.*\) \\/\1:/ +H +$ { + s/.*/'"$tab"'/ + G + p +}' >> "$depfile" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash + rm -f "$tmpdepfile" + ;; + +msvc7msys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for ':' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. + "$@" $dashmflag | + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this sed invocation + # correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no eat=no + for arg + do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + if test $eat = yes; then + eat=no + continue + fi + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix=`echo "$object" | sed 's/^.*\././'` + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + # makedepend may prepend the VPATH from the source file name to the object. + # No need to regex-escape $object, excess matching of '.' is harmless. + sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process the last invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed '1,2d' "$tmpdepfile" \ + | tr ' ' "$nl" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E \ + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + | sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + IFS=" " + for arg + do + case "$arg" in + -o) + shift + ;; + $object) + shift + ;; + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" + echo "$tab" >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/detox/latest/etc/detoxrc.sample b/detox/latest/etc/detoxrc.sample new file mode 100644 index 0000000..866a2b2 --- /dev/null +++ b/detox/latest/etc/detoxrc.sample @@ -0,0 +1,84 @@ +# +# config file for detox(1) +# + +# +# Default sequence +# + +sequence default { + utf_8; + safe; + wipeup; +}; + +# +# Sequences meant primarily for detox +# + +# transliterates ISO8859-1 into ASCII +sequence "iso8859_1" { + iso8859_1; + safe; + wipeup; +}; + +# transliterates UTF-8 into ASCII +sequence "utf_8" { + utf_8; + safe; + wipeup; +}; + +# decodes CGI escaped characters +sequence "uncgi" { + uncgi; + safe; + wipeup; +}; + +# converts files to lower case +sequence "lower" { + iso8859_1; + safe; + lower; + wipeup; +}; + +# +# Sequences meant primarily for inline-detox +# + +# transliterates ISO8859-1 to ASCII +sequence "iso8859_1-only" { + iso8859_1; +}; + +# transliterates UTF-8 to ASCII +sequence "utf_8-only" { + utf_8; +}; + +# decodes CGI escaped characters +sequence "uncgi-only" { + uncgi; +}; + +# converts files to lower case +sequence "lower-only" { + lower; +}; + + +# +# Files to ignore (detox only) +# + +ignore { + filename ".arch-params"; + filename ".evolution"; + filename ".gnome"; + filename ".mozilla"; + filename ".themes"; + filename "{arch}"; +}; diff --git a/detox/latest/install-sh b/detox/latest/install-sh new file mode 100755 index 0000000..8175c64 --- /dev/null +++ b/detox/latest/install-sh @@ -0,0 +1,518 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2018-03-11.20; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# 'make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +tab=' ' +nl=' +' +IFS=" $tab$nl" + +# Set DOITPROG to "echo" to test this script. + +doit=${DOITPROG-} +doit_exec=${doit:-exec} + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +is_target_a_directory=possibly + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -s) stripcmd=$stripprog;; + + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) is_target_a_directory=never;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call 'install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names problematic for 'test' and other utilities. + case $src in + -* | [=\(\)!]) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + dst=$dst_arg + + # If destination is a directory, append the input filename. + if test -d "$dst"; then + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dstbase=`basename "$src"` + case $dst in + */) dst=$dst$dstbase;; + *) dst=$dst/$dstbase;; + esac + dstdir_status=0 + else + dstdir=`dirname "$dst"` + test -d "$dstdir" + dstdir_status=$? + fi + fi + + case $dstdir in + */) dstdirslash=$dstdir;; + *) dstdirslash=$dstdir/;; + esac + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + # Note that $RANDOM variable is not portable (e.g. dash); Use it + # here however when possible just to lower collision chance. + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + + trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 + + # Because "mkdir -p" follows existing symlinks and we likely work + # directly in world-writeable /tmp, make sure that the '$tmpdir' + # directory is successfully created first before we actually test + # 'mkdir -p' feature. + if (umask $mkdir_umask && + $mkdirprog $mkdir_mode "$tmpdir" && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + test_tmpdir="$tmpdir/a" + ls_ld_tmpdir=`ls -ld "$test_tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; + esac + + oIFS=$IFS + IFS=/ + set -f + set fnord $dstdir + shift + set +f + IFS=$oIFS + + prefixes= + + for d + do + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=${dstdirslash}_inst.$$_ + rmtmp=${dstdirslash}_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + set +f && + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/detox/latest/man/detox.1 b/detox/latest/man/detox.1 new file mode 100644 index 0000000..c3eed0e --- /dev/null +++ b/detox/latest/man/detox.1 @@ -0,0 +1,149 @@ +.\" +.\" This file is part of the Detox package. +.\" +.\" Copyright (c) Doug Harple +.\" +.\" For the full copyright and license information, please view the LICENSE +.\" file that was distributed with this source code. +.\" +.Dd February 11, 2021 +.Dt DETOX 1 +.Os +.Sh NAME +.Nm detox +.Nd clean up filenames +.Sh SYNOPSIS +.Nm +.Op Fl hnLrv +.Op Fl s Ar sequence +.Op Fl f Ar configfile +.Op Fl -dry-run +.Op Fl -special +.Ar +.Sh DESCRIPTION +The +.Nm +utility renames files to make them easier to work with. It removes +spaces and other such annoyances. It'll also translate or cleanup +Latin-1 (ISO 8859-1) characters encoded in 8-bit ASCII, Unicode +characters encoded in UTF-8, and CGI escaped characters. +.Ss Sequences +.Nm +is driven by a configurable series of filters, called a sequence. +Sequences are covered in more detail in +.Xr detoxrc 5 +and are discoverable with the +.Fl L +option. Some examples of default sequences are +.Cm iso8859_1 +and +.Cm utf_8 . +.Ss Options +The main options: +.Bl -tag -width Fl +.It Fl f Ar configfile +Use +.Ar configfile +instead of the default configuration files for loading translation +sequences. No other config file will be parsed. +.It Fl h -help +Display helpful information. +.It Fl L +List the currently available sequences. When paired with +.Fl v +this option shows what filters are used in each sequence and any +properties applied to the filters. +.It Fl n -dry-run +Doesn't actually change anything. This implies the +.Fl v +option. +.It Fl r +Recurse into subdirectories. +.It Fl s Ar sequence +Use +.Ar sequence +instead of default. +.It Fl -special +Works on special files (including links). Normally +.Nm +ignores these files. +.It Fl v +Be verbose about which files are being renamed. +.It Fl V +Show the current version of +.Nm . +.El +.Ss Deprecated Options +Deprecated Options are options that were available in earlier versions +of +.Nm +but have lost their meaning and are being phased out. +.Bl -tag -width Fl +.It Fl -remove-trailing +Removes _ and - after .'s in filenames. This was first provided in +the 0.9 series of +.Nm . +After the introduction of sequences, it lost its meaning, as you could +now determine the properties of wipeup through a particular sequence's +configuration. It presently forces all instances of the wipeup filter +to use remove trailing, regardless of what's actually in the config +files. +.El +.Sh FILES +.Bl -tag -width iso8859_1.tbl -compact +.It Pa detoxrc +The system-wide detoxrc file. +.It Pa ~/.detoxrc +A user's personal detoxrc. Normally it extends the system-wide +detoxrc, unless +.Fl f +has been specified, in which case, it is ignored. +.It Pa iso8859_1.tbl +The default ISO 8859-1 translation table. +.It Pa unicode.tbl +The default Unicode (UTF-8) translation table. +.El +.Sh EXAMPLES +.Bl -tag -width Fl +.It Nm Fl s Ar iso8859_1 Fl r Fl v Fl n Pa /tmp/new_files +Will run the sequence +.Ar iso8859_1 +recursively, listing any changes, without changing anything, on the +files of +.Pa /tmp/new_files . +.It Nm Fl f Ar my_detoxrc Fl L Fl v +Will list the sequences within +.Ar my_detoxrc , +showing their filters and options. +.El +.Sh SEE ALSO +.Xr inline-detox 1 , +.Xr detoxrc 5 , +.Xr detox.tbl 5 . +.Sh HISTORY +.Nm +was originally designed to clean up files that I had received from +friends which had been created using other operating systems. It's +trivial to create a filename with spaces, parenthesis, brackets, and +ampersands under some operating systems. These have special meaning +within FreeBSD and Linux, and cause problems when you go to access +them. I created +.Nm +to clean up these files. +.Sh AUTHORS +.Nm +was written by +.An "Doug Harple" . +.Sh BUGS +If, after the translation of a filename is finished, a file already +exists with that same name, +.Nm +will not rename the file. This could cause a problem with the +.Cm max_length +filter, if it was imperative that the files be cut down to a certain +length. +.Pp +Long options don't work under Solaris or Darwin. +.Pp +An error in the config file will cause a segfault as it's going to +print the offending word within the config file. diff --git a/detox/latest/man/detox.tbl.5 b/detox/latest/man/detox.tbl.5 new file mode 100644 index 0000000..72c512c --- /dev/null +++ b/detox/latest/man/detox.tbl.5 @@ -0,0 +1,56 @@ +.\" +.\" This file is part of the Detox package. +.\" +.\" Copyright (c) Doug Harple +.\" +.\" For the full copyright and license information, please view the LICENSE +.\" file that was distributed with this source code. +.\" +.Dd August 3, 2004 +.Dt DETOX.TBL 5 +.Os +.Sh NAME +.Nm detox.tbl +.Nd translation table for +.Xr detox 1 +.Sh OVERVIEW +detox allows for configuration of how the ISO 8859-1 and UTF-8 +(Unicode) filters operate. Through text based translation tables, it +is possible to tune how these character sets are interpreted. +.Sh SYNTAX +The format of the translation tables is simple. There are two levels: +one containing meta data and one containing the actual translations. +.Bl -tag -width 0.25i +.It Cm default Ar _ +Default specifies the default translation for a character. An empty +or nonexistent default indicates that any unknown character should +fall through to the next filter. In this manner, it is possible to +chain together multiple translation tables in a sequence. +.It Cm start +Indicates the start of a value list within the translation table. +.It Cm start Ar lang +Indicates the start of a language specific value list within the +translation table. +.It Cm end +Indicates the end of a value list within the translation table. +.It Ar value translation +Value can be specified in decimal (1), hex (0x01) or octal (01). The +same rules that apply to sscanf apply here. +.Pp +Translation can be a string or a quoted string, with either single or +double quotes. +.El +.Sh EXAMPLE +.Bd -literal +default _ +start +0x0101 a +0x0102 b +end +.Ed +.Sh SEE ALSO +.Xr detox 1 , +.Xr detoxrc 5 . +.Sh AUTHORS +detox was written by +.An "Doug Harple" . diff --git a/detox/latest/man/detoxrc.5 b/detox/latest/man/detoxrc.5 new file mode 100644 index 0000000..645554b --- /dev/null +++ b/detox/latest/man/detoxrc.5 @@ -0,0 +1,214 @@ +.\" +.\" This file is part of the Detox package. +.\" +.\" Copyright (c) Doug Harple +.\" +.\" For the full copyright and license information, please view the LICENSE +.\" file that was distributed with this source code. +.\" +.Dd August 3, 2004 +.Dt DETOXRC 5 +.Os +.Sh NAME +.Nm detoxrc +.Nd configuration file for +.Xr detox 1 +.Sh OVERVIEW +detox allows for configuration of its sequences through config files. +This document describes how these files work. +.Sh IMPORTANT +When setting up a new set of rules, the +.Cm safe +and +.Cm wipeup +filters must always be run after a translating filter (or series +thereof), such as the +.Cm utf_8 +or the +.Cm uncgi +filters. Otherwise, the risk of introducing illegal characters into +the filename is introduced. +.Sh SYNTAX +The format of this configuration file is C-like. It is based loosely +off named's configuration files. Each statement is semicolon +terminated, and modifiers on a particular statement are generally +contained within braces. +.Bl -tag -width 0.25i +.It Cm sequence Qo Ar name Qc Bro Ar ... Brc ; +Defines a sequence of filters to run a filename through. "name" +specifies how the user will refer to the particular sequence during +runtime. Quotes around the sequence name are generally optional, but +should be used if the sequence name does not start with a letter. +.Pp +There is a special sequence, named "default", which is the default +sequence used by detox. This can be overridden through the command +line option +.Fl s +or the environmental variable +.Ev DETOX_SEQUENCE . +.Pp +Sequence names are case sensitive and unique throughout all sequences; +that is, if a system wide file defines +.Ar normal_seq +and a user has a sequence with the same name in their +.Pa .detoxrc , +the users' +.Ar normal_seq +will take precedence. +.It Cm iso8859_1 Bro Cm filename Qo Ar /path/to/filename Qc ; Brc ; +This translates ISO 8859-1 (aka Latin-1) characters into lower ASCII +equivalents. The output is not necessarily safe, and should also be +run through the +.Cm safe +filter. +.Pp +Under normal circumstances, the filename syntax is not needed. Detox +looks in several locations for a file called +.Pa iso8859_1.tbl , +which is a set of rules defining how an ISO 8859-1 character should be +translated. +.Pp +In the event this table doesn't exist, you have two options. You can +download or create your own, and tell detox the location of it using +the filename syntax shown above, or you can let detox fall back on its +internal tables. The internal tables translate the same as the stock +translation tables. +.Pp +You can chain together multiple iso8859_1 translations, as long as the +default value of all but the last one is set to nothing. This is +explained in +.Xr detox.tbl 5 . +.Pp +This filter is mutually exclusive with the +.Cm utf_8 +filter. +.It Cm utf_8 Bro Cm filename Qo Ar /path/to/filename Qc ; Brc ; +This translates Unicode characters, encoded by the UTF-8 translation +method, into safe equivalents. +.Pp +This operates in a manner similar to +.Cm iso8859_1 , +except it looks for a translation table called +.Pa unicode.tbl . +.Pp +The default internal translation for Unicode characters only contains +the lower 256 characters of Unicode, which is equivalent to the set of +Basic Latin and Latin-1 characters. +.It Cm uncgi ; +This translates CGI escaped strings into their ASCII equivalents. The +output of this is not necessarily safe, and could contain ISO 8859-1 +chars or potentially UTF-8 characters. +.It Cm safe Bro Cm filename Qo Ar /path/to/filename Qc ; Brc ; +This could also be called "safe for UNIX-like operating systems". It +translates characters that are difficult to work with in UNIX +environments into characters that are not. +.Pp +In earlier versions this filter was entirely internal. Starting with +1.2.0, this filter is controlled by a translation table. In the +absence of the translation table, the previous code will be employed +for the translation. Also, prior to 1.2.0, the safe filter removed +leading dashes to prevent the hassle of dealing with a filename in +the format +.Pa -filename . +This functionality is exclusively handled by the +.Cm wipeup +filter now. +.Pp +See the +.Sx SAFE +section for more details on what this filter translates by default. +.It Cm wipeup Bro Cm remove_trailing ; Brc ; +This wipes up any excessive characters. For instance, multiple +underscores or dashes will be converted into a single underscore or +dash. Any series of dash and underscore (i.e. "_-_") will be +converted into a single dash. +.Pp +The remove trailing option removes a dash or underscore followed +immediately by a period. +.Pp +See the +.Sx WIPEUP +section for more details on what this filter translates. +.It Cm max_length Bro Cm length Ar value ; Brc ; +This trims a file down to the length specified (or less). It is +conscious of extensions and attempts to preserve anything following +the last period in a filename. +.Pp +For instance, given a max length of 12, and a filename of +"this_is_my_file.txt", the filter would output "this_is_.txt". +.It Cm lower ; +This translates uppercase characters into lowercase characters. +.It Cm # Comments +Any thing after a # on any line is ignored. +.El +.Sh EXAMPLE +.Bd -literal +sequence default { + uncgi; + iso8859_1 { + filename "iso8859_1.tbl"; + }; +# utf_8 { +# filename "unicode.tbl"; +# }; + safe { + filename "safe.tbl"; + }; + wipeup { + remove_trailing; + }; +# max_length { +# length 128; +# }; +}; +.Ed +.Sh SAFE +The following characters are translated by the stock +.Cm safe +filter. They can be tuned by updating safe.tbl or creating a copy of +safe.tbl and updating your rc file. +.Pp +.Ss Rules that apply anywhere in the filename: +.Bl -column -offset indent ".Sy Removed" ".Sy Original" +.It Sy Safe Ta Sy Original +.It _and_ Ta & +.It _ Ta \fIspace\fR ` \&! @ $ * \e | \&: \&; \&" ' < > \&? / +.It - Ta \&( \&) \&[ \&] { } +.El +.Pp +.Sh WIPEUP +The following characters are translated by the +.Cm wipeup +filter. +.Pp +.Ss Rules that apply anywhere in the filename: +.Bl -column -offset indent ".Sy Wipeup" ".Sy Original" +.It Sy Wipeup Ta Sy Original +.It - Ta -_ +.It - Ta _- +.It - Ta -- +.It _ Ta __ +.El +.Pp +.Ss Rules that apply only at the beginning of a filename: +Any leading dashes are stripped to prevent programs from interpreting +these files as command line options. +.Bl -column -offset indent ".Sy removed" ".Sy Original" +.It Sy Wipeup Ta Sy Original +.It \fIremoved\fR Ta - _ # +.El +.Ss Rules that apply when remove trailing is enabled: +.Bl -column -offset indent ".Sy Wipeup" ".Sy Original" +.It Sy Wipeup Ta Sy Original +.It . Ta .- +.It . Ta -. +.It . Ta ._ +.It . Ta _. +.El +.Pp +.Sh SEE ALSO +.Xr detox 1 , +.Xr detox.tbl 5 . +.Sh AUTHORS +detox was written by +.An "Doug Harple" . diff --git a/detox/latest/man/inline-detox.1 b/detox/latest/man/inline-detox.1 new file mode 100644 index 0000000..2fb4238 --- /dev/null +++ b/detox/latest/man/inline-detox.1 @@ -0,0 +1,126 @@ +.\" +.\" This file is part of the Detox package. +.\" +.\" Copyright (c) Doug Harple +.\" +.\" For the full copyright and license information, please view the LICENSE +.\" file that was distributed with this source code. +.\" +.Dd February 11, 2021 +.Dt DETOX 1 +.Os +.Sh NAME +.Nm inline-detox +.Nd clean up filenames (stream-based) +.Sh SYNOPSIS +.Nm +.Op Fl hnLrv +.Op Fl s Ar sequence +.Op Fl f Ar configfile +.Ar +.Sh DESCRIPTION +The +.Nm +utility can remove spaces and other such annoyances from streams. +It'll also translate or cleanup Latin-1 (ISO 8859-1) characters encoded +in 8-bit ASCII, Unicode characters encoded in UTF-8, and CGI escaped characters. +Basically it's detox, but does not operate on files. +.Ss Sequences +.Nm +is driven by a configurable series of filters, called a sequence. +Sequences are covered in more detail in +.Xr detoxrc 5 +and are discoverable with the +.Fl L +option. Some examples of default sequences are +.Cm iso8859_1 +and +.Cm utf_8 . +.Ss Options +The main options: +.Bl -tag -width Fl +.It Fl f Ar configfile +Use +.Ar configfile +instead of the default configuration files for loading translation +sequences. No other config file will be parsed. +.It Fl h -help +Display helpful information. +.It Fl L +List the currently available sequences. When paired with +.Fl v +this option shows what filters are used in each sequence and any +properties applied to the filters. +.It Fl r +Recurse into subdirectories. +.It Fl s Ar sequence +Use +.Ar sequence +instead of default. +.It Fl v +Be verbose about which files are being renamed. +.It Fl V +Show the current version of +.Nm . +.El +.Ss Deprecated Options +Deprecated Options are options that were available in earlier versions +of +.Nm +but have lost their meaning and are being phased out. +.Bl -tag -width Fl +.It Fl -remove-trailing +Removes _ and - after .'s in filenames. This was first provided in +the 0.9 series of +.Nm . +After the introduction of sequences, it lost its meaning, as you could +now determine the properties of wipeup through a particular sequence's +configuration. It presently forces all instances of the wipeup filter +to use remove trailing, regardless of what's actually in the config +files. +.El +.Sh FILES +.Bl -tag -width iso8859_1.tbl -compact +.It Pa detoxrc +The system-wide detoxrc file. +.It Pa ~/.detoxrc +A user's personal detoxrc. Normally it extends the system-wide +detoxrc, unless +.Fl f +has been specified, in which case, it is ignored. +.It Pa iso8859_1.tbl +The default ISO 8859-1 translation table. +.It Pa unicode.tbl +The default Unicode (UTF-8) translation table. +.El +.Sh EXAMPLES +.Bl -tag -width Fl +.It echo "Foo Bar" | Nm Fl s Ar iso8859_1 Fl v +Will run the sequence +.Ar iso8859_1 +listing any changes and returning the result to STDOUT. +.El +.Sh SEE ALSO +.Xr detox 1 , +.Xr detoxrc 5 , +.Xr detox.tbl 5 . +.Sh HISTORY +detox +was originally designed to clean up files that I had received from +friends which had been created using other operating systems. It's +trivial to create a filename with spaces, parenthesis, brackets, and +ampersands under some operating systems. These have special meaning +within FreeBSD and Linux, and cause problems when you go to access +them. I created +.Nm +to clean up these files. +.Sh AUTHORS +.Nm +was written by +.An "Doug Harple" . +.Sh BUGS +.Pp +Long options don't work under Solaris or Darwin. +.Pp +An error in the config file will cause a segfault as it's going to +print the offending word within the config file. diff --git a/detox/latest/missing b/detox/latest/missing new file mode 100755 index 0000000..625aeb1 --- /dev/null +++ b/detox/latest/missing @@ -0,0 +1,215 @@ +#! /bin/sh +# Common wrapper for a few potentially missing GNU programs. + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard , 1996. + +# 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 2, 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 . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try '$0 --help' for more information" + exit 1 +fi + +case $1 in + + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; + + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: + aclocal autoconf autoheader autom4te automake makeinfo + bison yacc flex lex help2man + +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" + exit 1 + ;; + +esac + +# Run the given program, remember its exit status. +"$@"; st=$? + +# If it succeeded, we are done. +test $st -eq 0 && exit 0 + +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi + +perl_URL=https://www.perl.org/ +flex_URL=https://github.com/westes/flex +gnu_software_URL=https://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + case $normalized_program in + autoconf*) + echo "You should only need it if you modified 'configure.ac'," + echo "or m4 files included by it." + program_details 'autoconf' + ;; + autoheader*) + echo "You should only need it if you modified 'acconfig.h' or" + echo "$configure_deps." + program_details 'autoheader' + ;; + automake*) + echo "You should only need it if you modified 'Makefile.am' or" + echo "$configure_deps." + program_details 'automake' + ;; + aclocal*) + echo "You should only need it if you modified 'acinclude.m4' or" + echo "$configure_deps." + program_details 'aclocal' + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'autom4te' program to be rebuilt." + program_details 'autom4te' + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" + ;; + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/detox/latest/src/.deps/clean_string.Po b/detox/latest/src/.deps/clean_string.Po new file mode 100644 index 0000000..8f5b643 --- /dev/null +++ b/detox/latest/src/.deps/clean_string.Po @@ -0,0 +1,147 @@ +clean_string.o: clean_string.c /usr/include/stdc-predef.h config.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/ctype.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + clean_string.h iso8859_1.h unicode.h parse_table.h table.h +/usr/include/stdc-predef.h: +config.h: +/usr/include/stdio.h: +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: +/usr/include/features.h: +/usr/include/features-time64.h: +/usr/include/x86_64-linux-gnu/bits/wordsize.h: +/usr/include/x86_64-linux-gnu/bits/timesize.h: +/usr/include/x86_64-linux-gnu/sys/cdefs.h: +/usr/include/x86_64-linux-gnu/bits/long-double.h: +/usr/include/x86_64-linux-gnu/gnu/stubs.h: +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: +/usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h: +/usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h: +/usr/include/x86_64-linux-gnu/bits/types.h: +/usr/include/x86_64-linux-gnu/bits/typesizes.h: +/usr/include/x86_64-linux-gnu/bits/time64.h: +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h: +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: +/usr/include/x86_64-linux-gnu/bits/floatn.h: +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: +/usr/include/x86_64-linux-gnu/bits/stdio2-decl.h: +/usr/include/x86_64-linux-gnu/bits/stdio.h: +/usr/include/x86_64-linux-gnu/bits/stdio2.h: +/usr/include/stdlib.h: +/usr/include/x86_64-linux-gnu/bits/waitflags.h: +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: +/usr/include/x86_64-linux-gnu/sys/types.h: +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: +/usr/include/endian.h: +/usr/include/x86_64-linux-gnu/bits/endian.h: +/usr/include/x86_64-linux-gnu/bits/endianness.h: +/usr/include/x86_64-linux-gnu/bits/byteswap.h: +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: +/usr/include/x86_64-linux-gnu/sys/select.h: +/usr/include/x86_64-linux-gnu/bits/select.h: +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: +/usr/include/x86_64-linux-gnu/bits/select2.h: +/usr/include/x86_64-linux-gnu/bits/select-decl.h: +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: +/usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h: +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: +/usr/include/alloca.h: +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: +/usr/include/x86_64-linux-gnu/bits/stdlib.h: +/usr/include/string.h: +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: +/usr/include/strings.h: +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: +/usr/include/ctype.h: +/usr/include/errno.h: +/usr/include/x86_64-linux-gnu/bits/errno.h: +/usr/include/linux/errno.h: +/usr/include/x86_64-linux-gnu/asm/errno.h: +/usr/include/asm-generic/errno.h: +/usr/include/asm-generic/errno-base.h: +clean_string.h: +iso8859_1.h: +unicode.h: +parse_table.h: +table.h: diff --git a/detox/latest/src/.deps/config_file_dump.Po b/detox/latest/src/.deps/config_file_dump.Po new file mode 100644 index 0000000..c470f90 --- /dev/null +++ b/detox/latest/src/.deps/config_file_dump.Po @@ -0,0 +1,134 @@ +config_file_dump.o: config_file_dump.c /usr/include/stdc-predef.h \ + config.h /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h detox.h \ + config_file_dump.h clean_string.h +/usr/include/stdc-predef.h: +config.h: +/usr/include/stdio.h: +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: +/usr/include/features.h: +/usr/include/features-time64.h: +/usr/include/x86_64-linux-gnu/bits/wordsize.h: +/usr/include/x86_64-linux-gnu/bits/timesize.h: +/usr/include/x86_64-linux-gnu/sys/cdefs.h: +/usr/include/x86_64-linux-gnu/bits/long-double.h: +/usr/include/x86_64-linux-gnu/gnu/stubs.h: +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: +/usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h: +/usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h: +/usr/include/x86_64-linux-gnu/bits/types.h: +/usr/include/x86_64-linux-gnu/bits/typesizes.h: +/usr/include/x86_64-linux-gnu/bits/time64.h: +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h: +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: +/usr/include/x86_64-linux-gnu/bits/floatn.h: +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: +/usr/include/x86_64-linux-gnu/bits/stdio2-decl.h: +/usr/include/x86_64-linux-gnu/bits/stdio.h: +/usr/include/x86_64-linux-gnu/bits/stdio2.h: +/usr/include/stdlib.h: +/usr/include/x86_64-linux-gnu/bits/waitflags.h: +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: +/usr/include/x86_64-linux-gnu/sys/types.h: +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: +/usr/include/endian.h: +/usr/include/x86_64-linux-gnu/bits/endian.h: +/usr/include/x86_64-linux-gnu/bits/endianness.h: +/usr/include/x86_64-linux-gnu/bits/byteswap.h: +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: +/usr/include/x86_64-linux-gnu/sys/select.h: +/usr/include/x86_64-linux-gnu/bits/select.h: +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: +/usr/include/x86_64-linux-gnu/bits/select2.h: +/usr/include/x86_64-linux-gnu/bits/select-decl.h: +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: +/usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h: +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: +/usr/include/alloca.h: +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: +/usr/include/x86_64-linux-gnu/bits/stdlib.h: +/usr/include/string.h: +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: +/usr/include/strings.h: +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: +detox.h: +config_file_dump.h: +clean_string.h: diff --git a/detox/latest/src/.deps/config_file_lex.Po b/detox/latest/src/.deps/config_file_lex.Po new file mode 100644 index 0000000..3094b8c --- /dev/null +++ b/detox/latest/src/.deps/config_file_lex.Po @@ -0,0 +1,166 @@ +config_file_lex.o: config_file_lex.c /usr/include/stdc-predef.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/inttypes.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h config.h \ + config_file_yacc.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd-decl.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h +/usr/include/stdc-predef.h: +/usr/include/stdio.h: +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: +/usr/include/features.h: +/usr/include/features-time64.h: +/usr/include/x86_64-linux-gnu/bits/wordsize.h: +/usr/include/x86_64-linux-gnu/bits/timesize.h: +/usr/include/x86_64-linux-gnu/sys/cdefs.h: +/usr/include/x86_64-linux-gnu/bits/long-double.h: +/usr/include/x86_64-linux-gnu/gnu/stubs.h: +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: +/usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h: +/usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h: +/usr/include/x86_64-linux-gnu/bits/types.h: +/usr/include/x86_64-linux-gnu/bits/typesizes.h: +/usr/include/x86_64-linux-gnu/bits/time64.h: +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h: +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: +/usr/include/x86_64-linux-gnu/bits/floatn.h: +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: +/usr/include/x86_64-linux-gnu/bits/stdio2-decl.h: +/usr/include/x86_64-linux-gnu/bits/stdio.h: +/usr/include/x86_64-linux-gnu/bits/stdio2.h: +/usr/include/string.h: +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: +/usr/include/strings.h: +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: +/usr/include/errno.h: +/usr/include/x86_64-linux-gnu/bits/errno.h: +/usr/include/linux/errno.h: +/usr/include/x86_64-linux-gnu/asm/errno.h: +/usr/include/asm-generic/errno.h: +/usr/include/asm-generic/errno-base.h: +/usr/include/stdlib.h: +/usr/include/x86_64-linux-gnu/bits/waitflags.h: +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: +/usr/include/x86_64-linux-gnu/sys/types.h: +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: +/usr/include/endian.h: +/usr/include/x86_64-linux-gnu/bits/endian.h: +/usr/include/x86_64-linux-gnu/bits/endianness.h: +/usr/include/x86_64-linux-gnu/bits/byteswap.h: +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: +/usr/include/x86_64-linux-gnu/sys/select.h: +/usr/include/x86_64-linux-gnu/bits/select.h: +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: +/usr/include/x86_64-linux-gnu/bits/select2.h: +/usr/include/x86_64-linux-gnu/bits/select-decl.h: +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: +/usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h: +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: +/usr/include/alloca.h: +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: +/usr/include/x86_64-linux-gnu/bits/stdlib.h: +/usr/include/inttypes.h: +/usr/lib/gcc/x86_64-linux-gnu/13/include/stdint.h: +/usr/include/stdint.h: +/usr/include/x86_64-linux-gnu/bits/wchar.h: +/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h: +config.h: +config_file_yacc.h: +/usr/include/unistd.h: +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: +/usr/include/x86_64-linux-gnu/bits/environments.h: +/usr/include/x86_64-linux-gnu/bits/confname.h: +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: +/usr/include/x86_64-linux-gnu/bits/unistd.h: +/usr/include/x86_64-linux-gnu/bits/unistd-decl.h: +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: diff --git a/detox/latest/src/.deps/config_file_spoof.Po b/detox/latest/src/.deps/config_file_spoof.Po new file mode 100644 index 0000000..abfe463 --- /dev/null +++ b/detox/latest/src/.deps/config_file_spoof.Po @@ -0,0 +1,143 @@ +config_file_spoof.o: config_file_spoof.c /usr/include/stdc-predef.h \ + config.h /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + detox.h config_file_spoof.h clean_string.h +/usr/include/stdc-predef.h: +config.h: +/usr/include/stdio.h: +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: +/usr/include/features.h: +/usr/include/features-time64.h: +/usr/include/x86_64-linux-gnu/bits/wordsize.h: +/usr/include/x86_64-linux-gnu/bits/timesize.h: +/usr/include/x86_64-linux-gnu/sys/cdefs.h: +/usr/include/x86_64-linux-gnu/bits/long-double.h: +/usr/include/x86_64-linux-gnu/gnu/stubs.h: +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: +/usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h: +/usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h: +/usr/include/x86_64-linux-gnu/bits/types.h: +/usr/include/x86_64-linux-gnu/bits/typesizes.h: +/usr/include/x86_64-linux-gnu/bits/time64.h: +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h: +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: +/usr/include/x86_64-linux-gnu/bits/floatn.h: +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: +/usr/include/x86_64-linux-gnu/bits/stdio2-decl.h: +/usr/include/x86_64-linux-gnu/bits/stdio.h: +/usr/include/x86_64-linux-gnu/bits/stdio2.h: +/usr/include/stdlib.h: +/usr/include/x86_64-linux-gnu/bits/waitflags.h: +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: +/usr/include/x86_64-linux-gnu/sys/types.h: +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: +/usr/include/endian.h: +/usr/include/x86_64-linux-gnu/bits/endian.h: +/usr/include/x86_64-linux-gnu/bits/endianness.h: +/usr/include/x86_64-linux-gnu/bits/byteswap.h: +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: +/usr/include/x86_64-linux-gnu/sys/select.h: +/usr/include/x86_64-linux-gnu/bits/select.h: +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: +/usr/include/x86_64-linux-gnu/bits/select2.h: +/usr/include/x86_64-linux-gnu/bits/select-decl.h: +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: +/usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h: +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: +/usr/include/alloca.h: +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: +/usr/include/x86_64-linux-gnu/bits/stdlib.h: +/usr/include/string.h: +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: +/usr/include/strings.h: +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: +/usr/include/errno.h: +/usr/include/x86_64-linux-gnu/bits/errno.h: +/usr/include/linux/errno.h: +/usr/include/x86_64-linux-gnu/asm/errno.h: +/usr/include/asm-generic/errno.h: +/usr/include/asm-generic/errno-base.h: +detox.h: +config_file_spoof.h: +clean_string.h: diff --git a/detox/latest/src/.deps/config_file_yacc.Po b/detox/latest/src/.deps/config_file_yacc.Po new file mode 100644 index 0000000..9e8babf --- /dev/null +++ b/detox/latest/src/.deps/config_file_yacc.Po @@ -0,0 +1,134 @@ +config_file_yacc.o: config_file_yacc.c /usr/include/stdc-predef.h \ + config.h /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h detox.h \ + clean_string.h config_file.h +/usr/include/stdc-predef.h: +config.h: +/usr/include/stdio.h: +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: +/usr/include/features.h: +/usr/include/features-time64.h: +/usr/include/x86_64-linux-gnu/bits/wordsize.h: +/usr/include/x86_64-linux-gnu/bits/timesize.h: +/usr/include/x86_64-linux-gnu/sys/cdefs.h: +/usr/include/x86_64-linux-gnu/bits/long-double.h: +/usr/include/x86_64-linux-gnu/gnu/stubs.h: +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: +/usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h: +/usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h: +/usr/include/x86_64-linux-gnu/bits/types.h: +/usr/include/x86_64-linux-gnu/bits/typesizes.h: +/usr/include/x86_64-linux-gnu/bits/time64.h: +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h: +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: +/usr/include/x86_64-linux-gnu/bits/floatn.h: +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: +/usr/include/x86_64-linux-gnu/bits/stdio2-decl.h: +/usr/include/x86_64-linux-gnu/bits/stdio.h: +/usr/include/x86_64-linux-gnu/bits/stdio2.h: +/usr/include/stdlib.h: +/usr/include/x86_64-linux-gnu/bits/waitflags.h: +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: +/usr/include/x86_64-linux-gnu/sys/types.h: +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: +/usr/include/endian.h: +/usr/include/x86_64-linux-gnu/bits/endian.h: +/usr/include/x86_64-linux-gnu/bits/endianness.h: +/usr/include/x86_64-linux-gnu/bits/byteswap.h: +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: +/usr/include/x86_64-linux-gnu/sys/select.h: +/usr/include/x86_64-linux-gnu/bits/select.h: +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: +/usr/include/x86_64-linux-gnu/bits/select2.h: +/usr/include/x86_64-linux-gnu/bits/select-decl.h: +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: +/usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h: +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: +/usr/include/alloca.h: +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: +/usr/include/x86_64-linux-gnu/bits/stdlib.h: +/usr/include/string.h: +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: +/usr/include/strings.h: +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: +detox.h: +clean_string.h: +config_file.h: diff --git a/detox/latest/src/.deps/detox.Po b/detox/latest/src/.deps/detox.Po new file mode 100644 index 0000000..dfa3502 --- /dev/null +++ b/detox/latest/src/.deps/detox.Po @@ -0,0 +1,172 @@ +detox.o: detox.c /usr/include/stdc-predef.h config.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h \ + /usr/include/x86_64-linux-gnu/bits/struct_stat.h /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/unistd.h /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd-decl.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h detox.h clean_string.h \ + file.h config_file.h config_file_spoof.h config_file_dump.h \ + parse_table.h table.h parse_options.h +/usr/include/stdc-predef.h: +config.h: +/usr/include/x86_64-linux-gnu/sys/types.h: +/usr/include/features.h: +/usr/include/features-time64.h: +/usr/include/x86_64-linux-gnu/bits/wordsize.h: +/usr/include/x86_64-linux-gnu/bits/timesize.h: +/usr/include/x86_64-linux-gnu/sys/cdefs.h: +/usr/include/x86_64-linux-gnu/bits/long-double.h: +/usr/include/x86_64-linux-gnu/gnu/stubs.h: +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: +/usr/include/x86_64-linux-gnu/bits/types.h: +/usr/include/x86_64-linux-gnu/bits/typesizes.h: +/usr/include/x86_64-linux-gnu/bits/time64.h: +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: +/usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h: +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: +/usr/include/endian.h: +/usr/include/x86_64-linux-gnu/bits/endian.h: +/usr/include/x86_64-linux-gnu/bits/endianness.h: +/usr/include/x86_64-linux-gnu/bits/byteswap.h: +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: +/usr/include/x86_64-linux-gnu/sys/select.h: +/usr/include/x86_64-linux-gnu/bits/select.h: +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: +/usr/include/x86_64-linux-gnu/bits/select2.h: +/usr/include/x86_64-linux-gnu/bits/select-decl.h: +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: +/usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h: +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: +/usr/include/x86_64-linux-gnu/sys/stat.h: +/usr/include/x86_64-linux-gnu/bits/stat.h: +/usr/include/x86_64-linux-gnu/bits/struct_stat.h: +/usr/include/stdio.h: +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: +/usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h: +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h: +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: +/usr/include/x86_64-linux-gnu/bits/floatn.h: +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: +/usr/include/x86_64-linux-gnu/bits/stdio2-decl.h: +/usr/include/x86_64-linux-gnu/bits/stdio.h: +/usr/include/x86_64-linux-gnu/bits/stdio2.h: +/usr/include/stdlib.h: +/usr/include/x86_64-linux-gnu/bits/waitflags.h: +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: +/usr/include/alloca.h: +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: +/usr/include/x86_64-linux-gnu/bits/stdlib.h: +/usr/include/string.h: +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: +/usr/include/strings.h: +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: +/usr/include/errno.h: +/usr/include/x86_64-linux-gnu/bits/errno.h: +/usr/include/linux/errno.h: +/usr/include/x86_64-linux-gnu/asm/errno.h: +/usr/include/asm-generic/errno.h: +/usr/include/asm-generic/errno-base.h: +/usr/include/unistd.h: +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: +/usr/include/x86_64-linux-gnu/bits/environments.h: +/usr/include/x86_64-linux-gnu/bits/confname.h: +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: +/usr/include/x86_64-linux-gnu/bits/unistd.h: +/usr/include/x86_64-linux-gnu/bits/unistd-decl.h: +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: +detox.h: +clean_string.h: +file.h: +config_file.h: +config_file_spoof.h: +config_file_dump.h: +parse_table.h: +table.h: +parse_options.h: diff --git a/detox/latest/src/.deps/file.Po b/detox/latest/src/.deps/file.Po new file mode 100644 index 0000000..bcfe6f1 --- /dev/null +++ b/detox/latest/src/.deps/file.Po @@ -0,0 +1,180 @@ +file.o: file.c /usr/include/stdc-predef.h config.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h \ + /usr/include/x86_64-linux-gnu/bits/struct_stat.h /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd-decl.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/dirent.h \ + /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \ + /usr/include/x86_64-linux-gnu/bits/pthread_stack_min.h \ + /usr/include/x86_64-linux-gnu/bits/dirent_ext.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + clean_string.h file.h detox.h +/usr/include/stdc-predef.h: +config.h: +/usr/include/x86_64-linux-gnu/sys/stat.h: +/usr/include/features.h: +/usr/include/features-time64.h: +/usr/include/x86_64-linux-gnu/bits/wordsize.h: +/usr/include/x86_64-linux-gnu/bits/timesize.h: +/usr/include/x86_64-linux-gnu/sys/cdefs.h: +/usr/include/x86_64-linux-gnu/bits/long-double.h: +/usr/include/x86_64-linux-gnu/gnu/stubs.h: +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: +/usr/include/x86_64-linux-gnu/bits/types.h: +/usr/include/x86_64-linux-gnu/bits/typesizes.h: +/usr/include/x86_64-linux-gnu/bits/time64.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: +/usr/include/x86_64-linux-gnu/bits/endian.h: +/usr/include/x86_64-linux-gnu/bits/endianness.h: +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: +/usr/include/x86_64-linux-gnu/bits/stat.h: +/usr/include/x86_64-linux-gnu/bits/struct_stat.h: +/usr/include/stdio.h: +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: +/usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h: +/usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h: +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h: +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: +/usr/include/x86_64-linux-gnu/bits/floatn.h: +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: +/usr/include/x86_64-linux-gnu/bits/stdio2-decl.h: +/usr/include/x86_64-linux-gnu/bits/stdio.h: +/usr/include/x86_64-linux-gnu/bits/stdio2.h: +/usr/include/stdlib.h: +/usr/include/x86_64-linux-gnu/bits/waitflags.h: +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: +/usr/include/x86_64-linux-gnu/sys/types.h: +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: +/usr/include/endian.h: +/usr/include/x86_64-linux-gnu/bits/byteswap.h: +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: +/usr/include/x86_64-linux-gnu/sys/select.h: +/usr/include/x86_64-linux-gnu/bits/select.h: +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: +/usr/include/x86_64-linux-gnu/bits/select2.h: +/usr/include/x86_64-linux-gnu/bits/select-decl.h: +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: +/usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h: +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: +/usr/include/alloca.h: +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: +/usr/include/x86_64-linux-gnu/bits/stdlib.h: +/usr/include/unistd.h: +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: +/usr/include/x86_64-linux-gnu/bits/environments.h: +/usr/include/x86_64-linux-gnu/bits/confname.h: +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: +/usr/include/x86_64-linux-gnu/bits/unistd.h: +/usr/include/x86_64-linux-gnu/bits/unistd-decl.h: +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: +/usr/include/dirent.h: +/usr/include/x86_64-linux-gnu/bits/dirent.h: +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: +/usr/include/x86_64-linux-gnu/bits/local_lim.h: +/usr/include/linux/limits.h: +/usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h: +/usr/include/x86_64-linux-gnu/bits/pthread_stack_min.h: +/usr/include/x86_64-linux-gnu/bits/dirent_ext.h: +/usr/include/string.h: +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: +/usr/include/strings.h: +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: +/usr/include/errno.h: +/usr/include/x86_64-linux-gnu/bits/errno.h: +/usr/include/linux/errno.h: +/usr/include/x86_64-linux-gnu/asm/errno.h: +/usr/include/asm-generic/errno.h: +/usr/include/asm-generic/errno-base.h: +clean_string.h: +file.h: +detox.h: diff --git a/detox/latest/src/.deps/parse_options.Po b/detox/latest/src/.deps/parse_options.Po new file mode 100644 index 0000000..2c43336 --- /dev/null +++ b/detox/latest/src/.deps/parse_options.Po @@ -0,0 +1,168 @@ +parse_options.o: parse_options.c /usr/include/stdc-predef.h config.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h \ + /usr/include/x86_64-linux-gnu/bits/struct_stat.h /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/unistd.h /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ + /usr/include/x86_64-linux-gnu/bits/unistd.h \ + /usr/include/x86_64-linux-gnu/bits/unistd-decl.h \ + /usr/include/x86_64-linux-gnu/bits/unistd_ext.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/libgen.h detox.h parse_options.h /usr/include/getopt.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_ext.h +/usr/include/stdc-predef.h: +config.h: +/usr/include/x86_64-linux-gnu/sys/stat.h: +/usr/include/features.h: +/usr/include/features-time64.h: +/usr/include/x86_64-linux-gnu/bits/wordsize.h: +/usr/include/x86_64-linux-gnu/bits/timesize.h: +/usr/include/x86_64-linux-gnu/sys/cdefs.h: +/usr/include/x86_64-linux-gnu/bits/long-double.h: +/usr/include/x86_64-linux-gnu/gnu/stubs.h: +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: +/usr/include/x86_64-linux-gnu/bits/types.h: +/usr/include/x86_64-linux-gnu/bits/typesizes.h: +/usr/include/x86_64-linux-gnu/bits/time64.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: +/usr/include/x86_64-linux-gnu/bits/endian.h: +/usr/include/x86_64-linux-gnu/bits/endianness.h: +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: +/usr/include/x86_64-linux-gnu/bits/stat.h: +/usr/include/x86_64-linux-gnu/bits/struct_stat.h: +/usr/include/stdio.h: +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: +/usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h: +/usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h: +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h: +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: +/usr/include/x86_64-linux-gnu/bits/floatn.h: +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: +/usr/include/x86_64-linux-gnu/bits/stdio2-decl.h: +/usr/include/x86_64-linux-gnu/bits/stdio.h: +/usr/include/x86_64-linux-gnu/bits/stdio2.h: +/usr/include/stdlib.h: +/usr/include/x86_64-linux-gnu/bits/waitflags.h: +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: +/usr/include/x86_64-linux-gnu/sys/types.h: +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: +/usr/include/endian.h: +/usr/include/x86_64-linux-gnu/bits/byteswap.h: +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: +/usr/include/x86_64-linux-gnu/sys/select.h: +/usr/include/x86_64-linux-gnu/bits/select.h: +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: +/usr/include/x86_64-linux-gnu/bits/select2.h: +/usr/include/x86_64-linux-gnu/bits/select-decl.h: +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: +/usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h: +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: +/usr/include/alloca.h: +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: +/usr/include/x86_64-linux-gnu/bits/stdlib.h: +/usr/include/string.h: +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: +/usr/include/strings.h: +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: +/usr/include/unistd.h: +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: +/usr/include/x86_64-linux-gnu/bits/environments.h: +/usr/include/x86_64-linux-gnu/bits/confname.h: +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: +/usr/include/x86_64-linux-gnu/bits/unistd.h: +/usr/include/x86_64-linux-gnu/bits/unistd-decl.h: +/usr/include/x86_64-linux-gnu/bits/unistd_ext.h: +/usr/include/errno.h: +/usr/include/x86_64-linux-gnu/bits/errno.h: +/usr/include/linux/errno.h: +/usr/include/x86_64-linux-gnu/asm/errno.h: +/usr/include/asm-generic/errno.h: +/usr/include/asm-generic/errno-base.h: +/usr/include/libgen.h: +detox.h: +parse_options.h: +/usr/include/getopt.h: +/usr/include/x86_64-linux-gnu/bits/getopt_ext.h: diff --git a/detox/latest/src/.deps/parse_table.Po b/detox/latest/src/.deps/parse_table.Po new file mode 100644 index 0000000..0893763 --- /dev/null +++ b/detox/latest/src/.deps/parse_table.Po @@ -0,0 +1,151 @@ +parse_table.o: parse_table.c /usr/include/stdc-predef.h config.h \ + /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/features.h \ + /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h \ + /usr/include/x86_64-linux-gnu/bits/struct_stat.h /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/ctype.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/locale.h /usr/include/x86_64-linux-gnu/bits/locale.h \ + table.h +/usr/include/stdc-predef.h: +config.h: +/usr/include/x86_64-linux-gnu/sys/types.h: +/usr/include/features.h: +/usr/include/features-time64.h: +/usr/include/x86_64-linux-gnu/bits/wordsize.h: +/usr/include/x86_64-linux-gnu/bits/timesize.h: +/usr/include/x86_64-linux-gnu/sys/cdefs.h: +/usr/include/x86_64-linux-gnu/bits/long-double.h: +/usr/include/x86_64-linux-gnu/gnu/stubs.h: +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: +/usr/include/x86_64-linux-gnu/bits/types.h: +/usr/include/x86_64-linux-gnu/bits/typesizes.h: +/usr/include/x86_64-linux-gnu/bits/time64.h: +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: +/usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h: +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: +/usr/include/endian.h: +/usr/include/x86_64-linux-gnu/bits/endian.h: +/usr/include/x86_64-linux-gnu/bits/endianness.h: +/usr/include/x86_64-linux-gnu/bits/byteswap.h: +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: +/usr/include/x86_64-linux-gnu/sys/select.h: +/usr/include/x86_64-linux-gnu/bits/select.h: +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: +/usr/include/x86_64-linux-gnu/bits/select2.h: +/usr/include/x86_64-linux-gnu/bits/select-decl.h: +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: +/usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h: +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: +/usr/include/x86_64-linux-gnu/sys/stat.h: +/usr/include/x86_64-linux-gnu/bits/stat.h: +/usr/include/x86_64-linux-gnu/bits/struct_stat.h: +/usr/include/stdio.h: +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: +/usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h: +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h: +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: +/usr/include/x86_64-linux-gnu/bits/floatn.h: +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: +/usr/include/x86_64-linux-gnu/bits/stdio2-decl.h: +/usr/include/x86_64-linux-gnu/bits/stdio.h: +/usr/include/x86_64-linux-gnu/bits/stdio2.h: +/usr/include/stdlib.h: +/usr/include/x86_64-linux-gnu/bits/waitflags.h: +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: +/usr/include/alloca.h: +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: +/usr/include/x86_64-linux-gnu/bits/stdlib.h: +/usr/include/string.h: +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: +/usr/include/strings.h: +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: +/usr/include/ctype.h: +/usr/include/errno.h: +/usr/include/x86_64-linux-gnu/bits/errno.h: +/usr/include/linux/errno.h: +/usr/include/x86_64-linux-gnu/asm/errno.h: +/usr/include/asm-generic/errno.h: +/usr/include/asm-generic/errno-base.h: +/usr/include/locale.h: +/usr/include/x86_64-linux-gnu/bits/locale.h: +table.h: diff --git a/detox/latest/src/.deps/table.Po b/detox/latest/src/.deps/table.Po new file mode 100644 index 0000000..20c030a --- /dev/null +++ b/detox/latest/src/.deps/table.Po @@ -0,0 +1,142 @@ +table.o: table.c /usr/include/stdc-predef.h config.h /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/features-time64.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/timesize.h \ + /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/time64.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \ + /usr/include/x86_64-linux-gnu/bits/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/stdlib.h \ + /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endianness.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/select2.h \ + /usr/include/x86_64-linux-gnu/bits/select-decl.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \ + /usr/include/x86_64-linux-gnu/bits/struct_mutex.h \ + /usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/bits/strings_fortified.h \ + /usr/include/x86_64-linux-gnu/bits/string_fortified.h \ + /usr/include/ctype.h /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + table.h +/usr/include/stdc-predef.h: +config.h: +/usr/include/stdio.h: +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: +/usr/include/features.h: +/usr/include/features-time64.h: +/usr/include/x86_64-linux-gnu/bits/wordsize.h: +/usr/include/x86_64-linux-gnu/bits/timesize.h: +/usr/include/x86_64-linux-gnu/sys/cdefs.h: +/usr/include/x86_64-linux-gnu/bits/long-double.h: +/usr/include/x86_64-linux-gnu/gnu/stubs.h: +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: +/usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h: +/usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h: +/usr/include/x86_64-linux-gnu/bits/types.h: +/usr/include/x86_64-linux-gnu/bits/typesizes.h: +/usr/include/x86_64-linux-gnu/bits/time64.h: +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: +/usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h: +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: +/usr/include/x86_64-linux-gnu/bits/floatn.h: +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: +/usr/include/x86_64-linux-gnu/bits/stdio2-decl.h: +/usr/include/x86_64-linux-gnu/bits/stdio.h: +/usr/include/x86_64-linux-gnu/bits/stdio2.h: +/usr/include/stdlib.h: +/usr/include/x86_64-linux-gnu/bits/waitflags.h: +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: +/usr/include/x86_64-linux-gnu/sys/types.h: +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: +/usr/include/endian.h: +/usr/include/x86_64-linux-gnu/bits/endian.h: +/usr/include/x86_64-linux-gnu/bits/endianness.h: +/usr/include/x86_64-linux-gnu/bits/byteswap.h: +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: +/usr/include/x86_64-linux-gnu/sys/select.h: +/usr/include/x86_64-linux-gnu/bits/select.h: +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: +/usr/include/x86_64-linux-gnu/bits/select2.h: +/usr/include/x86_64-linux-gnu/bits/select-decl.h: +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: +/usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h: +/usr/include/x86_64-linux-gnu/bits/struct_mutex.h: +/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h: +/usr/include/alloca.h: +/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h: +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: +/usr/include/x86_64-linux-gnu/bits/stdlib.h: +/usr/include/string.h: +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: +/usr/include/strings.h: +/usr/include/x86_64-linux-gnu/bits/strings_fortified.h: +/usr/include/x86_64-linux-gnu/bits/string_fortified.h: +/usr/include/ctype.h: +/usr/include/errno.h: +/usr/include/x86_64-linux-gnu/bits/errno.h: +/usr/include/linux/errno.h: +/usr/include/x86_64-linux-gnu/asm/errno.h: +/usr/include/asm-generic/errno.h: +/usr/include/asm-generic/errno-base.h: +table.h: diff --git a/detox/latest/src/Makefile b/detox/latest/src/Makefile new file mode 100644 index 0000000..0010601 --- /dev/null +++ b/detox/latest/src/Makefile @@ -0,0 +1,676 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# src/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2018 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. + + + + +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +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)/detox +pkgincludedir = $(includedir)/detox +pkglibdir = $(libdir)/detox +pkglibexecdir = $(libexecdir)/detox +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 = : +bin_PROGRAMS = detox$(EXEEXT) inline-detox$(EXEEXT) +subdir = src +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +PROGRAMS = $(bin_PROGRAMS) +am_detox_OBJECTS = detox.$(OBJEXT) file.$(OBJEXT) \ + clean_string.$(OBJEXT) table.$(OBJEXT) parse_table.$(OBJEXT) \ + config_file_yacc.$(OBJEXT) config_file_lex.$(OBJEXT) \ + config_file_spoof.$(OBJEXT) config_file_dump.$(OBJEXT) \ + parse_options.$(OBJEXT) +detox_OBJECTS = $(am_detox_OBJECTS) +detox_LDADD = $(LDADD) +am__objects_1 = detox.$(OBJEXT) file.$(OBJEXT) clean_string.$(OBJEXT) \ + table.$(OBJEXT) parse_table.$(OBJEXT) \ + config_file_yacc.$(OBJEXT) config_file_lex.$(OBJEXT) \ + config_file_spoof.$(OBJEXT) config_file_dump.$(OBJEXT) \ + parse_options.$(OBJEXT) +am_inline_detox_OBJECTS = $(am__objects_1) +inline_detox_OBJECTS = $(am_inline_detox_OBJECTS) +inline_detox_LDADD = $(LDADD) +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/clean_string.Po \ + ./$(DEPDIR)/config_file_dump.Po ./$(DEPDIR)/config_file_lex.Po \ + ./$(DEPDIR)/config_file_spoof.Po \ + ./$(DEPDIR)/config_file_yacc.Po ./$(DEPDIR)/detox.Po \ + ./$(DEPDIR)/file.Po ./$(DEPDIR)/parse_options.Po \ + ./$(DEPDIR)/parse_table.Po ./$(DEPDIR)/table.Po +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +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_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS) +AM_V_LEX = $(am__v_LEX_$(V)) +am__v_LEX_ = $(am__v_LEX_$(AM_DEFAULT_VERBOSITY)) +am__v_LEX_0 = @echo " LEX " $@; +am__v_LEX_1 = +YLWRAP = $(top_srcdir)/ylwrap +am__yacc_c2h = sed -e s/cc$$/hh/ -e s/cpp$$/hpp/ -e s/cxx$$/hxx/ \ + -e s/c++$$/h++/ -e s/c$$/h/ +YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS) +AM_V_YACC = $(am__v_YACC_$(V)) +am__v_YACC_ = $(am__v_YACC_$(AM_DEFAULT_VERBOSITY)) +am__v_YACC_0 = @echo " YACC " $@; +am__v_YACC_1 = +SOURCES = $(detox_SOURCES) $(inline_detox_SOURCES) +DIST_SOURCES = $(detox_SOURCES) $(inline_detox_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)config.h.in +# 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 +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(top_srcdir)/depcomp $(top_srcdir)/ylwrap config_file_lex.c \ + config_file_yacc.c config_file_yacc.h +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/tcsenpai/Downloads/detox-1.4.5/missing aclocal-1.16 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AUTOCONF = ${SHELL} /home/tcsenpai/Downloads/detox-1.4.5/missing autoconf +AUTOHEADER = ${SHELL} /home/tcsenpai/Downloads/detox-1.4.5/missing autoheader +AUTOMAKE = ${SHELL} /home/tcsenpai/Downloads/detox-1.4.5/missing automake-1.16 +AWK = mawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +GREP = /usr/bin/grep +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LDFLAGS = +LEX = flex +LEXLIB = -lfl +LEX_OUTPUT_ROOT = lex.yy +LIBOBJS = +LIBS = +LTLIBOBJS = +MAKEINFO = ${SHELL} /home/tcsenpai/Downloads/detox-1.4.5/missing makeinfo +MKDIR_P = /usr/bin/mkdir -p +OBJEXT = o +PACKAGE = detox +PACKAGE_BUGREPORT = detox.dharple at gmail.com +PACKAGE_NAME = detox +PACKAGE_STRING = detox 1.4.5 +PACKAGE_TARNAME = detox +PACKAGE_URL = https://github.com/dharple/detox +PACKAGE_VERSION = 1.4.5 +PATH_SEPARATOR = : +SET_MAKE = +SHELL = /bin/bash +STRIP = +VERSION = 1.4.5 +YACC = bison -y +YFLAGS = +abs_builddir = /home/tcsenpai/Downloads/detox-1.4.5/src +abs_srcdir = /home/tcsenpai/Downloads/detox-1.4.5/src +abs_top_builddir = /home/tcsenpai/Downloads/detox-1.4.5 +abs_top_srcdir = /home/tcsenpai/Downloads/detox-1.4.5 +ac_ct_CC = gcc +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build_alias = +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host_alias = +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/tcsenpai/Downloads/detox-1.4.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +runstatedir = ${localstatedir}/run +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +BUILT_SOURCES = config_file.h +AM_YFLAGS = -d +AM_CPPFLAGS = -DDATADIR=\"$(datadir)\" -DSYSCONFDIR=\"$(sysconfdir)\" +detox_SOURCES = detox.c file.c clean_string.c table.c parse_table.c config_file_yacc.y config_file_lex.l config_file_spoof.c config_file_dump.c parse_options.c +inline_detox_SOURCES = $(detox_SOURCES) +EXTRA_DIST = *.h +all: $(BUILT_SOURCES) config.h + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .l .o .obj .y +$(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) --foreign src/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/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__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + 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): + +config.h: stamp-h1 + @test -f $@ || rm -f stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status src/config.h +$(srcdir)/config.h.in: $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +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) +config_file_yacc.h: config_file_yacc.c + @if test ! -f $@; then rm -f config_file_yacc.c; else :; fi + @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) config_file_yacc.c; else :; fi + +detox$(EXEEXT): $(detox_OBJECTS) $(detox_DEPENDENCIES) $(EXTRA_detox_DEPENDENCIES) + @rm -f detox$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(detox_OBJECTS) $(detox_LDADD) $(LIBS) + +inline-detox$(EXEEXT): $(inline_detox_OBJECTS) $(inline_detox_DEPENDENCIES) $(EXTRA_inline_detox_DEPENDENCIES) + @rm -f inline-detox$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(inline_detox_OBJECTS) $(inline_detox_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/clean_string.Po # am--include-marker +include ./$(DEPDIR)/config_file_dump.Po # am--include-marker +include ./$(DEPDIR)/config_file_lex.Po # am--include-marker +include ./$(DEPDIR)/config_file_spoof.Po # am--include-marker +include ./$(DEPDIR)/config_file_yacc.Po # am--include-marker +include ./$(DEPDIR)/detox.Po # am--include-marker +include ./$(DEPDIR)/file.Po # am--include-marker +include ./$(DEPDIR)/parse_options.Po # am--include-marker +include ./$(DEPDIR)/parse_table.Po # am--include-marker +include ./$(DEPDIR)/table.Po # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c -o $@ $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# $(AM_V_CC)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(AM_V_CC_no)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.l.c: + $(AM_V_LEX)$(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE) + +.y.c: + $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | $(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(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-am + +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-am + +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: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(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 +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(PROGRAMS) config.h +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) 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: + +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." + -rm -f config_file_lex.c + -rm -f config_file_yacc.c + -rm -f config_file_yacc.h + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f ./$(DEPDIR)/clean_string.Po + -rm -f ./$(DEPDIR)/config_file_dump.Po + -rm -f ./$(DEPDIR)/config_file_lex.Po + -rm -f ./$(DEPDIR)/config_file_spoof.Po + -rm -f ./$(DEPDIR)/config_file_yacc.Po + -rm -f ./$(DEPDIR)/detox.Po + -rm -f ./$(DEPDIR)/file.Po + -rm -f ./$(DEPDIR)/parse_options.Po + -rm -f ./$(DEPDIR)/parse_table.Po + -rm -f ./$(DEPDIR)/table.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-hdr distclean-tags + +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-binPROGRAMS + +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 ./$(DEPDIR)/clean_string.Po + -rm -f ./$(DEPDIR)/config_file_dump.Po + -rm -f ./$(DEPDIR)/config_file_lex.Po + -rm -f ./$(DEPDIR)/config_file_spoof.Po + -rm -f ./$(DEPDIR)/config_file_yacc.Po + -rm -f ./$(DEPDIR)/detox.Po + -rm -f ./$(DEPDIR)/file.Po + -rm -f ./$(DEPDIR)/parse_options.Po + -rm -f ./$(DEPDIR)/parse_table.Po + -rm -f ./$(DEPDIR)/table.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: all check install install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ + clean-binPROGRAMS clean-generic cscopelist-am ctags ctags-am \ + distclean distclean-compile distclean-generic distclean-hdr \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-binPROGRAMS 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-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-binPROGRAMS + +.PRECIOUS: Makefile + + +# 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/detox/latest/src/Makefile.am b/detox/latest/src/Makefile.am new file mode 100644 index 0000000..07a600a --- /dev/null +++ b/detox/latest/src/Makefile.am @@ -0,0 +1,10 @@ +BUILT_SOURCES = config_file.h +AM_YFLAGS = -d + +AM_CPPFLAGS = -DDATADIR=\"$(datadir)\" -DSYSCONFDIR=\"$(sysconfdir)\" + +bin_PROGRAMS = detox inline-detox +detox_SOURCES = detox.c file.c clean_string.c table.c parse_table.c config_file_yacc.y config_file_lex.l config_file_spoof.c config_file_dump.c parse_options.c +inline_detox_SOURCES = $(detox_SOURCES) + +EXTRA_DIST = *.h diff --git a/detox/latest/src/Makefile.in b/detox/latest/src/Makefile.in new file mode 100644 index 0000000..3f0e6f9 --- /dev/null +++ b/detox/latest/src/Makefile.in @@ -0,0 +1,676 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2018 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 = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +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@ +pkglibexecdir = $(libexecdir)/@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 = : +bin_PROGRAMS = detox$(EXEEXT) inline-detox$(EXEEXT) +subdir = src +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +PROGRAMS = $(bin_PROGRAMS) +am_detox_OBJECTS = detox.$(OBJEXT) file.$(OBJEXT) \ + clean_string.$(OBJEXT) table.$(OBJEXT) parse_table.$(OBJEXT) \ + config_file_yacc.$(OBJEXT) config_file_lex.$(OBJEXT) \ + config_file_spoof.$(OBJEXT) config_file_dump.$(OBJEXT) \ + parse_options.$(OBJEXT) +detox_OBJECTS = $(am_detox_OBJECTS) +detox_LDADD = $(LDADD) +am__objects_1 = detox.$(OBJEXT) file.$(OBJEXT) clean_string.$(OBJEXT) \ + table.$(OBJEXT) parse_table.$(OBJEXT) \ + config_file_yacc.$(OBJEXT) config_file_lex.$(OBJEXT) \ + config_file_spoof.$(OBJEXT) config_file_dump.$(OBJEXT) \ + parse_options.$(OBJEXT) +am_inline_detox_OBJECTS = $(am__objects_1) +inline_detox_OBJECTS = $(am_inline_detox_OBJECTS) +inline_detox_LDADD = $(LDADD) +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@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/clean_string.Po \ + ./$(DEPDIR)/config_file_dump.Po ./$(DEPDIR)/config_file_lex.Po \ + ./$(DEPDIR)/config_file_spoof.Po \ + ./$(DEPDIR)/config_file_yacc.Po ./$(DEPDIR)/detox.Po \ + ./$(DEPDIR)/file.Po ./$(DEPDIR)/parse_options.Po \ + ./$(DEPDIR)/parse_table.Po ./$(DEPDIR)/table.Po +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 = +LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS) +AM_V_LEX = $(am__v_LEX_@AM_V@) +am__v_LEX_ = $(am__v_LEX_@AM_DEFAULT_V@) +am__v_LEX_0 = @echo " LEX " $@; +am__v_LEX_1 = +YLWRAP = $(top_srcdir)/ylwrap +am__yacc_c2h = sed -e s/cc$$/hh/ -e s/cpp$$/hpp/ -e s/cxx$$/hxx/ \ + -e s/c++$$/h++/ -e s/c$$/h/ +YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS) +AM_V_YACC = $(am__v_YACC_@AM_V@) +am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@) +am__v_YACC_0 = @echo " YACC " $@; +am__v_YACC_1 = +SOURCES = $(detox_SOURCES) $(inline_detox_SOURCES) +DIST_SOURCES = $(detox_SOURCES) $(inline_detox_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)config.h.in +# 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 +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(top_srcdir)/depcomp $(top_srcdir)/ylwrap config_file_lex.c \ + config_file_yacc.c config_file_yacc.h +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LEX = @LEX@ +LEXLIB = @LEXLIB@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +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@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +YACC = @YACC@ +YFLAGS = @YFLAGS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +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_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +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@ +BUILT_SOURCES = config_file.h +AM_YFLAGS = -d +AM_CPPFLAGS = -DDATADIR=\"$(datadir)\" -DSYSCONFDIR=\"$(sysconfdir)\" +detox_SOURCES = detox.c file.c clean_string.c table.c parse_table.c config_file_yacc.y config_file_lex.l config_file_spoof.c config_file_dump.c parse_options.c +inline_detox_SOURCES = $(detox_SOURCES) +EXTRA_DIST = *.h +all: $(BUILT_SOURCES) config.h + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .l .o .obj .y +$(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) --foreign src/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/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__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + 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): + +config.h: stamp-h1 + @test -f $@ || rm -f stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status src/config.h +$(srcdir)/config.h.in: $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +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) +config_file_yacc.h: config_file_yacc.c + @if test ! -f $@; then rm -f config_file_yacc.c; else :; fi + @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) config_file_yacc.c; else :; fi + +detox$(EXEEXT): $(detox_OBJECTS) $(detox_DEPENDENCIES) $(EXTRA_detox_DEPENDENCIES) + @rm -f detox$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(detox_OBJECTS) $(detox_LDADD) $(LIBS) + +inline-detox$(EXEEXT): $(inline_detox_OBJECTS) $(inline_detox_DEPENDENCIES) $(EXTRA_inline_detox_DEPENDENCIES) + @rm -f inline-detox$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(inline_detox_OBJECTS) $(inline_detox_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clean_string.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/config_file_dump.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/config_file_lex.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/config_file_spoof.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/config_file_yacc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/detox.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parse_options.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parse_table.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/table.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.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) '$<'` + +.l.c: + $(AM_V_LEX)$(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE) + +.y.c: + $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | $(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(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-am + +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-am + +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: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(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 +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(PROGRAMS) config.h +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) 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: + +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." + -rm -f config_file_lex.c + -rm -f config_file_yacc.c + -rm -f config_file_yacc.h + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f ./$(DEPDIR)/clean_string.Po + -rm -f ./$(DEPDIR)/config_file_dump.Po + -rm -f ./$(DEPDIR)/config_file_lex.Po + -rm -f ./$(DEPDIR)/config_file_spoof.Po + -rm -f ./$(DEPDIR)/config_file_yacc.Po + -rm -f ./$(DEPDIR)/detox.Po + -rm -f ./$(DEPDIR)/file.Po + -rm -f ./$(DEPDIR)/parse_options.Po + -rm -f ./$(DEPDIR)/parse_table.Po + -rm -f ./$(DEPDIR)/table.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-hdr distclean-tags + +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-binPROGRAMS + +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 ./$(DEPDIR)/clean_string.Po + -rm -f ./$(DEPDIR)/config_file_dump.Po + -rm -f ./$(DEPDIR)/config_file_lex.Po + -rm -f ./$(DEPDIR)/config_file_spoof.Po + -rm -f ./$(DEPDIR)/config_file_yacc.Po + -rm -f ./$(DEPDIR)/detox.Po + -rm -f ./$(DEPDIR)/file.Po + -rm -f ./$(DEPDIR)/parse_options.Po + -rm -f ./$(DEPDIR)/parse_table.Po + -rm -f ./$(DEPDIR)/table.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: all check install install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ + clean-binPROGRAMS clean-generic cscopelist-am ctags ctags-am \ + distclean distclean-compile distclean-generic distclean-hdr \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-binPROGRAMS 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-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-binPROGRAMS + +.PRECIOUS: Makefile + + +# 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/detox/latest/src/clean_string.c b/detox/latest/src/clean_string.c new file mode 100644 index 0000000..17d3244 --- /dev/null +++ b/detox/latest/src/clean_string.c @@ -0,0 +1,773 @@ +/** + * This file is part of the Detox package. + * + * Copyright (c) Doug Harple + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +#include "config.h" + +#include +#include +#include +#include +#include + +#include "clean_string.h" + +/* translation array for ISO8859.1 characters */ +#include "iso8859_1.h" + +/* translation array for unicode characters */ +#include "unicode.h" + +#include "parse_table.h" +#include "table.h" + + +/* + * Translates ISO8859.1 characters (Latin-1) into lower ASCII characters. + */ +unsigned char *clean_iso8859_1_basic(unsigned char *s, void *opts) +{ + unsigned char *output, *input_walk, *output_walk, *replace_walk; + int replace_pos; + + if (s == NULL) { + return NULL; + } + + output = malloc((strlen(s) * ISO8859_1_MAXLEN) + 1); + if (output == NULL) { + fprintf(stderr, "out of memory: %s\n", strerror(errno)); + return NULL; + } + + input_walk = s; + output_walk = output; + + while (*input_walk != '\0') { + if (*input_walk >= ISO8859_1_OFFSET) { + replace_pos = *input_walk - ISO8859_1_OFFSET; + replace_walk = (unsigned char *)&iso8859_1_trans[replace_pos]; + + while (*replace_walk != '\0') { + *output_walk++ = *replace_walk++; + } + input_walk++; + } + else { + *output_walk++ = *input_walk++; + } + } + + *output_walk = '\0'; + + return output; +} + +/* + * Translates ISO8859.1 characters (Latin-1) into lower ASCII characters. + */ +unsigned char *clean_iso8859_1(unsigned char *s, void *opts) +{ + unsigned char *output, *input_walk, *output_walk, *replace_walk; + + struct translation_table *table = NULL; + struct clean_string_options *options = NULL; + + if (s == NULL) { + return NULL; + } + + if (opts == NULL) { + fprintf(stderr, "this shouldn't happen\n"); + exit(EXIT_FAILURE); + } + + options = (struct clean_string_options *)opts; + table = options->translation_table; + + output = malloc((strlen(s) * table->max_data_length) + 1); + if (output == NULL) { + fprintf(stderr, "out of memory: %s\n", strerror(errno)); + return NULL; + } + + input_walk = s; + output_walk = output; + + while (*input_walk != '\0') { + if (*input_walk >= ISO8859_1_OFFSET) { + replace_walk = table_get(table, *input_walk); + if (replace_walk == NULL) { + if (table->default_translation == NULL) { + /* + * Null translation == leave it alone + */ + *output_walk++ = *input_walk++; + continue; + } + else { + replace_walk = table->default_translation; + } + } + + while (*replace_walk != '\0') { + *output_walk++ = *replace_walk++; + } + + input_walk++; + } + else { + *output_walk++ = *input_walk++; + } + } + + *output_walk = '\0'; + + return output; +} + + +/* + * Cleans up any unsafe characters. + * + * The rules are: + * Leave alone: + * - # ~ % ^ _ , . + = + * + * Translate: + * & into _and_ + * + * Replace with _: + * ` ! @ $ * \ | : ; " ' < ? / '\n' '\r' '\t' + * + * Replace with -: + * ( ) [ ] { } + * + */ +unsigned char *clean_safe_basic(unsigned char *s, void *opts) +{ + unsigned char *output, *input_walk, *output_walk; + + if (s == NULL) { + return NULL; + } + + output = malloc((strlen(s) * 5) + 1); + if (output == NULL) { + fprintf(stderr, "out of memory: %s\n", strerror(errno)); + return NULL; + } + + input_walk = s; + output_walk = output; + + while (*input_walk != '\0') { + if (isalnum(*input_walk)) { + *output_walk++ = *input_walk++; + continue; + } + + switch (*input_walk) { + case '-': + case '#': + case '~': + case '%': + case '^': + case '_': + case ',': + case '.': + case '+': + case '=': + *output_walk++ = *input_walk; + break; + + case '&': + *output_walk++ = '_'; + *output_walk++ = 'a'; + *output_walk++ = 'n'; + *output_walk++ = 'd'; + *output_walk++ = '_'; + break; + + case ' ': + case '`': + case '!': + case '@': + case '$': + case '*': + case '\\': + case '|': + case ':': + case ';': + case '"': + case '\'': + case '<': + case '>': + case '?': + case '/': + case '\n': + case '\r': + case '\t': + *output_walk++ = '_'; + break; + + case '(': + case ')': + case '[': + case ']': + case '{': + case '}': + *output_walk++ = '-'; + break; + } + + input_walk++; + } + + *output_walk = '\0'; + + return output; +} + + +/* + * Translates unsafe characters + */ +unsigned char *clean_safe(unsigned char *s, void *opts) +{ + unsigned char *output, *input_walk, *output_walk, *replace_walk; + + struct translation_table *table = NULL; + struct clean_string_options *options = NULL; + + if (s == NULL) { + return NULL; + } + + if (opts == NULL) { + fprintf(stderr, "this shouldn't happen\n"); + exit(EXIT_FAILURE); + } + + options = (struct clean_string_options *)opts; + table = options->translation_table; + + output = malloc((strlen(s) * table->max_data_length) + 1); + if (output == NULL) { + fprintf(stderr, "out of memory: %s\n", strerror(errno)); + return NULL; + } + + input_walk = s; + output_walk = output; + + while (*input_walk != '\0') { + replace_walk = table_get(table, *input_walk); + if (replace_walk == NULL) { + if (table->default_translation == NULL) { + + /* + * Null translation == leave it alone + */ + *output_walk++ = *input_walk++; + continue; + } + else { + replace_walk = table->default_translation; + } + } + + while (*replace_walk != '\0') { + *output_walk++ = *replace_walk++; + } + + input_walk++; + } + + *output_walk = '\0'; + + return output; +} + + + +/* + * Cleans up any CGI encoded characters, in the form "%" followed by 2 hex + * digits. + */ +unsigned char *clean_uncgi(unsigned char *s, void *opts) +{ + unsigned char *output, *input_walk, *output_walk; + unsigned char conv[3]; + + if (s == NULL) { + return NULL; + } + + output = malloc(strlen(s) + 1); + if (output == NULL) { + fprintf(stderr, "out of memory: %s\n", strerror(errno)); + return NULL; + } + + input_walk = s; + output_walk = output; + + while (*input_walk != '\0') { + if (input_walk[0] == '%' && isxdigit(input_walk[1]) && isxdigit(input_walk[2])) { + conv[0] = input_walk[1]; + conv[1] = input_walk[2]; + conv[2] = 0; + *output_walk++ = (unsigned char)strtol(conv, NULL, 16); + input_walk += 3; + } + else { + *output_walk++ = *input_walk++; + } + } + + *output_walk = '\0'; + + return output; +} + + +/* + * Reduces any series of "_" and "-" to a single character. "-" takes + * precedence. + * + * If "remove_trailing" is set to non-zero, then "." is added to the + * comparison, and takes precedence. This has the effect of reducing "-." or + * "._", etc, to ".". + * + * Strips any "-", "_" or "#" from the beginning of a string. + * + */ +unsigned char *clean_wipeup(unsigned char *s, void *opts) +{ + unsigned char *output, *input_walk, *output_walk; + int matched; + int remove_trailing; + + if (s == NULL) { + return NULL; + } + + remove_trailing = 0; + if (opts != NULL) { + remove_trailing = ((struct clean_string_options *)opts)->remove_trailing; + } + + /* remove any -, _, or # at beginning of string */ + while (*s == '-' || *s == '_' || *s == '#') { + s++; + } + + output = malloc(strlen(s) + 1); + if (output == NULL) { + fprintf(stderr, "out of memory: %s\n", strerror(errno)); + return NULL; + } + + input_walk = s; + output_walk = output; + matched = 0; + + while (*input_walk != '\0') { + switch (*input_walk) { + case '-': + if (matched) { + if (*output_walk == '_') { + *output_walk = '-'; + } + } + else { + *output_walk = '-'; + } + + matched = 1; + break; + + case '_': + if (!matched) { + *output_walk = '_'; + } + + matched = 1; + break; + + case '.': + if (remove_trailing) { + *output_walk = '.'; + matched = 1; + break; + } /* else fall through */ + default: + if (matched) { + output_walk++; + matched = 0; + } + + *output_walk++ = *input_walk; + } + input_walk++; + } + + if (matched) { + output_walk++; + } + + *output_walk = '\0'; + + return output; +} + +#define UTF_8_ENCODED 0x80 +#define UTF_8_ENCODED_4_CHARS 0xf0 +#define UTF_8_ENCODED_3_CHARS 0xe0 +#define UTF_8_ENCODED_2_CHARS 0xc0 + +/* + * Translates UTF-8 characters (Unicode Translation Format - 8 Bit) into + * Unicode and then lower ASCII characters. + */ +unsigned char *clean_utf_8_basic(unsigned char *s, void *opts) +{ + unsigned char *output, *input_walk, *output_walk, *replace_walk; + int new_value, expected_chars; + + if (s == NULL) { + return NULL; + } + + output = malloc((strlen(s) * UNICODE_MAXLEN) + 1); + if (output == NULL) { + fprintf(stderr, "out of memory: %s\n", strerror(errno)); + return NULL; + } + + input_walk = s; + output_walk = output; + + while (*input_walk != '\0') { + if ((*input_walk & UTF_8_ENCODED) == 0) { + *output_walk++ = *input_walk++; + continue; + } + + new_value = 0; + expected_chars = 0; + + /* + * Needs to be done in descending orders due to the fact that + * the 2 char mask will match on the 4 char mask, but not + * vice versa. + */ + if ((*input_walk & UTF_8_ENCODED_4_CHARS) == UTF_8_ENCODED_4_CHARS) { + + /* + * 11110aaa 10bbbbbb 10cccccc 10dddddd + */ + + new_value = *input_walk & 0x07; + expected_chars = 3; + } + else if ((*input_walk & UTF_8_ENCODED_3_CHARS) == UTF_8_ENCODED_3_CHARS) { + + /* + * 1110aaaa 10bbbbbb 10cccccc + */ + + new_value = *input_walk & 0x0f; + expected_chars = 2; + } + else if ((*input_walk & UTF_8_ENCODED_2_CHARS) == UTF_8_ENCODED_2_CHARS) { + + /* + * 110aaaaa 10bbbbbb + */ + + new_value = *input_walk & 0x1f; + expected_chars = 1; + } + else { + input_walk++; + continue; + } + + while (expected_chars > 0) { + new_value <<= 6; + + input_walk++; + + if (*input_walk == '\0') { + new_value = -1; + break; + } + + if ((*input_walk & UTF_8_ENCODED) == 0) { + new_value = -1; + break; + } + + new_value += *input_walk & 0x3f; + + expected_chars--; + } + + if (new_value == -1) { + continue; + } + + if (new_value >= UNICODE_COUNT) { + *output_walk++ = '_'; + continue; + } + + replace_walk = (unsigned char *)&unicode_trans[new_value]; + + while (*replace_walk != '\0') { + *output_walk++ = *replace_walk++; + } + } + + *output_walk = '\0'; + + return output; +} + +/* + * Translates UTF-8 characters (Unicode Translation Format - 8 Bit) into + * Unicode and then runs the translation table. + */ +unsigned char *clean_utf_8(unsigned char *s, void *opts) +{ + unsigned char *output, *input_walk, *output_walk, *replace_walk; + int new_value, expected_chars; + + struct translation_table *table = NULL; + struct clean_string_options *options = NULL; + + int characters_eaten; + + if (s == NULL) { + return NULL; + } + + if (opts == NULL) { + fprintf(stderr, "this shouldn't happen\n"); + exit(EXIT_FAILURE); + } + + options = (struct clean_string_options *)opts; + table = options->translation_table; + + output = malloc((strlen(s) * table->max_data_length) + 1); + if (output == NULL) { + fprintf(stderr, "out of memory: %s\n", strerror(errno)); + return NULL; + } + + input_walk = s; + output_walk = output; + + while (*input_walk != '\0') { + new_value = 0; + expected_chars = 0; + characters_eaten = 0; + + /* + * Needs to be done in descending orders due to the fact that + * the 2 char mask will match on the 4 char mask, but not + * vice versa. + */ + if ((*input_walk & UTF_8_ENCODED_4_CHARS) == UTF_8_ENCODED_4_CHARS) { + + /* + * 11110aaa 10bbbbbb 10cccccc 10dddddd + */ + + new_value = *input_walk & 0x07; + expected_chars = 3; + characters_eaten = 4; + } + else if ((*input_walk & UTF_8_ENCODED_3_CHARS) == UTF_8_ENCODED_3_CHARS) { + + /* + * 1110aaaa 10bbbbbb 10cccccc + */ + + new_value = *input_walk & 0x0f; + expected_chars = 2; + characters_eaten = 3; + } + else if ((*input_walk & UTF_8_ENCODED_2_CHARS) == UTF_8_ENCODED_2_CHARS) { + + /* + * 110aaaaa 10bbbbbb + */ + + new_value = *input_walk & 0x1f; + expected_chars = 1; + characters_eaten = 2; + } + else if ((*input_walk & UTF_8_ENCODED) == UTF_8_ENCODED) { + fprintf(stderr, "unsupported unicode length\n"); + exit(EXIT_FAILURE); + } + else { + new_value = *input_walk; + expected_chars = 0; + characters_eaten = 1; + } + + while (expected_chars > 0) { + new_value <<= 6; + + input_walk++; + + if (*input_walk == '\0') { + new_value = -1; + break; + } + + if ((*input_walk & UTF_8_ENCODED) == 0) { + new_value = -1; + break; + } + + new_value += *input_walk & 0x3f; + + expected_chars--; + } + input_walk++; + + if (new_value == -1) { + continue; + } + + replace_walk = table_get(table, new_value); + + if (replace_walk == NULL) { + replace_walk = table->default_translation; + } + + if (replace_walk == NULL) { + + /* + * Null translation == leave it alone + */ + input_walk -= characters_eaten; + + while (characters_eaten > 0) { + *output_walk++ = *input_walk++; + characters_eaten--; + } + + continue; + } + + while (*replace_walk != '\0') { + *output_walk++ = *replace_walk++; + } + } + + *output_walk = '\0'; + + return output; +} + + + +/* + * Trims a file down to specified length. + */ +unsigned char *clean_max_length(unsigned char *s, void *opts) +{ + unsigned char *output, *input_walk, *output_walk; + size_t max_length; + size_t s_length; + size_t ext_length; + + if (s == NULL) { + return NULL; + } + + max_length = 256; + if (opts != NULL) { + max_length = ((struct clean_string_options *)opts)->max_length; + } + + s_length = strlen(s); + + output = malloc(max_length + 1); + if (output == NULL) { + fprintf(stderr, "out of memory: %s\n", strerror(errno)); + return NULL; + } + + snprintf(output, max_length + 1, "%s", s); + + if (s_length <= max_length) { + return output; + } + + input_walk = strrchr(s, '.'); + + if (input_walk == NULL) { + return output; + } + + ext_length = strlen(input_walk); + + output_walk = output; + output_walk += max_length - ext_length; + + while (*(output_walk - 1) == '.' && output_walk > output) { + output_walk--; + } + + snprintf(output_walk, ext_length + 1, "%s", input_walk); + + return output; +} + + +/* + * Converts all characters to lowercase. + */ +unsigned char *clean_lower(unsigned char *s, void *opts) +{ + unsigned char *output, *input_walk, *output_walk; + + if (s == NULL) { + return NULL; + } + + output = malloc(strlen(s) + 1); + if (output == NULL) { + fprintf(stderr, "out of memory: %s\n", strerror(errno)); + return NULL; + } + + input_walk = s; + output_walk = output; + + while (*input_walk != '\0') { + if (isupper(*input_walk)) { + *output_walk++ = tolower(*input_walk++); + } + else { + *output_walk++ = *input_walk++; + } + } + + *output_walk = '\0'; + + return output; +} diff --git a/detox/latest/src/clean_string.h b/detox/latest/src/clean_string.h new file mode 100644 index 0000000..3320940 --- /dev/null +++ b/detox/latest/src/clean_string.h @@ -0,0 +1,33 @@ +/** + * This file is part of the Detox package. + * + * Copyright (c) Doug Harple + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +#ifndef __CLEAN_STRING_H +#define __CLEAN_STRING_H + +struct clean_string_options { + char *filename; + int remove_trailing; + size_t max_length; + + void *misc; + void *translation_table; +}; + +extern unsigned char *clean_iso8859_1_basic(unsigned char *s, void *options); +extern unsigned char *clean_iso8859_1(unsigned char *s, void *options); +extern unsigned char *clean_safe_basic(unsigned char *s, void *options); +extern unsigned char *clean_safe(unsigned char *s, void *options); +extern unsigned char *clean_uncgi(unsigned char *s, void *options); +extern unsigned char *clean_wipeup(unsigned char *s, void *options); +extern unsigned char *clean_utf_8_basic(unsigned char *s, void *options); +extern unsigned char *clean_utf_8(unsigned char *s, void *options); +extern unsigned char *clean_max_length(unsigned char *s, void *opts); +extern unsigned char *clean_lower(unsigned char *s, void *opts); + +#endif /* __CLEAN_STRING_H */ diff --git a/detox/latest/src/clean_string.o b/detox/latest/src/clean_string.o new file mode 100644 index 0000000000000000000000000000000000000000..4158781efb1f247cb6588d02bb4f65f5c4e4e44d GIT binary patch literal 43592 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 literal 0 HcmV?d00001 diff --git a/detox/latest/src/config.h b/detox/latest/src/config.h new file mode 100644 index 0000000..049a78e --- /dev/null +++ b/detox/latest/src/config.h @@ -0,0 +1,81 @@ +/* src/config.h. Generated from config.h.in by configure. */ +/* src/config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the `getopt_long' function. */ +#define HAVE_GETOPT_LONG 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if `st_blocks' is a member of `struct stat'. */ +#define HAVE_STRUCT_STAT_ST_BLOCKS 1 + +/* Define to 1 if your `struct stat' has `st_blocks'. Deprecated, use + `HAVE_STRUCT_STAT_ST_BLOCKS' instead. */ +#define HAVE_ST_BLOCKS 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Name of package */ +#define PACKAGE "detox" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "detox.dharple at gmail.com" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "detox" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "detox 1.4.5" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "detox" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "https://github.com/dharple/detox" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "1.4.5" + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Version number of package */ +#define VERSION "1.4.5" + +/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a + `char[]'. */ +#define YYTEXT_POINTER 1 + +/* Enable large inode numbers on Mac OS X 10.5. */ +#ifndef _DARWIN_USE_64_BIT_INODE +# define _DARWIN_USE_64_BIT_INODE 1 +#endif + +/* Number of bits in a file offset, on hosts where this is settable. */ +/* #undef _FILE_OFFSET_BITS */ + +/* Define for large files, on AIX-style hosts. */ +/* #undef _LARGE_FILES */ diff --git a/detox/latest/src/config.h.in b/detox/latest/src/config.h.in new file mode 100644 index 0000000..0d7bfd3 --- /dev/null +++ b/detox/latest/src/config.h.in @@ -0,0 +1,80 @@ +/* src/config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the `getopt_long' function. */ +#undef HAVE_GETOPT_LONG + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if `st_blocks' is a member of `struct stat'. */ +#undef HAVE_STRUCT_STAT_ST_BLOCKS + +/* Define to 1 if your `struct stat' has `st_blocks'. Deprecated, use + `HAVE_STRUCT_STAT_ST_BLOCKS' instead. */ +#undef HAVE_ST_BLOCKS + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Version number of package */ +#undef VERSION + +/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a + `char[]'. */ +#undef YYTEXT_POINTER + +/* Enable large inode numbers on Mac OS X 10.5. */ +#ifndef _DARWIN_USE_64_BIT_INODE +# define _DARWIN_USE_64_BIT_INODE 1 +#endif + +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS + +/* Define for large files, on AIX-style hosts. */ +#undef _LARGE_FILES diff --git a/detox/latest/src/config_file.h b/detox/latest/src/config_file.h new file mode 100644 index 0000000..e7a2fc9 --- /dev/null +++ b/detox/latest/src/config_file.h @@ -0,0 +1,19 @@ +/** + * This file is part of the Detox package. + * + * Copyright (c) Doug Harple + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +#ifndef __CONFIG_FILE_H +#define __CONFIG_FILE_H + +#include "detox.h" + +extern int config_file_lineno; + +extern struct detox_parse_results *parse_config_file(char *filename, struct detox_parse_results *previous_list, struct detox_options *main_options); + +#endif /* __CONFIG_FILE_H */ diff --git a/detox/latest/src/config_file_dump.c b/detox/latest/src/config_file_dump.c new file mode 100644 index 0000000..357bb07 --- /dev/null +++ b/detox/latest/src/config_file_dump.c @@ -0,0 +1,112 @@ +/** + * This file is part of the Detox package. + * + * Copyright (c) Doug Harple + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +#include "config.h" + +#include +#include +#include + +#include "detox.h" +#include "config_file_dump.h" +#include "clean_string.h" + +void dump_config_file(struct detox_parse_results *parse_results, struct detox_options *main_options) +{ + struct detox_sequence_list *list_work = NULL; + struct detox_sequence_entry *work = NULL; + struct detox_ignore_entry *ignore_walk = NULL; + + if (!main_options->verbose) { + printf("available sequences:\n"); + } + + list_work = parse_results->sequences; + + while (list_work != NULL) { + if (main_options->verbose) { + printf("sequence name: "); + } + else { + printf("\t"); + } + printf("%s%s\n", list_work->name, (main_options->sequence_to_use == list_work->head) ? " (*)" : ""); + if (main_options->verbose) { + printf("\tsource file: %s\n", list_work->source_filename); + + work = list_work->head; + while (work != NULL) { + if (work->cleaner == &clean_uncgi) { + printf("\tcleaner: uncgi\n"); + } + else if (work->cleaner == &clean_safe) { + printf("\tcleaner: safe\n"); + if (work->options != NULL) { + struct clean_string_options *opts = work->options; + if (opts->filename != NULL) { + printf("\t\ttranslation table: %s\n", opts->filename); + } + } + } + else if (work->cleaner == &clean_wipeup) { + printf("\tcleaner: wipeup\n"); + if (work->options != NULL) { + struct clean_string_options *opts = work->options; + printf("\t\tremove trailing: %s\n", opts->remove_trailing ? "yes" : "no"); + } + } + else if (work->cleaner == &clean_iso8859_1) { + printf("\tcleaner: iso8859_1\n"); + if (work->options != NULL) { + struct clean_string_options *opts = work->options; + if (opts->filename != NULL) { + printf("\t\ttranslation table: %s\n", opts->filename); + } + } + } + else if (work->cleaner == &clean_utf_8) { + printf("\tcleaner: utf_8\n"); + if (work->options != NULL) { + struct clean_string_options *opts = work->options; + if (opts->filename != NULL) { + printf("\t\ttranslation table: %s\n", opts->filename); + } + } + } + else if (work->cleaner == &clean_max_length) { + printf("\tcleaner: max length\n"); + if (work->options != NULL) { + struct clean_string_options *opts = work->options; + printf("\t\tlength: %d\n", (unsigned int)opts->max_length); + } + } + if (work->cleaner == &clean_lower) { + printf("\tcleaner: lower\n"); + } + + work = work->next; + } + } + + list_work = list_work->next; + } + + + if (parse_results->files_to_ignore) { + printf("\nfiles to ignore:\n"); + + ignore_walk = parse_results->files_to_ignore; + + while (ignore_walk != NULL) { + printf("\t%s\n", ignore_walk->filename); + ignore_walk = ignore_walk->next; + } + } + +} diff --git a/detox/latest/src/config_file_dump.h b/detox/latest/src/config_file_dump.h new file mode 100644 index 0000000..ef59218 --- /dev/null +++ b/detox/latest/src/config_file_dump.h @@ -0,0 +1,17 @@ +/** + * This file is part of the Detox package. + * + * Copyright (c) Doug Harple + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +#ifndef __CONFIG_FILE_DUMP_H +#define __CONFIG_FILE_DUMP_H + +#include "detox.h" + +extern void dump_config_file(struct detox_parse_results *parse_results, struct detox_options *main_options); + +#endif /* __CONFIG_FILE_DUMP_H */ diff --git a/detox/latest/src/config_file_dump.o b/detox/latest/src/config_file_dump.o new file mode 100644 index 0000000000000000000000000000000000000000..74bb1a6de00baf01af2d4a1e58a75f9ee44c3338 GIT binary patch literal 16928 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 literal 0 HcmV?d00001 diff --git a/detox/latest/src/config_file_lex.c b/detox/latest/src/config_file_lex.c new file mode 100644 index 0000000..5bc72d2 --- /dev/null +++ b/detox/latest/src/config_file_lex.c @@ -0,0 +1,1946 @@ + +#line 3 "config_file_lex.c" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 6 +#define YY_FLEX_SUBMINOR_VERSION 4 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#ifndef SIZE_MAX +#define SIZE_MAX (~(size_t)0) +#endif + +#endif /* ! C99 */ + +#endif /* ! FLEXINT_H */ + +/* begin standard C++ headers. */ + +/* TODO: this is always defined, so inline it */ +#define yyconst const + +#if defined(__GNUC__) && __GNUC__ >= 3 +#define yynoreturn __attribute__((__noreturn__)) +#else +#define yynoreturn +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an + * integer in range [0..255] for use as an array index. + */ +#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN (yy_start) = 1 + 2 * +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START (((yy_start) - 1) / 2) +#define YYSTATE YY_START +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE yyrestart( yyin ) +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k. + * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. + * Ditto for the __ia64__ case accordingly. + */ +#define YY_BUF_SIZE 32768 +#else +#define YY_BUF_SIZE 16384 +#endif /* __ia64__ */ +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +extern int yyleng; + +extern FILE *yyin, *yyout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + #define YY_LESS_LINENO(n) + #define YY_LINENO_REWIND_TO(ptr) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = (yy_hold_char); \ + YY_RESTORE_YY_MORE_OFFSET \ + (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) +#define unput(c) yyunput( c, (yytext_ptr) ) + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + int yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* Stack of input buffers. */ +static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ + ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ + : NULL) +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] + +/* yy_hold_char holds the character lost when yytext is formed. */ +static char yy_hold_char; +static int yy_n_chars; /* number of characters read into yy_ch_buf */ +int yyleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = NULL; +static int yy_init = 0; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow yywrap()'s to do buffer switches + * instead of setting up a fresh yyin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void yyrestart ( FILE *input_file ); +void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); +void yy_delete_buffer ( YY_BUFFER_STATE b ); +void yy_flush_buffer ( YY_BUFFER_STATE b ); +void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); +void yypop_buffer_state ( void ); + +static void yyensure_buffer_stack ( void ); +static void yy_load_buffer_state ( void ); +static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); +#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) + +YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); +YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); +YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); + +void *yyalloc ( yy_size_t ); +void *yyrealloc ( void *, yy_size_t ); +void yyfree ( void * ); + +#define yy_new_buffer yy_create_buffer +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer( yyin, YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer( yyin, YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +#define yywrap() (/*CONSTCOND*/1) +#define YY_SKIP_YYWRAP +typedef flex_uint8_t YY_CHAR; + +FILE *yyin = NULL, *yyout = NULL; + +typedef int yy_state_type; + +extern int yylineno; +int yylineno = 1; + +extern char *yytext; +#ifdef yytext_ptr +#undef yytext_ptr +#endif +#define yytext_ptr yytext + +static yy_state_type yy_get_previous_state ( void ); +static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); +static int yy_get_next_buffer ( void ); +static void yynoreturn yy_fatal_error ( const char* msg ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + (yytext_ptr) = yy_bp; \ + yyleng = (int) (yy_cp - yy_bp); \ + (yy_hold_char) = *yy_cp; \ + *yy_cp = '\0'; \ + (yy_c_buf_p) = yy_cp; +#define YY_NUM_RULES 22 +#define YY_END_OF_BUFFER 23 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static const flex_int16_t yy_accept[104] = + { 0, + 0, 0, 23, 22, 1, 3, 22, 2, 20, 21, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 16, + 17, 1, 0, 18, 2, 20, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 19, 9, 19, + 19, 19, 19, 19, 19, 19, 19, 12, 19, 19, + 19, 6, 8, 19, 19, 5, 19, 13, 19, 19, + 19, 10, 19, 19, 19, 19, 19, 14, 19, 19, + 19, 4, 7, 19, 19, 11, 19, 19, 19, 19, + + 19, 15, 0 + } ; + +static const YY_CHAR yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 4, 5, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 6, 7, 6, + 6, 6, 8, 6, 6, 9, 10, 1, 11, 1, + 1, 1, 1, 1, 12, 13, 14, 13, 15, 16, + 17, 18, 19, 13, 13, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 13, 13, + 1, 1, 1, 1, 33, 1, 12, 13, 14, 13, + + 15, 16, 17, 18, 19, 13, 13, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 13, 13, 34, 1, 35, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +static const YY_CHAR yy_meta[36] = + { 0, + 1, 1, 2, 1, 1, 3, 3, 3, 3, 3, + 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 1, 1 + } ; + +static const flex_int16_t yy_base[107] = + { 0, + 0, 0, 133, 134, 130, 134, 33, 0, 32, 134, + 0, 112, 26, 29, 118, 114, 33, 27, 109, 134, + 134, 125, 43, 134, 0, 50, 0, 106, 103, 101, + 101, 91, 89, 99, 103, 93, 103, 100, 91, 99, + 90, 103, 94, 95, 76, 85, 92, 77, 88, 71, + 88, 80, 75, 91, 71, 72, 77, 66, 0, 80, + 75, 84, 63, 79, 75, 81, 70, 0, 72, 71, + 63, 0, 0, 60, 62, 0, 72, 0, 59, 47, + 65, 0, 63, 44, 59, 47, 59, 0, 66, 44, + 45, 0, 0, 52, 57, 0, 49, 47, 46, 32, + + 34, 0, 134, 60, 63, 47 + } ; + +static const flex_int16_t yy_def[107] = + { 0, + 103, 1, 103, 103, 103, 103, 104, 105, 103, 103, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 103, + 103, 103, 104, 103, 105, 103, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + + 106, 106, 0, 103, 103, 103 + } ; + +static const flex_int16_t yy_nxt[170] = + { 0, + 4, 5, 6, 7, 8, 9, 9, 9, 9, 9, + 10, 11, 11, 11, 11, 12, 11, 11, 13, 14, + 15, 11, 11, 11, 11, 16, 17, 11, 18, 11, + 19, 11, 4, 20, 21, 24, 24, 26, 26, 26, + 26, 26, 29, 31, 35, 24, 24, 36, 37, 27, + 102, 32, 30, 101, 38, 26, 26, 26, 26, 26, + 23, 23, 23, 25, 100, 25, 99, 98, 97, 96, + 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, + 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, + 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, + + 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, + 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, + 45, 44, 43, 42, 41, 40, 22, 39, 34, 33, + 28, 22, 103, 3, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103 + } ; + +static const flex_int16_t yy_chk[170] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 7, 7, 9, 9, 9, + 9, 9, 13, 14, 17, 23, 23, 17, 18, 106, + 101, 14, 13, 100, 18, 26, 26, 26, 26, 26, + 104, 104, 104, 105, 99, 105, 98, 97, 95, 94, + 91, 90, 89, 87, 86, 85, 84, 83, 81, 80, + 79, 77, 75, 74, 71, 70, 69, 67, 66, 65, + 64, 63, 62, 61, 60, 58, 57, 56, 55, 54, + + 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, + 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, + 33, 32, 31, 30, 29, 28, 22, 19, 16, 15, + 12, 5, 3, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103 + } ; + +static yy_state_type yy_last_accepting_state; +static char *yy_last_accepting_cpos; + +extern int yy_flex_debug; +int yy_flex_debug = 0; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +char *yytext; +#line 1 "config_file_lex.l" +#line 2 "config_file_lex.l" +/** + * This file is part of the Detox package. + * + * Copyright (c) Doug Harple + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +#include "config.h" + +#include +#include + +#include "config_file_yacc.h" + +int config_file_lineno = 1; + +#line 533 "config_file_lex.c" +#line 534 "config_file_lex.c" + +#define INITIAL 0 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +static int yy_init_globals ( void ); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int yylex_destroy ( void ); + +int yyget_debug ( void ); + +void yyset_debug ( int debug_flag ); + +YY_EXTRA_TYPE yyget_extra ( void ); + +void yyset_extra ( YY_EXTRA_TYPE user_defined ); + +FILE *yyget_in ( void ); + +void yyset_in ( FILE * _in_str ); + +FILE *yyget_out ( void ); + +void yyset_out ( FILE * _out_str ); + + int yyget_leng ( void ); + +char *yyget_text ( void ); + +int yyget_lineno ( void ); + +void yyset_lineno ( int _line_number ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap ( void ); +#else +extern int yywrap ( void ); +#endif +#endif + +#ifndef YY_NO_UNPUT + + static void yyunput ( int c, char *buf_ptr ); + +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy ( char *, const char *, int ); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen ( const char * ); +#endif + +#ifndef YY_NO_INPUT +#ifdef __cplusplus +static int yyinput ( void ); +#else +static int input ( void ); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k */ +#define YY_READ_BUF_SIZE 16384 +#else +#define YY_READ_BUF_SIZE 8192 +#endif /* __ia64__ */ +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ + int n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + } \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int yylex (void); + +#define YY_DECL int yylex (void) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK /*LINTED*/break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + yy_state_type yy_current_state; + char *yy_cp, *yy_bp; + int yy_act; + + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ + + if ( ! yyin ) + yyin = stdin; + + if ( ! yyout ) + yyout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer( yyin, YY_BUF_SIZE ); + } + + yy_load_buffer_state( ); + } + + { +#line 24 "config_file_lex.l" + + +#line 754 "config_file_lex.c" + + while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ + { + yy_cp = (yy_c_buf_p); + + /* Support of yytext. */ + *yy_cp = (yy_hold_char); + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = (yy_start); +yy_match: + do + { + YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 104 ) + yy_c = yy_meta[yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + ++yy_cp; + } + while ( yy_base[yy_current_state] != 134 ); + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + if ( yy_act == 0 ) + { /* have to back up */ + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + yy_act = yy_accept[yy_current_state]; + } + + YY_DO_BEFORE_ACTION; + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = (yy_hold_char); + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + goto yy_find_action; + +case 1: +YY_RULE_SETUP +#line 26 "config_file_lex.l" +{ /* ignore whitespace */ } + YY_BREAK +case 2: +YY_RULE_SETUP +#line 28 "config_file_lex.l" +{ /* ignore comments */ } + YY_BREAK +case 3: +/* rule 3 can match eol */ +YY_RULE_SETUP +#line 30 "config_file_lex.l" +{ config_file_lineno++; } + YY_BREAK +case 4: +YY_RULE_SETUP +#line 32 "config_file_lex.l" +{ return SEQUENCE; } + YY_BREAK +case 5: +YY_RULE_SETUP +#line 34 "config_file_lex.l" +{ return IGNORE; } + YY_BREAK +case 6: +YY_RULE_SETUP +#line 36 "config_file_lex.l" +{ return UNCGI; } + YY_BREAK +case 7: +YY_RULE_SETUP +#line 38 "config_file_lex.l" +{ return ISO8859_1; } + YY_BREAK +case 8: +YY_RULE_SETUP +#line 40 "config_file_lex.l" +{ return UTF_8; } + YY_BREAK +case 9: +YY_RULE_SETUP +#line 42 "config_file_lex.l" +{ return SAFE; } + YY_BREAK +case 10: +YY_RULE_SETUP +#line 44 "config_file_lex.l" +{ return WIPEUP; } + YY_BREAK +case 11: +YY_RULE_SETUP +#line 46 "config_file_lex.l" +{ return MAX_LENGTH; } + YY_BREAK +case 12: +YY_RULE_SETUP +#line 48 "config_file_lex.l" +{ return LOWER; } + YY_BREAK +case 13: +YY_RULE_SETUP +#line 50 "config_file_lex.l" +{ return LENGTH; } + YY_BREAK +case 14: +YY_RULE_SETUP +#line 52 "config_file_lex.l" +{ return FILENAME; } + YY_BREAK +case 15: +YY_RULE_SETUP +#line 54 "config_file_lex.l" +{ return REMOVE_TRAILING; } + YY_BREAK +case 16: +YY_RULE_SETUP +#line 56 "config_file_lex.l" +{ return OPEN; } + YY_BREAK +case 17: +YY_RULE_SETUP +#line 57 "config_file_lex.l" +{ return CLOSE; } + YY_BREAK +case 18: +/* rule 18 can match eol */ +YY_RULE_SETUP +#line 59 "config_file_lex.l" +{ + yylval.string = strdup(yytext+1); + if (yylval.string[yyleng-2] != '"') { + printf("Unterminated character string\n"); + } + else { + yylval.string[yyleng-2] = '\0'; + } + return QSTRING; + } + YY_BREAK +case 19: +YY_RULE_SETUP +#line 70 "config_file_lex.l" +{ + yylval.string = strdup(yytext); + return ID; + } + YY_BREAK +case 20: +YY_RULE_SETUP +#line 75 "config_file_lex.l" +{ + yylval.nvalue = atoi(yytext); + return NVALUE; + } + YY_BREAK +case 21: +YY_RULE_SETUP +#line 82 "config_file_lex.l" +{ return EOL; } + YY_BREAK +case 22: +YY_RULE_SETUP +#line 84 "config_file_lex.l" +ECHO; + YY_BREAK +#line 938 "config_file_lex.c" +case YY_STATE_EOF(INITIAL): + yyterminate(); + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = (yy_hold_char); + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++(yy_c_buf_p); + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = (yy_c_buf_p); + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_END_OF_FILE: + { + (yy_did_buffer_switch_on_eof) = 0; + + if ( yywrap( ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = + (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + (yy_c_buf_p) = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ + } /* end of user's declarations */ +} /* end of yylex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (void) +{ + char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + char *source = (yytext_ptr); + int number_to_move, i; + int ret_val; + + if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; + + else + { + int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; + + int yy_c_buf_p_offset = + (int) ((yy_c_buf_p) - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + yyrealloc( (void *) b->yy_ch_buf, + (yy_size_t) (b->yy_buf_size + 2) ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = NULL; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + (yy_n_chars), num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + if ( (yy_n_chars) == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart( yyin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + /* Extend the array by 50%, plus the number we really need. */ + int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( + (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); + if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + /* "- 2" to take care of EOB's */ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); + } + + (yy_n_chars) += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; + + (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (void) +{ + yy_state_type yy_current_state; + char *yy_cp; + + yy_current_state = (yy_start); + + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + { + YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 104 ) + yy_c = yy_meta[yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +{ + int yy_is_jam; + char *yy_cp = (yy_c_buf_p); + + YY_CHAR yy_c = 1; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 104 ) + yy_c = yy_meta[yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_is_jam = (yy_current_state == 103); + + return yy_is_jam ? 0 : yy_current_state; +} + +#ifndef YY_NO_UNPUT + + static void yyunput (int c, char * yy_bp ) +{ + char *yy_cp; + + yy_cp = (yy_c_buf_p); + + /* undo effects of setting up yytext */ + *yy_cp = (yy_hold_char); + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + int number_to_move = (yy_n_chars) + 2; + char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; + char *source = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; + + while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = + (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (char) c; + + (yytext_ptr) = yy_bp; + (yy_hold_char) = *yy_cp; + (yy_c_buf_p) = yy_cp; +} + +#endif + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (void) +#else + static int input (void) +#endif + +{ + int c; + + *(yy_c_buf_p) = (yy_hold_char); + + if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + /* This was really a NUL. */ + *(yy_c_buf_p) = '\0'; + + else + { /* need more input */ + int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); + ++(yy_c_buf_p); + + switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart( yyin ); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( yywrap( ) ) + return 0; + + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = (yytext_ptr) + offset; + break; + } + } + } + + c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ + *(yy_c_buf_p) = '\0'; /* preserve yytext */ + (yy_hold_char) = *++(yy_c_buf_p); + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * + * @note This function does not reset the start condition to @c INITIAL . + */ + void yyrestart (FILE * input_file ) +{ + + if ( ! YY_CURRENT_BUFFER ){ + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer( yyin, YY_BUF_SIZE ); + } + + yy_init_buffer( YY_CURRENT_BUFFER, input_file ); + yy_load_buffer_state( ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * + */ + void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +{ + + /* TODO. We should be able to replace this entire function body + * with + * yypop_buffer_state(); + * yypush_buffer_state(new_buffer); + */ + yyensure_buffer_stack (); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + yy_load_buffer_state( ); + + /* We don't actually know whether we did this switch during + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe + * to go ahead and always set it. + */ + (yy_did_buffer_switch_on_eof) = 1; +} + +static void yy_load_buffer_state (void) +{ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + (yy_hold_char) = *(yy_c_buf_p); +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * + * @return the allocated buffer state. + */ + YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + yy_init_buffer( b, file ); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with yy_create_buffer() + * + */ + void yy_delete_buffer (YY_BUFFER_STATE b ) +{ + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + yyfree( (void *) b->yy_ch_buf ); + + yyfree( (void *) b ); +} + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a yyrestart() or at EOF. + */ + static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) + +{ + int oerrno = errno; + + yy_flush_buffer( b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then yy_init_buffer was _probably_ + * called from yyrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * + */ + void yy_flush_buffer (YY_BUFFER_STATE b ) +{ + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + yy_load_buffer_state( ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * + */ +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) +{ + if (new_buffer == NULL) + return; + + yyensure_buffer_stack(); + + /* This block is copied from yy_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + (yy_buffer_stack_top)++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from yy_switch_to_buffer. */ + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * + */ +void yypop_buffer_state (void) +{ + if (!YY_CURRENT_BUFFER) + return; + + yy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + if ((yy_buffer_stack_top) > 0) + --(yy_buffer_stack_top); + + if (YY_CURRENT_BUFFER) { + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void yyensure_buffer_stack (void) +{ + yy_size_t num_to_alloc; + + if (!(yy_buffer_stack)) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ + (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + (yy_buffer_stack_max) = num_to_alloc; + (yy_buffer_stack_top) = 0; + return; + } + + if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + yy_size_t grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = (yy_buffer_stack_max) + grow_size; + (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc + ((yy_buffer_stack), + num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + /* zero only the new slots.*/ + memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); + (yy_buffer_stack_max) = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return NULL; + + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + + b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = NULL; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + yy_switch_to_buffer( b ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to yylex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * yy_scan_bytes() instead. + */ +YY_BUFFER_STATE yy_scan_string (const char * yystr ) +{ + + return yy_scan_bytes( yystr, (int) strlen(yystr) ); +} + +/** Setup the input buffer state to scan the given bytes. The next call to yylex() will + * scan from a @e copy of @a bytes. + * @param yybytes the byte buffer to scan + * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = (yy_size_t) (_yybytes_len + 2); + buf = (char *) yyalloc( n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = yy_scan_buffer( buf, n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yynoreturn yy_fatal_error (const char* msg ) +{ + fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + yytext[yyleng] = (yy_hold_char); \ + (yy_c_buf_p) = yytext + yyless_macro_arg; \ + (yy_hold_char) = *(yy_c_buf_p); \ + *(yy_c_buf_p) = '\0'; \ + yyleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the current line number. + * + */ +int yyget_lineno (void) +{ + + return yylineno; +} + +/** Get the input stream. + * + */ +FILE *yyget_in (void) +{ + return yyin; +} + +/** Get the output stream. + * + */ +FILE *yyget_out (void) +{ + return yyout; +} + +/** Get the length of the current token. + * + */ +int yyget_leng (void) +{ + return yyleng; +} + +/** Get the current token. + * + */ + +char *yyget_text (void) +{ + return yytext; +} + +/** Set the current line number. + * @param _line_number line number + * + */ +void yyset_lineno (int _line_number ) +{ + + yylineno = _line_number; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param _in_str A readable stream. + * + * @see yy_switch_to_buffer + */ +void yyset_in (FILE * _in_str ) +{ + yyin = _in_str ; +} + +void yyset_out (FILE * _out_str ) +{ + yyout = _out_str ; +} + +int yyget_debug (void) +{ + return yy_flex_debug; +} + +void yyset_debug (int _bdebug ) +{ + yy_flex_debug = _bdebug ; +} + +static int yy_init_globals (void) +{ + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from yylex_destroy(), so don't allocate here. + */ + + (yy_buffer_stack) = NULL; + (yy_buffer_stack_top) = 0; + (yy_buffer_stack_max) = 0; + (yy_c_buf_p) = NULL; + (yy_init) = 0; + (yy_start) = 0; + +/* Defined in main.c */ +#ifdef YY_STDINIT + yyin = stdin; + yyout = stdout; +#else + yyin = NULL; + yyout = NULL; +#endif + + /* For future reference: Set errno on error, since we are called by + * yylex_init() + */ + return 0; +} + +/* yylex_destroy is for both reentrant and non-reentrant scanners. */ +int yylex_destroy (void) +{ + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + yy_delete_buffer( YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + yypop_buffer_state(); + } + + /* Destroy the stack itself. */ + yyfree((yy_buffer_stack) ); + (yy_buffer_stack) = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * yylex() is called, initialization will occur. */ + yy_init_globals( ); + + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, const char * s2, int n ) +{ + + int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (const char * s ) +{ + int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +void *yyalloc (yy_size_t size ) +{ + return malloc(size); +} + +void *yyrealloc (void * ptr, yy_size_t size ) +{ + + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return realloc(ptr, size); +} + +void yyfree (void * ptr ) +{ + free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +#line 84 "config_file_lex.l" + + + + diff --git a/detox/latest/src/config_file_lex.l b/detox/latest/src/config_file_lex.l new file mode 100644 index 0000000..b68d241 --- /dev/null +++ b/detox/latest/src/config_file_lex.l @@ -0,0 +1,86 @@ +%{ +/** + * This file is part of the Detox package. + * + * Copyright (c) Doug Harple + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +#include "config.h" + +#include +#include + +#include "config_file_yacc.h" + +int config_file_lineno = 1; + +%} + +%option noyywrap + +%% + +[\t ]+ { /* ignore whitespace */ } + +#.* { /* ignore comments */ } + +\n { config_file_lineno++; } + +[Ss][Ee][Qq][Uu][Ee][Nn][Cc][Ee] { return SEQUENCE; } + +[Ii][Gg][Nn][Oo][Rr][Ee] { return IGNORE; } + +[Uu][Nn][Cc][Gg][Ii] { return UNCGI; } + +[Ii][Ss][Oo]8859_1 { return ISO8859_1; } + +[Uu][Tt][Ff]_8 { return UTF_8; } + +[Ss][Aa][Ff][Ee] { return SAFE; } + +[Ww][Ii][Pp][Ee][Uu][Pp] { return WIPEUP; } + +[Mm][Aa][Xx]_[Ll][Ee][Nn][Gg][Tt][Hh] { return MAX_LENGTH; } + +[Ll][Oo][Ww][Ee][Rr] { return LOWER; } + +[Ll][Ee][Nn][Gg][Tt][Hh] { return LENGTH; } + +[Ff][Ii][Ll][Ee][Nn][Aa][Mm][Ee] { return FILENAME; } + +[Rr][Ee][Mm][Oo][Vv][Ee]_[Tt][Rr][Aa][Ii][Ll][Ii][Nn][Gg] { return REMOVE_TRAILING; } + +[{] { return OPEN; } +[}] { return CLOSE; } + +\"[^\"\n]*[\"\n] { + yylval.string = strdup(yytext+1); + if (yylval.string[yyleng-2] != '"') { + printf("Unterminated character string\n"); + } + else { + yylval.string[yyleng-2] = '\0'; + } + return QSTRING; + } + +[a-zA-Z][a-zA-Z0-9_]* { + yylval.string = strdup(yytext); + return ID; + } + +[0-9]+ { + yylval.nvalue = atoi(yytext); + return NVALUE; + } + + + +[;] { return EOL; } + +%% + + diff --git a/detox/latest/src/config_file_lex.o b/detox/latest/src/config_file_lex.o new file mode 100644 index 0000000000000000000000000000000000000000..b0f130a12bc171eae0096ed4246bcfefb6657b51 GIT binary patch literal 57144 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 nUuTx5Y(qpK2#xZho;Q-I6ZJ + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +#include "config.h" + +#include +#include +#include +#include + +#include "detox.h" +#include "config_file_spoof.h" +#include "clean_string.h" + +struct detox_parse_results *spoof_config_file(struct detox_options *main_options) +{ + struct detox_parse_results *ret = NULL; + struct detox_sequence_list *sequences = NULL; + struct detox_sequence_entry *work = NULL; + + /* + * Initialize return + */ + + ret = malloc(sizeof(struct detox_parse_results)); + if (ret == NULL) { + fprintf(stderr, "out of memory: %s\n", strerror(errno)); + exit(EXIT_FAILURE); + } + + memset(ret, 0, sizeof(struct detox_parse_results)); + + /* + * Head of sequence + */ + + sequences = malloc(sizeof(struct detox_sequence_list)); + if (sequences == NULL) { + fprintf(stderr, "out of memory: %s\n", strerror(errno)); + exit(EXIT_FAILURE); + } + + memset(sequences, 0, sizeof(struct detox_sequence_list)); + + sequences->name = strdup("default"); + sequences->source_filename = strdup("inside the beast"); + + /* + * Step 1 - ISO8859_1 + */ + + sequences->head = malloc(sizeof(struct detox_sequence_entry)); + if (sequences->head == NULL) { + fprintf(stderr, "out of memory: %s\n", strerror(errno)); + exit(EXIT_FAILURE); + } + + work = sequences->head; + memset(work, 0, sizeof(struct detox_sequence_entry)); + + work->cleaner = &clean_iso8859_1; + + /* + * Step 2 - Safe + */ + + work->next = malloc(sizeof(struct detox_sequence_entry)); + if (work->next == NULL) { + fprintf(stderr, "out of memory: %s\n", strerror(errno)); + exit(EXIT_FAILURE); + } + + work = work->next; + memset(work, 0, sizeof(struct detox_sequence_entry)); + + work->cleaner = &clean_safe; + + /* + * Step 3 - Wipe Up + */ + + work->next = malloc(sizeof(struct detox_sequence_entry)); + if (work->next == NULL) { + fprintf(stderr, "out of memory: %s\n", strerror(errno)); + exit(EXIT_FAILURE); + } + + work = work->next; + memset(work, 0, sizeof(struct detox_sequence_entry)); + + work->cleaner = &clean_wipeup; + + /* + * Deprecated + */ + if (main_options->remove_trailing) { + static struct clean_string_options *csopts; + + csopts = malloc(sizeof(struct clean_string_options)); + if (csopts == NULL) { + fprintf(stderr, "out of memory: %s\n", strerror(errno)); + exit(EXIT_FAILURE); + } + + memset(csopts, 0, sizeof(struct clean_string_options)); + csopts->remove_trailing = 1; + + work->options = csopts; + } + + /* + * + */ + + ret->sequences = sequences; + + return ret; +} diff --git a/detox/latest/src/config_file_spoof.h b/detox/latest/src/config_file_spoof.h new file mode 100644 index 0000000..306ec79 --- /dev/null +++ b/detox/latest/src/config_file_spoof.h @@ -0,0 +1,17 @@ +/** + * This file is part of the Detox package. + * + * Copyright (c) Doug Harple + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +#ifndef __CONFIG_FILE_SPOOF_H +#define __CONFIG_FILE_SPOOF_H + +#include "detox.h" + +extern struct detox_parse_results *spoof_config_file(struct detox_options *main_options); + +#endif /* __CONFIG_FILE_SPOOF_H */ diff --git a/detox/latest/src/config_file_spoof.o b/detox/latest/src/config_file_spoof.o new file mode 100644 index 0000000000000000000000000000000000000000..e3be5b6b65457d1fc1d1dc7a38582d626ac54167 GIT binary patch literal 13800 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 BLy-Ug literal 0 HcmV?d00001 diff --git a/detox/latest/src/config_file_yacc.c b/detox/latest/src/config_file_yacc.c new file mode 100644 index 0000000..0a21b3b --- /dev/null +++ b/detox/latest/src/config_file_yacc.c @@ -0,0 +1,1949 @@ +/* A Bison parser, made by GNU Bison 3.0.4. */ + +/* Bison implementation for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-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 . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "3.0.4" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + + + + +/* Copy the first part of user declarations. */ +#line 1 "config_file_yacc.y" /* yacc.c:339 */ + +/** + * This file is part of the Detox package. + * + * Copyright (c) Doug Harple + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +#include "config.h" + +#include +#include +#include + +#include "detox.h" +#include "clean_string.h" +#include "config_file.h" + +/* + * I must apologize in advance for the cryptic, global variable names. + */ + +static struct detox_sequence_list *cf_sl_ret, *cf_sl_current; +static struct detox_sequence_entry *cf_seq_ret, *cf_seq_current; +static struct detox_ignore_entry *cf_ignore_ret, *cf_ignore_current; +static struct clean_string_options *csopts; +static char *current_name = NULL; +static char *current_filename = NULL; +static struct detox_options *current_options; + +void cf_append_sequence_list(void); +void cf_append_sequence_entry(void *ptr, void *opts); +void cf_append_ignore_entry(int token, void *str); + +void yyerror (char *s); + +int yylex (void); + + +#line 131 "config_file_yacc.c" /* yacc.c:339 */ + +# ifndef YY_NULLPTR +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULLPTR nullptr +# else +# define YY_NULLPTR 0 +# endif +# endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* In a future release of Bison, this section will be replaced + by #include "y.tab.h". */ +#ifndef YY_YY_CONFIG_FILE_YACC_H_INCLUDED +# define YY_YY_CONFIG_FILE_YACC_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + enum yytokentype + { + QSTRING = 258, + ID = 259, + SEQUENCE = 260, + IGNORE = 261, + UNCGI = 262, + ISO8859_1 = 263, + UTF_8 = 264, + SAFE = 265, + WIPEUP = 266, + MAX_LENGTH = 267, + LOWER = 268, + FILENAME = 269, + REMOVE_TRAILING = 270, + LENGTH = 271, + OPEN = 272, + CLOSE = 273, + EOL = 274, + NVALUE = 275 + }; +#endif +/* Tokens. */ +#define QSTRING 258 +#define ID 259 +#define SEQUENCE 260 +#define IGNORE 261 +#define UNCGI 262 +#define ISO8859_1 263 +#define UTF_8 264 +#define SAFE 265 +#define WIPEUP 266 +#define MAX_LENGTH 267 +#define LOWER 268 +#define FILENAME 269 +#define REMOVE_TRAILING 270 +#define LENGTH 271 +#define OPEN 272 +#define CLOSE 273 +#define EOL 274 +#define NVALUE 275 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED + +union YYSTYPE +{ +#line 66 "config_file_yacc.y" /* yacc.c:355 */ + + char *string; /* string buffer */ + int cmd; /* command value */ + struct detox_sequence_entry *seq; /* sequence */ + int nvalue; /* nvalue */ + +#line 218 "config_file_yacc.c" /* yacc.c:355 */ +}; + +typedef union YYSTYPE YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + +int yyparse (void); + +#endif /* !YY_YY_CONFIG_FILE_YACC_H_INCLUDED */ + +/* Copy the second part of user declarations. */ + +#line 235 "config_file_yacc.c" /* yacc.c:358 */ + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#else +typedef signed char yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(Msgid) dgettext ("bison-runtime", Msgid) +# endif +# endif +# ifndef YY_ +# define YY_(Msgid) Msgid +# endif +#endif + +#ifndef YY_ATTRIBUTE +# if (defined __GNUC__ \ + && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ + || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C +# define YY_ATTRIBUTE(Spec) __attribute__(Spec) +# else +# define YY_ATTRIBUTE(Spec) /* empty */ +# endif +#endif + +#ifndef YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) +#endif + +#ifndef YY_ATTRIBUTE_UNUSED +# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) +#endif + +#if !defined _Noreturn \ + && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) +# if defined _MSC_VER && 1200 <= _MSC_VER +# define _Noreturn __declspec (noreturn) +# else +# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(E) ((void) (E)) +#else +# define YYUSE(E) /* empty */ +#endif + +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") +#else +# define YY_INITIAL_VALUE(Value) Value +#endif +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#endif + + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS +# include /* INFRINGES ON USER NAME SPACE */ + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined EXIT_SUCCESS \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined EXIT_SUCCESS +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined EXIT_SUCCESS +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss_alloc; + YYSTYPE yyvs_alloc; +}; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +# define YYCOPY_NEEDED 1 + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) + +#endif + +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (0) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 2 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 74 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 21 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 19 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 40 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 78 + +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 275 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, without out-of-bounds checking. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20 +}; + +#if YYDEBUG + /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +static const yytype_uint8 yyrline[] = +{ + 0, 85, 85, 87, 90, 92, 95, 98, 101, 104, + 105, 108, 110, 112, 114, 116, 118, 120, 123, 125, + 127, 136, 138, 140, 149, 151, 153, 162, 175, 188, + 197, 199, 201, 210, 213, 216, 219, 220, 223, 228, + 230 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || 0 +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "QSTRING", "ID", "SEQUENCE", "IGNORE", + "UNCGI", "ISO8859_1", "UTF_8", "SAFE", "WIPEUP", "MAX_LENGTH", "LOWER", + "FILENAME", "REMOVE_TRAILING", "LENGTH", "OPEN", "CLOSE", "EOL", + "NVALUE", "$accept", "configfile", "rule", "sequence", "sequence_open", + "sequence_close", "method_list", "method", "iso8859_1", "utf_8", "safe", + "wipeup", "max_length", "ignore", "ignore_open", "ignore_close", + "ignore_list", "ignore_filename", "string", YY_NULLPTR +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[NUM] -- (External) token number corresponding to the + (internal) symbol number NUM (which must be that of a token). */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275 +}; +# endif + +#define YYPACT_NINF -29 + +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-29))) + +#define YYTABLE_NINF -1 + +#define yytable_value_is_error(Yytable_value) \ + 0 + + /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +static const yytype_int8 yypact[] = +{ + -29, 24, -29, 35, -8, -29, -29, 6, -29, -4, + -29, -29, 3, -29, 2, 23, 25, 26, 27, 28, + 22, -6, -29, 29, 30, 31, 32, 33, 35, 8, + -29, -29, -29, 14, 17, 19, -7, 18, -29, 34, + -29, -29, -29, -29, -29, -29, -29, 36, 37, -29, + -29, 35, -29, 35, -29, 35, -29, 38, -29, 39, + -29, -29, -29, -29, 41, 42, 43, 40, 44, 46, + 47, 48, -29, 49, -29, -29, -29, -29 +}; + + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ +static const yytype_uint8 yydefact[] = +{ + 2, 0, 1, 0, 0, 3, 4, 0, 5, 0, + 39, 40, 0, 34, 0, 18, 21, 24, 27, 30, + 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, + 36, 7, 11, 0, 0, 0, 0, 0, 12, 0, + 6, 10, 14, 15, 16, 13, 17, 0, 0, 33, + 37, 0, 19, 0, 22, 0, 25, 0, 28, 0, + 31, 8, 38, 35, 0, 0, 0, 0, 0, 0, + 0, 0, 29, 0, 20, 23, 26, 32 +}; + + /* YYPGOTO[NTERM-NUM]. */ +static const yytype_int8 yypgoto[] = +{ + -29, -29, -29, -29, -29, -29, -29, 50, -29, -29, + -29, -29, -29, -29, -29, -29, -29, 45, -28 +}; + + /* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int8 yydefgoto[] = +{ + -1, 1, 5, 6, 7, 40, 21, 22, 23, 24, + 25, 26, 27, 8, 9, 49, 29, 30, 12 +}; + + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ +static const yytype_uint8 yytable[] = +{ + 47, 14, 15, 16, 17, 18, 19, 20, 57, 13, + 28, 58, 39, 14, 15, 16, 17, 18, 19, 20, + 31, 32, 28, 64, 2, 65, 48, 66, 51, 3, + 4, 53, 52, 55, 59, 54, 60, 56, 10, 11, + 33, 38, 34, 35, 36, 37, 0, 0, 42, 43, + 44, 45, 46, 61, 0, 62, 63, 67, 72, 68, + 69, 70, 71, 73, 74, 75, 76, 77, 0, 0, + 0, 41, 0, 0, 50 +}; + +static const yytype_int8 yycheck[] = +{ + 28, 7, 8, 9, 10, 11, 12, 13, 15, 17, + 14, 18, 18, 7, 8, 9, 10, 11, 12, 13, + 17, 19, 14, 51, 0, 53, 18, 55, 14, 5, + 6, 14, 18, 14, 16, 18, 18, 18, 3, 4, + 17, 19, 17, 17, 17, 17, -1, -1, 19, 19, + 19, 19, 19, 19, -1, 19, 19, 19, 18, 20, + 19, 19, 19, 19, 18, 18, 18, 18, -1, -1, + -1, 21, -1, -1, 29 +}; + + /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 22, 0, 5, 6, 23, 24, 25, 34, 35, + 3, 4, 39, 17, 7, 8, 9, 10, 11, 12, + 13, 27, 28, 29, 30, 31, 32, 33, 14, 37, + 38, 17, 19, 17, 17, 17, 17, 17, 19, 18, + 26, 28, 19, 19, 19, 19, 19, 39, 18, 36, + 38, 14, 18, 14, 18, 14, 18, 15, 18, 16, + 18, 19, 19, 19, 39, 39, 39, 19, 20, 19, + 19, 19, 18, 19, 18, 18, 18, 18 +}; + + /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 21, 22, 22, 23, 23, 24, 25, 26, 27, + 27, 28, 28, 28, 28, 28, 28, 28, 29, 29, + 29, 30, 30, 30, 31, 31, 31, 32, 32, 32, + 33, 33, 33, 34, 35, 36, 37, 37, 38, 39, + 39 +}; + + /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 0, 2, 1, 1, 3, 3, 2, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 1, 3, + 6, 1, 3, 6, 1, 3, 6, 1, 3, 5, + 1, 3, 6, 3, 2, 2, 1, 2, 3, 1, + 1 +}; + + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (0) + +/* Error token number */ +#define YYTERROR 1 +#define YYERRCODE 256 + + + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) + +/* This macro is provided for backward compatibility. */ +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif + + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (0) + + +/*----------------------------------------. +| Print this symbol's value on YYOUTPUT. | +`----------------------------------------*/ + +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +{ + FILE *yyo = yyoutput; + YYUSE (yyo); + if (!yyvaluep) + return; +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# endif + YYUSE (yytype); +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +{ + YYFPRINTF (yyoutput, "%s %s (", + yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +static void +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +static void +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) +{ + unsigned long int yylno = yyrline[yyrule]; + int yynrhs = yyr2[yyrule]; + int yyi; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, + yystos[yyssp[yyi + 1 - yynrhs]], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, Rule); \ +} while (0) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +static YYSIZE_T +yystrlen (const char *yystr) +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +static char * +yystpcpy (char *yydest, const char *yysrc) +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. + + Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return 2 if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) +{ + YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = YY_NULLPTR; + /* Arguments of yyformat. */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ + int yycount = 0; + + /* There are many possibilities here to consider: + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yytoken != YYEMPTY) + { + int yyn = yypact[*yyssp]; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yyx; + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + { + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + } + } + } + + switch (yycount) + { +# define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +# undef YYCASE_ + } + + { + YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; + } + + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + { + char *yyp = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } + else + { + yyp++; + yyformat++; + } + } + return 0; +} +#endif /* YYERROR_VERBOSE */ + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +{ + YYUSE (yyvaluep); + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END +} + + + + +/* The lookahead symbol. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; +/* Number of syntax errors so far. */ +int yynerrs; + + +/*----------. +| yyparse. | +`----------*/ + +int +yyparse (void) +{ + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + + /* The stacks and their tools: + 'yyss': related to states. + 'yyvs': related to semantic values. + + Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; + + YYSIZE_T yystacksize; + + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken = 0; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + yyssp = yyss = yyssa; + yyvsp = yyvs = yyvsa; + yystacksize = YYINITDEPTH; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yypact_value_is_default (yyn)) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = yylex (); + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + + yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + '$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 7: +#line 98 "config_file_yacc.y" /* yacc.c:1646 */ + { current_name = (yyvsp[-1].string); } +#line 1358 "config_file_yacc.c" /* yacc.c:1646 */ + break; + + case 8: +#line 101 "config_file_yacc.y" /* yacc.c:1646 */ + { cf_append_sequence_list(); } +#line 1364 "config_file_yacc.c" /* yacc.c:1646 */ + break; + + case 11: +#line 108 "config_file_yacc.y" /* yacc.c:1646 */ + { cf_append_sequence_entry(&clean_uncgi, NULL); } +#line 1370 "config_file_yacc.c" /* yacc.c:1646 */ + break; + + case 12: +#line 110 "config_file_yacc.y" /* yacc.c:1646 */ + { cf_append_sequence_entry(&clean_lower, NULL); } +#line 1376 "config_file_yacc.c" /* yacc.c:1646 */ + break; + + case 18: +#line 123 "config_file_yacc.y" /* yacc.c:1646 */ + { cf_append_sequence_entry(&clean_iso8859_1, NULL); } +#line 1382 "config_file_yacc.c" /* yacc.c:1646 */ + break; + + case 19: +#line 125 "config_file_yacc.y" /* yacc.c:1646 */ + { cf_append_sequence_entry(&clean_iso8859_1, NULL); } +#line 1388 "config_file_yacc.c" /* yacc.c:1646 */ + break; + + case 20: +#line 127 "config_file_yacc.y" /* yacc.c:1646 */ + { + csopts = malloc(sizeof(struct clean_string_options)); + memset(csopts, 0, sizeof(struct clean_string_options)); + csopts->filename = (yyvsp[-2].string); + + cf_append_sequence_entry(&clean_iso8859_1, csopts); + } +#line 1400 "config_file_yacc.c" /* yacc.c:1646 */ + break; + + case 21: +#line 136 "config_file_yacc.y" /* yacc.c:1646 */ + { cf_append_sequence_entry(&clean_utf_8, NULL); } +#line 1406 "config_file_yacc.c" /* yacc.c:1646 */ + break; + + case 22: +#line 138 "config_file_yacc.y" /* yacc.c:1646 */ + { cf_append_sequence_entry(&clean_utf_8, NULL); } +#line 1412 "config_file_yacc.c" /* yacc.c:1646 */ + break; + + case 23: +#line 140 "config_file_yacc.y" /* yacc.c:1646 */ + { + csopts = malloc(sizeof(struct clean_string_options)); + memset(csopts, 0, sizeof(struct clean_string_options)); + csopts->filename = (yyvsp[-2].string); + + cf_append_sequence_entry(&clean_utf_8, csopts); + } +#line 1424 "config_file_yacc.c" /* yacc.c:1646 */ + break; + + case 24: +#line 149 "config_file_yacc.y" /* yacc.c:1646 */ + { cf_append_sequence_entry(&clean_safe, NULL); } +#line 1430 "config_file_yacc.c" /* yacc.c:1646 */ + break; + + case 25: +#line 151 "config_file_yacc.y" /* yacc.c:1646 */ + { cf_append_sequence_entry(&clean_safe, NULL); } +#line 1436 "config_file_yacc.c" /* yacc.c:1646 */ + break; + + case 26: +#line 153 "config_file_yacc.y" /* yacc.c:1646 */ + { + csopts = malloc(sizeof(struct clean_string_options)); + memset(csopts, 0, sizeof(struct clean_string_options)); + csopts->filename = (yyvsp[-2].string); + + cf_append_sequence_entry(&clean_safe, csopts); + } +#line 1448 "config_file_yacc.c" /* yacc.c:1646 */ + break; + + case 27: +#line 162 "config_file_yacc.y" /* yacc.c:1646 */ + { + if (current_options->remove_trailing) { + csopts = malloc(sizeof(struct clean_string_options)); + memset(csopts, 0, sizeof(struct clean_string_options)); + csopts->remove_trailing = 1; + } + else { + csopts = NULL; + } + + cf_append_sequence_entry(&clean_wipeup, csopts); + } +#line 1465 "config_file_yacc.c" /* yacc.c:1646 */ + break; + + case 28: +#line 175 "config_file_yacc.y" /* yacc.c:1646 */ + { + if (current_options->remove_trailing) { + csopts = malloc(sizeof(struct clean_string_options)); + memset(csopts, 0, sizeof(struct clean_string_options)); + csopts->remove_trailing = 1; + } + else { + csopts = NULL; + } + + cf_append_sequence_entry(&clean_wipeup, csopts); + } +#line 1482 "config_file_yacc.c" /* yacc.c:1646 */ + break; + + case 29: +#line 188 "config_file_yacc.y" /* yacc.c:1646 */ + { + csopts = malloc(sizeof(struct clean_string_options)); + memset(csopts, 0, sizeof(struct clean_string_options)); + csopts->remove_trailing = 1; + + cf_append_sequence_entry(&clean_wipeup, csopts); + } +#line 1494 "config_file_yacc.c" /* yacc.c:1646 */ + break; + + case 30: +#line 197 "config_file_yacc.y" /* yacc.c:1646 */ + { cf_append_sequence_entry(&clean_max_length, NULL); } +#line 1500 "config_file_yacc.c" /* yacc.c:1646 */ + break; + + case 31: +#line 199 "config_file_yacc.y" /* yacc.c:1646 */ + { cf_append_sequence_entry(&clean_max_length, NULL); } +#line 1506 "config_file_yacc.c" /* yacc.c:1646 */ + break; + + case 32: +#line 201 "config_file_yacc.y" /* yacc.c:1646 */ + { + csopts = malloc(sizeof(struct clean_string_options)); + memset(csopts, 0, sizeof(struct clean_string_options)); + csopts->max_length = (size_t)(yyvsp[-2].nvalue); + + cf_append_sequence_entry(&clean_max_length, csopts); + } +#line 1518 "config_file_yacc.c" /* yacc.c:1646 */ + break; + + case 38: +#line 223 "config_file_yacc.y" /* yacc.c:1646 */ + { + cf_append_ignore_entry(FILENAME, (yyvsp[-1].string)); + } +#line 1526 "config_file_yacc.c" /* yacc.c:1646 */ + break; + + case 39: +#line 228 "config_file_yacc.y" /* yacc.c:1646 */ + { (yyval.string) = (yyvsp[0].string); } +#line 1532 "config_file_yacc.c" /* yacc.c:1646 */ + break; + + case 40: +#line 230 "config_file_yacc.y" /* yacc.c:1646 */ + { (yyval.string) = (yyvsp[0].string); } +#line 1538 "config_file_yacc.c" /* yacc.c:1646 */ + break; + + +#line 1542 "config_file_yacc.c" /* yacc.c:1646 */ + default: break; + } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + /* Now 'shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*--------------------------------------. +| yyerrlab -- here on detecting error. | +`--------------------------------------*/ +yyerrlab: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); + + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (YY_("syntax error")); +#else +# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ + yyssp, yytoken) + { + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) + yymsgp = yymsg; + else if (yysyntax_error_status == 1) + { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + if (!yymsg) + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } + else + { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; + } +# undef YYSYNTAX_ERROR +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse lookahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule whose action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (!yypact_value_is_default (yyn)) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#if !defined yyoverflow || YYERROR_VERBOSE +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } + /* Do not reclaim the symbols of the rule whose action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + return yyresult; +} +#line 233 "config_file_yacc.y" /* yacc.c:1906 */ + + +extern FILE *yyin; +extern FILE *yyout; + +struct detox_parse_results *parse_config_file(char *filename, struct detox_parse_results *previous_results, struct detox_options *main_options) { + struct detox_parse_results *ret = NULL; + + current_filename = filename; + current_options = main_options; + + /* + * XXX - Should we be closing the default yyin/yyout? If so, should we + * be setting them to NULL at the end of this function? + */ + + yyin = fopen(filename, "r"); + if (yyin == NULL) { + return previous_results; + } + yyout = fopen("/dev/null", "w"); + + /* + * Initialize the return variable + */ + + if (previous_results) { + ret = previous_results; + } + else { + ret = malloc(sizeof(struct detox_parse_results)); + memset(ret, 0, sizeof(struct detox_parse_results)); + } + + /* + * Initialize the sequence list + */ + + cf_sl_ret = NULL; + cf_sl_current = NULL; + + if (previous_results && previous_results->sequences) { + cf_sl_ret = previous_results->sequences; + cf_sl_current = cf_sl_ret; + while (cf_sl_current->next != NULL) { + cf_sl_current = cf_sl_current->next; + } + } + + /* + * Initialize the ignore list + */ + + cf_ignore_ret = NULL; + cf_ignore_current = NULL; + + if (previous_results && previous_results->files_to_ignore) { + cf_ignore_ret = previous_results->files_to_ignore; + cf_ignore_current = cf_ignore_ret; + while (cf_ignore_current->next != NULL) { + cf_ignore_current = cf_ignore_current->next; + } + } + + /* + * Reset the sequence entry holding vars + */ + + cf_seq_ret = NULL; + cf_seq_current = NULL; + + do { + yyparse(); + } + while (!feof(yyin)); + + fclose(yyin); + fclose(yyout); + + /* + * Populate returns + */ + + ret->sequences = cf_sl_ret; + ret->files_to_ignore = cf_ignore_ret; + + return ret; +} + +void yyerror(char *s) { + /* + * XXX - Is extern valid here? Does it do what I'm expecting? + */ + extern char *yytext; + + fprintf(stderr, "detox: error parsing config file %s: %s\n", current_filename, s); + fprintf(stderr, "\tline %d", config_file_lineno); + if (yytext != NULL) { + fprintf(stderr, ": %s", yytext); + } + fprintf(stderr, "\n"); + exit(EXIT_FAILURE); +} + + +void cf_append_sequence_list(void) { + struct detox_sequence_list *work; + + if (current_name == NULL) { + current_name = strdup("default"); + } + + work = NULL; + + if (cf_sl_ret != NULL) { + work = cf_sl_ret; + + while (work != NULL) { + if (strcmp(work->name, current_name) == 0) { + break; + } + + work = work->next; + } + + } + + if (work != NULL) { + /* + * XXX - Free Old Tree + */ + } + else { + work = malloc(sizeof(struct detox_sequence_list)); + memset(work, 0, sizeof(struct detox_sequence_list)); + + work->name = strdup(current_name); + + /* + * Append to the tree first. If we don't, we could create a + * circular reference. + */ + if (cf_sl_ret == NULL) { + cf_sl_ret = cf_sl_current = work; + } + else { + cf_sl_current->next = work; + cf_sl_current = work; + } + + } + + work->head = cf_seq_ret; + work->source_filename = strdup(current_filename); + cf_seq_ret = cf_seq_current = NULL; + +} + + +void cf_append_sequence_entry(void *ptr, void *opts) { + struct detox_sequence_entry *work; + + work = malloc(sizeof(struct detox_sequence_entry)); + memset(work, 0, sizeof(struct detox_sequence_entry)); + + work->cleaner = ptr; + work->options = opts; + + if (cf_seq_ret == NULL) { + cf_seq_ret = cf_seq_current = work; + } + else { + cf_seq_current->next = work; + cf_seq_current = work; + } +} + + +void cf_append_ignore_entry(int token, void *str) { + struct detox_ignore_entry *work; + + work = malloc(sizeof(struct detox_ignore_entry)); + memset(work, 0, sizeof(struct detox_ignore_entry)); + + switch(token) { + case FILENAME: + work->filename = str; + break; + + default: + break; + } + + if (cf_ignore_ret == NULL) { + cf_ignore_ret = cf_ignore_current = work; + } + else { + cf_ignore_current->next = work; + cf_ignore_current = work; + } +} + + diff --git a/detox/latest/src/config_file_yacc.h b/detox/latest/src/config_file_yacc.h new file mode 100644 index 0000000..c0a76dd --- /dev/null +++ b/detox/latest/src/config_file_yacc.h @@ -0,0 +1,113 @@ +/* A Bison parser, made by GNU Bison 3.0.4. */ + +/* Bison interface for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-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 . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +#ifndef YY_YY_CONFIG_FILE_YACC_H_INCLUDED +# define YY_YY_CONFIG_FILE_YACC_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + enum yytokentype + { + QSTRING = 258, + ID = 259, + SEQUENCE = 260, + IGNORE = 261, + UNCGI = 262, + ISO8859_1 = 263, + UTF_8 = 264, + SAFE = 265, + WIPEUP = 266, + MAX_LENGTH = 267, + LOWER = 268, + FILENAME = 269, + REMOVE_TRAILING = 270, + LENGTH = 271, + OPEN = 272, + CLOSE = 273, + EOL = 274, + NVALUE = 275 + }; +#endif +/* Tokens. */ +#define QSTRING 258 +#define ID 259 +#define SEQUENCE 260 +#define IGNORE 261 +#define UNCGI 262 +#define ISO8859_1 263 +#define UTF_8 264 +#define SAFE 265 +#define WIPEUP 266 +#define MAX_LENGTH 267 +#define LOWER 268 +#define FILENAME 269 +#define REMOVE_TRAILING 270 +#define LENGTH 271 +#define OPEN 272 +#define CLOSE 273 +#define EOL 274 +#define NVALUE 275 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED + +union YYSTYPE +{ +#line 66 "config_file_yacc.y" /* yacc.c:1909 */ + + char *string; /* string buffer */ + int cmd; /* command value */ + struct detox_sequence_entry *seq; /* sequence */ + int nvalue; /* nvalue */ + +#line 101 "config_file_yacc.h" /* yacc.c:1909 */ +}; + +typedef union YYSTYPE YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + +int yyparse (void); + +#endif /* !YY_YY_CONFIG_FILE_YACC_H_INCLUDED */ diff --git a/detox/latest/src/config_file_yacc.o b/detox/latest/src/config_file_yacc.o new file mode 100644 index 0000000000000000000000000000000000000000..f7f53f5286d3934302a39f12a499c44f3415bee4 GIT binary patch literal 42856 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 + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +#include "config.h" + +#include +#include +#include + +#include "detox.h" +#include "clean_string.h" +#include "config_file.h" + +/* + * I must apologize in advance for the cryptic, global variable names. + */ + +static struct detox_sequence_list *cf_sl_ret, *cf_sl_current; +static struct detox_sequence_entry *cf_seq_ret, *cf_seq_current; +static struct detox_ignore_entry *cf_ignore_ret, *cf_ignore_current; +static struct clean_string_options *csopts; +static char *current_name = NULL; +static char *current_filename = NULL; +static struct detox_options *current_options; + +void cf_append_sequence_list(void); +void cf_append_sequence_entry(void *ptr, void *opts); +void cf_append_ignore_entry(int token, void *str); + +void yyerror (char *s); + +int yylex (void); + +%} + +%union { + char *string; /* string buffer */ + int cmd; /* command value */ + struct detox_sequence_entry *seq; /* sequence */ + int nvalue; /* nvalue */ +} + +%token QSTRING ID +%token SEQUENCE IGNORE +%token UNCGI ISO8859_1 UTF_8 SAFE WIPEUP +%token MAX_LENGTH LOWER +%token FILENAME REMOVE_TRAILING LENGTH +%token OPEN CLOSE EOL +%token NVALUE + +%type string + +%% + +configfile: + | + configfile rule + ; + +rule: sequence + | + ignore + ; + +sequence: sequence_open method_list sequence_close + ; + +sequence_open: SEQUENCE string OPEN { current_name = $2; } + ; + +sequence_close: CLOSE EOL { cf_append_sequence_list(); } + ; + +method_list: method | + method_list method + ; + +method: UNCGI EOL { cf_append_sequence_entry(&clean_uncgi, NULL); } + | + LOWER EOL { cf_append_sequence_entry(&clean_lower, NULL); } + | + wipeup EOL + | + iso8859_1 EOL + | + utf_8 EOL + | + safe EOL + | + max_length EOL + ; + +iso8859_1: ISO8859_1 { cf_append_sequence_entry(&clean_iso8859_1, NULL); } + | + ISO8859_1 OPEN CLOSE { cf_append_sequence_entry(&clean_iso8859_1, NULL); } + | + ISO8859_1 OPEN FILENAME string EOL CLOSE { + csopts = malloc(sizeof(struct clean_string_options)); + memset(csopts, 0, sizeof(struct clean_string_options)); + csopts->filename = $4; + + cf_append_sequence_entry(&clean_iso8859_1, csopts); + } + ; + +utf_8: UTF_8 { cf_append_sequence_entry(&clean_utf_8, NULL); } + | + UTF_8 OPEN CLOSE { cf_append_sequence_entry(&clean_utf_8, NULL); } + | + UTF_8 OPEN FILENAME string EOL CLOSE { + csopts = malloc(sizeof(struct clean_string_options)); + memset(csopts, 0, sizeof(struct clean_string_options)); + csopts->filename = $4; + + cf_append_sequence_entry(&clean_utf_8, csopts); + } + ; + +safe: SAFE { cf_append_sequence_entry(&clean_safe, NULL); } + | + SAFE OPEN CLOSE { cf_append_sequence_entry(&clean_safe, NULL); } + | + SAFE OPEN FILENAME string EOL CLOSE { + csopts = malloc(sizeof(struct clean_string_options)); + memset(csopts, 0, sizeof(struct clean_string_options)); + csopts->filename = $4; + + cf_append_sequence_entry(&clean_safe, csopts); + } + ; + +wipeup: WIPEUP { + if (current_options->remove_trailing) { + csopts = malloc(sizeof(struct clean_string_options)); + memset(csopts, 0, sizeof(struct clean_string_options)); + csopts->remove_trailing = 1; + } + else { + csopts = NULL; + } + + cf_append_sequence_entry(&clean_wipeup, csopts); + } + | + WIPEUP OPEN CLOSE { + if (current_options->remove_trailing) { + csopts = malloc(sizeof(struct clean_string_options)); + memset(csopts, 0, sizeof(struct clean_string_options)); + csopts->remove_trailing = 1; + } + else { + csopts = NULL; + } + + cf_append_sequence_entry(&clean_wipeup, csopts); + } + | + WIPEUP OPEN REMOVE_TRAILING EOL CLOSE { + csopts = malloc(sizeof(struct clean_string_options)); + memset(csopts, 0, sizeof(struct clean_string_options)); + csopts->remove_trailing = 1; + + cf_append_sequence_entry(&clean_wipeup, csopts); + } + ; + +max_length: MAX_LENGTH { cf_append_sequence_entry(&clean_max_length, NULL); } + | + MAX_LENGTH OPEN CLOSE { cf_append_sequence_entry(&clean_max_length, NULL); } + | + MAX_LENGTH OPEN LENGTH NVALUE EOL CLOSE { + csopts = malloc(sizeof(struct clean_string_options)); + memset(csopts, 0, sizeof(struct clean_string_options)); + csopts->max_length = (size_t)$4; + + cf_append_sequence_entry(&clean_max_length, csopts); + } + ; + +ignore: ignore_open ignore_list ignore_close + ; + +ignore_open: IGNORE OPEN + ; + +ignore_close: CLOSE EOL + ; + +ignore_list: ignore_filename | + ignore_list ignore_filename + ; + +ignore_filename: FILENAME string EOL { + cf_append_ignore_entry(FILENAME, $2); + } + ; + +string: QSTRING { $$ = $1; } + | + ID { $$ = $1; } + ; + +%% + +extern FILE *yyin; +extern FILE *yyout; + +struct detox_parse_results *parse_config_file(char *filename, struct detox_parse_results *previous_results, struct detox_options *main_options) { + struct detox_parse_results *ret = NULL; + + current_filename = filename; + current_options = main_options; + + /* + * XXX - Should we be closing the default yyin/yyout? If so, should we + * be setting them to NULL at the end of this function? + */ + + yyin = fopen(filename, "r"); + if (yyin == NULL) { + return previous_results; + } + yyout = fopen("/dev/null", "w"); + + /* + * Initialize the return variable + */ + + if (previous_results) { + ret = previous_results; + } + else { + ret = malloc(sizeof(struct detox_parse_results)); + memset(ret, 0, sizeof(struct detox_parse_results)); + } + + /* + * Initialize the sequence list + */ + + cf_sl_ret = NULL; + cf_sl_current = NULL; + + if (previous_results && previous_results->sequences) { + cf_sl_ret = previous_results->sequences; + cf_sl_current = cf_sl_ret; + while (cf_sl_current->next != NULL) { + cf_sl_current = cf_sl_current->next; + } + } + + /* + * Initialize the ignore list + */ + + cf_ignore_ret = NULL; + cf_ignore_current = NULL; + + if (previous_results && previous_results->files_to_ignore) { + cf_ignore_ret = previous_results->files_to_ignore; + cf_ignore_current = cf_ignore_ret; + while (cf_ignore_current->next != NULL) { + cf_ignore_current = cf_ignore_current->next; + } + } + + /* + * Reset the sequence entry holding vars + */ + + cf_seq_ret = NULL; + cf_seq_current = NULL; + + do { + yyparse(); + } + while (!feof(yyin)); + + fclose(yyin); + fclose(yyout); + + /* + * Populate returns + */ + + ret->sequences = cf_sl_ret; + ret->files_to_ignore = cf_ignore_ret; + + return ret; +} + +void yyerror(char *s) { + /* + * XXX - Is extern valid here? Does it do what I'm expecting? + */ + extern char *yytext; + + fprintf(stderr, "detox: error parsing config file %s: %s\n", current_filename, s); + fprintf(stderr, "\tline %d", config_file_lineno); + if (yytext != NULL) { + fprintf(stderr, ": %s", yytext); + } + fprintf(stderr, "\n"); + exit(EXIT_FAILURE); +} + + +void cf_append_sequence_list(void) { + struct detox_sequence_list *work; + + if (current_name == NULL) { + current_name = strdup("default"); + } + + work = NULL; + + if (cf_sl_ret != NULL) { + work = cf_sl_ret; + + while (work != NULL) { + if (strcmp(work->name, current_name) == 0) { + break; + } + + work = work->next; + } + + } + + if (work != NULL) { + /* + * XXX - Free Old Tree + */ + } + else { + work = malloc(sizeof(struct detox_sequence_list)); + memset(work, 0, sizeof(struct detox_sequence_list)); + + work->name = strdup(current_name); + + /* + * Append to the tree first. If we don't, we could create a + * circular reference. + */ + if (cf_sl_ret == NULL) { + cf_sl_ret = cf_sl_current = work; + } + else { + cf_sl_current->next = work; + cf_sl_current = work; + } + + } + + work->head = cf_seq_ret; + work->source_filename = strdup(current_filename); + cf_seq_ret = cf_seq_current = NULL; + +} + + +void cf_append_sequence_entry(void *ptr, void *opts) { + struct detox_sequence_entry *work; + + work = malloc(sizeof(struct detox_sequence_entry)); + memset(work, 0, sizeof(struct detox_sequence_entry)); + + work->cleaner = ptr; + work->options = opts; + + if (cf_seq_ret == NULL) { + cf_seq_ret = cf_seq_current = work; + } + else { + cf_seq_current->next = work; + cf_seq_current = work; + } +} + + +void cf_append_ignore_entry(int token, void *str) { + struct detox_ignore_entry *work; + + work = malloc(sizeof(struct detox_ignore_entry)); + memset(work, 0, sizeof(struct detox_ignore_entry)); + + switch(token) { + case FILENAME: + work->filename = str; + break; + + default: + break; + } + + if (cf_ignore_ret == NULL) { + cf_ignore_ret = cf_ignore_current = work; + } + else { + cf_ignore_current->next = work; + cf_ignore_current = work; + } +} + + diff --git a/detox/latest/src/detox b/detox/latest/src/detox new file mode 100755 index 0000000000000000000000000000000000000000..f4182b5f63250d30d4b11e83337caa2c06c3a32e GIT binary patch literal 159720 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 GS@&;SiOS^w literal 0 HcmV?d00001 diff --git a/detox/latest/src/detox.c b/detox/latest/src/detox.c new file mode 100644 index 0000000..223c42e --- /dev/null +++ b/detox/latest/src/detox.c @@ -0,0 +1,356 @@ +/** + * This file is part of the Detox package. + * + * Copyright (c) Doug Harple + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +#include "config.h" + +#include +#include +#include +#include +#include +#include +#include + +#include "detox.h" +#include "clean_string.h" + +#include "file.h" + +#include "config_file.h" +#include "config_file_spoof.h" +#include "config_file_dump.h" +#include "parse_table.h" +#include "parse_options.h" + +#define MAX_PATH_LEN 256 + +int main(int argc, char **argv) +{ + struct stat stat_info; + int err; + + struct detox_parse_results *parse_results = NULL; + struct detox_sequence_list *list_work = NULL; + struct detox_sequence_entry *which_sequence = NULL; + struct detox_sequence_entry *work = NULL; + struct detox_options *main_options; + + char *check_config_file = NULL; + char *file_work = NULL; + char **file_walk; + + main_options = parse_options_getopt(argc, argv); + + if (main_options == NULL) { + fprintf(stderr, "detox: an error occurred while parsing command line arguments\n"); + exit(EXIT_FAILURE); + } + + if (main_options->check_config_file) { + check_config_file = strdup(main_options->check_config_file); + } + + if (check_config_file != NULL) { + parse_results = parse_config_file(check_config_file, NULL, main_options); + if (parse_results == NULL) { + fprintf(stderr, "detox: unable to open: %s\n", check_config_file); + exit(EXIT_FAILURE); + } + } + else { + check_config_file = malloc(MAX_PATH_LEN); + if (check_config_file == NULL) { + fprintf(stderr, "out of memory: %s\n", strerror(errno)); + exit(EXIT_FAILURE); + } + +#ifdef SYSCONFDIR + err = snprintf(check_config_file, MAX_PATH_LEN, "%s/detoxrc", SYSCONFDIR); + if (err < MAX_PATH_LEN) + parse_results = parse_config_file(check_config_file, NULL, main_options); +#endif + + if (parse_results == NULL) { + parse_results = parse_config_file("/etc/detoxrc", NULL, main_options); + } + + if (parse_results == NULL) { + parse_results = parse_config_file("/usr/local/etc/detoxrc", NULL, main_options); + } + + file_work = getenv("HOME"); + if (file_work != NULL) { + err = snprintf(check_config_file, MAX_PATH_LEN, "%s/.detoxrc", file_work); + if (err < MAX_PATH_LEN) + parse_results = parse_config_file(check_config_file, parse_results, main_options); + + file_work = NULL; + } + + if (parse_results == NULL) { + parse_results = spoof_config_file(main_options); + } + + free(check_config_file); + } + + if (parse_results == NULL) { + fprintf(stderr, "detox: no config file to work with\n"); + exit(EXIT_FAILURE); + } + + /* + * Store the files_to_ignore array in the main_options struct for use in + * parse_dir/file/special + */ + + main_options->files_to_ignore = parse_results->files_to_ignore; + + /* + * Determine which sequence to use + */ + + which_sequence = NULL; + + list_work = parse_results->sequences; + + while (list_work != NULL) { + if (strcmp(list_work->name, (main_options->sequence_name == NULL) ? "default" : main_options->sequence_name) == 0) { + which_sequence = list_work->head; + break; + } + + list_work = list_work->next; + } + + /* + * If no sequence was found, and the user didn't specify a sequence + * to use, just use the first sequence. + */ + + if (which_sequence == NULL && main_options->sequence_name == NULL) { + if (parse_results->sequences != NULL) { + which_sequence = parse_results->sequences->head; + } + } + + main_options->sequence_to_use = which_sequence; + + /* + * List sequences + */ + if (main_options->list_sequences) { + dump_config_file(parse_results, main_options); + exit(EXIT_SUCCESS); + } + + /* + * Fail if no sequence is available + */ + if (main_options->sequence_to_use == NULL) { + /* + * XXX - Explain this better + */ + fprintf(stderr, "detox: no sequence to work with\n"); + exit(EXIT_FAILURE); + } + + /* + * Check translation tables + */ + + work = main_options->sequence_to_use; + while (work != NULL) { + char *check_filename = NULL; + int do_search = 0; + + struct translation_table *table = NULL; + struct clean_string_options *opts; + + if (work->cleaner == &clean_iso8859_1) { + if (work->options != NULL) { + opts = work->options; + if (opts->filename != NULL) { + check_filename = opts->filename; + } + } + + if (!check_filename) { + check_filename = "iso8859_1.tbl"; + do_search = 1; + } + } + else if (work->cleaner == &clean_utf_8) { + if (work->options != NULL) { + opts = work->options; + if (opts->filename != NULL) { + check_filename = opts->filename; + } + } + + if (!check_filename) { + check_filename = "unicode.tbl"; + do_search = 1; + } + } + else if (work->cleaner == &clean_safe) { + if (work->options != NULL) { + opts = work->options; + if (opts->filename != NULL) { + check_filename = opts->filename; + } + } + + if (!check_filename) { + check_filename = "safe.tbl"; + do_search = 1; + } + } + + if (check_filename || do_search) { + + table = NULL; + + if (do_search) { + check_config_file = malloc(MAX_PATH_LEN); + if (check_config_file == NULL) { + fprintf(stderr, "out of memory: %s\n", strerror(errno)); + exit(EXIT_FAILURE); + } + +#ifdef DATADIR + err = snprintf(check_config_file, MAX_PATH_LEN, "%s/detox/%s", DATADIR, check_filename); + if (err < MAX_PATH_LEN) + table = parse_table(check_config_file); +#endif + + if (table == NULL) { + err = snprintf(check_config_file, MAX_PATH_LEN, "/usr/share/detox/%s", check_filename); + if (err < MAX_PATH_LEN) + table = parse_table(check_config_file); + } + + if (table == NULL) { + err = snprintf(check_config_file, MAX_PATH_LEN, "/usr/local/share/detox/%s", check_filename); + if (err < MAX_PATH_LEN) + table = parse_table(check_config_file); + } + + if (table == NULL) { + + /* + * Fall back to the non-file based + * cleaner + */ + if (work->cleaner == &clean_iso8859_1) { + work->cleaner = &clean_iso8859_1_basic; + } + else if (work->cleaner == &clean_utf_8) { + work->cleaner = &clean_utf_8_basic; + } + else if (work->cleaner == &clean_safe) { + work->cleaner = &clean_safe_basic; + } + else { + fprintf(stderr, "detox: unable to locate translation table or fall back\n"); + exit(EXIT_FAILURE); + } + } + else { + + /* + * Allocate an options + */ + opts = malloc(sizeof(struct clean_string_options)); + if (opts == NULL) { + fprintf(stderr, "out of memory: %s\n", strerror(errno)); + exit(EXIT_FAILURE); + } + memset(opts, 0, sizeof(struct clean_string_options)); + + opts->translation_table = table; + work->options = opts; + } + + free(check_config_file); + } + else { + table = parse_table(check_filename); + if (table == NULL) { + fprintf(stderr, "detox: unable to parse file: %s\n", check_filename); + exit(EXIT_FAILURE); + } + + opts = work->options; + opts->translation_table = table; + } + } + + + work = work->next; + } + + /* + * Do some actual work + */ + + if (!main_options->is_inline_mode) { + file_walk = main_options->files; + while (*file_walk) { + if (main_options->verbose) { + printf("Scanning: %s\n", *file_walk); + } + + err = lstat(*file_walk, &stat_info); + if (err == -1) { + fprintf(stderr, "%s: %s\n", *file_walk, strerror(errno)); + } + else { + if (S_ISDIR(stat_info.st_mode)) { + file_work = parse_file(*file_walk, main_options); + parse_dir(file_work, main_options); + free(file_work); + } + else if (S_ISREG(stat_info.st_mode)) { + parse_file(*file_walk, main_options); + } + else if (main_options->special) { + parse_special(*file_walk, main_options); + } + } + + file_walk++; + } + } else { + if (main_options->files[0] != NULL) { + file_walk = main_options->files; + while (*file_walk) { + err = lstat(*file_walk, &stat_info); + if (err == -1) { + fprintf(stderr, "%s: %s\n", *file_walk, strerror(errno)); + } + else { + if (S_ISDIR(stat_info.st_mode)) { + fprintf(stderr, "%s: is a directory\n", *file_walk); + } + else { + parse_inline(*file_walk, main_options); + } + } + + file_walk++; + } + } + else { + parse_inline(NULL, main_options); + } + } + + return 0; +} diff --git a/detox/latest/src/detox.h b/detox/latest/src/detox.h new file mode 100644 index 0000000..a989d7c --- /dev/null +++ b/detox/latest/src/detox.h @@ -0,0 +1,79 @@ +/** + * This file is part of the Detox package. + * + * Copyright (c) Doug Harple + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +#ifndef __DETOX_H +#define __DETOX_H + +/* + * Holds information about all of the defined sequences + */ +struct detox_sequence_list { + struct detox_sequence_list *next; + + char *name; + + /* + * The top of the linked list of entries for this sequence + */ + struct detox_sequence_entry *head; + + char *source_filename; +}; + +/* + * Holds information about an entry within a specific sequence + */ +struct detox_sequence_entry { + struct detox_sequence_entry *next; + + unsigned char *(*cleaner) (unsigned char *str, void *options); + void *options; +}; + +/* + * Holds information about files the user has asked us to ignore + */ +struct detox_ignore_entry { + struct detox_ignore_entry *next; + + unsigned char *filename; +}; + +/* + * Holds the result of a config file parse + */ +struct detox_parse_results { + struct detox_sequence_list *sequences; + struct detox_ignore_entry *files_to_ignore; +}; + +/* + * Holds command line options + */ +struct detox_options { + int dry_run; + int is_inline_bin; + int is_inline_mode; + int list_sequences; + int recurse; + int remove_trailing; + int special; + int verbose; + + struct detox_sequence_entry *sequence_to_use; + struct detox_ignore_entry *files_to_ignore; + + char *sequence_name; + + char *check_config_file; + + char **files; +}; + +#endif /* __DETOX_H */ diff --git a/detox/latest/src/detox.o b/detox/latest/src/detox.o new file mode 100644 index 0000000000000000000000000000000000000000..bcf4d9381856525e1f46122f9ad54bcd8a3cb2e4 GIT binary patch literal 33696 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 literal 0 HcmV?d00001 diff --git a/detox/latest/src/file.c b/detox/latest/src/file.c new file mode 100644 index 0000000..8ec006b --- /dev/null +++ b/detox/latest/src/file.c @@ -0,0 +1,378 @@ +/** + * This file is part of the Detox package. + * + * Copyright (c) Doug Harple + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +#include "config.h" + +#include +#include +#include +#include +#include +#include +#include + +#include "clean_string.h" +#include "file.h" +#include "detox.h" + +static char badfiles[3][30] = { + ".", + "..", + "" +}; + +#define BUF_SIZE 1024 + +/* + * Internal function declarations + */ +static int ignore_file(unsigned char *filename, struct detox_options *options); + +/* + * Renames file to a safe filename. + */ +unsigned char *parse_file(unsigned char *filename, struct detox_options *options) +{ + unsigned char *old_filename, *old_filename_ptr, *new_filename; + unsigned char *work, *hold; + + struct stat stat_info_old; + struct stat stat_info_new; + int err; + size_t len; + + struct detox_sequence_entry *sequence; + + len = strlen(filename) + 1; + old_filename = malloc(len); + if (old_filename == NULL) { + fprintf(stderr, "out of memory: %s\n", strerror(errno)); + return NULL; + } + memcpy(old_filename, filename, len); + + old_filename_ptr = strrchr(old_filename, '/'); + if (old_filename_ptr != NULL) { + old_filename_ptr++; + } + else { + old_filename_ptr = old_filename; + } + + /* + * Check for files that need to be ignored + */ + + if (ignore_file(old_filename_ptr, options)) { + return old_filename; + } + + /* + * Do the actual filename cleaning + */ + + sequence = options->sequence_to_use; + + work = strdup(old_filename_ptr); + + while (sequence != NULL && work != NULL) { + hold = sequence->cleaner(work, sequence->options); + if (work != NULL) { + free(work); + } + work = hold; + + sequence = sequence->next; + } + + if (work == NULL) { + return old_filename; + } + + /* check to see if nothing changed */ + if (strcmp(old_filename_ptr, work) == 0) { + return old_filename; + } + + len = (old_filename_ptr - old_filename); + new_filename = malloc(len + strlen(work) + 1); + if (new_filename == NULL) { + fprintf(stderr, "out of memory: %s\n", strerror(errno)); + free(work); + free(old_filename); + return NULL; + } + + strncpy(new_filename, old_filename, len); + strcpy(new_filename + len, work); + + free(work); + + err = lstat(old_filename, &stat_info_old); + if (err == -1) { + free(new_filename); + return old_filename; + } + + err = lstat(new_filename, &stat_info_new); + if (err != -1) { // New file exists + if (stat_info_old.st_dev != stat_info_new.st_dev || // Different device + stat_info_old.st_ino != stat_info_new.st_ino || // Different inode + stat_info_old.st_nlink > 1) // More than one hard link + { + fprintf(stderr, "Cannot rename %s to %s: file already exists\n", old_filename, new_filename); + + free(new_filename); + return old_filename; + } + } + + if (options->verbose || options->dry_run) { + printf("%s -> %s\n", old_filename, new_filename); + } + + if (options->dry_run) { + free(new_filename); + return old_filename; + } + + err = rename(old_filename, new_filename); + if (err == -1) { + fprintf(stderr, "Cannot rename %s to %s: %s\n", old_filename, new_filename, strerror(errno)); + free(new_filename); + return old_filename; + } + + free(old_filename); + + return new_filename; +} + +/* + * Handles directory. + */ +void parse_dir(unsigned char *indir, struct detox_options *options) +{ + unsigned char *new_file, *work; + DIR *dir_handle; + struct dirent *dir_entry; + struct stat stat_info; + int check_file; + int err; + size_t new_file_length; + + err = lstat(indir, &stat_info); + if (err == -1) { + return; + } + + if (!S_ISDIR(stat_info.st_mode)) { + return; + } + + new_file_length = strlen(indir) + 1024; + new_file = (char *)malloc(new_file_length); + if (new_file == NULL) { + fprintf(stderr, "out of memory: %s\n", strerror(errno)); + return; + } + + /* + * Parse directory + */ + + dir_handle = opendir(indir); + if (dir_handle == NULL) { + fprintf(stderr, "unable to parse: %s\n", strerror(errno)); + free(new_file); + return; + } + + dir_entry = readdir(dir_handle); + + while (dir_entry != NULL) { + + /* + * Check for files that need to be ignored + */ + check_file = !ignore_file(dir_entry->d_name, options); + + if (check_file) { + snprintf(new_file, new_file_length, "%s/%s", indir, dir_entry->d_name); + + lstat(new_file, &stat_info); + if (S_ISDIR(stat_info.st_mode)) { + work = parse_file(new_file, options); + if (options->recurse) { + parse_dir(work, options); + } + free(work); + } + else if (S_ISREG(stat_info.st_mode)) { + work = parse_file(new_file, options); + free(work); + } + else if (options->special) { + parse_special(new_file, options); + } + } + dir_entry = readdir(dir_handle); + } + closedir(dir_handle); +} + +/* + * Handles a special file. + */ +void parse_special(unsigned char *in, struct detox_options *options) +{ + struct stat stat_info; + char *new_file, *work; + int err; + + /* detox, then parse_dir if a symlink to a dir */ + new_file = parse_file(in, options); + if (!new_file) { + return; + } + + err = lstat(new_file, &stat_info); + if (err == -1) { + fprintf(stderr, "Unable to stat %s\n", in); + free(new_file); + return; + } + + if (options->recurse && S_ISLNK(stat_info.st_mode)) { + work = malloc(1024); + if (!work) { + fprintf(stderr, "out of memory: %s\n", strerror(errno)); + free(new_file); + return; + } + + memset(work, 0, 1024); + err = readlink(new_file, work, 1023); + if (err == -1) { + fprintf(stderr, "Unable to read symbolic link %s\n", in); + free(work); + free(new_file); + return; + } + + err = lstat(work, &stat_info); + if (err == -1) { + fprintf(stderr, "Unable to follow symbolic link %s\n", in); + free(work); + free(new_file); + return; + } + + if (S_ISDIR(stat_info.st_mode)) { + parse_dir(work, options); + } + + free(work); + } + free(new_file); + +} + +/* + * Determines if the file should be ignored + */ +static int ignore_file(unsigned char *filename, struct detox_options *options) +{ + struct detox_ignore_entry *ignore_walk; + int x; + + for (x = 0; badfiles[x][0] != 0; x++) { + if (strcmp(filename, badfiles[x]) == 0) { + return 1; + } + } + + ignore_walk = options->files_to_ignore; + while (ignore_walk != NULL) { + if (strcmp(filename, ignore_walk->filename) == 0) { + return 1; + } + ignore_walk = ignore_walk->next; + } + + return 0; +} + +/* + * Renames file to a safe filename. + */ +void parse_inline(unsigned char *filename, struct detox_options *options) +{ + struct detox_sequence_entry *sequence; + FILE *fp; + unsigned char *base, *work, *hold; + size_t buf_size; + + if (filename != NULL) { + if (!(fp = fopen(filename, "r"))) { + fprintf(stderr, "%s: %s\n", filename, strerror(errno)); + return; + } + } + else { + fp = stdin; + } + + buf_size = BUF_SIZE; + base = malloc(buf_size); + if (base == NULL) { + fprintf(stderr, "out of memory: %s\n", strerror(errno)); + return; + } + + while (fgets(base, buf_size, fp)) { + while (strrchr(base, '\n') == NULL) { + work = realloc(base, buf_size + BUF_SIZE - 1); + if (!fgets(work + buf_size - 1, BUF_SIZE, fp)) { + base = work; + break; + } + base = work; + buf_size += BUF_SIZE - 1; + } + + hold = strrchr(base, '\n'); + if (hold == NULL) { + fprintf(stderr, "Unable to parse input\n"); + exit(EXIT_FAILURE); + } + *hold = '\0'; + + work = strdup(base); + + sequence = options->sequence_to_use; + + while (sequence != NULL && work != NULL) { + hold = sequence->cleaner(work, sequence->options); + if (work != NULL) { + free(work); + } + work = hold; + + sequence = sequence->next; + } + + if (work != NULL) { + printf("%s\n", work); + } + else { + printf("\n"); + } + } +} diff --git a/detox/latest/src/file.h b/detox/latest/src/file.h new file mode 100644 index 0000000..c9dbaac --- /dev/null +++ b/detox/latest/src/file.h @@ -0,0 +1,23 @@ +/** + * This file is part of the Detox package. + * + * Copyright (c) Doug Harple + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +#ifndef __FILE_H +#define __FILE_H + +#include "detox.h" + +extern unsigned char *parse_file(unsigned char *filename, struct detox_options *options); + +extern void parse_dir(unsigned char *indir, struct detox_options *options); + +extern void parse_special(unsigned char *in, struct detox_options *options); + +extern void parse_inline(unsigned char *filename, struct detox_options *options); + +#endif /* __FILE_H */ diff --git a/detox/latest/src/file.o b/detox/latest/src/file.o new file mode 100644 index 0000000000000000000000000000000000000000..1ca27e6a0bae351c71ace2f3ca3fb20d515d7d55 GIT binary patch literal 40360 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 literal 0 HcmV?d00001 diff --git a/detox/latest/src/inline-detox b/detox/latest/src/inline-detox new file mode 100755 index 0000000000000000000000000000000000000000..f4182b5f63250d30d4b11e83337caa2c06c3a32e GIT binary patch literal 159720 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 GS@&;SiOS^w literal 0 HcmV?d00001 diff --git a/detox/latest/src/iso8859_1.h b/detox/latest/src/iso8859_1.h new file mode 100644 index 0000000..4a4b2f2 --- /dev/null +++ b/detox/latest/src/iso8859_1.h @@ -0,0 +1,149 @@ +/** + * This file is part of the Detox package. + * + * Copyright (c) Doug Harple + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + */ + +/** + * Special thanks to: http://www.bbsinc.com/iso8859.html + */ + +#define ISO8859_1_OFFSET 0x80 +#define ISO8859_1_COUNT 128 +#define ISO8859_1_MAXLEN 8 + +/* starts at 80 */ +char iso8859_1_trans[ISO8859_1_COUNT][ISO8859_1_MAXLEN] = { + "_", /* 0x0080 */ + "_", /* 0x0081 */ + "_", /* 0x0082 */ + "_", /* 0x0083 */ + "_", /* 0x0084 */ + "...", /* 0x0085 */ + "_", /* 0x0086 */ + "_", /* 0x0087 */ + "^", /* 0x0088 */ + "_", /* 0x0089 */ + "S", /* 0x008A */ + "_", /* 0x008B */ + "OE", /* 0x008C */ + "_", /* 0x008D */ + "_", /* 0x008E */ + "_", /* 0x008F */ + "_", /* 0x0090 */ + "_", /* 0x0091 */ + "_", /* 0x0092 */ + "_", /* 0x0093 */ + "_", /* 0x0094 */ + "_", /* 0x0095 */ + "-", /* 0x0096 */ + "-", /* 0x0097 */ + "_", /* 0x0098 */ + "_tm_", /* 0x0099 */ + "s", /* 0x009A */ + "_", /* 0x009B */ + "oe", /* 0x009C */ + "_", /* 0x009D */ + "_", /* 0x009E */ + "Y", /* 0x009F */ + "_", /* 0x00A0 */ + "_", /* 0x00A1 */ + "_cent_", /* 0x00A2 */ + "_pound_", /* 0x00A3 */ + "_", /* 0x00A4 */ + "_yen_", /* 0x00A5 */ + "_", /* 0x00A6 */ + "_", /* 0x00A7 */ + "_", /* 0x00A8 */ + "_copy_", /* 0x00A9 */ + "_", /* 0x00AA */ + "_", /* 0x00AB */ + "_", /* 0x00AC */ + "_", /* 0x00AD */ + "_reg_", /* 0x00AE */ + "_", /* 0x00AF */ + "_", /* 0x00B0 */ + "_", /* 0x00B1 */ + "2", /* 0x00B2 */ + "3", /* 0x00B3 */ + "_", /* 0x00B4 */ + "b", /* 0x00B5 */ + "_pp_", /* 0x00B6 */ + "_", /* 0x00B7 */ + "_", /* 0x00B8 */ + "1", /* 0x00B9 */ + "_", /* 0x00BA */ + "_", /* 0x00BB */ + "_", /* 0x00BC */ + "_", /* 0x00BD */ + "_", /* 0x00BE */ + "_", /* 0x00BF */ + "A", /* 0x00C0 */ + "A", /* 0x00C1 */ + "A", /* 0x00C2 */ + "A", /* 0x00C3 */ + "A", /* 0x00C4 */ + "A", /* 0x00C5 */ + "AE", /* 0x00C6 */ + "C", /* 0x00C7 */ + "E", /* 0x00C8 */ + "E", /* 0x00C9 */ + "E", /* 0x00CA */ + "E", /* 0x00CB */ + "I", /* 0x00CC */ + "I", /* 0x00CD */ + "I", /* 0x00CE */ + "I", /* 0x00CF */ + "TH", /* 0x00D0 */ + "N", /* 0x00D1 */ + "O", /* 0x00D2 */ + "O", /* 0x00D3 */ + "O", /* 0x00D4 */ + "O", /* 0x00D5 */ + "O", /* 0x00D6 */ + "x", /* 0x00D7 */ + "O", /* 0x00D8 */ + "U", /* 0x00D9 */ + "U", /* 0x00DA */ + "U", /* 0x00DB */ + "U", /* 0x00DC */ + "Y", /* 0x00DD */ + "TH", /* 0x00DE */ + "ss", /* 0x00DF */ + "a", /* 0x00E0 */ + "a", /* 0x00E1 */ + "a", /* 0x00E2 */ + "a", /* 0x00E3 */ + "a", /* 0x00E4 */ + "a", /* 0x00E5 */ + "ae", /* 0x00E6 */ + "c", /* 0x00E7 */ + "e", /* 0x00E8 */ + "e", /* 0x00E9 */ + "e", /* 0x00EA */ + "e", /* 0x00EB */ + "i", /* 0x00EC */ + "i", /* 0x00ED */ + "i", /* 0x00EE */ + "i", /* 0x00EF */ + "th", /* 0x00F0 */ + "n", /* 0x00F1 */ + "o", /* 0x00F2 */ + "o", /* 0x00F3 */ + "o", /* 0x00F4 */ + "o", /* 0x00F5 */ + "o", /* 0x00F6 */ + "_", /* 0x00F7 */ + "o", /* 0x00F8 */ + "u", /* 0x00F9 */ + "u", /* 0x00FA */ + "u", /* 0x00FB */ + "u", /* 0x00FC */ + "y", /* 0x00FD */ + "th", /* 0x00FE */ + "y", /* 0x00FF */ +}; diff --git a/detox/latest/src/parse_options.c b/detox/latest/src/parse_options.c new file mode 100644 index 0000000..83588f4 --- /dev/null +++ b/detox/latest/src/parse_options.c @@ -0,0 +1,282 @@ +/** + * This file is part of the Detox package. + * + * Copyright (c) Doug Harple + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +#include "config.h" + +#include +#include +#include +#include +#include +#include +#include + +#include "detox.h" +#include "config.h" +#include "parse_options.h" + +#ifdef HAVE_GETOPT_LONG +#include +#endif + +enum { + LONG_OPTION_DRY_RUN = 1, + LONG_OPTION_INLINE, + LONG_OPTION_REMOVE_TRAILING, + LONG_OPTION_SPECIAL +}; + +#define INLINE_DETOX_BIN "inline-detox" + +/* expect this to be overwritten! */ +static int long_option = 0; + +#ifdef HAVE_GETOPT_LONG +static struct option longopts[] = { + + /* long options with equivalents */ + {"help", no_argument, 0, 'h'}, + {"dry-run", no_argument, 0, 'n'}, + + /* long options without */ + {"inline", no_argument, &long_option, LONG_OPTION_INLINE}, + {"special", no_argument, &long_option, LONG_OPTION_SPECIAL}, + + /* deprecated long opts without */ + {"remove-trailing", no_argument, &long_option, LONG_OPTION_REMOVE_TRAILING}, + + /* done */ + {0, 0, 0, 0} +}; + +#endif + +/* *INDENT-OFF* */ + +char usage_message[] = { + "usage: detox [-hLnrvV] [-f configfile] [-s sequence]" +#ifdef HAVE_GETOPT_LONG + " [--dry-run] [--inline] [--special]" + "\n\t " +#endif + " file [file ...]\n" +}; + +char help_message[] = { + " -f configfile choose which config file to use\n" +#ifdef HAVE_GETOPT_LONG + " -h --help this message\n" +#else + " -h this message\n" +#endif +#ifdef HAVE_GETOPT_LONG + " --inline run inline mode\n" +#endif + " -L list available sequences and exit\n" + " with -v ... dump sequence contents\n" +#ifdef HAVE_GETOPT_LONG + " -n --dry-run do a dry run (don't actually do anything)\n" +#else + " -n do a dry run (don't actually do anything)\n" +#endif + " -r be recursive (descend into subdirectories)\n" +#ifdef HAVE_GETOPT_LONG + " --remove-trailing (deprecated)\n" + " remove trailing _ and - before a period\n" +#endif + " -s sequence choose which sequence to detox with\n" +#ifdef HAVE_GETOPT_LONG + " --special work on links and special files\n" +#endif + " -v be verbose\n" + " -V show the current version\n" +}; + +char usage_message_inline[] = { + "usage: inline-detox [-hLvV] [-f configfile] [-s sequence] [file]\n" +}; + +char help_message_inline[] = { + " -f configfile choose which config file to use\n" +#ifdef HAVE_GETOPT_LONG + " -h --help this message\n" +#else + " -h this message\n" +#endif + " -L list available sequences and exit\n" + " with -v ... dump sequence contents\n" +#ifdef HAVE_GETOPT_LONG + " --remove-trailing (deprecated)\n" + " remove trailing _ and - before a period\n" +#endif + " -s sequence choose which sequence to detox with\n" + " -v be verbose\n" + " -V show the current version\n" +}; + +/* *INDENT-ON* */ + +struct detox_options *initialize_main_options(void) +{ + struct detox_options *main_options; + + main_options = malloc(sizeof(struct detox_options)); + if (main_options == NULL) { + fprintf(stderr, "out of memory: %s\n", strerror(errno)); + return NULL; + } + + memset(main_options, 0, sizeof(struct detox_options)); + + /* + * XXX - handle blank strings better + */ + main_options->sequence_name = getenv("DETOX_SEQUENCE"); + + return main_options; +} + +struct detox_options *parse_options_getopt(int argc, char **argv) +{ + int optcode; + + struct detox_options *main_options; + + int i; + int max = 10; + char *binname; + + main_options = initialize_main_options(); + if (main_options == NULL) { + return NULL; + } + + binname = basename(argv[0]); + main_options->is_inline_bin = main_options->is_inline_mode = + (strcmp(binname, INLINE_DETOX_BIN) == 0); + +#ifdef HAVE_GETOPT_LONG + while ((optcode = getopt_long(argc, argv, "hrvV?Ls:f:n", longopts, NULL)) != -1) { +#else + while ((optcode = getopt(argc, argv, "hrvV?Ls:f:n")) != -1) { +#endif + switch (optcode) { + case 'h': + printf("%s", !main_options->is_inline_bin ? usage_message : + usage_message_inline); + printf("\n"); + printf("%s", !main_options->is_inline_bin ? help_message : + help_message_inline); + exit(EXIT_SUCCESS); + + case 'f': + /* + * XXX - free multiple check_config_files + */ + main_options->check_config_file = strdup(optarg); + break; + + case 'L': + main_options->list_sequences = 1; + break; + + case 'n': + main_options->dry_run = 1; + break; + + case 'r': + main_options->recurse = 1; + break; + + case 's': + /* + * XXX - free multiple sequence name opts + */ + main_options->sequence_name = strdup(optarg); + break; + + case 'v': + main_options->verbose++; + break; + + case 'V': + printf("%s\n", PACKAGE_STRING); + exit(EXIT_SUCCESS); + + case '?': + printf("%s", !main_options->is_inline_bin ? usage_message : + usage_message_inline); + exit(EXIT_SUCCESS); + + case 0: + switch (long_option) { + case LONG_OPTION_INLINE: + main_options->is_inline_mode = 1; + break; + + case LONG_OPTION_REMOVE_TRAILING: + main_options->remove_trailing = 1; + break; + + case LONG_OPTION_SPECIAL: + main_options->special = 1; + break; + + default: + /* + * getopt_long shouldn't let us get here... + * verify? + */ + printf("unknown option: %s\n", optarg); + break; + } + long_option = 0; /* clean up! */ + break; + + default: + fprintf(stderr, "unknown option: %c\n", optcode); + exit(EXIT_FAILURE); + } + } + + if (main_options->list_sequences) { + /* + * Early Retirement + */ + return main_options; + } + + main_options->files = malloc(sizeof(char *) * 10); + + i = 0; + max = 10; + + if (optind < argc) { + while (optind < argc) { + /* not enough space for the next file and + possible ending NULL -> realloc */ + if (i + 2 > max) { + main_options->files = realloc(main_options->files, sizeof(char *) * (10 + max)); + max += 10; + } + main_options->files[i++] = strdup(argv[optind]); + + optind++; + } + + main_options->files[i] = NULL; + } + else if (!main_options->is_inline_mode) { + printf("%s", !main_options->is_inline_bin ? usage_message : + usage_message_inline); + exit(EXIT_FAILURE); + } + + return main_options; +} diff --git a/detox/latest/src/parse_options.h b/detox/latest/src/parse_options.h new file mode 100644 index 0000000..03d6e55 --- /dev/null +++ b/detox/latest/src/parse_options.h @@ -0,0 +1,25 @@ +/** + * This file is part of the Detox package. + * + * Copyright (c) Doug Harple + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + */ + +#ifndef __PARSE_OPTIONS_H +#define __PARSE_OPTIONS_H + +#include "detox.h" + +extern char usage_message[]; +extern char help_message[]; + +extern char usage_message_inline[]; +extern char help_message_inline[]; + +extern struct detox_options *initialize_main_options(void); +extern struct detox_options *parse_options_getopt(int argc, char **argv); + +#endif /* __PARSE_OPTIONS_H */ diff --git a/detox/latest/src/parse_options.o b/detox/latest/src/parse_options.o new file mode 100644 index 0000000000000000000000000000000000000000..24f7ab10eb38d524e5c9b5d41d966c4b74482300 GIT binary patch literal 23344 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 QgyHgEP5zf@88ngo7yDSc2><{9 literal 0 HcmV?d00001 diff --git a/detox/latest/src/parse_table.c b/detox/latest/src/parse_table.c new file mode 100644 index 0000000..19de918 --- /dev/null +++ b/detox/latest/src/parse_table.c @@ -0,0 +1,222 @@ +/** + * This file is part of the Detox package. + * + * Copyright (c) Doug Harple + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +#include "config.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "table.h" + +#define LINE_LENGTH 6 + +enum { + BASE_STATE, + INSIDE_STATE +}; + +struct translation_table *parse_table(char *filename) +{ + FILE *ttable_file; + char *work; + int code; + int offset; + char *parsed; + int err; + int size; + int max_data_length; + int ret; + int state; + char *system_ctype; + + struct translation_table *table; + + struct stat ttable_stat; + + err = stat(filename, &ttable_stat); + if (err == -1) { + return NULL; + } + + system_ctype = setlocale(LC_CTYPE, ""); + if (system_ctype == NULL) { + system_ctype = ""; // I don't think we can free the return from setlocale() + } + + size = 0; + + if (ttable_stat.st_size > 0) { + size = ttable_stat.st_size / LINE_LENGTH; + } +#ifdef HAVE_STRUCT_STAT_ST_BLOCKS + else { + size = (512 * ttable_stat.st_blocks) / LINE_LENGTH; + } +#endif + + if (size < 500) { + size = 500; + } + + table = table_init(size); + if (table == NULL) { + return NULL; + } + + ttable_file = fopen(filename, "r"); + if (ttable_file == NULL) { + fprintf(stderr, "Unable to open translation table: %s\n", strerror(errno)); + return NULL; + } + + work = malloc(1024); + if (work == NULL) { + fprintf(stderr, "Unable to allocate memory: %s\n", strerror(errno)); + return NULL; + } + + parsed = malloc(1024); + if (parsed == NULL) { + fprintf(stderr, "Unable to allocate memory: %s\n", strerror(errno)); + return NULL; + } + + max_data_length = 1; + state = BASE_STATE; + + while (fgets(work, 1024, ttable_file) != NULL) { + if (*work == '#') { + + /* + * Don't even bother + */ + continue; + } + + parsed[0] = '\0'; + + if (state == BASE_STATE) { + ret = sscanf(work, " %s %n", parsed, &offset); + + if (ret == 0) { + continue; + } + + if (strncasecmp(parsed, "start", 5) == 0) { + if (work[offset] == '\0') { + // All languages + state = INSIDE_STATE; + continue; + } + + if (work[offset] == '"') { + sscanf(work + offset + 1, "%[^\"]", parsed); + } + else if (work[offset] == '\'') { + sscanf(work + offset + 1, "%[^']", parsed); + } + else { + sscanf(work + offset, "%s", parsed); + } + + if (strncasecmp(parsed, system_ctype, strlen(parsed)) == 0) { + state = INSIDE_STATE; + } + // else ignore this start/end block + + continue; + } + + if (strncasecmp(parsed, "default", 7) == 0) { + + if (work[offset] == '\0') { + table->default_translation = NULL; + continue; + } + + if (work[offset] == '"') { + sscanf(work + offset + 1, "%[^\"]", parsed); + } + else if (work[offset] == '\'') { + sscanf(work + offset + 1, "%[^']", parsed); + } + else { + sscanf(work + offset, "%s", parsed); + } + + table->default_translation = strdup(parsed); + + if (strlen(parsed) > max_data_length) { + max_data_length = strlen(parsed); + } + + continue; + } + + continue; + } + + /* + * Inside state + */ + + code = -1; + + ret = sscanf(work, "%i %n", &code, &offset); + + if (ret == 0 || code < 0 || offset < 0) { + + /* + * Check for end + */ + ret = sscanf(work, " %s %n", parsed, &offset); + + if (ret > 0 && strncasecmp(parsed, "end", 5) == 0) { + state = BASE_STATE; + } + + continue; + } + + if (work[offset] == '\0') { + continue; + } + + if (work[offset] == '"') { + sscanf(work + offset + 1, "%[^\"]", parsed); + } + else if (work[offset] == '\'') { + sscanf(work + offset + 1, "%[^']", parsed); + } + else { + sscanf(work + offset, "%s", parsed); + } + + table_put(table, code, parsed); + + if (strlen(parsed) > max_data_length) { + max_data_length = strlen(parsed); + } + + } + + table->max_data_length = max_data_length; + + free(work); + free(parsed); + fclose(ttable_file); + + return table; +} diff --git a/detox/latest/src/parse_table.h b/detox/latest/src/parse_table.h new file mode 100644 index 0000000..246d45c --- /dev/null +++ b/detox/latest/src/parse_table.h @@ -0,0 +1,18 @@ +/** + * This file is part of the Detox package. + * + * Copyright (c) Doug Harple + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + */ + +#ifndef __PARSE_TABLE_H +#define __PARSE_TABLE_H + +#include "table.h" + +extern struct translation_table *parse_table(char *filename); + +#endif /* __PARSE_TABLE_H */ diff --git a/detox/latest/src/parse_table.o b/detox/latest/src/parse_table.o new file mode 100644 index 0000000000000000000000000000000000000000..9cc1cdf227c3c5bf7b7925991b1a26bc9f211581 GIT binary patch literal 20360 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 literal 0 HcmV?d00001 diff --git a/detox/latest/src/stamp-h1 b/detox/latest/src/stamp-h1 new file mode 100644 index 0000000..57ea58e --- /dev/null +++ b/detox/latest/src/stamp-h1 @@ -0,0 +1 @@ +timestamp for src/config.h diff --git a/detox/latest/src/table.c b/detox/latest/src/table.c new file mode 100644 index 0000000..a96b24c --- /dev/null +++ b/detox/latest/src/table.c @@ -0,0 +1,177 @@ +/** + * This file is part of the Detox package. + * + * Copyright (c) Doug Harple + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +#include "config.h" + +#include +#include +#include +#include +#include + +#include "table.h" + +/* + * Internal function declarations + */ +static int table_hash1(int table_length, unsigned int key); +static int table_hash2(int table_length, unsigned int key); + +struct translation_table *table_init(int max_rows) +{ + struct translation_table *ret; + size_t row_length; + + if (max_rows <= 0) { + max_rows = 500; + } + + row_length = max_rows * sizeof(struct translation_table_row); + + ret = malloc(sizeof(struct translation_table)); + if (ret == NULL) { + return NULL; + } + + memset(ret, 0, sizeof(struct translation_table)); + + ret->rows = malloc(row_length); + if (ret->rows == NULL) { + free(ret); + return NULL; + } + + memset(ret->rows, 0, row_length); + + ret->length = max_rows; + + return ret; +} + +struct translation_table *table_resize(struct translation_table *table, int rows) +{ + struct translation_table *ret; + int i; + + ret = table_init(rows); + + if (ret == NULL) + return table; + + if (table == NULL) + return ret; + + for (i = 0; i < table->length; i++) { + if (table->rows[i].key > 0 && table->rows[i].data != NULL) { + table_put(ret, table->rows[i].key, table->rows[i].data); + } + } + + return ret; +} + +void table_free(struct translation_table *table) +{ + int i; + + if (table == NULL) + return; + + for (i = 0; i < table->length; i++) { + if (table->rows[i].key > 0 && table->rows[i].data != NULL) { + free(table->rows[i].data); + } + } + + free(table->rows); + free(table); +} + +static int table_hash1(int table_length, unsigned int key) +{ + return key % table_length; +} + +static int table_hash2(int table_length, unsigned int key) +{ + return (key >> 8) % table_length; +} + +/* + * 0 is an invalid key (sorry) + */ +int table_put(struct translation_table *table, unsigned int key, char *data) +{ + int hashed; + int hashed2; + int i; + + if (table->length == table->used) { + return -1; + } + + hashed = table_hash1(table->length, key); + + if (table->rows[hashed].key != 0 && table->rows[hashed].key != key) { + hashed2 = table_hash2(table->length, key); + i = 0; + while (table->rows[hashed].key != 0 && table->rows[hashed].key != key) { + hashed += i + hashed2; + hashed %= table->length; + } + } + + if (table->rows[hashed].key == key) { + table->overwrites++; + } + + table->rows[hashed].key = key; + table->rows[hashed].data = strdup(data); + table->used++; + return hashed; +} + +/* + * 0 is an invalid key (sorry) + */ +char *table_get(struct translation_table *table, unsigned int key) +{ + int hashed; + int hashed2; + int i; + + if (table == NULL) { + return NULL; + } + + hashed = table_hash1(table->length, key); + + if (table->rows[hashed].key == 0) { + return NULL; + } + + if (table->rows[hashed].key != key) { + hashed2 = table_hash2(table->length, key); + i = 0; + while (table->rows[hashed].key != key && table->rows[hashed].key != 0) { + table->misses++; + + hashed += i + hashed2; + hashed %= table->length; + } + } + + if (table->rows[hashed].key == 0) { + return NULL; + } + + table->hits++; + + return table->rows[hashed].data; +} diff --git a/detox/latest/src/table.h b/detox/latest/src/table.h new file mode 100644 index 0000000..5a2e775 --- /dev/null +++ b/detox/latest/src/table.h @@ -0,0 +1,37 @@ +/** + * This file is part of the Detox package. + * + * Copyright (c) Doug Harple + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +#ifndef __TABLE_H +#define __TABLE_H + +struct translation_table_row { + unsigned int key; + char *data; +}; + +struct translation_table { + int length; + int used; + + int max_data_length; + + char *default_translation; + + struct translation_table_row *rows; + + int hits, misses, overwrites; +}; + +extern struct translation_table *table_init(int max_rows); +extern struct translation_table *table_resize(struct translation_table *table, int rows); +extern void table_free(struct translation_table *table); +extern int table_put(struct translation_table *table, unsigned int key, char *data); +extern char *table_get(struct translation_table *table, unsigned int key); + +#endif /* __TABLE_H */ diff --git a/detox/latest/src/table.o b/detox/latest/src/table.o new file mode 100644 index 0000000000000000000000000000000000000000..4ca16736795bc409b100ebbbb4681aac3b0b1db3 GIT binary patch literal 12520 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 literal 0 HcmV?d00001 diff --git a/detox/latest/src/unicode.h b/detox/latest/src/unicode.h new file mode 100644 index 0000000..dbb99c4 --- /dev/null +++ b/detox/latest/src/unicode.h @@ -0,0 +1,275 @@ +/** + * This file is part of the Detox package. + * + * Copyright (c) Doug Harple + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + */ + +/** + * Special thanks to: http://www.unicode.org/Public/UNIDATA/UnicodeData.txt + */ + +#define UNICODE_COUNT 256 +#define UNICODE_MAXLEN 8 + +char unicode_trans[UNICODE_COUNT][UNICODE_MAXLEN] = { + "_", /* 0x0000 */ + "_", /* 0x0001 */ + "_", /* 0x0002 */ + "_", /* 0x0003 */ + "_", /* 0x0004 */ + "_", /* 0x0005 */ + "_", /* 0x0006 */ + "_", /* 0x0007 */ + "_", /* 0x0008 */ + "_", /* 0x0009 */ + "_", /* 0x000A */ + "_", /* 0x000B */ + "_", /* 0x000C */ + "_", /* 0x000D */ + "_", /* 0x000E */ + "_", /* 0x000F */ + "_", /* 0x0010 */ + "_", /* 0x0011 */ + "_", /* 0x0012 */ + "_", /* 0x0013 */ + "_", /* 0x0014 */ + "_", /* 0x0015 */ + "_", /* 0x0016 */ + "_", /* 0x0017 */ + "_", /* 0x0018 */ + "_", /* 0x0019 */ + "_", /* 0x001A */ + "_", /* 0x001B */ + "_", /* 0x001C */ + "_", /* 0x001D */ + "_", /* 0x001E */ + "_", /* 0x001F */ + "_", /* 0x0020 */ + "_", /* 0x0021 */ + "_", /* 0x0022 */ + "#", /* 0x0023 */ + "_", /* 0x0024 */ + "%", /* 0x0025 */ + "_and_", /* 0x0026 */ + "_", /* 0x0027 */ + "_", /* 0x0028 */ + "_", /* 0x0029 */ + "_", /* 0x002A */ + "+", /* 0x002B */ + ",", /* 0x002C */ + "-", /* 0x002D */ + ".", /* 0x002E */ + "_", /* 0x002F */ + "0", /* 0x0030 */ + "1", /* 0x0031 */ + "2", /* 0x0032 */ + "3", /* 0x0033 */ + "4", /* 0x0034 */ + "5", /* 0x0035 */ + "6", /* 0x0036 */ + "7", /* 0x0037 */ + "8", /* 0x0038 */ + "9", /* 0x0039 */ + "_", /* 0x003A */ + "_", /* 0x003B */ + "_", /* 0x003C */ + "=", /* 0x003D */ + "_", /* 0x003E */ + "_", /* 0x003F */ + "_", /* 0x0040 */ + "A", /* 0x0041 */ + "B", /* 0x0042 */ + "C", /* 0x0043 */ + "D", /* 0x0044 */ + "E", /* 0x0045 */ + "F", /* 0x0046 */ + "G", /* 0x0047 */ + "H", /* 0x0048 */ + "I", /* 0x0049 */ + "J", /* 0x004A */ + "K", /* 0x004B */ + "L", /* 0x004C */ + "M", /* 0x004D */ + "N", /* 0x004E */ + "O", /* 0x004F */ + "P", /* 0x0050 */ + "Q", /* 0x0051 */ + "R", /* 0x0052 */ + "S", /* 0x0053 */ + "T", /* 0x0054 */ + "U", /* 0x0055 */ + "V", /* 0x0056 */ + "W", /* 0x0057 */ + "X", /* 0x0058 */ + "Y", /* 0x0059 */ + "Z", /* 0x005A */ + "_", /* 0x005B */ + "_", /* 0x005C */ + "_", /* 0x005D */ + "^", /* 0x005E */ + "_", /* 0x005F */ + "_", /* 0x0060 */ + "a", /* 0x0061 */ + "b", /* 0x0062 */ + "c", /* 0x0063 */ + "d", /* 0x0064 */ + "e", /* 0x0065 */ + "f", /* 0x0066 */ + "g", /* 0x0067 */ + "h", /* 0x0068 */ + "i", /* 0x0069 */ + "j", /* 0x006A */ + "k", /* 0x006B */ + "l", /* 0x006C */ + "m", /* 0x006D */ + "n", /* 0x006E */ + "o", /* 0x006F */ + "p", /* 0x0070 */ + "q", /* 0x0071 */ + "r", /* 0x0072 */ + "s", /* 0x0073 */ + "t", /* 0x0074 */ + "u", /* 0x0075 */ + "v", /* 0x0076 */ + "w", /* 0x0077 */ + "x", /* 0x0078 */ + "y", /* 0x0079 */ + "z", /* 0x007A */ + "_", /* 0x007B */ + "_", /* 0x007C */ + "_", /* 0x007D */ + "~", /* 0x007E */ + "_", /* 0x007F */ + "_", /* 0x0080 */ + "_", /* 0x0081 */ + "_", /* 0x0082 */ + "_", /* 0x0083 */ + "_", /* 0x0084 */ + "...", /* 0x0085 */ + "_", /* 0x0086 */ + "_", /* 0x0087 */ + "^", /* 0x0088 */ + "_", /* 0x0089 */ + "S", /* 0x008A */ + "_", /* 0x008B */ + "OE", /* 0x008C */ + "_", /* 0x008D */ + "_", /* 0x008E */ + "_", /* 0x008F */ + "_", /* 0x0090 */ + "_", /* 0x0091 */ + "_", /* 0x0092 */ + "_", /* 0x0093 */ + "_", /* 0x0094 */ + "_", /* 0x0095 */ + "-", /* 0x0096 */ + "-", /* 0x0097 */ + "_", /* 0x0098 */ + "_tm_", /* 0x0099 */ + "s", /* 0x009A */ + "_", /* 0x009B */ + "oe", /* 0x009C */ + "_", /* 0x009D */ + "_", /* 0x009E */ + "Y", /* 0x009F */ + "_", /* 0x00A0 */ + "_", /* 0x00A1 */ + "_cent_", /* 0x00A2 */ + "_pound_", /* 0x00A3 */ + "_", /* 0x00A4 */ + "_yen_", /* 0x00A5 */ + "_", /* 0x00A6 */ + "_", /* 0x00A7 */ + "_", /* 0x00A8 */ + "_copy_", /* 0x00A9 */ + "_", /* 0x00AA */ + "_", /* 0x00AB */ + "_", /* 0x00AC */ + "_", /* 0x00AD */ + "_reg_", /* 0x00AE */ + "_", /* 0x00AF */ + "_", /* 0x00B0 */ + "_", /* 0x00B1 */ + "2", /* 0x00B2 */ + "3", /* 0x00B3 */ + "_", /* 0x00B4 */ + "b", /* 0x00B5 */ + "_pp_", /* 0x00B6 */ + "_", /* 0x00B7 */ + "_", /* 0x00B8 */ + "1", /* 0x00B9 */ + "_", /* 0x00BA */ + "_", /* 0x00BB */ + "_", /* 0x00BC */ + "_", /* 0x00BD */ + "_", /* 0x00BE */ + "_", /* 0x00BF */ + "A", /* 0x00C0 */ + "A", /* 0x00C1 */ + "A", /* 0x00C2 */ + "A", /* 0x00C3 */ + "A", /* 0x00C4 */ + "A", /* 0x00C5 */ + "AE", /* 0x00C6 */ + "C", /* 0x00C7 */ + "E", /* 0x00C8 */ + "E", /* 0x00C9 */ + "E", /* 0x00CA */ + "E", /* 0x00CB */ + "I", /* 0x00CC */ + "I", /* 0x00CD */ + "I", /* 0x00CE */ + "I", /* 0x00CF */ + "TH", /* 0x00D0 */ + "N", /* 0x00D1 */ + "O", /* 0x00D2 */ + "O", /* 0x00D3 */ + "O", /* 0x00D4 */ + "O", /* 0x00D5 */ + "O", /* 0x00D6 */ + "x", /* 0x00D7 */ + "O", /* 0x00D8 */ + "U", /* 0x00D9 */ + "U", /* 0x00DA */ + "U", /* 0x00DB */ + "U", /* 0x00DC */ + "Y", /* 0x00DD */ + "TH", /* 0x00DE */ + "ss", /* 0x00DF */ + "a", /* 0x00E0 */ + "a", /* 0x00E1 */ + "a", /* 0x00E2 */ + "a", /* 0x00E3 */ + "a", /* 0x00E4 */ + "a", /* 0x00E5 */ + "ae", /* 0x00E6 */ + "c", /* 0x00E7 */ + "e", /* 0x00E8 */ + "e", /* 0x00E9 */ + "e", /* 0x00EA */ + "e", /* 0x00EB */ + "i", /* 0x00EC */ + "i", /* 0x00ED */ + "i", /* 0x00EE */ + "i", /* 0x00EF */ + "th", /* 0x00F0 */ + "n", /* 0x00F1 */ + "o", /* 0x00F2 */ + "o", /* 0x00F3 */ + "o", /* 0x00F4 */ + "o", /* 0x00F5 */ + "o", /* 0x00F6 */ + "_", /* 0x00F7 */ + "o", /* 0x00F8 */ + "u", /* 0x00F9 */ + "u", /* 0x00FA */ + "u", /* 0x00FB */ + "u", /* 0x00FC */ + "y", /* 0x00FD */ + "th", /* 0x00FE */ + "y", /* 0x00FF */ +}; diff --git a/detox/latest/table/iso8859_1.tbl.sample b/detox/latest/table/iso8859_1.tbl.sample new file mode 100644 index 0000000..27b5a08 --- /dev/null +++ b/detox/latest/table/iso8859_1.tbl.sample @@ -0,0 +1,131 @@ +# This file is part of the Detox package. +# +# Copyright (c) Doug Harple +# +# For the full copyright and license information, please view the LICENSE +# file that was distributed with this source code. + +# +# Special thanks to: http://www.bbsinc.com/iso8859.html +# + +default _ +start + +# +# CP 1252 +# + +0x85 ... # HORIZONTAL ELLIPSIS +0x88 ^ # MODIFIER LETTER CIRCUMFLEX ACCENT +0x8A S # LATIN CAPITAL LETTER S WITH CARON +0x8C OE # LATIN CAPITAL LIGATURE OE + +0x96 - # EN DASH +0x97 - # EM DASH +0x99 _tm_ # TRADE MARK SIGN +0x9A s # LATIN SMALL LETTER S WITH CARON +0x9C oe # LATIN SMALL LIGATURE OE +0x9F Y # LATIN CAPITAL LETTER Y WITH DIAERESIS + +# +# Latin 1 +# + +0xA2 _cent_ +0xA3 _pound_ +0xA5 _yen_ +0xA9 _copy_ +0xAE _reg_ + +0xB2 2 +0xB3 3 +0xB5 b +0xB6 _pp_ +0xB9 1 + +0xC0 A # LATIN CAPITAL LETTER A WITH GRAVE +0xC1 A # LATIN CAPITAL LETTER A WITH ACUTE +0xC2 A # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +0xC3 A # LATIN CAPITAL LETTER A WITH TILDE +0xC4 A # LATIN CAPITAL LETTER A WITH DIAERESIS +0xC5 A # LATIN CAPITAL LETTER A WITH RING ABOVE +0xC6 AE # LATIN CAPITAL LETTER AE +0xC7 C # LATIN CAPITAL LETTER C WITH CEDILLA +0xC8 E # LATIN CAPITAL LETTER E WITH GRAVE +0xC9 E # LATIN CAPITAL LETTER E WITH ACUTE +0xCA E # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +0xCB E # LATIN CAPITAL LETTER E WITH DIAERESIS +0xCC I # LATIN CAPITAL LETTER I WITH GRAVE +0xCD I # LATIN CAPITAL LETTER I WITH ACUTE +0xCE I # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +0xCF I # LATIN CAPITAL LETTER I WITH DIAERESIS + +0xD0 TH # LATIN CAPITAL LETTER ETH (Icelandic) +0xD1 N # LATIN CAPITAL LETTER N WITH TILDE +0xD2 O # LATIN CAPITAL LETTER O WITH GRAVE +0xD3 O # LATIN CAPITAL LETTER O WITH ACUTE +0xD4 O # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +0xD5 O # LATIN CAPITAL LETTER O WITH TILDE +0xD6 O # LATIN CAPITAL LETTER O WITH DIAERESIS +0xD7 x # MULTIPLICATION SIGN +0xD8 O # LATIN CAPITAL LETTER O WITH STROKE +0xD9 U # LATIN CAPITAL LETTER U WITH GRAVE +0xDA U # LATIN CAPITAL LETTER U WITH ACUTE +0xDB U # LATIN CAPITAL LETTER U WITH CIRCUMFLEX +0xDC U # LATIN CAPITAL LETTER U WITH DIAERESIS +0xDD Y # LATIN CAPITAL LETTER Y WITH ACUTE +0xDE TH # LATIN CAPITAL LETTER THORN (Icelandic) +0xDF ss # LATIN SMALL LETTER SHARP S (German) + +0xE0 a # LATIN SMALL LETTER A WITH GRAVE +0xE1 a # LATIN SMALL LETTER A WITH ACUTE +0xE2 a # LATIN SMALL LETTER A WITH CIRCUMFLEX +0xE3 a # LATIN SMALL LETTER A WITH TILDE +0xE4 a # LATIN SMALL LETTER A WITH DIAERESIS +0xE5 a # LATIN SMALL LETTER A WITH RING ABOVE +0xE6 ae # LATIN SMALL LETTER AE +0xE7 c # LATIN SMALL LETTER C WITH CEDILLA +0xE8 e # LATIN SMALL LETTER E WITH GRAVE +0xE9 e # LATIN SMALL LETTER E WITH ACUTE +0xEA e # LATIN SMALL LETTER E WITH CIRCUMFLEX +0xEB e # LATIN SMALL LETTER E WITH DIAERESIS +0xEC i # LATIN SMALL LETTER I WITH GRAVE +0xED i # LATIN SMALL LETTER I WITH ACUTE +0xEE i # LATIN SMALL LETTER I WITH CIRCUMFLEX +0xEF i # LATIN SMALL LETTER I WITH DIAERESIS + +0xF0 th # LATIN SMALL LETTER ETH (Icelandic) +0xF1 n # LATIN SMALL LETTER N WITH TILDE +0xF2 o # LATIN SMALL LETTER O WITH GRAVE +0xF3 o # LATIN SMALL LETTER O WITH ACUTE +0xF4 o # LATIN SMALL LETTER O WITH CIRCUMFLEX +0xF5 o # LATIN SMALL LETTER O WITH TILDE +0xF6 o # LATIN SMALL LETTER O WITH DIAERESIS +0xF8 o # LATIN SMALL LETTER O WITH STROKE +0xF9 u # LATIN SMALL LETTER U WITH GRAVE +0xFA u # LATIN SMALL LETTER U WITH ACUTE +0xFB u # LATIN SMALL LETTER U WITH CIRCUMFLEX +0xFC u # LATIN SMALL LETTER U WITH DIAERESIS +0xFD y # LATIN SMALL LETTER Y WITH ACUTE +0xFE th # LATIN SMALL LETTER THORN (Icelandic) +0xFF y # LATIN SMALL LETTER Y WITH DIAERESIS + +end + +# +# German specific conversions +# + +start de + +0xC4 AE # LATIN CAPITAL LETTER A WITH UMLAUT +0xD6 OE # LATIN CAPITAL LETTER O WITH UMLAUT +0xDC UE # LATIN CAPITAL LETTER U WITH UMLAUT + +0xE4 ae # LATIN SMALL LETTER A WITH UMLAUT +0xF6 oe # LATIN SMALL LETTER O WITH UMLAUT +0xFC ue # LATIN SMALL LETTER U WITH UMLAUT + +end + diff --git a/detox/latest/table/safe.tbl.sample b/detox/latest/table/safe.tbl.sample new file mode 100644 index 0000000..da3f848 --- /dev/null +++ b/detox/latest/table/safe.tbl.sample @@ -0,0 +1,136 @@ +# This file is part of the Detox package. +# +# Copyright (c) Doug Harple +# +# For the full copyright and license information, please view the LICENSE +# file that was distributed with this source code. + +start + +# +# Alphanumeric +# + +0x30 0 +0x31 1 +0x32 2 +0x33 3 +0x34 4 +0x35 5 +0x36 6 +0x37 7 +0x38 8 +0x39 9 + +0x41 A +0x42 B +0x43 C +0x44 D +0x45 E +0x46 F +0x47 G +0x48 H +0x49 I +0x4a J +0x4b K +0x4c L +0x4d M +0x4e N +0x4f O +0x50 P +0x51 Q +0x52 R +0x53 S +0x54 T +0x55 U +0x56 V +0x57 W +0x58 X +0x59 Y +0x5a Z + + +0x61 a +0x62 b +0x63 c +0x64 d +0x65 e +0x66 f +0x67 g +0x68 h +0x69 i +0x6a j +0x6b k +0x6c l +0x6d m +0x6e n +0x6f o +0x70 p +0x71 q +0x72 r +0x73 s +0x74 t +0x75 u +0x76 v +0x77 w +0x78 x +0x79 y +0x7a z + +# +# Chars to leave alone +# + +0x23 '#' +0x25 % +0x2b + +0x2c , +0x2d - +0x2e . +0x3d = +0x5e ^ +0x5f _ +0x7e ~ + +# +# Chars to translate to _ +# + +0x09 _ # tab +0x0A _ # new line +0x0D _ # carriage return +0x20 _ # space +0x21 _ # ! +0x22 _ # " +0x24 _ # $ +0x27 _ # ' +0x2a _ # * +0x2f _ # / +0x3a _ # : +0x3b _ # ; +0x3c _ # < +0x3e _ # > +0x3f _ # ? +0x40 _ # @ +0x5c _ # \ +0x60 _ # ` +0x7c _ # | + +# +# Chars to translate to - +# + +0x28 - # ( +0x29 - # ) +0x5b - # [ +0x5d - # ] +0x7b - # { +0x7d - # } + +# +# Other +# + +0x26 _and_ # & + +end diff --git a/detox/latest/table/unicode.tbl.sample b/detox/latest/table/unicode.tbl.sample new file mode 100644 index 0000000..82819a6 --- /dev/null +++ b/detox/latest/table/unicode.tbl.sample @@ -0,0 +1,386 @@ +# This file is part of the Detox package. +# +# Copyright (c) Doug Harple +# +# For the full copyright and license information, please view the LICENSE +# file that was distributed with this source code. + +# +# Special thanks to: http://www.unicode.org/Public/UNIDATA/UnicodeData.txt +# +# Used for translating Icelandic: +# http://www.bartleby.com/65/th/Thingval.html +# http://www.wordiq.com/definition/Thorn_%28letter%29 +# http://www.wordiq.com/definition/Edh +# +# Greenlandic: +# http://std.dkuug.dk/cultreg/registrations/narrative/da_DK,_4.3.html +# +# Sami: +# http://www.wordiq.com/definition/Sami_languages +# +# Germanic: +# http://www.wordiq.com/definition/%DF +# + +default _ + +start + +# +# Basic Latin - This is a subset of the basic 7-bit ASCII table, with unsafe +# characters removed. +# + +0x0023 # # NUMBER SIGN +0x0025 % # PERCENT SIGN +0x0026 _and_ # AMPERSAND +0x002B + # PLUS SIGN +0x002C , # COMMA +0x002D - # HYPHEN-MINUS +0x002E . # FULL STOP + +0x0030 0 # DIGIT ZERO +0x0031 1 # DIGIT ONE +0x0032 2 # DIGIT TWO +0x0033 3 # DIGIT THREE +0x0034 4 # DIGIT FOUR +0x0035 5 # DIGIT FIVE +0x0036 6 # DIGIT SIX +0x0037 7 # DIGIT SEVEN +0x0038 8 # DIGIT EIGHT +0x0039 9 # DIGIT NINE +0x003D = # EQUALS SIGN + +0x0041 A # LATIN CAPITAL LETTER A +0x0042 B # LATIN CAPITAL LETTER B +0x0043 C # LATIN CAPITAL LETTER C +0x0044 D # LATIN CAPITAL LETTER D +0x0045 E # LATIN CAPITAL LETTER E +0x0046 F # LATIN CAPITAL LETTER F +0x0047 G # LATIN CAPITAL LETTER G +0x0048 H # LATIN CAPITAL LETTER H +0x0049 I # LATIN CAPITAL LETTER I +0x004A J # LATIN CAPITAL LETTER J +0x004B K # LATIN CAPITAL LETTER K +0x004C L # LATIN CAPITAL LETTER L +0x004D M # LATIN CAPITAL LETTER M +0x004E N # LATIN CAPITAL LETTER N +0x004F O # LATIN CAPITAL LETTER O + +0x0050 P # LATIN CAPITAL LETTER P +0x0051 Q # LATIN CAPITAL LETTER Q +0x0052 R # LATIN CAPITAL LETTER R +0x0053 S # LATIN CAPITAL LETTER S +0x0054 T # LATIN CAPITAL LETTER T +0x0055 U # LATIN CAPITAL LETTER U +0x0056 V # LATIN CAPITAL LETTER V +0x0057 W # LATIN CAPITAL LETTER W +0x0058 X # LATIN CAPITAL LETTER X +0x0059 Y # LATIN CAPITAL LETTER Y +0x005A Z # LATIN CAPITAL LETTER Z +0x005E ^ # CIRCUMFLEX ACCENT + +0x0061 a # LATIN SMALL LETTER A +0x0062 b # LATIN SMALL LETTER B +0x0063 c # LATIN SMALL LETTER C +0x0064 d # LATIN SMALL LETTER D +0x0065 e # LATIN SMALL LETTER E +0x0066 f # LATIN SMALL LETTER F +0x0067 g # LATIN SMALL LETTER G +0x0068 h # LATIN SMALL LETTER H +0x0069 i # LATIN SMALL LETTER I +0x006A j # LATIN SMALL LETTER J +0x006B k # LATIN SMALL LETTER K +0x006C l # LATIN SMALL LETTER L +0x006D m # LATIN SMALL LETTER M +0x006E n # LATIN SMALL LETTER N +0x006F o # LATIN SMALL LETTER O + +0x0070 p # LATIN SMALL LETTER P +0x0071 q # LATIN SMALL LETTER Q +0x0072 r # LATIN SMALL LETTER R +0x0073 s # LATIN SMALL LETTER S +0x0074 t # LATIN SMALL LETTER T +0x0075 u # LATIN SMALL LETTER U +0x0076 v # LATIN SMALL LETTER V +0x0077 w # LATIN SMALL LETTER W +0x0078 x # LATIN SMALL LETTER X +0x0079 y # LATIN SMALL LETTER Y +0x007A z # LATIN SMALL LETTER Z +0x007E ~ # TILDE + +# +# CP 1252 +# + +0x0085 ... # HORIZONTAL ELLIPSIS +0x0088 ^ # MODIFIER LETTER CIRCUMFLEX ACCENT +0x008A S # LATIN CAPITAL LETTER S WITH CARON +0x008C OE # LATIN CAPITAL LIGATURE OE + +0x0096 - # EN DASH +0x0097 - # EM DASH +0x0099 _tm_ # TRADE MARK SIGN +0x009A s # LATIN SMALL LETTER S WITH CARON +0x009C oe # LATIN SMALL LIGATURE OE +0x009F Y # LATIN CAPITAL LETTER Y WITH DIAERESIS + +# +# Latin 1 +# + +0x00A2 _cent_ +0x00A3 _pound_ +0x00A5 _yen_ +0x00A9 _copy_ +0x00AE _reg_ + +0x00B2 2 +0x00B3 3 +0x00B5 b +0x00B6 _pp_ +0x00B9 1 + +0x00C0 A # LATIN CAPITAL LETTER A WITH GRAVE +0x00C1 A # LATIN CAPITAL LETTER A WITH ACUTE +0x00C2 A # LATIN CAPITAL LETTER A WITH CIRCUMFLEX +0x00C3 A # LATIN CAPITAL LETTER A WITH TILDE +0x00C4 A # LATIN CAPITAL LETTER A WITH DIAERESIS +0x00C5 A # LATIN CAPITAL LETTER A WITH RING ABOVE +0x00C6 AE # LATIN CAPITAL LETTER AE +0x00C7 C # LATIN CAPITAL LETTER C WITH CEDILLA +0x00C8 E # LATIN CAPITAL LETTER E WITH GRAVE +0x00C9 E # LATIN CAPITAL LETTER E WITH ACUTE +0x00CA E # LATIN CAPITAL LETTER E WITH CIRCUMFLEX +0x00CB E # LATIN CAPITAL LETTER E WITH DIAERESIS +0x00CC I # LATIN CAPITAL LETTER I WITH GRAVE +0x00CD I # LATIN CAPITAL LETTER I WITH ACUTE +0x00CE I # LATIN CAPITAL LETTER I WITH CIRCUMFLEX +0x00CF I # LATIN CAPITAL LETTER I WITH DIAERESIS + +0x00D0 TH # LATIN CAPITAL LETTER ETH (Icelandic) +0x00D1 N # LATIN CAPITAL LETTER N WITH TILDE +0x00D2 O # LATIN CAPITAL LETTER O WITH GRAVE +0x00D3 O # LATIN CAPITAL LETTER O WITH ACUTE +0x00D4 O # LATIN CAPITAL LETTER O WITH CIRCUMFLEX +0x00D5 O # LATIN CAPITAL LETTER O WITH TILDE +0x00D6 O # LATIN CAPITAL LETTER O WITH DIAERESIS +0x00D7 x # MULTIPLICATION SIGN +0x00D8 O # LATIN CAPITAL LETTER O WITH STROKE +0x00D9 U # LATIN CAPITAL LETTER U WITH GRAVE +0x00DA U # LATIN CAPITAL LETTER U WITH ACUTE +0x00DB U # LATIN CAPITAL LETTER U WITH CIRCUMFLEX +0x00DC U # LATIN CAPITAL LETTER U WITH DIAERESIS +0x00DD Y # LATIN CAPITAL LETTER Y WITH ACUTE +0x00DE TH # LATIN CAPITAL LETTER THORN (Icelandic) +0x00DF ss # LATIN SMALL LETTER SHARP S (German) + +0x00E0 a # LATIN SMALL LETTER A WITH GRAVE +0x00E1 a # LATIN SMALL LETTER A WITH ACUTE +0x00E2 a # LATIN SMALL LETTER A WITH CIRCUMFLEX +0x00E3 a # LATIN SMALL LETTER A WITH TILDE +0x00E4 a # LATIN SMALL LETTER A WITH DIAERESIS +0x00E5 a # LATIN SMALL LETTER A WITH RING ABOVE +0x00E6 ae # LATIN SMALL LETTER AE +0x00E7 c # LATIN SMALL LETTER C WITH CEDILLA +0x00E8 e # LATIN SMALL LETTER E WITH GRAVE +0x00E9 e # LATIN SMALL LETTER E WITH ACUTE +0x00EA e # LATIN SMALL LETTER E WITH CIRCUMFLEX +0x00EB e # LATIN SMALL LETTER E WITH DIAERESIS +0x00EC i # LATIN SMALL LETTER I WITH GRAVE +0x00ED i # LATIN SMALL LETTER I WITH ACUTE +0x00EE i # LATIN SMALL LETTER I WITH CIRCUMFLEX +0x00EF i # LATIN SMALL LETTER I WITH DIAERESIS + +0x00F0 th # LATIN SMALL LETTER ETH (Icelandic) +0x00F1 n # LATIN SMALL LETTER N WITH TILDE +0x00F2 o # LATIN SMALL LETTER O WITH GRAVE +0x00F3 o # LATIN SMALL LETTER O WITH ACUTE +0x00F4 o # LATIN SMALL LETTER O WITH CIRCUMFLEX +0x00F5 o # LATIN SMALL LETTER O WITH TILDE +0x00F6 o # LATIN SMALL LETTER O WITH DIAERESIS +0x00F8 o # LATIN SMALL LETTER O WITH STROKE +0x00F9 u # LATIN SMALL LETTER U WITH GRAVE +0x00FA u # LATIN SMALL LETTER U WITH ACUTE +0x00FB u # LATIN SMALL LETTER U WITH CIRCUMFLEX +0x00FC u # LATIN SMALL LETTER U WITH DIAERESIS +0x00FD y # LATIN SMALL LETTER Y WITH ACUTE +0x00FE th # LATIN SMALL LETTER THORN (Icelandic) +0x00FF y # LATIN SMALL LETTER Y WITH DIAERESIS + +# +# Latin Extended A +# + +0x0100 A # LATIN CAPITAL LETTER A WITH MACRON +0x0101 a # LATIN SMALL LETTER A WITH MACRON +0x0102 A # LATIN CAPITAL LETTER A WITH BREVE +0x0103 a # LATIN SMALL LETTER A WITH BREVE +0x0104 A # LATIN CAPITAL LETTER A WITH OGONEK +0x0105 a # LATIN SMALL LETTER A WITH OGONEK +0x0106 C # LATIN CAPITAL LETTER C WITH ACUTE +0x0107 c # LATIN SMALL LETTER C WITH ACUTE +0x0108 C # LATIN CAPITAL LETTER C WITH CIRCUMFLEX +0x0109 c # LATIN SMALL LETTER C WITH CIRCUMFLEX +0x010A C # LATIN CAPITAL LETTER C WITH DOT ABOVE +0x010B c # LATIN SMALL LETTER C WITH DOT ABOVE +0x010C C # LATIN CAPITAL LETTER C WITH CARON +0x010D c # LATIN SMALL LETTER C WITH CARON +0x010E D # LATIN CAPITAL LETTER D WITH CARON +0x010F d # LATIN SMALL LETTER D WITH CARON + +0x0110 D # LATIN CAPITAL LETTER D WITH STROKE +0x0111 d # LATIN SMALL LETTER D WITH STROKE +0x0112 E # LATIN CAPITAL LETTER E WITH MACRON +0x0113 e # LATIN SMALL LETTER E WITH MACRON +0x0114 E # LATIN CAPITAL LETTER E WITH BREVE +0x0115 e # LATIN SMALL LETTER E WITH BREVE +0x0116 E # LATIN CAPITAL LETTER E WITH DOT ABOVE +0x0117 e # LATIN SMALL LETTER E WITH DOT ABOVE +0x0118 E # LATIN CAPITAL LETTER E WITH OGONEK +0x0119 e # LATIN SMALL LETTER E WITH OGONEK +0x011A E # LATIN CAPITAL LETTER E WITH CARON +0x011B e # LATIN SMALL LETTER E WITH CARON +0x011C G # LATIN CAPITAL LETTER G WITH CIRCUMFLEX +0x011D g # LATIN SMALL LETTER G WITH CIRCUMFLEX +0x011E G # LATIN CAPITAL LETTER G WITH BREVE +0x011F g # LATIN SMALL LETTER G WITH BREVE + +0x0120 G # LATIN CAPITAL LETTER G WITH DOT ABOVE +0x0121 g # LATIN SMALL LETTER G WITH DOT ABOVE +0x0122 G # LATIN CAPITAL LETTER G WITH CEDILLA +0x0123 g # LATIN SMALL LETTER G WITH CEDILLA +0x0124 H # LATIN CAPITAL LETTER H WITH CIRCUMFLEX +0x0125 h # LATIN SMALL LETTER H WITH CIRCUMFLEX +0x0126 H # LATIN CAPITAL LETTER H WITH STROKE +0x0127 h # LATIN SMALL LETTER H WITH STROKE +0x0128 I # LATIN CAPITAL LETTER I WITH TILDE +0x0129 i # LATIN SMALL LETTER I WITH TILDE +0x012A I # LATIN CAPITAL LETTER I WITH MACRON +0x012B i # LATIN SMALL LETTER I WITH MACRON +0x012C I # LATIN CAPITAL LETTER I WITH BREVE +0x012D i # LATIN SMALL LETTER I WITH BREVE +0x012E I # LATIN CAPITAL LETTER I WITH OGONEK +0x012F i # LATIN SMALL LETTER I WITH OGONEK + +0x0130 I # LATIN CAPITAL LETTER I WITH DOT ABOVE +0x0131 i # LATIN SMALL LETTER DOTLESS I +0x0132 IJ # LATIN CAPITAL LIGATURE IJ +0x0133 ij # LATIN SMALL LIGATURE IJ +0x0134 J # LATIN CAPITAL LETTER J WITH CIRCUMFLEX +0x0135 j # LATIN SMALL LETTER J WITH CIRCUMFLEX +0x0136 K # LATIN CAPITAL LETTER K WITH CEDILLA +0x0137 k # LATIN SMALL LETTER K WITH CEDILLA +0x0138 q # LATIN SMALL LETTER KRA (Greenlandic) +0x0139 L # LATIN CAPITAL LETTER L WITH ACUTE +0x013A l # LATIN SMALL LETTER L WITH ACUTE +0x013B L # LATIN CAPITAL LETTER L WITH CEDILLA +0x013C l # LATIN SMALL LETTER L WITH CEDILLA +0x013D L # LATIN CAPITAL LETTER L WITH CARON +0x013E l # LATIN SMALL LETTER L WITH CARON +0x013F L # LATIN CAPITAL LETTER L WITH MIDDLE DOT + +0x0140 l # LATIN SMALL LETTER L WITH MIDDLE DOT +0x0141 L # LATIN CAPITAL LETTER L WITH STROKE +0x0142 l # LATIN SMALL LETTER L WITH STROKE +0x0143 N # LATIN CAPITAL LETTER N WITH ACUTE +0x0144 n # LATIN SMALL LETTER N WITH ACUTE +0x0145 N # LATIN CAPITAL LETTER N WITH CEDILLA +0x0146 n # LATIN SMALL LETTER N WITH CEDILLA +0x0147 N # LATIN CAPITAL LETTER N WITH CARON +0x0148 n # LATIN SMALL LETTER N WITH CARON +0x0149 n # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE +0x014A NG # LATIN CAPITAL LETTER ENG (Sami) +0x014B ng # LATIN SMALL LETTER ENG (Sami) +0x014C O # LATIN CAPITAL LETTER O WITH MACRON +0x014D o # LATIN SMALL LETTER O WITH MACRON +0x014E O # LATIN CAPITAL LETTER O WITH BREVE +0x014F o # LATIN SMALL LETTER O WITH BREVE + +0x0150 O # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +0x0151 o # LATIN SMALL LETTER O WITH DOUBLE ACUTE +0x0152 OE # LATIN CAPITAL LIGATURE OE +0x0153 oe # LATIN SMALL LIGATURE OE +0x0154 R # LATIN CAPITAL LETTER R WITH ACUTE +0x0155 r # LATIN SMALL LETTER R WITH ACUTE +0x0156 R # LATIN CAPITAL LETTER R WITH CEDILLA +0x0157 r # LATIN SMALL LETTER R WITH CEDILLA +0x0158 R # LATIN CAPITAL LETTER R WITH CARON +0x0159 r # LATIN SMALL LETTER R WITH CARON +0x015A S # LATIN CAPITAL LETTER S WITH ACUTE +0x015B s # LATIN SMALL LETTER S WITH ACUTE +0x015C S # LATIN CAPITAL LETTER S WITH CIRCUMFLEX +0x015D s # LATIN SMALL LETTER S WITH CIRCUMFLEX +0x015E S # LATIN CAPITAL LETTER S WITH CEDILLA +0x015F s # LATIN SMALL LETTER S WITH CEDILLA + +0x0160 S # LATIN CAPITAL LETTER S WITH CARON +0x0161 s # LATIN SMALL LETTER S WITH CARON +0x0162 T # LATIN CAPITAL LETTER T WITH CEDILLA +0x0163 t # LATIN SMALL LETTER T WITH CEDILLA +0x0164 T # LATIN CAPITAL LETTER T WITH CARON +0x0165 t # LATIN SMALL LETTER T WITH CARON +0x0166 T # LATIN CAPITAL LETTER T WITH STROKE +0x0167 t # LATIN SMALL LETTER T WITH STROKE +0x0168 U # LATIN CAPITAL LETTER U WITH TILDE +0x0169 u # LATIN SMALL LETTER U WITH TILDE +0x016A U # LATIN CAPITAL LETTER U WITH MACRON +0x016B u # LATIN SMALL LETTER U WITH MACRON +0x016C U # LATIN CAPITAL LETTER U WITH BREVE +0x016D u # LATIN SMALL LETTER U WITH BREVE +0x016E U # LATIN CAPITAL LETTER U WITH RING ABOVE +0x016F u # LATIN SMALL LETTER U WITH RING ABOVE + +0x0170 U # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +0x0171 u # LATIN SMALL LETTER U WITH DOUBLE ACUTE +0x0172 U # LATIN CAPITAL LETTER U WITH OGONEK +0x0173 u # LATIN SMALL LETTER U WITH OGONEK +0x0174 W # LATIN CAPITAL LETTER W WITH CIRCUMFLEX +0x0175 w # LATIN SMALL LETTER W WITH CIRCUMFLEX +0x0176 Y # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX +0x0177 y # LATIN SMALL LETTER Y WITH CIRCUMFLEX +0x0178 Y # LATIN CAPITAL LETTER Y WITH DIAERESIS +0x0179 Z # LATIN CAPITAL LETTER Z WITH ACUTE +0x017A z # LATIN SMALL LETTER Z WITH ACUTE +0x017B Z # LATIN CAPITAL LETTER Z WITH DOT ABOVE +0x017C z # LATIN SMALL LETTER Z WITH DOT ABOVE +0x017D Z # LATIN CAPITAL LETTER Z WITH CARON +0x017E z # LATIN SMALL LETTER Z WITH CARON +0x017F s # LATIN SMALL LETTER LONG S + +# +# Dunno where +# + +0x02C6 ^ # MODIFIER LETTER CIRCUMFLEX ACCENT + +0x2010 - # HYPHEN +0x2011 - # NON-BREAKING HYPHEN +0x2012 - # FIGURE DASH +0x2013 - # EN DASH +0x2014 - # EM DASH +0x2015 - # HORIZONTAL BAR + +0x2026 ... # HORIZONTAL ELLIPSIS + +0x2122 _tm_ # TRADE MARK SIGN + +end + +# +# German specific conversions +# + +start de + +0x00C4 AE # LATIN CAPITAL LETTER A WITH UMLAUT +0x00D6 OE # LATIN CAPITAL LETTER O WITH UMLAUT +0x00DC UE # LATIN CAPITAL LETTER U WITH UMLAUT + +0x00E4 ae # LATIN SMALL LETTER A WITH UMLAUT +0x00F6 oe # LATIN SMALL LETTER O WITH UMLAUT +0x00FC ue # LATIN SMALL LETTER U WITH UMLAUT + +end + diff --git a/detox/latest/ylwrap b/detox/latest/ylwrap new file mode 100755 index 0000000..5943168 --- /dev/null +++ b/detox/latest/ylwrap @@ -0,0 +1,247 @@ +#! /bin/sh +# ylwrap - wrapper for lex/yacc invocations. + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# +# Written by Tom Tromey . +# +# 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 2, 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 . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +get_dirname () +{ + case $1 in + */*|*\\*) printf '%s\n' "$1" | sed -e 's|\([\\/]\)[^\\/]*$|\1|';; + # Otherwise, we want the empty string (not "."). + esac +} + +# guard FILE +# ---------- +# The CPP macro used to guard inclusion of FILE. +guard () +{ + printf '%s\n' "$1" \ + | sed \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ + -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g' \ + -e 's/__*/_/g' +} + +# quote_for_sed [STRING] +# ---------------------- +# Return STRING (or stdin) quoted to be used as a sed pattern. +quote_for_sed () +{ + case $# in + 0) cat;; + 1) printf '%s\n' "$1";; + esac \ + | sed -e 's|[][\\.*]|\\&|g' +} + +case "$1" in + '') + echo "$0: No files given. Try '$0 --help' for more information." 1>&2 + exit 1 + ;; + --basedir) + basedir=$2 + shift 2 + ;; + -h|--h*) + cat <<\EOF +Usage: ylwrap [--help|--version] INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]... + +Wrapper for lex/yacc invocations, renaming files as desired. + + INPUT is the input file + OUTPUT is one file PROG generates + DESIRED is the file we actually want instead of OUTPUT + PROGRAM is program to run + ARGS are passed to PROG + +Any number of OUTPUT,DESIRED pairs may be used. + +Report bugs to . +EOF + exit $? + ;; + -v|--v*) + echo "ylwrap $scriptversion" + exit $? + ;; +esac + + +# The input. +input=$1 +shift +# We'll later need for a correct munging of "#line" directives. +input_sub_rx=`get_dirname "$input" | quote_for_sed` +case $input in + [\\/]* | ?:[\\/]*) + # Absolute path; do nothing. + ;; + *) + # Relative path. Make it absolute. + input=`pwd`/$input + ;; +esac +input_rx=`get_dirname "$input" | quote_for_sed` + +# Since DOS filename conventions don't allow two dots, +# the DOS version of Bison writes out y_tab.c instead of y.tab.c +# and y_tab.h instead of y.tab.h. Test to see if this is the case. +y_tab_nodot=false +if test -f y_tab.c || test -f y_tab.h; then + y_tab_nodot=true +fi + +# The parser itself, the first file, is the destination of the .y.c +# rule in the Makefile. +parser=$1 + +# A sed program to s/FROM/TO/g for all the FROM/TO so that, for +# instance, we rename #include "y.tab.h" into #include "parse.h" +# during the conversion from y.tab.c to parse.c. +sed_fix_filenames= + +# Also rename header guards, as Bison 2.7 for instance uses its header +# guard in its implementation file. +sed_fix_header_guards= + +while test $# -ne 0; do + if test x"$1" = x"--"; then + shift + break + fi + from=$1 + # Handle y_tab.c and y_tab.h output by DOS + if $y_tab_nodot; then + case $from in + "y.tab.c") from=y_tab.c;; + "y.tab.h") from=y_tab.h;; + esac + fi + shift + to=$1 + shift + sed_fix_filenames="${sed_fix_filenames}s|"`quote_for_sed "$from"`"|$to|g;" + sed_fix_header_guards="${sed_fix_header_guards}s|"`guard "$from"`"|"`guard "$to"`"|g;" +done + +# The program to run. +prog=$1 +shift +# Make any relative path in $prog absolute. +case $prog in + [\\/]* | ?:[\\/]*) ;; + *[\\/]*) prog=`pwd`/$prog ;; +esac + +dirname=ylwrap$$ +do_exit="cd '`pwd`' && rm -rf $dirname > /dev/null 2>&1;"' (exit $ret); exit $ret' +trap "ret=129; $do_exit" 1 +trap "ret=130; $do_exit" 2 +trap "ret=141; $do_exit" 13 +trap "ret=143; $do_exit" 15 +mkdir $dirname || exit 1 + +cd $dirname + +case $# in + 0) "$prog" "$input" ;; + *) "$prog" "$@" "$input" ;; +esac +ret=$? + +if test $ret -eq 0; then + for from in * + do + to=`printf '%s\n' "$from" | sed "$sed_fix_filenames"` + if test -f "$from"; then + # If $2 is an absolute path name, then just use that, + # otherwise prepend '../'. + case $to in + [\\/]* | ?:[\\/]*) target=$to;; + *) target=../$to;; + esac + + # Do not overwrite unchanged header files to avoid useless + # recompilations. Always update the parser itself: it is the + # destination of the .y.c rule in the Makefile. Divert the + # output of all other files to a temporary file so we can + # compare them to existing versions. + if test $from != $parser; then + realtarget=$target + target=tmp-`printf '%s\n' "$target" | sed 's|.*[\\/]||g'` + fi + + # Munge "#line" or "#" directives. Don't let the resulting + # debug information point at an absolute srcdir. Use the real + # output file name, not yy.lex.c for instance. Adjust the + # include guards too. + sed -e "/^#/!b" \ + -e "s|$input_rx|$input_sub_rx|" \ + -e "$sed_fix_filenames" \ + -e "$sed_fix_header_guards" \ + "$from" >"$target" || ret=$? + + # Check whether files must be updated. + if test "$from" != "$parser"; then + if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then + echo "$to is unchanged" + rm -f "$target" + else + echo "updating $to" + mv -f "$target" "$realtarget" + fi + fi + else + # A missing file is only an error for the parser. This is a + # blatant hack to let us support using "yacc -d". If -d is not + # specified, don't fail when the header file is "missing". + if test "$from" = "$parser"; then + ret=1 + fi + fi + done +fi + +# Remove the directory. +cd .. +rm -rf $dirname + +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: