Upgrade to file-4.09.
authorjbj <devnull@localhost>
Tue, 3 Aug 2004 20:16:18 +0000 (20:16 +0000)
committerjbj <devnull@localhost>
Tue, 3 Aug 2004 20:16:18 +0000 (20:16 +0000)
CVS patchset: 7388
CVS date: 2004/08/03 20:16:18

133 files changed:
file/.cvsignore
file/.splintrc [deleted file]
file/ChangeLog [new file with mode: 0644]
file/LEGAL.NOTICE
file/MAINT
file/Makefile.am
file/Makefile.in [new file with mode: 0644]
file/Makefile.std [deleted file]
file/README
file/acconfig.h [new file with mode: 0644]
file/acinclude.m4
file/aclocal.m4 [new file with mode: 0644]
file/autogen.sh [deleted file]
file/config.guess [new file with mode: 0755]
file/config.h.in [new file with mode: 0644]
file/config.sub [new file with mode: 0755]
file/configure [new file with mode: 0755]
file/configure.in [moved from file/configure.ac with 54% similarity]
file/depcomp [new file with mode: 0755]
file/doc/.cvsignore [deleted file]
file/doc/Makefile.am
file/doc/Makefile.in [new file with mode: 0644]
file/doc/file.man
file/doc/libmagic.man [new file with mode: 0644]
file/doc/magic.man
file/ltcf-c.sh [new file with mode: 0644]
file/ltconfig [new file with mode: 0755]
file/ltmain.sh [new file with mode: 0644]
file/magic/.cvsignore [deleted file]
file/magic/Localstuff
file/magic/Magdir/amigaos
file/magic/Magdir/animation
file/magic/Magdir/apple
file/magic/Magdir/archive
file/magic/Magdir/audio
file/magic/Magdir/c-lang
file/magic/Magdir/c64 [new file with mode: 0644]
file/magic/Magdir/cad [new file with mode: 0644]
file/magic/Magdir/commands
file/magic/Magdir/communications [new file with mode: 0644]
file/magic/Magdir/compress
file/magic/Magdir/console
file/magic/Magdir/dact [new file with mode: 0644]
file/magic/Magdir/database
file/magic/Magdir/elf
file/magic/Magdir/fcs [new file with mode: 0644]
file/magic/Magdir/filesystems
file/magic/Magdir/flash
file/magic/Magdir/fonts
file/magic/Magdir/games [new file with mode: 0644]
file/magic/Magdir/gcc [new file with mode: 0644]
file/magic/Magdir/geos [new file with mode: 0644]
file/magic/Magdir/gnu
file/magic/Magdir/human68k
file/magic/Magdir/ibm6000
file/magic/Magdir/iff
file/magic/Magdir/images
file/magic/Magdir/impulse [deleted file]
file/magic/Magdir/intel
file/magic/Magdir/jpeg
file/magic/Magdir/linux
file/magic/Magdir/mach
file/magic/Magdir/macintosh
file/magic/Magdir/mail.news
file/magic/Magdir/maple
file/magic/Magdir/mathematica
file/magic/Magdir/misctools [new file with mode: 0644]
file/magic/Magdir/motorola
file/magic/Magdir/msdos
file/magic/Magdir/netscape
file/magic/Magdir/ocaml [new file with mode: 0644]
file/magic/Magdir/os2
file/magic/Magdir/palm
file/magic/Magdir/perl
file/magic/Magdir/plan9 [new file with mode: 0644]
file/magic/Magdir/printer
file/magic/Magdir/psion [new file with mode: 0644]
file/magic/Magdir/python
file/magic/Magdir/revision [moved from file/magic/Magdir/cvs with 80% similarity]
file/magic/Magdir/riff
file/magic/Magdir/rpm
file/magic/Magdir/sgi [new file with mode: 0644]
file/magic/Magdir/sgml
file/magic/Magdir/sinclair [new file with mode: 0644]
file/magic/Magdir/sniffer
file/magic/Magdir/spectrum
file/magic/Magdir/sun
file/magic/Magdir/sysex
file/magic/Magdir/ti-8x
file/magic/Magdir/varied.out
file/magic/Magdir/varied.script [new file with mode: 0644]
file/magic/Magdir/vmware
file/magic/Magdir/vorbis
file/magic/Magdir/wordprocessors [moved from file/magic/Magdir/wordperfect with 84% similarity]
file/magic/Magdir/xwindows [new file with mode: 0644]
file/magic/Makefile.am
file/magic/Makefile.in [new file with mode: 0644]
file/magic/magic.mime
file/magic/magic2mime
file/mkinstalldirs
file/python/README [new file with mode: 0644]
file/python/example.py [new file with mode: 0644]
file/python/py_magic.c [new file with mode: 0644]
file/python/py_magic.h [new file with mode: 0644]
file/python/setup.py [new file with mode: 0644]
file/src/.cvsignore [deleted file]
file/src/.splintrc [deleted file]
file/src/Makefile.am
file/src/Makefile.in [new file with mode: 0644]
file/src/acconfig.h [new file with mode: 0644]
file/src/acinclude.m4 [deleted file]
file/src/apprentice.c
file/src/apptype.c [new file with mode: 0644]
file/src/ascmagic.c
file/src/autogen.sh [deleted file]
file/src/compress.c
file/src/debug.h [deleted file]
file/src/file.c
file/src/file.h
file/src/fsmagic.c
file/src/funcs.c [new file with mode: 0644]
file/src/is_tar.c [new file with mode: 0644]
file/src/magic.c
file/src/magic.h
file/src/names.h
file/src/patchlevel.h
file/src/print.c
file/src/readelf.c
file/src/readelf.h
file/src/softmagic.c
file/src/system.h [deleted file]
file/src/tar.h
file/src/test.c [new file with mode: 0644]

index db96bcc..d899218 100644 (file)
@@ -1,20 +1 @@
-Makefile
-Makefile.in
-aclocal.m4
-autom4te*
-config.cache
-config.guess
-config.h
-config.h.in
-config.log
-config.status
-config.sub
-configure
-depcomp
-install-sh
-libtool
-ltconfig
-ltmain.sh
-missing
-stamp-h*
-file-*.tar.gz
+autom4te.cache
diff --git a/file/.splintrc b/file/.splintrc
deleted file mode 100644 (file)
index 015efeb..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
--I. -I../zlib -DHAVE_CONFIG_H -DSTDC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGFILE_SOURCE -D__STDC__=1 -DHAVE_STRUCT_STAT_ST_RDEV -DSIZEOF_UINT64_T=8
-
-#+partial
-+forcehints
-
-
--warnunixlib
--warnposix
-
-+unixlib
-
--unrecogcomments       # XXX ignore doxygen markings
-
-+strict                        # lclint level
-
-# --- in progress
-+bounds
-
--fielduse
--exportfcn
--exportheader          # 50
--exporttype
-
-# --- not-yet at strict level
--bitwisesigned         # 86
--elseifcomplete                # 2
--forblock              # 6
--ifblock               # 231
--incondefs             # 64
--namechecks            # tedious ANSI compliance checks
--ptrarith              # tedious
-
--mustdefine            # 25
--shiftimplementation   # 148 ctype.h
-
--strictops             # 37
--whileblock            # 16
-
-# --- not-yet at checks level
--mustfree              # 26
--usedef                        # 31
-
-# --- not-yet at standard level
-+boolint               # 38
-+charint               # 147
-+ignorequals           # 49
-+matchanyintegral      # 77
diff --git a/file/ChangeLog b/file/ChangeLog
new file mode 100644 (file)
index 0000000..c9e63fe
--- /dev/null
@@ -0,0 +1,149 @@
+2004-04-06 20:36  Christos Zoulas  <christos@zoulas.com>
+
+       * detect present of mbstate_t Petter Reinholdtsen <pere@hungry.com>
+
+       * magic fixes
+
+2004-03-22 15:25  Christos Zoulas  <christos@zoulas.com>
+
+       * Lots of mime fixes
+         (Joerg Ostertag) <ostertag@rechengilde.de>
+
+       * FreeBSD ELF version handling
+         (Edwin Groothuis) <edwin@mavetju.org>
+
+       * correct cleanup in all cases; don't just close the file.
+         (Christos Zoulas) <christos@zoulas.com>
+
+       * add gettext message catalogue support
+         (Michael Piefel) <piefel@debian.org>
+
+       * better printout for unreadable files
+         (Michael Piefel) <piefel@debian.org>
+
+       * compensate for missing MAXPATHLEN
+         (Michael Piefel) <piefel@debian.org>
+
+       * add wide character string length computation
+         (Michael Piefel) <piefel@debian.org>
+
+       * Avoid infinite loops caused by bad elf alignments
+         or name and description note sizes. Reported by
+         (Mikael Magnusson) <mmikael@comhem.se>
+
+2004-03-09 13:55  Christos Zoulas  <christos@zoulas.com>
+
+       * Fix possible memory leak on error and add missing regfree
+         (Dmitry V. Levin) <ldv@altlinux.org>
+
+2003-12-23 12:12  Christos Zoulas  <christos@zoulas.com>
+
+       * fix -k flag (Maciej W. Rozycki)
+
+2003-11-18 14:10  Christos Zoulas  <christos@zoulas.com>
+
+       * Try to give us much info as possible on corrupt elf files.
+         (Willy Tarreau) <willy@w.ods.org>
+       * Updated python bindings (Brett Funderburg)
+          <brettf@deepfile.com>
+
+2003-11-11 15:03  Christos Zoulas  <christos@zoulas.com>
+
+       * Include file.h first, because it includes config.h
+         breaks largefile test macros otherwise.
+         (Paul Eggert <eggert@CS.UCLA.EDU> via
+          Lars Hecking <lhecking@nmrc.ie>)
+
+2003-10-14 21:39  Christos Zoulas  <christos@zoulas.com>
+
+       * Python bindings (Brett Funderburg) <brettf@deepfile.com>
+       * Don't lookup past the end of the buffer
+         (Chad Hanson) <chanson@tcs-sec.com>
+       * Add MAGIC_ERROR and api on magic_errno()
+
+2003-10-08 12:40  Christos Zoulas  <christos@zoulas.com>
+
+       * handle error conditions from compile as fatal
+         (Antti Kantee) <pooka@netbsd.org>
+       * handle magic filename parsing sanely
+       * more magic fixes.
+       * fix a memory leak (Illes Marton) <illes.marton@balabit.hu>
+       * describe magic file handling
+         (Bryan Henderson) <bryanh@giraffe-data.com>
+
+2003-09-12 15:09  Christos Zoulas  <christos@zoulas.com>
+
+       * update magic files.
+       * remove largefile support from file.h; it breaks things on most OS's
+
+2003-08-10 10:25  Christos Zoulas  <christos@zoulas.com>
+
+       * fix unmapping'ing of mmaped files.
+
+2003-07-10 12:03  Christos Zoulas  <christos@zoulas.com>
+
+       * don't exit with -1 on error; always exit 1 (Marty Leisner)
+       * restore utimes code.
+
+2003-06-10 17:03  Christos Zoulas  <christos@zoulas.com>
+
+       * make sure we don't access uninitialized memory.
+       * pass lint
+       * #ifdef __cplusplus in magic.h
+
+2003-05-25 19:23  Christos Zoulas  <christos@zoulas.com>
+
+       * rename cvs magic file to revision to deal with
+         case insensitive filesystems.
+
+2003-05-23 17:03  Christos Zoulas  <christos@zoulas.com>
+
+       * documentation fixes from Michael Piefel <piefel@debian.org>
+       * magic fixes (various)
+       * revert basename magic in .mgc name determination
+       * buffer protection in uncompress,
+         signness issues,
+         close files
+         Maciej W. Rozycki <macro@ds2.pg.gda.pl
+
+2003-04-21 20:12  Christos Zoulas  <christos@zoulas.com>
+
+       * fix zsh magic
+
+2003-04-04 16:59  Christos Zoulas  <christos@zoulas.com>
+
+       * fix operand sort order in string.
+
+2003-04-02 17:30  Christos Zoulas  <christos@zoulas.com>
+
+       * cleanup namespace in magic.h
+
+2003-04-02 13:50  Christos Zoulas  <christos@zoulas.com>
+
+       * Magic additions (Alex Ott)
+       * Fix bug that broke VPATH compilation (Peter Breitenlohner)
+
+2003-03-28 16:03  Christos Zoulas  <christos@zoulas.com>
+
+       * remove packed attribute from magic struct.
+       * make the magic struct properly aligned.
+       * bump version number of compiled files to 2.
+
+2003-03-27 13:10  Christos Zoulas  <christos@zoulas.com>
+
+       * separate tar detection and run it before softmagic.
+       * fix reversed symlink test.
+       * fix version printing.
+       * make separator a string instead of a char.
+       * update manual page and sort options.
+
+2003-03-26 11:00  Christos Zoulas  <christos@zoulas.com>
+
+       * Pass lint
+       * make NULL in magic_file mean stdin
+       * Fix "-" argument to file to pass NULL to magic_file
+       * avoid pointer casts by using memcpy
+       * rename magic_buf -> magic_buffer
+       * keep only the first error
+       * manual page: new sentence, new line
+       * fix typo in api function (magic_buf -> magic_buffer)
index 430d4b9..dd8b90a 100644 (file)
@@ -1,7 +1,7 @@
-Id: LEGAL.NOTICE,v 1.11 1999/01/14 16:30:12 christos Exp 
+$Id: LEGAL.NOTICE,v 1.13 2003/03/23 22:23:30 christos Exp $
 Copyright (c) Ian F. Darwin 1986, 1987, 1989, 1990, 1991, 1992, 1994, 1995.
 Software written by Ian F. Darwin and others;
-maintained 1994-1999 Christos Zoulas.
+maintained 1994-2003 Christos Zoulas.
 
 This software is not subject to any export provision of the United States
 Department of Commerce, and may be exported to any country or planet.
index 25a01e1..c711117 100644 (file)
@@ -1,4 +1,4 @@
-Id: MAINT,v 1.4 2000/04/11 02:43:51 christos Exp 
+$Id: MAINT,v 1.5 2003/03/23 04:36:37 christos Exp $
 
 Maintenance notes:
 
index a22d124..3e02ac8 100644 (file)
@@ -1,3 +1,6 @@
-EXTRA_DIST = LEGAL.NOTICE MAINT Makefile.std
+# don't enforce GNU packaging standards
+AUTOMAKE_OPTIONS = foreign no-dependencies
+
+EXTRA_DIST = LEGAL.NOTICE MAINT PORTING
 
 SUBDIRS = src magic doc
diff --git a/file/Makefile.in b/file/Makefile.in
new file mode 100644 (file)
index 0000000..8ad423e
--- /dev/null
@@ -0,0 +1,548 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# 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@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = .
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+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 = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+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@
+FSECT5_FALSE = @FSECT5_FALSE@
+FSECT5_TRUE = @FSECT5_TRUE@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+fsect = @fsect@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+
+# don't enforce GNU packaging standards
+AUTOMAKE_OPTIONS = foreign no-dependencies
+
+EXTRA_DIST = LEGAL.NOTICE MAINT PORTING
+
+SUBDIRS = src magic doc
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES =
+depcomp =
+am__depfiles_maybe =
+DIST_SOURCES =
+
+RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
+       ps-recursive install-info-recursive uninstall-info-recursive \
+       all-recursive install-data-recursive install-exec-recursive \
+       installdirs-recursive install-recursive uninstall-recursive \
+       check-recursive installcheck-recursive
+DIST_COMMON = README $(srcdir)/Makefile.in $(srcdir)/configure \
+       ChangeLog Makefile.am acconfig.h acinclude.m4 aclocal.m4 \
+       config.guess config.h.in config.sub configure configure.in \
+       depcomp install-sh ltcf-c.sh ltconfig ltmain.sh missing \
+       mkinstalldirs
+DIST_SUBDIRS = $(SUBDIRS)
+all: config.h
+       $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --foreign  Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)
+
+$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       $(SHELL) ./config.status --recheck
+$(srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
+       cd $(srcdir) && $(AUTOCONF)
+
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in acinclude.m4
+       cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+
+config.h: stamp-h1
+       @if test ! -f $@; then \
+         rm -f stamp-h1; \
+         $(MAKE) stamp-h1; \
+       else :; fi
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+       @rm -f stamp-h1
+       cd $(top_builddir) && $(SHELL) ./config.status config.h
+
+$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(top_srcdir)/configure.in $(ACLOCAL_M4) $(top_srcdir)/acconfig.h
+       cd $(top_srcdir) && $(AUTOHEADER)
+       touch $(srcdir)/config.h.in
+
+distclean-hdr:
+       -rm -f config.h stamp-h1
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+
+# 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.
+$(RECURSIVE_TARGETS):
+       @set fnord $$MAKEFLAGS; amf=$$2; \
+       dot_seen=no; \
+       target=`echo $@ | sed s/-recursive//`; \
+       list='$(SUBDIRS)'; 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; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+          || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+       @set fnord $$MAKEFLAGS; amf=$$2; \
+       dot_seen=no; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       rev=''; for subdir in $$list; do \
+         if test "$$subdir" = "."; then :; else \
+           rev="$$subdir $$rev"; \
+         fi; \
+       done; \
+       rev="$$rev ."; \
+       target=`echo $@ | sed s/-recursive//`; \
+       for subdir in $$rev; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+          || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+       done && test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       mkid -fID $$unique
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       if (etags --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+       else \
+         include_option=--include; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -f $$subdir/TAGS && \
+             tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(ETAGS_ARGS)$$tags$$unique" \
+         || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+            $$tags $$unique
+
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = .
+distdir = $(PACKAGE)-$(VERSION)
+
+am__remove_distdir = \
+  { test ! -d $(distdir) \
+    || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
+         && rm -fr $(distdir); }; }
+
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+
+distdir: $(DISTFILES)
+       $(am__remove_distdir)
+       mkdir $(distdir)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkinstalldirs) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test -d $(distdir)/$$subdir \
+           || mkdir $(distdir)/$$subdir \
+           || exit 1; \
+           (cd $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$(top_distdir)" \
+               distdir=../$(distdir)/$$subdir \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+       -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -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 $(SHELL) $(install_sh) -c -m a+r {} {} \; \
+       || chmod -R a+r $(distdir)
+dist-gzip: distdir
+       $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+       $(am__remove_distdir)
+
+dist dist-all: distdir
+       $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+       $(am__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
+       $(am__remove_distdir)
+       GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf -
+       chmod -R a-w $(distdir); chmod a+w $(distdir)
+       mkdir $(distdir)/_build
+       mkdir $(distdir)/_inst
+       chmod a-w $(distdir)
+       dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+         && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+         && cd $(distdir)/_build \
+         && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+           $(DISTCHECK_CONFIGURE_FLAGS) \
+         && $(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 ../.. && $(mkinstalldirs) "$$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-gzip \
+         && rm -f $(distdir).tar.gz \
+         && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+       $(am__remove_distdir)
+       @echo "$(distdir).tar.gz is ready for distribution" | \
+         sed 'h;s/./=/g;p;x;p;x'
+distuninstallcheck:
+       @cd $(distuninstallcheck_dir) \
+       && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+          || { 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 config.h
+installdirs: installdirs-recursive
+installdirs-am:
+
+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:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -rm -f $(CONFIG_CLEAN_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 clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr distclean-libtool \
+       distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+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 mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
+       clean-generic clean-libtool clean-recursive ctags \
+       ctags-recursive dist dist-all dist-gzip distcheck distclean \
+       distclean-generic distclean-hdr distclean-libtool \
+       distclean-recursive distclean-tags distcleancheck distdir \
+       distuninstallcheck dvi dvi-am dvi-recursive info info-am \
+       info-recursive install install-am install-data install-data-am \
+       install-data-recursive install-exec install-exec-am \
+       install-exec-recursive install-info install-info-am \
+       install-info-recursive install-man install-recursive \
+       install-strip installcheck installcheck-am installdirs \
+       installdirs-am installdirs-recursive maintainer-clean \
+       maintainer-clean-generic maintainer-clean-recursive mostlyclean \
+       mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \
+       pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \
+       tags-recursive uninstall uninstall-am uninstall-info-am \
+       uninstall-info-recursive uninstall-recursive
+
+# 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/file/Makefile.std b/file/Makefile.std
deleted file mode 100644 (file)
index 210950b..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
-# Makefile for file(1) cmd. 
-# Copyright (c) Ian F. Darwin 86/09/01 - see LEGAL.NOTICE.
-# @(#)Id: Makefile.std,v 1.12 2001/09/03 14:44:21 christos Exp 
-#
-# This software is not subject to any license of the American Telephone
-# and Telegraph Company or of the Regents of the University of California.
-#
-# Permission is granted to anyone to use this software for any purpose on
-# any computer system, and to alter it and redistribute it freely, subject
-# to the following restrictions:
-#
-# 1. The author is not responsible for the consequences of use of this
-#    software, no matter how awful, even if they arise from flaws in it.
-#
-# 2. The origin of this software must not be misrepresented, either by
-#    explicit claim or by omission.  Since few users ever read sources,
-#    credits must appear in the documentation.
-#
-# 3. Altered versions must be plainly marked as such, and must not be
-#    misrepresented as being the original software.  Since few users
-#    ever read sources, credits must appear in the documentation.
-#
-# 4. This notice may not be removed or altered.
-#
-VERSION        = 3.37
-SHELL  = /bin/sh
-#MAGIC = /etc/magic
-MAGIC  = /usr/local/etc/magic
-DEFS   = -DMAGIC='"$(MAGIC)"' -DBUILTIN_ELF # -Dvoid=int
-CC     = cc
-COPTS  = -O -g         # newer compilers allow both; else drop -O
-# For truly antique environments, use this for (dummy) include files:
-COPTS  = -O # -Ilocalinc
-CFLAGS = $(COPTS) $(DEFS)
-LDFLAGS        = $(COPTS) # -Bstatic   # older gdb couldn't handle shared libs
-SHAR   = bundle
-OFILE  = /usr/bin/file         # old or distributed version, for comparison
-# Where new binary lives; typically /usr/local (BSD), /usr/lbin (USG).
-BINDIR = /usr/local/bin
-# For installing our man pages; 
-# MANCxxx is manual section for Commands, MANFxxx is section for file formats.
-# MANxDIR is directory names; MANxEXT is the filename extention. Usual values:
-# Variable     V7              4BSD            Sys V
-# MANCDIR      /usr/man/man1   /usr/man/man1   /usr/man/u_man/man1
-# MANFDIR      /usr/man/man5   /usr/man/man5   /usr/man/u_man/man4
-# MANCEXT      1               1               1
-# MANFEXT      5               5               4
-# --- possible alternative for 4BSD ---
-# MANCDIR                      /usr/local/man/man1
-# MANCEXT                      1
-# or
-# MANCDIR                      /usr/man/manl
-# MANCEXT                      l
-# --- possible alternative for USG ---
-# MANCDIR                      /usr/man/local/man1
-# MANCEXT                      1
-
-MANCDIR        = /usr/local/man/man1
-MANCEXT        = 1
-MANFDIR        = /usr/local/man/man4
-MANFEXT        = 4
-
-# There are no system-dependant configuration options (except maybe CFLAGS).
-# Uncomment any of these that is missing from your "standard" library.
-LOCALSRCS = # localsrc/getopt.c localsrc/strtol.c \
-#              localsrc/strtok.c localsrc/strchr.c
-LOCALOBJS = # localsrc/getopt.o localsrc/strtol.o \
-#              localsrc/strtok.o localsrc/strchr.o
-# These are not compiled in unless you use -Ilocalinc, but
-# are not commented out as "make dist" &c use them.
-LOCALINC = # localinc/*.h localinc/sys/*.h
-
-SRCS = file.c apprentice.c fsmagic.c softmagic.c ascmagic.c \
-       compress.c is_tar.c readelf.c internat.c \
-       print.c $(LOCALSRCS) $(LOCALINC)
-OBJS = file.o apprentice.o fsmagic.o softmagic.o ascmagic.o \
-       compress.o is_tar.o readelf.o internat.o \
-       print.o $(LOCALOBJS)
-HDRS = file.h names.h patchlevel.h readelf.h tar.h
-
-AUTOSRC=configure configure.in install-sh config.h.in Makefile.in
-ALLSRC = LEGAL.NOTICE README MAINT PORTING $(SRCS) $(HDRS) \
-        Makefile.std file.man magic.man magic2mime $(AUTOSRC) \
-        Localstuff Header
-ALLMAGIC =   Magdir/[a-z]*
-
-all:           file magic file.${MANCEXT} magic.${MANFEXT}
-
-TESTFILES = * tst/*
-try:           all $(OFILE)
-               cd tst; $(MAKE)
-               time $(OFILE) $(TESTFILES) >/tmp/t1 # can't use ./magic
-               time ./file -m ./magic $(TESTFILES) >/tmp/t2
-               -diff -b /tmp/t[12]
-               what ./file >lastnocore
-
-file:          $(OBJS)
-               $(CC) $(CFLAGS) $(LDFLAGS) $(OBJS) -o $@
-lint:          $(SRCS)
-               lint -ha $(DEFS) $(SRCS) | tee $@
-magic:         Localstuff Header Magdir
-               cat Header Localstuff Magdir/[a-z] > $@
-
-ascmagic.o:    names.h
-
-compress.o apprentice.o ascmagic.o file.o fsmagic.o print.o softmagic.o: file.h
-
-install:       file magic
-               cp file $(BINDIR)/file
-               cp magic $(MAGIC)
-
-install.man: file.${MANCEXT} magic.${MANFEXT}
-               cp file.${MANCEXT} $(MANCDIR)/file.$(MANCEXT)
-               cp magic.${MANFEXT} $(MANFDIR)/magic.$(MANFEXT)
-
-clean:
-               rm -f *.o core file magic lint dist.* MANIFEST \
-                     magic.${MANFEXT} file.${MANCEXT} \
-                     config.h config.status config.cache config.log
-clobber:
-               cd tst; $(MAKE) clean
-
-
-magic.${MANFEXT} :     Makefile magic.man
-               @rm -f $@
-               sed -e s@__CSECTION__@${MANCEXT}@g \
-                   -e s@__FSECTION__@${MANFEXT}@g \
-                   -e s@__VERSION__@${VERSION}@g \
-                   -e s@__MAGIC__@${MAGIC}@g magic.man > $@
-
-file.${MANCEXT} :      Makefile file.man
-               @rm -f $@
-               sed -e s@__CSECTION__@${MANCEXT}@g \
-                   -e s@__FSECTION__@${MANFEXT}@g \
-                   -e s@__VERSION__@${VERSION}@g \
-                   -e s@__MAGIC__@${MAGIC}@g file.man > $@
-
-send:          dist
-               ftp ftp.cs
-
-dist:          dist.src dist.magic
-               @echo Now check this patchlevel!
-               ident patchlevel.h
-
-dist.src:      $(ALLSRC) MANIFEST
-#              Some versions of shar can't handle a single file from
-#              a subdirectory, so we manually insert mkdir as needed.
-#              The point is to exclude all the generable targets in tst.
-               (echo mkdir localinc localinc/sys localsrc tst; \
-                       $(SHAR) $(ALLSRC) MANIFEST) > $@
-
-rcsdiff:       $(ALLSRC)
-               rcsdiff -q RCS/*
-
-MANIFEST:      $(ALLSRC)
-               ident $(ALLSRC) > MANIFEST
-dist.magic:    Magdir
-#              As above, but to exclude Magdir/RCS from being shipped.
-               (echo mkdir Magdir; $(SHAR) $(ALLMAGIC)) >$@
-
-tar:           $(ALLSRC) $(ALLMAGIC)
-               -rm -fr file-${VERSION}
-               -mkdir file-${VERSION} file-${VERSION}/Magdir
-               ln $(ALLSRC) file-${VERSION}
-               ln ${ALLMAGIC} file-${VERSION}/Magdir
-               tar cvf file-${VERSION}.tar file-${VERSION}
-               -rm -fr file-${VERSION}
index 664dae3..0e97732 100644 (file)
@@ -1,14 +1,20 @@
 ** README for file(1) Command **
-@(#) Id: README,v 1.25 2001/07/23 21:30:22 christos Exp 
+@(#) $Id: README,v 1.33 2003/05/23 21:31:56 christos Exp $
 
-This is Release 3.x of Ian Darwin's (copyright but distributable)
+This is Release 4.x of Ian Darwin's (copyright but distributable)
 file(1) command. This version is the standard "file" command for Linux,
 *BSD, and other systems. (See "patchlevel.h" for the exact release number).
 
+The major feature of 4.x is the refactoring of the code into a library,
+and the re-write of the file command in terms of that library. The library
+itself, libmagic can be used by 3rd party programs that wish to identify
+file types without having to fork() and exec() file. The prime contributor
+for 4.0 was M\xe5ns Rullg\xe5rd.
+
 UNIX is a trademark of UNIX System Laboratories.
 
 The prime contributor to Release 3.8 was Guy Harris, who put in megachanges
-including byte-order independance.
+including byte-order independence.
 
 The prime contributor to Release 3.0 was Christos Zoulas, who put
 in hundreds of lines of source code changes, including his own
@@ -33,7 +39,7 @@ In addition, the /etc/magic file is built from a subdirectory
 for easier(?) maintenance.  I will act as a clearinghouse for
 magic numbers assigned to all sorts of data files that
 are in reasonable circulation. Send your magic numbers,
-in magic(4) format please, to the maintainer, Christos Zoulas.
+in magic(5) format please, to the maintainer, Christos Zoulas.
 
 LEGAL.NOTICE - read this first.
 README - read this second (you are currently reading this file).
@@ -43,7 +49,7 @@ Makefile - read this next, adapt it as needed (particularly
        the man page layouts), type "make" to compile, 
        "make try" to try it out against your old version.
        Expect some diffs, particularly since your original
-       file(1) may not grok the imbedded-space ("\ ") in
+       file(1) may not grok the embedded-space ("\ ") in
        the current magic file, or may even not use the
        magic file.
 apprentice.c - parses /etc/magic to learn magic
@@ -61,9 +67,8 @@ magdir - directory of /etc/magic pieces
        magdir/Makefile - ADJUST THIS FOR YOUR CONFIGURATION
 names.h - header file for ascmagic.c
 softmagic.c - 2nd set of tests, based on /etc/magic
-readelf.[ch] - Standalone elf parsing code.
+readelf.[ch] - Stand-alone elf parsing code.
 compress.c - on-the-fly decompression.
-internat.c - recognize international `text' files.
 print.c - print results, errors, warnings.
 
 If your gzip sometimes fails to decompress things complaining about a short
@@ -84,11 +89,10 @@ E-mail: christos@astron.com
 
 Phone: Do not even think of telephoning me about this program. Send cash first!
 
-Parts of this software were developed at SoftQuad Inc., 56 Aberfoyle
-Cres, # 810, Toronto, Ontario CANADA M8X 2W4.  Phone: 416-239-4801 or
-800-387-2777. Email: mail@sq.com.  Call for information on SGML editing
-and browsing, Unix text processing, and customised products on Unix,
-DOS and Mac.
+Parts of this software were developed at SoftQuad Inc., developers
+of SGML/HTML/XML publishing software, in Toronto, Canada.
+SoftQuad was swallowed up by Corel in 2002
+and does not exist any longer.
 
 From: Kees Zeelenberg
 
diff --git a/file/acconfig.h b/file/acconfig.h
new file mode 100644 (file)
index 0000000..e6293da
--- /dev/null
@@ -0,0 +1,60 @@
+/* Autoheader needs me */
+#undef PACKAGE
+
+/* Autoheader needs me */
+#undef VERSION
+
+/* Define if builtin ELF support is enabled.  */
+#undef BUILTIN_ELF
+
+/* Define if ELF core file support is enabled.  */
+#undef ELFCORE
+
+/* Define if the `long long' type works.  */
+#undef HAVE_LONG_LONG
+
+/* Define if we have "tm_zone" in "struct tm".  */
+#undef HAVE_TM_ZONE
+
+/* Define if we have a global "char * []" "tzname" variable.  */
+#undef HAVE_TZNAME
+
+/* Define if we have "tm_isdst" in "struct tm".  */
+#undef HAVE_TM_ISDST
+
+/* Define if we have a global "int" variable "daylight".  */
+#undef HAVE_DAYLIGHT
+
+/* Define if we have a mkstemp */
+#undef HAVE_MKSTEMP
+
+/* Define to `unsigned char' if standard headers don't define.  */
+#undef uint8_t
+
+/* Define to `unsigned short' if standard headers don't define.  */
+#undef uint16_t
+
+/* Define to `unsigned int' if standard headers don't define.  */
+#undef uint32_t
+
+/* Define to `unsigned long long', if available, or `unsigned long', if
+   standard headers don't define.  */
+#undef uint64_t
+
+/* Define to `int' if standard headers don't define.  */
+#undef int32_t
+
+/* FIXME: These have to be added manually because autoheader doesn't know
+   about AC_CHECK_SIZEOF_INCLUDES.  */
+
+/* The number of bytes in a uint8_t.  */
+#define SIZEOF_UINT8_T 0
+
+/* The number of bytes in a uint16_t.  */
+#define SIZEOF_UINT16_T 0
+
+/* The number of bytes in a uint32_t.  */
+#define SIZEOF_UINT32_T 0
+
+/* The number of bytes in a uint64_t.  */
+#define SIZEOF_UINT64_T 0
index bd52776..4c27a4b 100644 (file)
@@ -10,7 +10,7 @@ exit(sizeof(long long) < sizeof(long)); }],
 ac_cv_c_long_long=yes, ac_cv_c_long_long=no)
 fi])
 if test $ac_cv_c_long_long = yes; then
-  AC_DEFINE(HAVE_LONG_LONG,1,[Define if the `long long' type works.])
+  AC_DEFINE(HAVE_LONG_LONG)
 fi
 ])
 
@@ -43,7 +43,7 @@ AC_CACHE_CHECK([for tm_isdst in struct tm], ac_cv_struct_tm_isdst,
 #include <$ac_cv_struct_tm>], [struct tm tm; tm.tm_isdst;],
   ac_cv_struct_tm_isdst=yes, ac_cv_struct_tm_isdst=no)])
 if test "$ac_cv_struct_tm_isdst" = yes; then
-  AC_DEFINE(HAVE_TM_ISDST,1,[Define if we have "tm_isdst" in "struct tm".])
+  AC_DEFINE(HAVE_TM_ISDST)
 fi
 AC_CACHE_CHECK(for daylight, ac_cv_var_daylight,
 [AC_TRY_LINK(
@@ -55,7 +55,7 @@ extern int daylight;
 changequote([, ])dnl
 [atoi(daylight);], ac_cv_var_daylight=yes, ac_cv_var_daylight=no)])
   if test $ac_cv_var_daylight = yes; then
-    AC_DEFINE(HAVE_DAYLIGHT,1,[Define if we have a global "int" variable "daylight".])
+    AC_DEFINE(HAVE_DAYLIGHT)
   fi
 ])
 
@@ -88,7 +88,7 @@ if eval "test \"`echo '$ac_cv_type_'$1`\" = yes"; then
   AC_MSG_RESULT(yes)
 else
   AC_MSG_RESULT(no)
-  AC_DEFINE_UNQUOTED($1, $2, $1)
+  AC_DEFINE_UNQUOTED($1, $2)
 fi
 ])
 
@@ -111,7 +111,7 @@ main()
   exit(0);
 }], AC_CV_NAME=`cat conftestval`, AC_CV_NAME=0, ifelse([$2], , , AC_CV_NAME=$2))])dnl
 AC_MSG_RESULT($AC_CV_NAME)
-AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, AC_TYPE_NAME)
+AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
 undefine([AC_TYPE_NAME])dnl
 undefine([AC_CV_NAME])dnl
 ])
@@ -150,7 +150,7 @@ AC_CACHE_VAL(ac_cv_type_$1,
 #endif], ac_cv_type_$1=yes, ac_cv_type_$1=no)])dnl
 AC_MSG_RESULT($ac_cv_type_$1)
 if test $ac_cv_type_$1 = no; then
-  AC_DEFINE($1, $2, $1)
+  AC_DEFINE($1, $2)
 fi
 ])
 
@@ -204,7 +204,8 @@ AC_DEFUN([AC_SYS_LARGEFILE],
      [  --disable-largefile     omit support for large files])
    if test "$enable_largefile" != no; then
 
-     AC_CACHE_CHECK([for special C compiler options needed for large files],
+     AC_CACHE_CHECK([for special C compiler options needed for large files=
+],
        ac_cv_sys_largefile_CC,
        [ac_cv_sys_largefile_CC=no
         if test "$GCC" != yes; then
@@ -251,3 +252,33 @@ AC_DEFUN([AC_FUNC_FSEEKO],
        [Define if fseeko (and presumably ftello) exists and is declared.])
    fi])
 
+# serial 9
+
+# From Paul Eggert.
+
+# BeOS 5 has <wchar.h> but does not define mbstate_t,
+# so you can't declare an object of that type.
+# Check for this incompatibility with Standard C.
+
+# Include stdlib.h first, because otherwise this test would fail on Linux
+# (at least glibc-2.1.3) because the "_XOPEN_SOURCE 500" definition elicits
+# a syntax error in wchar.h due to the use of undefined __int32_t.
+AC_DEFUN([AC_MBSTATE_T],
+  [
+   AC_CHECK_HEADERS(stdlib.h)
+  
+   AC_CACHE_CHECK([for mbstate_t], ac_cv_type_mbstate_t,
+    [AC_TRY_COMPILE([
+#if HAVE_STDLIB_H 
+# include <stdlib.h>
+#endif
+#include <wchar.h>],
+      [mbstate_t x; return sizeof x;],
+      ac_cv_type_mbstate_t=yes,
+      ac_cv_type_mbstate_t=no)])
+   if test $ac_cv_type_mbstate_t = no; then
+     AC_DEFINE(mbstate_t, int,
+               [Define to a type if <wchar.h> does not define.])
+   fi])
+
+
diff --git a/file/aclocal.m4 b/file/aclocal.m4
new file mode 100644 (file)
index 0000000..2098982
--- /dev/null
@@ -0,0 +1,2017 @@
+# generated automatically by aclocal 1.7.9 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002
+# 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.
+
+dnl cloned from autoconf 2.13 acspecific.m4
+AC_DEFUN([AC_C_LONG_LONG],
+[AC_CACHE_CHECK(for long long, ac_cv_c_long_long,
+[if test "$GCC" = yes; then
+  ac_cv_c_long_long=yes
+else
+AC_TRY_RUN([int main() {
+long long foo = 0;
+exit(sizeof(long long) < sizeof(long)); }],
+ac_cv_c_long_long=yes, ac_cv_c_long_long=no)
+fi])
+if test $ac_cv_c_long_long = yes; then
+  AC_DEFINE(HAVE_LONG_LONG)
+fi
+])
+
+dnl from autoconf 2.13 acspecific.m4, with changes to check for daylight
+
+AC_DEFUN([AC_STRUCT_TIMEZONE_DAYLIGHT],
+[AC_REQUIRE([AC_STRUCT_TM])dnl
+AC_CACHE_CHECK([for tm_zone in struct tm], ac_cv_struct_tm_zone,
+[AC_TRY_COMPILE([#include <sys/types.h>
+#include <$ac_cv_struct_tm>], [struct tm tm; tm.tm_zone;],
+  ac_cv_struct_tm_zone=yes, ac_cv_struct_tm_zone=no)])
+if test "$ac_cv_struct_tm_zone" = yes; then
+  AC_DEFINE(HAVE_TM_ZONE,1,[HAVE_TM_ZONE])
+fi
+AC_CACHE_CHECK(for tzname, ac_cv_var_tzname,
+[AC_TRY_LINK(
+changequote(<<, >>)dnl
+<<#include <time.h>
+#ifndef tzname /* For SGI.  */
+extern char *tzname[]; /* RS6000 and others reject char **tzname.  */
+#endif>>,
+changequote([, ])dnl
+[atoi(*tzname);], ac_cv_var_tzname=yes, ac_cv_var_tzname=no)])
+  if test $ac_cv_var_tzname = yes; then
+    AC_DEFINE(HAVE_TZNAME,1,[HAVE_TZNAME])
+  fi
+
+AC_CACHE_CHECK([for tm_isdst in struct tm], ac_cv_struct_tm_isdst,
+[AC_TRY_COMPILE([#include <sys/types.h>
+#include <$ac_cv_struct_tm>], [struct tm tm; tm.tm_isdst;],
+  ac_cv_struct_tm_isdst=yes, ac_cv_struct_tm_isdst=no)])
+if test "$ac_cv_struct_tm_isdst" = yes; then
+  AC_DEFINE(HAVE_TM_ISDST)
+fi
+AC_CACHE_CHECK(for daylight, ac_cv_var_daylight,
+[AC_TRY_LINK(
+changequote(<<, >>)dnl
+<<#include <time.h>
+#ifndef daylight /* In case IRIX #defines this, too  */
+extern int daylight;
+#endif>>,
+changequote([, ])dnl
+[atoi(daylight);], ac_cv_var_daylight=yes, ac_cv_var_daylight=no)])
+  if test $ac_cv_var_daylight = yes; then
+    AC_DEFINE(HAVE_DAYLIGHT)
+  fi
+])
+
+dnl from autoconf 2.13 acgeneral.m4, with patch:
+dnl Date: Fri, 15 Jan 1999 05:52:41 -0800
+dnl Message-ID: <199901151352.FAA18237@shade.twinsun.com>
+dnl From: eggert@twinsun.com (Paul Eggert)
+dnl Subject: autoconf 2.13 AC_CHECK_TYPE doesn't allow shell vars
+dnl Newsgroups: gnu.utils.bug
+dnl
+dnl now include <stdint.h> if available
+
+dnl AC_CHECK_TYPE2_STDC(TYPE, DEFAULT)
+AC_DEFUN([AC_CHECK_TYPE2_STDC],
+[AC_REQUIRE([AC_HEADER_STDC])dnl
+AC_REQUIRE([AC_HEADER_STDINT])dnl
+AC_MSG_CHECKING(for $1)
+AC_CACHE_VAL(ac_cv_type_$1,
+[AC_EGREP_CPP(dnl
+[(^|[^a-zA-Z_0-9])$1[^a-zA-Z_0-9]],
+[#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif], eval "ac_cv_type_$1=yes", eval "ac_cv_type_$1=no")])dnl
+if eval "test \"`echo '$ac_cv_type_'$1`\" = yes"; then
+  AC_MSG_RESULT(yes)
+else
+  AC_MSG_RESULT(no)
+  AC_DEFINE_UNQUOTED($1, $2)
+fi
+])
+
+dnl from autoconf 2.13 acgeneral.m4, with additional third argument
+dnl AC_CHECK_SIZEOF_INCLUDES(TYPE [, CROSS-SIZE [, INCLUDES]])
+AC_DEFUN([AC_CHECK_SIZEOF_INCLUDES],
+[dnl The name to #define.
+define([AC_TYPE_NAME], translit(sizeof_$1, [[[a-z *]]], [[[A-Z_P]]]))dnl
+dnl The cache variable name.
+define([AC_CV_NAME], translit(ac_cv_sizeof_$1, [[[ *]]], [[[_p]]]))dnl
+AC_MSG_CHECKING(size of $1)
+AC_CACHE_VAL(AC_CV_NAME,
+[AC_TRY_RUN([$3
+#include <stdio.h>
+main()
+{
+  FILE *f=fopen("conftestval", "w");
+  if (!f) exit(1);
+  fprintf(f, "%d\n", sizeof($1));
+  exit(0);
+}], AC_CV_NAME=`cat conftestval`, AC_CV_NAME=0, ifelse([$2], , , AC_CV_NAME=$2))])dnl
+AC_MSG_RESULT($AC_CV_NAME)
+AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
+undefine([AC_TYPE_NAME])dnl
+undefine([AC_CV_NAME])dnl
+])
+
+dnl AC_CHECK_SIZEOF_STDC_HEADERS(TYPE [, CROSS_SIZE])
+AC_DEFUN([AC_CHECK_SIZEOF_STDC_HEADERS],
+[AC_REQUIRE([AC_HEADER_STDC])dnl
+AC_REQUIRE([AC_HEADER_STDINT])dnl
+AC_CHECK_SIZEOF_INCLUDES($1, $2,
+[#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#include <sys/types.h>
+#ifdef STDC_HEADERS
+#include <stdlib.h>
+#endif
+])
+])
+
+
+dnl AC_CHECK_TYPE_STDC(TYPE, DEFAULT)
+AC_DEFUN([AC_CHECK_TYPE_STDC],
+[AC_REQUIRE([AC_HEADER_STDC])dnl
+AC_REQUIRE([AC_HEADER_STDINT])dnl
+AC_MSG_CHECKING(for $1)
+AC_CACHE_VAL(ac_cv_type_$1,
+[AC_EGREP_CPP(dnl
+[(^|[^a-zA-Z_0-9])$1[^a-zA-Z_0-9]],
+[#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif], ac_cv_type_$1=yes, ac_cv_type_$1=no)])dnl
+AC_MSG_RESULT($ac_cv_type_$1)
+if test $ac_cv_type_$1 = no; then
+  AC_DEFINE($1, $2)
+fi
+])
+
+dnl AC_HEADER_STDINT
+AC_DEFUN([AC_HEADER_STDINT], [AC_CHECK_HEADERS(stdint.h)])
+
+#serial 19
+
+dnl By default, many hosts won't let programs access large files;
+dnl one must use special compiler options to get large-file access to work.
+dnl For more details about this brain damage please see:
+dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html
+
+dnl Written by Paul Eggert <eggert@twinsun.com>.
+
+dnl Internal subroutine of AC_SYS_LARGEFILE.
+dnl AC_SYS_LARGEFILE_TEST_INCLUDES
+AC_DEFUN([AC_SYS_LARGEFILE_TEST_INCLUDES],
+  [[#include <sys/types.h>
+    /* Check that off_t can represent 2**63 - 1 correctly.
+       We can't simply "#define LARGE_OFF_T 9223372036854775807",
+       since some C++ compilers masquerading as C compilers
+       incorrectly reject 9223372036854775807.  */
+#   define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+    int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                       && LARGE_OFF_T % 2147483647 == 1)
+                      ? 1 : -1];
+  ]])
+
+dnl Internal subroutine of AC_SYS_LARGEFILE.
+dnl AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, CACHE-VAR, COMMENT, INCLU=
+DES, FUNCTION-BODY)
+AC_DEFUN([AC_SYS_LARGEFILE_MACRO_VALUE],
+  [AC_CACHE_CHECK([for $1 value needed for large files], $3,
+     [$3=no
+      AC_TRY_COMPILE([$5],
+       [$6],
+       ,
+       [AC_TRY_COMPILE([#define $1 $2]
+[$5]
+          ,
+          [$6],
+          [$3=$2])])])
+   if test "[$]$3" != no; then
+     AC_DEFINE_UNQUOTED([$1], [$]$3, [$4])
+   fi])
+
+AC_DEFUN([AC_SYS_LARGEFILE],
+  [AC_REQUIRE([AC_PROG_CC])
+   AC_ARG_ENABLE(largefile,
+     [  --disable-largefile     omit support for large files])
+   if test "$enable_largefile" != no; then
+
+     AC_CACHE_CHECK([for special C compiler options needed for large files=
+],
+       ac_cv_sys_largefile_CC,
+       [ac_cv_sys_largefile_CC=no
+        if test "$GCC" != yes; then
+         # IRIX 6.2 and later do not support large files by default,
+         # so use the C compiler's -n32 option if that helps.
+         AC_TRY_COMPILE(AC_SYS_LARGEFILE_TEST_INCLUDES, , ,
+           [ac_save_CC="$CC"
+            CC="$CC -n32"
+            AC_TRY_COMPILE(AC_SYS_LARGEFILE_TEST_INCLUDES, ,
+              ac_cv_sys_largefile_CC=' -n32')
+            CC="$ac_save_CC"])
+        fi])
+     if test "$ac_cv_sys_largefile_CC" != no; then
+       CC="$CC$ac_cv_sys_largefile_CC"
+     fi
+
+     AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64,
+       ac_cv_sys_file_offset_bits,
+       [Number of bits in a file offset, on hosts where this is settable.],
+       AC_SYS_LARGEFILE_TEST_INCLUDES)
+     AC_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, 1,
+       ac_cv_sys_large_files,
+       [Define for large files, on AIX-style hosts.],
+       AC_SYS_LARGEFILE_TEST_INCLUDES)
+   fi
+  ])
+
+AC_DEFUN([AC_FUNC_FSEEKO],
+  [AC_SYS_LARGEFILE_MACRO_VALUE(_LARGEFILE_SOURCE, 1,
+     ac_cv_sys_largefile_source,
+     [Define to make fseeko visible on some hosts (e.g. glibc 2.2).],
+     [#include <stdio.h>], [return !fseeko;])
+   # We used to try defining _XOPEN_SOURCE=500 too, to work around a bug
+   # in glibc 2.1.3, but that breaks too many other things.
+   # If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
+
+   AC_CACHE_CHECK([for fseeko], ac_cv_func_fseeko,
+     [ac_cv_func_fseeko=no
+      AC_TRY_LINK([#include <stdio.h>],
+        [return fseeko && fseeko (stdin, 0, 0);],
+       [ac_cv_func_fseeko=yes])])
+   if test $ac_cv_func_fseeko != no; then
+     AC_DEFINE(HAVE_FSEEKO, 1,
+       [Define if fseeko (and presumably ftello) exists and is declared.])
+   fi])
+
+# serial 9
+
+# From Paul Eggert.
+
+# BeOS 5 has <wchar.h> but does not define mbstate_t,
+# so you can't declare an object of that type.
+# Check for this incompatibility with Standard C.
+
+# Include stdlib.h first, because otherwise this test would fail on Linux
+# (at least glibc-2.1.3) because the "_XOPEN_SOURCE 500" definition elicits
+# a syntax error in wchar.h due to the use of undefined __int32_t.
+AC_DEFUN([AC_MBSTATE_T],
+  [
+   AC_CHECK_HEADERS(stdlib.h)
+  
+   AC_CACHE_CHECK([for mbstate_t], ac_cv_type_mbstate_t,
+    [AC_TRY_COMPILE([
+#if HAVE_STDLIB_H 
+# include <stdlib.h>
+#endif
+#include <wchar.h>],
+      [mbstate_t x; return sizeof x;],
+      ac_cv_type_mbstate_t=yes,
+      ac_cv_type_mbstate_t=no)])
+   if test $ac_cv_type_mbstate_t = no; then
+     AC_DEFINE(mbstate_t, int,
+               [Define to a type if <wchar.h> does not define.])
+   fi])
+
+
+
+# Do all the work for Automake.                            -*- Autoconf -*-
+
+# 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.
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 10
+
+AC_PREREQ([2.54])
+
+# Autoconf 2.50 wants to disallow AM_ names.  We explicitly allow
+# the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+
+# 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_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+ AC_REQUIRE([AC_PROG_INSTALL])dnl
+# test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+   test -f $srcdir/config.status; then
+  AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+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],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])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)
+AM_MISSING_PROG(AMTAR, tar)
+AM_PROG_INSTALL_SH
+AM_PROG_INSTALL_STRIP
+# We need awk for the "check" target.  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([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+                  [_AM_DEPENDENCIES(CC)],
+                  [define([AC_PROG_CC],
+                          defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+                  [_AM_DEPENDENCIES(CXX)],
+                  [define([AC_PROG_CXX],
+                          defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+])
+])
+
+
+# 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_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $1 | $1:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+
+# Copyright 2002  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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+
+# 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.
+AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION so it can be traced.
+# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+        [AM_AUTOMAKE_VERSION([1.7.9])])
+
+# Helper functions for option handling.                    -*- Autoconf -*-
+
+# Copyright 2001, 2002  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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 2
+
+# _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],
+[AC_FOREACH([_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])])
+
+#
+# Check to make sure that the build environment is sane.
+#
+
+# Copyright 1996, 1997, 2000, 2001 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 3
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# 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 (
+   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
+   rm -f conftest.file
+   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
+
+   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)])
+
+#  -*- Autoconf -*-
+
+
+# Copyright 1997, 1999, 2000, 2001 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 3
+
+# 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 supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# AM_AUX_DIR_EXPAND
+
+# Copyright 2001 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# 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.
+
+# Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])
+
+AC_DEFUN([AM_AUX_DIR_EXPAND], [
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+
+# Copyright 2001 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+AC_SUBST(install_sh)])
+
+# AM_PROG_INSTALL_STRIP
+
+# Copyright 2001 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# 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="\${SHELL} \$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+#                                                          -*- Autoconf -*-
+# Copyright (C) 2003  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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 1
+
+# 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])])
+
+# serial 5                                             -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003  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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+
+# 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", "GCJ", or "OBJC".
+# 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
+
+ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
+       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
+       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+       [$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'.
+  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
+  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
+      : > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    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
+      ;;
+    none) break ;;
+    esac
+    # 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.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} 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
+      # (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored.
+      if grep 'ignoring option' 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,
+[  --disable-dependency-tracking Speeds up one-time builds
+  --enable-dependency-tracking  Do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])
+])
+
+# Generate code to set up dependency tracking.   -*- Autoconf -*-
+
+# Copyright 1999, 2000, 2001, 2002 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+#serial 2
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[for mf in $CONFIG_FILES; do
+  # Strip MF so we end up with the name of the file.
+  mf=`echo "$mf" | sed -e 's/:.*$//'`
+  # Check whether this is an Automake generated Makefile or not.
+  # We used to match only the files named `Makefile.in', but
+  # some people rename them; so instead we look at the file content.
+  # Grep'ing the first line is not enough: some people post-process
+  # each Makefile.in and add a new line on top of each file to say so.
+  # So let's grep whole file.
+  if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+    dirpart=`AS_DIRNAME("$mf")`
+  else
+    continue
+  fi
+  grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue
+  # Extract the definition of DEP_FILES from the Makefile without
+  # running `make'.
+  DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
+  test -z "$DEPDIR" && continue
+  # When using ansi2knr, U may be empty or an underscore; expand it
+  U=`sed -n -e '/^U = / s///p' < "$mf"`
+  test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
+  # We invoke sed twice because it is the simplest approach to
+  # changing $(DEPDIR) to its actual value in the expansion.
+  for file in `sed -n -e '
+    /^DEP_FILES = .*\\\\$/ {
+      s/^DEP_FILES = //
+      :loop
+       s/\\\\$//
+       p
+       n
+       /\\\\$/ b loop
+      p
+    }
+    /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
+       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+    # Make sure the directory exists.
+    test -f "$dirpart/$file" && continue
+    fdir=`AS_DIRNAME(["$file"])`
+    AS_MKDIR_P([$dirpart/$fdir])
+    # echo "creating $dirpart/$file"
+    echo '# dummy' > "$dirpart/$file"
+  done
+done
+])# _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.  FIXME.  This creates each `.P' file that we will
+# 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" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Check to see how 'make' treats includes.     -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 2
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+       @echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+   am__include=include
+   am__quote=
+   _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+      am__include=.include
+      am__quote="\""
+      _am_result=BSD
+   fi
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# AM_CONDITIONAL                                              -*- Autoconf -*-
+
+# Copyright 1997, 2000, 2001 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 5
+
+AC_PREREQ(2.52)
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+        [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])
+AC_SUBST([$1_FALSE])
+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])])
+
+# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*-
+
+# Copyright 1996, 1997, 2000, 2001 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+AC_PREREQ([2.52])
+
+# serial 6
+
+# AM_CONFIG_HEADER is obsolete.  It has been replaced by AC_CONFIG_HEADERS.
+AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
+
+# Add --enable-maintainer-mode option to configure.
+# From Jim Meyering
+
+# Copyright 1996, 1998, 2000, 2001, 2002  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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 2
+
+AC_DEFUN([AM_MAINTAINER_MODE],
+[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+  dnl maintainer-mode is disabled by default
+  AC_ARG_ENABLE(maintainer-mode,
+[  --enable-maintainer-mode enable make rules and dependencies not useful
+                          (and sometimes confusing) to the casual installer],
+      USE_MAINTAINER_MODE=$enableval,
+      USE_MAINTAINER_MODE=no)
+  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+  AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes])
+  MAINT=$MAINTAINER_MODE_TRUE
+  AC_SUBST(MAINT)dnl
+]
+)
+
+AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
+
+
+# serial 46 AC_PROG_LIBTOOL
+AC_DEFUN([AC_PROG_LIBTOOL],
+[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl
+dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX
+dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX.
+  AC_PROVIDE_IFELSE([AC_PROG_CXX],
+    [AC_LIBTOOL_CXX],
+    [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX
+])])
+
+dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly.
+dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run
+dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both.
+  AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+    [AC_LIBTOOL_GCJ],
+    [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+        [AC_LIBTOOL_GCJ],
+       [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],
+         [AC_LIBTOOL_GCJ],
+       [ifdef([AC_PROG_GCJ],
+              [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ
+])])
+        ifdef([A][M_PROG_GCJ],
+              [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ
+])])
+        ifdef([LT_AC_PROG_GCJ],
+              [define([LT_AC_PROG_GCJ], defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ
+])])])])])])
+
+AC_DEFUN([_AC_PROG_LIBTOOL],
+[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl
+
+# Save cache, so that ltconfig can load it
+AC_CACHE_SAVE
+
+# Actually configure libtool.  ac_aux_dir is where install-sh is found.
+AR="$AR" LTCC="$CC" CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
+MAGIC_CMD="$MAGIC_CMD" LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
+LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" STRIP="$STRIP" \
+AS="$AS" DLLTOOL="$DLLTOOL" OBJDUMP="$OBJDUMP" \
+objext="$OBJEXT" exeext="$EXEEXT" reload_flag="$reload_flag" \
+deplibs_check_method="$deplibs_check_method" file_magic_cmd="$file_magic_cmd" \
+${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
+$libtool_flags --no-verify --build="$build" $ac_aux_dir/ltmain.sh $host \
+|| AC_MSG_ERROR([libtool configure failed])
+
+# Reload cache, that may have been modified by ltconfig
+AC_CACHE_LOAD
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh $ac_aux_dir/ltcf-c.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+# Redirect the config.log output again, so that the ltconfig log is not
+# clobbered by the next message.
+exec 5>>./config.log
+])
+
+AC_DEFUN([AC_LIBTOOL_SETUP],
+[AC_PREREQ(2.13)dnl
+AC_REQUIRE([AC_ENABLE_SHARED])dnl
+AC_REQUIRE([AC_ENABLE_STATIC])dnl
+AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_LD])dnl
+AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl
+AC_REQUIRE([AC_PROG_NM])dnl
+AC_REQUIRE([AC_PROG_LN_S])dnl
+AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+AC_REQUIRE([AC_OBJEXT])dnl
+AC_REQUIRE([AC_EXEEXT])dnl
+dnl
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    AC_PATH_MAGIC
+  fi
+  ;;
+esac
+
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+AC_CHECK_TOOL(STRIP, strip, :)
+
+# Check for any special flags to pass to ltconfig.
+libtool_flags="--cache-file=$cache_file"
+test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared"
+test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static"
+test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install"
+test "$GCC" = yes && libtool_flags="$libtool_flags --with-gcc"
+test "$lt_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
+ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN],
+[libtool_flags="$libtool_flags --enable-dlopen"])
+ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
+[libtool_flags="$libtool_flags --enable-win32-dll"])
+AC_ARG_ENABLE(libtool-lock,
+  [  --disable-libtool-lock  avoid locking (might break parallel builds)])
+test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock"
+test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
+
+AC_ARG_WITH(pic,
+  [  --with-pic              try to use only PIC/non-PIC objects [default=use both]],
+     pic_mode="$withval", pic_mode=default)
+test x"$pic_mode" = xyes && libtool_flags="$libtool_flags --prefer-pic"
+test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic"
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -32"
+      ;;
+    *N32*)
+      LD="${LD-ld} -n32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -64"
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+    [AC_LANG_SAVE
+     AC_LANG_C
+     AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+     AC_LANG_RESTORE])
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+
+ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
+[*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+  AC_CHECK_TOOL(AS, as, false)
+  AC_CHECK_TOOL(OBJDUMP, objdump, false)
+
+  # recent cygwin and mingw systems supply a stub DllMain which the user
+  # can override, but on older systems we have to supply one
+  AC_CACHE_CHECK([if libtool should supply DllMain function], lt_cv_need_dllmain,
+    [AC_TRY_LINK([],
+      [extern int __attribute__((__stdcall__)) DllMain(void*, int, void*);
+      DllMain (0, 0, 0);],
+      [lt_cv_need_dllmain=no],[lt_cv_need_dllmain=yes])])
+
+  case $host/$CC in
+  *-*-cygwin*/gcc*-mno-cygwin*|*-*-mingw*)
+    # old mingw systems require "-dll" to link a DLL, while more recent ones
+    # require "-mdll"
+    SAVE_CFLAGS="$CFLAGS"
+    CFLAGS="$CFLAGS -mdll"
+    AC_CACHE_CHECK([how to link DLLs], lt_cv_cc_dll_switch,
+      [AC_TRY_LINK([], [], [lt_cv_cc_dll_switch=-mdll],[lt_cv_cc_dll_switch=-dll])])
+    CFLAGS="$SAVE_CFLAGS" ;;
+  *-*-cygwin* | *-*-pw32*)
+    # cygwin systems need to pass --dll to the linker, and not link
+    # crt.o which will require a WinMain@16 definition.
+    lt_cv_cc_dll_switch="-Wl,--dll -nostartfiles" ;;
+  esac
+  ;;
+  ])
+esac
+])
+
+# AC_LIBTOOL_DLOPEN - enable checks for dlopen support
+AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])])
+
+# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's
+AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])])
+
+# AC_ENABLE_SHARED - implement the --enable-shared flag
+# Usage: AC_ENABLE_SHARED[(DEFAULT)]
+#   Where DEFAULT is either `yes' or `no'.  If omitted, it defaults to
+#   `yes'.
+AC_DEFUN([AC_ENABLE_SHARED],
+[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE(shared,
+changequote(<<, >>)dnl
+<<  --enable-shared[=PKGS]  build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT],
+changequote([, ])dnl
+[p=${PACKAGE-default}
+case $enableval in
+yes) enable_shared=yes ;;
+no) enable_shared=no ;;
+*)
+  enable_shared=no
+  # Look at the argument we got.  We use all the common list separators.
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+  for pkg in $enableval; do
+    if test "X$pkg" = "X$p"; then
+      enable_shared=yes
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac],
+enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl
+])
+
+# AC_DISABLE_SHARED - set the default shared flag to --disable-shared
+AC_DEFUN([AC_DISABLE_SHARED], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_SHARED(no)])
+
+# AC_ENABLE_STATIC - implement the --enable-static flag
+# Usage: AC_ENABLE_STATIC[(DEFAULT)]
+#   Where DEFAULT is either `yes' or `no'.  If omitted, it defaults to
+#   `yes'.
+AC_DEFUN([AC_ENABLE_STATIC],
+[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE(static,
+changequote(<<, >>)dnl
+<<  --enable-static[=PKGS]  build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT],
+changequote([, ])dnl
+[p=${PACKAGE-default}
+case $enableval in
+yes) enable_static=yes ;;
+no) enable_static=no ;;
+*)
+  enable_static=no
+  # Look at the argument we got.  We use all the common list separators.
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+  for pkg in $enableval; do
+    if test "X$pkg" = "X$p"; then
+      enable_static=yes
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac],
+enable_static=AC_ENABLE_STATIC_DEFAULT)dnl
+])
+
+# AC_DISABLE_STATIC - set the default static flag to --disable-static
+AC_DEFUN([AC_DISABLE_STATIC],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_STATIC(no)])
+
+
+# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag
+# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)]
+#   Where DEFAULT is either `yes' or `no'.  If omitted, it defaults to
+#   `yes'.
+AC_DEFUN([AC_ENABLE_FAST_INSTALL],
+[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE(fast-install,
+changequote(<<, >>)dnl
+<<  --enable-fast-install[=PKGS]  optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT],
+changequote([, ])dnl
+[p=${PACKAGE-default}
+case $enableval in
+yes) enable_fast_install=yes ;;
+no) enable_fast_install=no ;;
+*)
+  enable_fast_install=no
+  # Look at the argument we got.  We use all the common list separators.
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+  for pkg in $enableval; do
+    if test "X$pkg" = "X$p"; then
+      enable_fast_install=yes
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac],
+enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl
+])
+
+# AC_DISABLE_FAST_INSTALL - set the default to --disable-fast-install
+AC_DEFUN([AC_DISABLE_FAST_INSTALL],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_FAST_INSTALL(no)])
+
+# AC_LIBTOOL_PICMODE - implement the --with-pic flag
+# Usage: AC_LIBTOOL_PICMODE[(MODE)]
+#   Where MODE is either `yes' or `no'.  If omitted, it defaults to
+#   `both'.
+AC_DEFUN([AC_LIBTOOL_PICMODE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+pic_mode=ifelse($#,1,$1,default)])
+
+
+# AC_PATH_TOOL_PREFIX - find a file program which can recognise shared library
+AC_DEFUN([AC_PATH_TOOL_PREFIX],
+[AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+  /*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+  ?:/*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
+  ;;
+  *)
+  ac_save_MAGIC_CMD="$MAGIC_CMD"
+  IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS=":"
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word.  This closes a longstanding sh security hole.
+  ac_dummy="ifelse([$2], , $PATH, [$2])"
+  for ac_dir in $ac_dummy; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$1; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+      if test -n "$file_magic_test_file"; then
+       case $deplibs_check_method in
+       "file_magic "*)
+         file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+           egrep "$file_magic_regex" > /dev/null; then
+           :
+         else
+           cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+         fi ;;
+       esac
+      fi
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  MAGIC_CMD="$ac_save_MAGIC_CMD"
+  ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  AC_MSG_RESULT($MAGIC_CMD)
+else
+  AC_MSG_RESULT(no)
+fi
+])
+
+
+# AC_PATH_MAGIC - find a file program which can recognise a shared library
+AC_DEFUN([AC_PATH_MAGIC],
+[AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl
+AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin:$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    AC_PATH_TOOL_PREFIX(file, /usr/bin:$PATH)
+  else
+    MAGIC_CMD=:
+  fi
+fi
+])
+
+
+# AC_PROG_LD - find the path to the GNU or non-GNU linker
+AC_DEFUN([AC_PROG_LD],
+[AC_ARG_WITH(gnu-ld,
+[  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]],
+test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  AC_MSG_CHECKING([for ld used by GCC])
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [[\\/]* | [A-Za-z]:[\\/]*)]
+      re_direlt=['/[^/][^/]*/\.\./']
+      # Canonicalize the path of ld
+      ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+       ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
+       test "$with_gnu_ld" != no && break
+      else
+       test "$with_gnu_ld" != yes && break
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  AC_MSG_RESULT($LD)
+else
+  AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_PROG_LD_GNU
+])
+
+AC_DEFUN([AC_PROG_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
+  lt_cv_prog_gnu_ld=yes
+else
+  lt_cv_prog_gnu_ld=no
+fi])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])
+
+# AC_PROG_LD_RELOAD_FLAG - find reload flag for linker
+#   -- PORTME Some linkers may need a different reload flag.
+AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
+[AC_CACHE_CHECK([for $LD option to reload object files], lt_cv_ld_reload_flag,
+[lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+test -n "$reload_flag" && reload_flag=" $reload_flag"
+])
+
+# AC_DEPLIBS_CHECK_METHOD - how to check for library dependencies
+#  -- PORTME fill in with the dynamic library characteristics
+AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
+[AC_CACHE_CHECK([how to recognise dependant libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [regex]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given egrep regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi4*)
+  lt_cv_deplibs_check_method=['file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)']
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin* | mingw* |pw32*)
+  lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  case "$host_os" in
+  rhapsody* | darwin1.[012])
+    lt_cv_file_magic_test_file='/System/Library/Frameworks/System.framework/System'
+    ;;
+  *) # Darwin 1.3 on
+    lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib'
+    ;;
+  esac
+  ;;
+
+freebsd* )
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method=['file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library']
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20*|hpux11*)
+  lt_cv_deplibs_check_method=['file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library']
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libc.sl
+  ;;
+
+irix5* | irix6*)
+  case $host_os in
+  irix5*)
+    # this will be overridden with pass_all, but let us keep it just in case
+    lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
+    ;;
+  *)
+    case $LD in
+    *-32|*"-32 ") libmagic=32-bit;;
+    *-n32|*"-n32 ") libmagic=N32;;
+    *-64|*"-64 ") libmagic=64-bit;;
+    *) libmagic=never-match;;
+    esac
+    # this will be overridden with pass_all, but let us keep it just in case
+    lt_cv_deplibs_check_method=["file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1"]
+    ;;
+  esac
+  lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*`
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux-gnu*)
+  case $host_cpu in
+  alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* )
+    lt_cv_deplibs_check_method=pass_all ;;
+  *)
+    # glibc up to 2.1.1 does not perform some relocations on ARM
+    lt_cv_deplibs_check_method=['file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'] ;;
+  esac
+  lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
+  ;;
+
+netbsd*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$']
+  else
+    [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$']
+  fi
+  ;;
+
+newsos6)
+  [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)']
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+osf3* | osf4* | osf5*)
+  # this will be overridden with pass_all, but let us keep it just in case
+  lt_cv_deplibs_check_method='file_magic COFF format alpha shared library'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sco3.2v5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  lt_cv_file_magic_test_file=/lib/libc.so
+  ;;
+
+[sysv5uw[78]* | sysv4*uw2*)]
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  case $host_vendor in
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  motorola)
+    lt_cv_deplibs_check_method=['file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]']
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  esac
+  ;;
+esac
+])
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+])
+
+
+# AC_PROG_NM - find the path to a BSD-compatible name lister
+AC_DEFUN([AC_PROG_NM],
+[AC_MSG_CHECKING([for BSD-compatible nm])
+AC_CACHE_VAL(lt_cv_path_NM,
+[if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+  for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
+    test -z "$ac_dir" && ac_dir=.
+    tmp_nm=$ac_dir/${ac_tool_prefix}nm
+    if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then
+      # Check to see if the nm accepts a BSD-compat flag.
+      # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+      #   nm: unknown option "B" ignored
+      # Tru64's nm complains that /dev/null is an invalid object file
+      if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then
+       lt_cv_path_NM="$tmp_nm -B"
+       break
+      elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+       lt_cv_path_NM="$tmp_nm -p"
+       break
+      else
+       lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+       continue # so that we can try to find one that supports BSD flags
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+  test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi])
+NM="$lt_cv_path_NM"
+AC_MSG_RESULT([$NM])
+])
+
+# AC_CHECK_LIBM - check for math library
+AC_DEFUN([AC_CHECK_LIBM],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cygwin* | *-*-pw32*)
+  # These system don't have libm
+  ;;
+*-ncr-sysv4.3*)
+  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+  AC_CHECK_LIB(m, main, LIBM="$LIBM -lm")
+  ;;
+*)
+  AC_CHECK_LIB(m, main, LIBM="-lm")
+  ;;
+esac
+])
+
+# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for
+# the libltdl convenience library and INCLTDL to the include flags for
+# the libltdl header and adds --enable-ltdl-convenience to the
+# configure arguments.  Note that LIBLTDL and INCLTDL are not
+# AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called.  If DIR is not
+# provided, it is assumed to be `libltdl'.  LIBLTDL will be prefixed
+# with '${top_builddir}/' and INCLTDL will be prefixed with
+# '${top_srcdir}/' (note the single quotes!).  If your package is not
+# flat and you're not using automake, define top_builddir and
+# top_srcdir appropriately in the Makefiles.
+AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+  case $enable_ltdl_convenience in
+  no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
+  "") enable_ltdl_convenience=yes
+      ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
+  esac
+  LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
+  INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+])
+
+# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for
+# the libltdl installable library and INCLTDL to the include flags for
+# the libltdl header and adds --enable-ltdl-install to the configure
+# arguments.  Note that LIBLTDL and INCLTDL are not AC_SUBSTed, nor is
+# AC_CONFIG_SUBDIRS called.  If DIR is not provided and an installed
+# libltdl is not found, it is assumed to be `libltdl'.  LIBLTDL will
+# be prefixed with '${top_builddir}/' and INCLTDL will be prefixed
+# with '${top_srcdir}/' (note the single quotes!).  If your package is
+# not flat and you're not using automake, define top_builddir and
+# top_srcdir appropriately in the Makefiles.
+# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
+AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+  AC_CHECK_LIB(ltdl, main,
+  [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
+  [if test x"$enable_ltdl_install" = xno; then
+     AC_MSG_WARN([libltdl not installed, but installation disabled])
+   else
+     enable_ltdl_install=yes
+   fi
+  ])
+  if test x"$enable_ltdl_install" = x"yes"; then
+    ac_configure_args="$ac_configure_args --enable-ltdl-install"
+    LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
+    INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+  else
+    ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
+    LIBLTDL="-lltdl"
+    INCLTDL=
+  fi
+])
+
+# If this macro is not defined by Autoconf, define it here.
+ifdef([AC_PROVIDE_IFELSE],
+      [],
+      [define([AC_PROVIDE_IFELSE],
+              [ifdef([AC_PROVIDE_$1],
+                     [$2], [$3])])])
+
+# AC_LIBTOOL_CXX - enable support for C++ libraries
+AC_DEFUN([AC_LIBTOOL_CXX], [AC_REQUIRE([_AC_LIBTOOL_CXX])])
+
+AC_DEFUN([_AC_LIBTOOL_CXX],
+[AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([AC_PROG_CXXCPP])
+LIBTOOL_DEPS=$LIBTOOL_DEPS" $ac_aux_dir/ltcf-cxx.sh"
+lt_save_CC="$CC"
+lt_save_CFLAGS="$CFLAGS"
+dnl Make sure LTCC is set to the C compiler, i.e. set LTCC before CC
+dnl is set to the C++ compiler.
+AR="$AR" LTCC="$CC" CC="$CXX" CXX="$CXX" CFLAGS="$CXXFLAGS" CPPFLAGS="$CPPFLAGS" \
+MAGIC_CMD="$MAGIC_CMD" LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
+LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" STRIP="$STRIP" \
+AS="$AS" DLLTOOL="$DLLTOOL" OBJDUMP="$OBJDUMP" \
+objext="$OBJEXT" exeext="$EXEEXT" reload_flag="$reload_flag" \
+deplibs_check_method="$deplibs_check_method" \
+file_magic_cmd="$file_magic_cmd" \
+${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig -o libtool $libtool_flags \
+--build="$build" --add-tag=CXX $ac_aux_dir/ltcf-cxx.sh $host \
+|| AC_MSG_ERROR([libtool tag configuration failed])
+CC="$lt_save_CC"
+CFLAGS="$lt_save_CFLAGS"
+
+# Redirect the config.log output again, so that the ltconfig log is not
+# clobbered by the next message.
+exec 5>>./config.log
+])
+
+# AC_LIBTOOL_GCJ - enable support for GCJ libraries
+AC_DEFUN([AC_LIBTOOL_GCJ],[AC_REQUIRE([_AC_LIBTOOL_GCJ])])
+
+AC_DEFUN([_AC_LIBTOOL_GCJ],
+[AC_REQUIRE([AC_PROG_LIBTOOL])
+AC_PROVIDE_IFELSE([AC_PROG_GCJ],[],
+  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[],
+    [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[],
+      [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])],
+         [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])],
+           [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])])
+LIBTOOL_DEPS=$LIBTOOL_DEPS" $ac_aux_dir/ltcf-gcj.sh"
+lt_save_CC="$CC"
+lt_save_CFLAGS="$CFLAGS"
+dnl Make sure LTCC is set to the C compiler, i.e. set LTCC before CC
+dnl is set to the C++ compiler.
+AR="$AR" LTCC="$CC" CC="$GCJ" CFLAGS="$GCJFLAGS" CPPFLAGS="$CPPFLAGS" \
+MAGIC_CMD="$MAGIC_CMD" LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
+LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" STRIP="$STRIP" \
+AS="$AS" DLLTOOL="$DLLTOOL" OBJDUMP="$OBJDUMP" \
+objext="$OBJEXT" exeext="$EXEEXT" reload_flag="$reload_flag" \
+deplibs_check_method="$deplibs_check_method" \
+file_magic_cmd="$file_magic_cmd" \
+${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig -o libtool $libtool_flags \
+--build="$build" --add-tag=GCJ $ac_aux_dir/ltcf-gcj.sh $host \
+|| AC_MSG_ERROR([libtool tag configuration failed])
+CC="$lt_save_CC"
+CFLAGS="$lt_save_CFLAGS"
+
+# Redirect the config.log output again, so that the ltconfig log is not
+# clobbered by the next message.
+exec 5>>./config.log
+])
+
+dnl old names
+AC_DEFUN([AM_PROG_LIBTOOL],   [AC_PROG_LIBTOOL])
+AC_DEFUN([AM_ENABLE_SHARED],  [AC_ENABLE_SHARED($@)])
+AC_DEFUN([AM_ENABLE_STATIC],  [AC_ENABLE_STATIC($@)])
+AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+AC_DEFUN([AM_PROG_LD],        [AC_PROG_LD])
+AC_DEFUN([AM_PROG_NM],        [AC_PROG_NM])
+
+dnl This is just to silence aclocal about the macro not being used
+ifelse([AC_DISABLE_FAST_INSTALL])dnl
+
+AC_DEFUN([LT_AC_PROG_GCJ],
+[AC_CHECK_TOOL(GCJ, gcj, no)
+  test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+  AC_SUBST(GCJFLAGS)
+])
+
diff --git a/file/autogen.sh b/file/autogen.sh
deleted file mode 100755 (executable)
index 59215d1..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/sh
-
-export CFLAGS
-export LDFLAGS
-
-LTV="libtoolize (GNU libtool) 1.5.6"
-ACV="autoconf (GNU Autoconf) 2.59"
-AMV="automake (GNU automake) 1.9"
-USAGE="
-This script documents the versions of the tools I'm using to build rpm:
-       libtool-1.5.6
-       autoconf-2.59
-       automake-1.9
-Simply edit this script to change the libtool/autoconf/automake versions
-checked if you need to, as rpm should build (and has built) with all
-recent versions of libtool/autoconf/automake.
-"
-
-[ "`libtoolize --version | head -1`" != "$LTV" ] && echo "$USAGE" && exit 1
-[ "`autoconf --version | head -1`" != "$ACV" ] && echo "$USAGE" && exit 1
-[ "`automake --version | head -1 | sed -e 's/1\.4[a-z]/1.4/'`" != "$AMV" ] && echo "$USAGE" && exit 1
-
-libtoolize --copy --force
-aclocal
-autoheader
-automake -a -c
-autoconf
-
-if [ "$1" = "--noconfigure" ]; then 
-    exit 0;
-fi
-
-if [ X"$@" = X  -a "X`uname -s`" = "XLinux" ]; then
-    if [ -d /usr/share/man ]; then
-       mandir=/usr/share/man
-       infodir=/usr/share/info
-    else
-       mandir=/usr/man
-       infodir=/usr/info
-    fi
-    ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --infodir=${infodir} --mandir=${mandir} --enable-static "$@"
-else
-    ./configure "$@"
-fi
diff --git a/file/config.guess b/file/config.guess
new file mode 100755 (executable)
index 0000000..ffcb643
--- /dev/null
@@ -0,0 +1,1351 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002 Free Software Foundation, Inc.
+
+timestamp='2002-07-09'
+
+# This file 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 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# 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 Per Bothner <per@bothner.com>.
+# Please send patches to <config-patches@gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub.  If it succeeds, it prints the system name on stdout, and
+# exits with 0.  Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+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."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit 0 ;;
+    --version | -v )
+       echo "$version" ; exit 0 ;;
+    --help | --h* | -h )
+       echo "$usage"; exit 0 ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )        # Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# This shell variable is my proudest work .. or something. --bje
+
+set_cc_for_build='tmpdir=${TMPDIR-/tmp}/config-guess-$$ ;
+(old=`umask` && umask 077 && mkdir $tmpdir && umask $old && unset old)
+   || (echo "$me: cannot create $tmpdir" >&2 && exit 1) ;
+dummy=$tmpdir/dummy ;
+files="$dummy.c $dummy.o $dummy.rel $dummy" ;
+trap '"'"'rm -f $files; rmdir $tmpdir; exit 1'"'"' 1 2 15 ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+       for c in cc gcc c89 c99 ; do
+         if ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; then
+            CC_FOR_BUILD="$c"; break ;
+         fi ;
+       done ;
+       rm -f $files ;
+       if test x"$CC_FOR_BUILD" = x ; then
+         CC_FOR_BUILD=no_compiler_found ;
+       fi
+       ;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac ;
+unset files'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+       PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+       # NetBSD (nbsd) targets should (where applicable) match one or
+       # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+       # *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+       # switched to ELF, *-*-netbsd* would select the old
+       # object file format.  This provides both forward
+       # compatibility and a consistent mechanism for selecting the
+       # object file format.
+       #
+       # Note: NetBSD doesn't particularly care about the vendor
+       # portion of the name.  We always set it to "unknown".
+       sysctl="sysctl -n hw.machine_arch"
+       UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+           /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+       case "${UNAME_MACHINE_ARCH}" in
+           armeb) machine=armeb-unknown ;;
+           arm*) machine=arm-unknown ;;
+           sh3el) machine=shl-unknown ;;
+           sh3eb) machine=sh-unknown ;;
+           *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+       esac
+       # The Operating System including object format, if it has switched
+       # to ELF recently, or will in the future.
+       case "${UNAME_MACHINE_ARCH}" in
+           arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+               eval $set_cc_for_build
+               if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+                       | grep __ELF__ >/dev/null
+               then
+                   # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+                   # Return netbsd for either.  FIX?
+                   os=netbsd
+               else
+                   os=netbsdelf
+               fi
+               ;;
+           *)
+               os=netbsd
+               ;;
+       esac
+       # The OS release
+       release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+       # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+       # contains redundant information, the shorter form:
+       # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+       echo "${machine}-${os}${release}"
+       exit 0 ;;
+    amiga:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    arc:OpenBSD:*:*)
+       echo mipsel-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    hp300:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    mac68k:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    macppc:OpenBSD:*:*)
+       echo powerpc-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    mvme68k:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    mvme88k:OpenBSD:*:*)
+       echo m88k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    mvmeppc:OpenBSD:*:*)
+       echo powerpc-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    pmax:OpenBSD:*:*)
+       echo mipsel-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    sgi:OpenBSD:*:*)
+       echo mipseb-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    sun3:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    wgrisc:OpenBSD:*:*)
+       echo mipsel-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    *:OpenBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    alpha:OSF1:*:*)
+       if test $UNAME_RELEASE = "V4.0"; then
+               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+       fi
+       # A Vn.n version is a released version.
+       # A Tn.n version is a released field test version.
+       # A Xn.n version is an unreleased experimental baselevel.
+       # 1.2 uses "1.2" for uname -r.
+       cat <<EOF >$dummy.s
+       .data
+\$Lformat:
+       .byte 37,100,45,37,120,10,0     # "%d-%x\n"
+
+       .text
+       .globl main
+       .align 4
+       .ent main
+main:
+       .frame \$30,16,\$26,0
+       ldgp \$29,0(\$27)
+       .prologue 1
+       .long 0x47e03d80 # implver \$0
+       lda \$2,-1
+       .long 0x47e20c21 # amask \$2,\$1
+       lda \$16,\$Lformat
+       mov \$0,\$17
+       not \$1,\$18
+       jsr \$26,printf
+       ldgp \$29,0(\$26)
+       mov 0,\$16
+       jsr \$26,exit
+       .end main
+EOF
+       eval $set_cc_for_build
+       $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
+       if test "$?" = 0 ; then
+               case `$dummy` in
+                       0-0)
+                               UNAME_MACHINE="alpha"
+                               ;;
+                       1-0)
+                               UNAME_MACHINE="alphaev5"
+                               ;;
+                       1-1)
+                               UNAME_MACHINE="alphaev56"
+                               ;;
+                       1-101)
+                               UNAME_MACHINE="alphapca56"
+                               ;;
+                       2-303)
+                               UNAME_MACHINE="alphaev6"
+                               ;;
+                       2-307)
+                               UNAME_MACHINE="alphaev67"
+                               ;;
+                       2-1307)
+                               UNAME_MACHINE="alphaev68"
+                               ;;
+               esac
+       fi
+       rm -f $dummy.s $dummy && rmdir $tmpdir
+       echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+       exit 0 ;;
+    Alpha\ *:Windows_NT*:*)
+       # How do we know it's Interix rather than the generic POSIX subsystem?
+       # Should we change UNAME_MACHINE based on the output of uname instead
+       # of the specific Alpha model?
+       echo alpha-pc-interix
+       exit 0 ;;
+    21064:Windows_NT:50:3)
+       echo alpha-dec-winnt3.5
+       exit 0 ;;
+    Amiga*:UNIX_System_V:4.0:*)
+       echo m68k-unknown-sysv4
+       exit 0;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+       echo ${UNAME_MACHINE}-unknown-amigaos
+       exit 0 ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+       echo ${UNAME_MACHINE}-unknown-morphos
+       exit 0 ;;
+    *:OS/390:*:*)
+       echo i370-ibm-openedition
+       exit 0 ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+       echo arm-acorn-riscix${UNAME_RELEASE}
+       exit 0;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+       echo hppa1.1-hitachi-hiuxmpp
+       exit 0;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+       # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+       if test "`(/bin/universe) 2>/dev/null`" = att ; then
+               echo pyramid-pyramid-sysv3
+       else
+               echo pyramid-pyramid-bsd
+       fi
+       exit 0 ;;
+    NILE*:*:*:dcosx)
+       echo pyramid-pyramid-svr4
+       exit 0 ;;
+    DRS?6000:UNIX_SV:4.2*:7*)
+       case `/usr/bin/uname -p` in
+           sparc) echo sparc-icl-nx7 && exit 0 ;;
+       esac ;;
+    sun4H:SunOS:5.*:*)
+       echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit 0 ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+       echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit 0 ;;
+    i86pc:SunOS:5.*:*)
+       echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit 0 ;;
+    sun4*:SunOS:6*:*)
+       # According to config.sub, this is the proper way to canonicalize
+       # SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+       # it's likely to be more like Solaris than SunOS4.
+       echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit 0 ;;
+    sun4*:SunOS:*:*)
+       case "`/usr/bin/arch -k`" in
+           Series*|S4*)
+               UNAME_RELEASE=`uname -v`
+               ;;
+       esac
+       # Japanese Language versions have a version number like `4.1.3-JL'.
+       echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+       exit 0 ;;
+    sun3*:SunOS:*:*)
+       echo m68k-sun-sunos${UNAME_RELEASE}
+       exit 0 ;;
+    sun*:*:4.2BSD:*)
+       UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+       test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+       case "`/bin/arch`" in
+           sun3)
+               echo m68k-sun-sunos${UNAME_RELEASE}
+               ;;
+           sun4)
+               echo sparc-sun-sunos${UNAME_RELEASE}
+               ;;
+       esac
+       exit 0 ;;
+    aushp:SunOS:*:*)
+       echo sparc-auspex-sunos${UNAME_RELEASE}
+       exit 0 ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+       exit 0 ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+       echo m68k-atari-mint${UNAME_RELEASE}
+        exit 0 ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+       exit 0 ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+        echo m68k-milan-mint${UNAME_RELEASE}
+        exit 0 ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+        echo m68k-hades-mint${UNAME_RELEASE}
+        exit 0 ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+        echo m68k-unknown-mint${UNAME_RELEASE}
+        exit 0 ;;
+    powerpc:machten:*:*)
+       echo powerpc-apple-machten${UNAME_RELEASE}
+       exit 0 ;;
+    RISC*:Mach:*:*)
+       echo mips-dec-mach_bsd4.3
+       exit 0 ;;
+    RISC*:ULTRIX:*:*)
+       echo mips-dec-ultrix${UNAME_RELEASE}
+       exit 0 ;;
+    VAX*:ULTRIX*:*:*)
+       echo vax-dec-ultrix${UNAME_RELEASE}
+       exit 0 ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+       echo clipper-intergraph-clix${UNAME_RELEASE}
+       exit 0 ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+       int main (int argc, char *argv[]) {
+#else
+       int main (argc, argv) int argc; char *argv[]; {
+#endif
+       #if defined (host_mips) && defined (MIPSEB)
+       #if defined (SYSTYPE_SYSV)
+         printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+       #endif
+       #if defined (SYSTYPE_SVR4)
+         printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+       #endif
+       #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+         printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+       #endif
+       #endif
+         exit (-1);
+       }
+EOF
+       $CC_FOR_BUILD $dummy.c -o $dummy \
+         && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+         && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
+       rm -f $dummy.c $dummy && rmdir $tmpdir
+       echo mips-mips-riscos${UNAME_RELEASE}
+       exit 0 ;;
+    Motorola:PowerMAX_OS:*:*)
+       echo powerpc-motorola-powermax
+       exit 0 ;;
+    Night_Hawk:*:*:PowerMAX_OS)
+       echo powerpc-harris-powermax
+       exit 0 ;;
+    Night_Hawk:Power_UNIX:*:*)
+       echo powerpc-harris-powerunix
+       exit 0 ;;
+    m88k:CX/UX:7*:*)
+       echo m88k-harris-cxux7
+       exit 0 ;;
+    m88k:*:4*:R4*)
+       echo m88k-motorola-sysv4
+       exit 0 ;;
+    m88k:*:3*:R3*)
+       echo m88k-motorola-sysv3
+       exit 0 ;;
+    AViiON:dgux:*:*)
+        # DG/UX returns AViiON for all architectures
+        UNAME_PROCESSOR=`/usr/bin/uname -p`
+       if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+       then
+           if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+              [ ${TARGET_BINARY_INTERFACE}x = x ]
+           then
+               echo m88k-dg-dgux${UNAME_RELEASE}
+           else
+               echo m88k-dg-dguxbcs${UNAME_RELEASE}
+           fi
+       else
+           echo i586-dg-dgux${UNAME_RELEASE}
+       fi
+       exit 0 ;;
+    M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
+       echo m88k-dolphin-sysv3
+       exit 0 ;;
+    M88*:*:R3*:*)
+       # Delta 88k system running SVR3
+       echo m88k-motorola-sysv3
+       exit 0 ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+       echo m88k-tektronix-sysv3
+       exit 0 ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+       echo m68k-tektronix-bsd
+       exit 0 ;;
+    *:IRIX*:*:*)
+       echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+       exit 0 ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+       echo romp-ibm-aix      # uname -m gives an 8 hex-code CPU id
+       exit 0 ;;              # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+       echo i386-ibm-aix
+       exit 0 ;;
+    ia64:AIX:*:*)
+       if [ -x /usr/bin/oslevel ] ; then
+               IBM_REV=`/usr/bin/oslevel`
+       else
+               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+       fi
+       echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+       exit 0 ;;
+    *:AIX:2:3)
+       if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+               eval $set_cc_for_build
+               sed 's/^                //' << EOF >$dummy.c
+               #include <sys/systemcfg.h>
+
+               main()
+                       {
+                       if (!__power_pc())
+                               exit(1);
+                       puts("powerpc-ibm-aix3.2.5");
+                       exit(0);
+                       }
+EOF
+               $CC_FOR_BUILD $dummy.c -o $dummy && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
+               rm -f $dummy.c $dummy && rmdir $tmpdir
+               echo rs6000-ibm-aix3.2.5
+       elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+               echo rs6000-ibm-aix3.2.4
+       else
+               echo rs6000-ibm-aix3.2
+       fi
+       exit 0 ;;
+    *:AIX:*:[45])
+       IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+       if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+               IBM_ARCH=rs6000
+       else
+               IBM_ARCH=powerpc
+       fi
+       if [ -x /usr/bin/oslevel ] ; then
+               IBM_REV=`/usr/bin/oslevel`
+       else
+               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+       fi
+       echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+       exit 0 ;;
+    *:AIX:*:*)
+       echo rs6000-ibm-aix
+       exit 0 ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+       echo romp-ibm-bsd4.4
+       exit 0 ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+       echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+       exit 0 ;;                           # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+       echo rs6000-bull-bosx
+       exit 0 ;;
+    DPX/2?00:B.O.S.:*:*)
+       echo m68k-bull-sysv3
+       exit 0 ;;
+    9000/[34]??:4.3bsd:1.*:*)
+       echo m68k-hp-bsd
+       exit 0 ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+       echo m68k-hp-bsd4.4
+       exit 0 ;;
+    9000/[34678]??:HP-UX:*:*)
+       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+       case "${UNAME_MACHINE}" in
+           9000/31? )            HP_ARCH=m68000 ;;
+           9000/[34]?? )         HP_ARCH=m68k ;;
+           9000/[678][0-9][0-9])
+               if [ -x /usr/bin/getconf ]; then
+                   sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+                    case "${sc_cpu_version}" in
+                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+                      532)                      # CPU_PA_RISC2_0
+                        case "${sc_kernel_bits}" in
+                          32) HP_ARCH="hppa2.0n" ;;
+                          64) HP_ARCH="hppa2.0w" ;;
+                         '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+                        esac ;;
+                    esac
+               fi
+               if [ "${HP_ARCH}" = "" ]; then
+                   eval $set_cc_for_build
+                   sed 's/^              //' << EOF >$dummy.c
+
+              #define _HPUX_SOURCE
+              #include <stdlib.h>
+              #include <unistd.h>
+
+              int main ()
+              {
+              #if defined(_SC_KERNEL_BITS)
+                  long bits = sysconf(_SC_KERNEL_BITS);
+              #endif
+                  long cpu  = sysconf (_SC_CPU_VERSION);
+
+                  switch (cpu)
+               {
+               case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+               case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+               case CPU_PA_RISC2_0:
+              #if defined(_SC_KERNEL_BITS)
+                   switch (bits)
+                       {
+                       case 64: puts ("hppa2.0w"); break;
+                       case 32: puts ("hppa2.0n"); break;
+                       default: puts ("hppa2.0"); break;
+                       } break;
+              #else  /* !defined(_SC_KERNEL_BITS) */
+                   puts ("hppa2.0"); break;
+              #endif
+               default: puts ("hppa1.0"); break;
+               }
+                  exit (0);
+              }
+EOF
+                   (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`$dummy`
+                   if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
+                   rm -f $dummy.c $dummy && rmdir $tmpdir
+               fi ;;
+       esac
+       echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+       exit 0 ;;
+    ia64:HP-UX:*:*)
+       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+       echo ia64-hp-hpux${HPUX_REV}
+       exit 0 ;;
+    3050*:HI-UX:*:*)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #include <unistd.h>
+       int
+       main ()
+       {
+         long cpu = sysconf (_SC_CPU_VERSION);
+         /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+            true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+            results, however.  */
+         if (CPU_IS_PA_RISC (cpu))
+           {
+             switch (cpu)
+               {
+                 case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+                 case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+                 case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+                 default: puts ("hppa-hitachi-hiuxwe2"); break;
+               }
+           }
+         else if (CPU_IS_HP_MC68K (cpu))
+           puts ("m68k-hitachi-hiuxwe2");
+         else puts ("unknown-hitachi-hiuxwe2");
+         exit (0);
+       }
+EOF
+       $CC_FOR_BUILD $dummy.c -o $dummy && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
+       rm -f $dummy.c $dummy && rmdir $tmpdir
+       echo unknown-hitachi-hiuxwe2
+       exit 0 ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+       echo hppa1.1-hp-bsd
+       exit 0 ;;
+    9000/8??:4.3bsd:*:*)
+       echo hppa1.0-hp-bsd
+       exit 0 ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+       echo hppa1.0-hp-mpeix
+       exit 0 ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+       echo hppa1.1-hp-osf
+       exit 0 ;;
+    hp8??:OSF1:*:*)
+       echo hppa1.0-hp-osf
+       exit 0 ;;
+    i*86:OSF1:*:*)
+       if [ -x /usr/sbin/sysversion ] ; then
+           echo ${UNAME_MACHINE}-unknown-osf1mk
+       else
+           echo ${UNAME_MACHINE}-unknown-osf1
+       fi
+       exit 0 ;;
+    parisc*:Lites*:*:*)
+       echo hppa1.1-hp-lites
+       exit 0 ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+       echo c1-convex-bsd
+        exit 0 ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+       if getsysinfo -f scalar_acc
+       then echo c32-convex-bsd
+       else echo c2-convex-bsd
+       fi
+        exit 0 ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+       echo c34-convex-bsd
+        exit 0 ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+       echo c38-convex-bsd
+        exit 0 ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+       echo c4-convex-bsd
+        exit 0 ;;
+    CRAY*Y-MP:*:*:*)
+       echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    CRAY*[A-Z]90:*:*:*)
+       echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+       | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+             -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+             -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    CRAY*TS:*:*:*)
+       echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    CRAY*T3D:*:*:*)
+       echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    CRAY*T3E:*:*:*)
+       echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    CRAY*SV1:*:*:*)
+       echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+       FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+        exit 0 ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+       echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+       exit 0 ;;
+    sparc*:BSD/OS:*:*)
+       echo sparc-unknown-bsdi${UNAME_RELEASE}
+       exit 0 ;;
+    *:BSD/OS:*:*)
+       echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+       exit 0 ;;
+    *:FreeBSD:*:*)
+       # Determine whether the default compiler uses glibc.
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #include <features.h>
+       #if __GLIBC__ >= 2
+       LIBC=gnu
+       #else
+       LIBC=
+       #endif
+EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+       rm -f $dummy.c && rmdir $tmpdir
+       echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
+       exit 0 ;;
+    i*:CYGWIN*:*)
+       echo ${UNAME_MACHINE}-pc-cygwin
+       exit 0 ;;
+    i*:MINGW*:*)
+       echo ${UNAME_MACHINE}-pc-mingw32
+       exit 0 ;;
+    i*:PW*:*)
+       echo ${UNAME_MACHINE}-pc-pw32
+       exit 0 ;;
+    x86:Interix*:3*)
+       echo i386-pc-interix3
+       exit 0 ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+       # How do we know it's Interix rather than the generic POSIX subsystem?
+       # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+       # UNAME_MACHINE based on the output of uname instead of i386?
+       echo i386-pc-interix
+       exit 0 ;;
+    i*:UWIN*:*)
+       echo ${UNAME_MACHINE}-pc-uwin
+       exit 0 ;;
+    p*:CYGWIN*:*)
+       echo powerpcle-unknown-cygwin
+       exit 0 ;;
+    prep*:SunOS:5.*:*)
+       echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit 0 ;;
+    *:GNU:*:*)
+       echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+       exit 0 ;;
+    i*86:Minix:*:*)
+       echo ${UNAME_MACHINE}-pc-minix
+       exit 0 ;;
+    arm*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
+    ia64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
+    m68*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
+    mips:Linux:*:*)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #undef CPU
+       #undef mips
+       #undef mipsel
+       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+       CPU=mipsel
+       #else
+       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+       CPU=mips
+       #else
+       CPU=
+       #endif
+       #endif
+EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+       rm -f $dummy.c && rmdir $tmpdir
+       test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0
+       ;;
+    ppc:Linux:*:*)
+       echo powerpc-unknown-linux-gnu
+       exit 0 ;;
+    ppc64:Linux:*:*)
+       echo powerpc64-unknown-linux-gnu
+       exit 0 ;;
+    alpha:Linux:*:*)
+       case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+         EV5)   UNAME_MACHINE=alphaev5 ;;
+         EV56)  UNAME_MACHINE=alphaev56 ;;
+         PCA56) UNAME_MACHINE=alphapca56 ;;
+         PCA57) UNAME_MACHINE=alphapca56 ;;
+         EV6)   UNAME_MACHINE=alphaev6 ;;
+         EV67)  UNAME_MACHINE=alphaev67 ;;
+         EV68*) UNAME_MACHINE=alphaev68 ;;
+        esac
+       objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+       if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+       echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+       exit 0 ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+       # Look for CPU level
+       case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+         PA7*) echo hppa1.1-unknown-linux-gnu ;;
+         PA8*) echo hppa2.0-unknown-linux-gnu ;;
+         *)    echo hppa-unknown-linux-gnu ;;
+       esac
+       exit 0 ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+       echo hppa64-unknown-linux-gnu
+       exit 0 ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+       echo ${UNAME_MACHINE}-ibm-linux
+       exit 0 ;;
+    sh*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
+    x86_64:Linux:*:*)
+       echo x86_64-unknown-linux-gnu
+       exit 0 ;;
+    i*86:Linux:*:*)
+       # The BFD linker knows what the default object file format is, so
+       # first see if it will tell us. cd to the root directory to prevent
+       # problems with other programs or directories called `ld' in the path.
+       # Set LC_ALL=C to ensure ld outputs messages in English.
+       ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+                        | sed -ne '/supported targets:/!d
+                                   s/[         ][      ]*/ /g
+                                   s/.*supported targets: *//
+                                   s/ .*//
+                                   p'`
+        case "$ld_supported_targets" in
+         elf32-i386)
+               TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+               ;;
+         a.out-i386-linux)
+               echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+               exit 0 ;;               
+         coff-i386)
+               echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+               exit 0 ;;
+         "")
+               # Either a pre-BFD a.out linker (linux-gnuoldld) or
+               # one that does not give us useful --help.
+               echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+               exit 0 ;;
+       esac
+       # Determine whether the default compiler is a.out or elf
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #include <features.h>
+       #ifdef __ELF__
+       # ifdef __GLIBC__
+       #  if __GLIBC__ >= 2
+       LIBC=gnu
+       #  else
+       LIBC=gnulibc1
+       #  endif
+       # else
+       LIBC=gnulibc1
+       # endif
+       #else
+       #ifdef __INTEL_COMPILER
+       LIBC=gnu
+       #else
+       LIBC=gnuaout
+       #endif
+       #endif
+EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+       rm -f $dummy.c && rmdir $tmpdir
+       test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
+       test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+       ;;
+    i*86:DYNIX/ptx:4*:*)
+       # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+       # earlier versions are messed up and put the nodename in both
+       # sysname and nodename.
+       echo i386-sequent-sysv4
+       exit 0 ;;
+    i*86:UNIX_SV:4.2MP:2.*)
+        # Unixware is an offshoot of SVR4, but it has its own version
+        # number series starting with 2...
+        # I am not positive that other SVR4 systems won't match this,
+       # I just have to hope.  -- rms.
+        # Use sysv4.2uw... so that sysv4* matches it.
+       echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+       exit 0 ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+       UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+       if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+               echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+       else
+               echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+       fi
+       exit 0 ;;
+    i*86:*:5:[78]*)
+       case `/bin/uname -X | grep "^Machine"` in
+           *486*)           UNAME_MACHINE=i486 ;;
+           *Pentium)        UNAME_MACHINE=i586 ;;
+           *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+       esac
+       echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+       exit 0 ;;
+    i*86:*:3.2:*)
+       if test -f /usr/options/cb.name; then
+               UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+               echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+       elif /bin/uname -X 2>/dev/null >/dev/null ; then
+               UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+               (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+               (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+                       && UNAME_MACHINE=i586
+               (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+                       && UNAME_MACHINE=i686
+               (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+                       && UNAME_MACHINE=i686
+               echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+       else
+               echo ${UNAME_MACHINE}-pc-sysv32
+       fi
+       exit 0 ;;
+    i*86:*DOS:*:*)
+       echo ${UNAME_MACHINE}-pc-msdosdjgpp
+       exit 0 ;;
+    pc:*:*:*)
+       # Left here for compatibility:
+        # uname -m prints for DJGPP always 'pc', but it prints nothing about
+        # the processor, so we play safe by assuming i386.
+       echo i386-pc-msdosdjgpp
+        exit 0 ;;
+    Intel:Mach:3*:*)
+       echo i386-pc-mach3
+       exit 0 ;;
+    paragon:*:*:*)
+       echo i860-intel-osf1
+       exit 0 ;;
+    i860:*:4.*:*) # i860-SVR4
+       if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+         echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+       else # Add other i860-SVR4 vendors below as they are discovered.
+         echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+       fi
+       exit 0 ;;
+    mini*:CTIX:SYS*5:*)
+       # "miniframe"
+       echo m68010-convergent-sysv
+       exit 0 ;;
+    M68*:*:R3V[567]*:*)
+       test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+    3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0)
+       OS_REL=''
+       test -r /etc/.relid \
+       && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+         && echo i486-ncr-sysv4.3${OS_REL} && exit 0
+       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+         && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+          && echo i486-ncr-sysv4 && exit 0 ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+       echo m68k-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
+    mc68030:UNIX_System_V:4.*:*)
+       echo m68k-atari-sysv4
+       exit 0 ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+       echo i386-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
+    TSUNAMI:LynxOS:2.*:*)
+       echo sparc-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
+    rs6000:LynxOS:2.*:*)
+       echo rs6000-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+       echo powerpc-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
+    SM[BE]S:UNIX_SV:*:*)
+       echo mips-dde-sysv${UNAME_RELEASE}
+       exit 0 ;;
+    RM*:ReliantUNIX-*:*:*)
+       echo mips-sni-sysv4
+       exit 0 ;;
+    RM*:SINIX-*:*:*)
+       echo mips-sni-sysv4
+       exit 0 ;;
+    *:SINIX-*:*:*)
+       if uname -p 2>/dev/null >/dev/null ; then
+               UNAME_MACHINE=`(uname -p) 2>/dev/null`
+               echo ${UNAME_MACHINE}-sni-sysv4
+       else
+               echo ns32k-sni-sysv
+       fi
+       exit 0 ;;
+    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                      # says <Richard.M.Bartel@ccMail.Census.GOV>
+        echo i586-unisys-sysv4
+        exit 0 ;;
+    *:UNIX_System_V:4*:FTX*)
+       # From Gerald Hewes <hewes@openmarket.com>.
+       # How about differentiating between stratus architectures? -djm
+       echo hppa1.1-stratus-sysv4
+       exit 0 ;;
+    *:*:*:FTX*)
+       # From seanf@swdc.stratus.com.
+       echo i860-stratus-sysv4
+       exit 0 ;;
+    *:VOS:*:*)
+       # From Paul.Green@stratus.com.
+       echo hppa1.1-stratus-vos
+       exit 0 ;;
+    mc68*:A/UX:*:*)
+       echo m68k-apple-aux${UNAME_RELEASE}
+       exit 0 ;;
+    news*:NEWS-OS:6*:*)
+       echo mips-sony-newsos6
+       exit 0 ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+       if [ -d /usr/nec ]; then
+               echo mips-nec-sysv${UNAME_RELEASE}
+       else
+               echo mips-unknown-sysv${UNAME_RELEASE}
+       fi
+        exit 0 ;;
+    BeBox:BeOS:*:*)    # BeOS running on hardware made by Be, PPC only.
+       echo powerpc-be-beos
+       exit 0 ;;
+    BeMac:BeOS:*:*)    # BeOS running on Mac or Mac clone, PPC only.
+       echo powerpc-apple-beos
+       exit 0 ;;
+    BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
+       echo i586-pc-beos
+       exit 0 ;;
+    SX-4:SUPER-UX:*:*)
+       echo sx4-nec-superux${UNAME_RELEASE}
+       exit 0 ;;
+    SX-5:SUPER-UX:*:*)
+       echo sx5-nec-superux${UNAME_RELEASE}
+       exit 0 ;;
+    Power*:Rhapsody:*:*)
+       echo powerpc-apple-rhapsody${UNAME_RELEASE}
+       exit 0 ;;
+    *:Rhapsody:*:*)
+       echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+       exit 0 ;;
+    *:Darwin:*:*)
+       echo `uname -p`-apple-darwin${UNAME_RELEASE}
+       exit 0 ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+       UNAME_PROCESSOR=`uname -p`
+       if test "$UNAME_PROCESSOR" = "x86"; then
+               UNAME_PROCESSOR=i386
+               UNAME_MACHINE=pc
+       fi
+       echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+       exit 0 ;;
+    *:QNX:*:4*)
+       echo i386-pc-qnx
+       exit 0 ;;
+    NSR-[GKLNPTVW]:NONSTOP_KERNEL:*:*)
+       echo nsr-tandem-nsk${UNAME_RELEASE}
+       exit 0 ;;
+    *:NonStop-UX:*:*)
+       echo mips-compaq-nonstopux
+       exit 0 ;;
+    BS2000:POSIX*:*:*)
+       echo bs2000-siemens-sysv
+       exit 0 ;;
+    DS/*:UNIX_System_V:*:*)
+       echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+       exit 0 ;;
+    *:Plan9:*:*)
+       # "uname -m" is not consistent, so use $cputype instead. 386
+       # is converted to i386 for consistency with other x86
+       # operating systems.
+       if test "$cputype" = "386"; then
+           UNAME_MACHINE=i386
+       else
+           UNAME_MACHINE="$cputype"
+       fi
+       echo ${UNAME_MACHINE}-unknown-plan9
+       exit 0 ;;
+    i*86:OS/2:*:*)
+       # If we were able to find `uname', then EMX Unix compatibility
+       # is probably installed.
+       echo ${UNAME_MACHINE}-pc-os2-emx
+       exit 0 ;;
+    *:TOPS-10:*:*)
+       echo pdp10-unknown-tops10
+       exit 0 ;;
+    *:TENEX:*:*)
+       echo pdp10-unknown-tenex
+       exit 0 ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+       echo pdp10-dec-tops20
+       exit 0 ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+       echo pdp10-xkl-tops20
+       exit 0 ;;
+    *:TOPS-20:*:*)
+       echo pdp10-unknown-tops20
+       exit 0 ;;
+    *:ITS:*:*)
+       echo pdp10-unknown-its
+       exit 0 ;;
+    i*86:XTS-300:*:STOP)
+       echo ${UNAME_MACHINE}-unknown-stop
+       exit 0 ;;
+    i*86:atheos:*:*)
+       echo ${UNAME_MACHINE}-unknown-atheos
+       exit 0 ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+          "4"
+#else
+         ""
+#endif
+         ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+  printf ("arm-acorn-riscix"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+  printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+    struct utsname un;
+
+    uname(&un);
+
+    if (strncmp(un.version, "V2", 2) == 0) {
+       printf ("i386-sequent-ptx2\n"); exit (0);
+    }
+    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+       printf ("i386-sequent-ptx1\n"); exit (0);
+    }
+    printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+#  include <sys/param.h>
+#  if defined (BSD)
+#   if BSD == 43
+      printf ("vax-dec-bsd4.3\n"); exit (0);
+#   else
+#    if BSD == 199006
+      printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#    else
+      printf ("vax-dec-bsd\n"); exit (0);
+#    endif
+#   endif
+#  else
+    printf ("vax-dec-bsd\n"); exit (0);
+#  endif
+# else
+    printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
+rm -f $dummy.c $dummy && rmdir $tmpdir
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+    case `getsysinfo -f cpu_type` in
+    c1*)
+       echo c1-convex-bsd
+       exit 0 ;;
+    c2*)
+       if getsysinfo -f scalar_acc
+       then echo c32-convex-bsd
+       else echo c2-convex-bsd
+       fi
+       exit 0 ;;
+    c34*)
+       echo c34-convex-bsd
+       exit 0 ;;
+    c38*)
+       echo c38-convex-bsd
+       exit 0 ;;
+    c4*)
+       echo c4-convex-bsd
+       exit 0 ;;
+    esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+    ftp://ftp.gnu.org/pub/gnu/config/
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+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`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/file/config.h.in b/file/config.h.in
new file mode 100644 (file)
index 0000000..b979d4e
--- /dev/null
@@ -0,0 +1,202 @@
+/* config.h.in.  Generated from configure.in by autoheader.  */
+/* Autoheader needs me */
+#undef PACKAGE
+
+/* Autoheader needs me */
+#undef VERSION
+
+/* Define if builtin ELF support is enabled.  */
+#undef BUILTIN_ELF
+
+/* Define if ELF core file support is enabled.  */
+#undef ELFCORE
+
+/* Define if the `long long' type works.  */
+#undef HAVE_LONG_LONG
+
+/* Define if we have "tm_zone" in "struct tm".  */
+#undef HAVE_TM_ZONE
+
+/* Define if we have a global "char * []" "tzname" variable.  */
+#undef HAVE_TZNAME
+
+/* Define if we have "tm_isdst" in "struct tm".  */
+#undef HAVE_TM_ISDST
+
+/* Define if we have a global "int" variable "daylight".  */
+#undef HAVE_DAYLIGHT
+
+/* Define if we have a mkstemp */
+#undef HAVE_MKSTEMP
+
+/* Define to `unsigned char' if standard headers don't define.  */
+#undef uint8_t
+
+/* Define to `unsigned short' if standard headers don't define.  */
+#undef uint16_t
+
+/* Define to `unsigned int' if standard headers don't define.  */
+#undef uint32_t
+
+/* Define to `unsigned long long', if available, or `unsigned long', if
+   standard headers don't define.  */
+#undef uint64_t
+
+/* Define to `int' if standard headers don't define.  */
+#undef int32_t
+
+/* FIXME: These have to be added manually because autoheader doesn't know
+   about AC_CHECK_SIZEOF_INCLUDES.  */
+
+/* The number of bytes in a uint8_t.  */
+#define SIZEOF_UINT8_T 0
+
+/* The number of bytes in a uint16_t.  */
+#define SIZEOF_UINT16_T 0
+
+/* The number of bytes in a uint32_t.  */
+#define SIZEOF_UINT32_T 0
+
+/* The number of bytes in a uint64_t.  */
+#define SIZEOF_UINT64_T 0
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* Define to 1 if you have the <getopt.h> header file. */
+#undef HAVE_GETOPT_H
+
+/* Define to 1 if you have the `getopt_long' function. */
+#undef HAVE_GETOPT_LONG
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `z' library (-lz). */
+#undef HAVE_LIBZ
+
+/* Define to 1 if you have the <locale.h> header file. */
+#undef HAVE_LOCALE_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `mkstemp' function. */
+#undef HAVE_MKSTEMP
+
+/* Define to 1 if you have the `mmap' function. */
+#undef HAVE_MMAP
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the `strerror' function. */
+#undef HAVE_STRERROR
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the `strtoul' function. */
+#undef HAVE_STRTOUL
+
+/* Define to 1 if `st_rdev' is member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_RDEV
+
+/* Define to 1 if your `struct stat' has `st_rdev'. Deprecated, use
+   `HAVE_STRUCT_STAT_ST_RDEV' instead. */
+#undef HAVE_ST_RDEV
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+#undef HAVE_SYS_MMAN_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <sys/utime.h> header file. */
+#undef HAVE_SYS_UTIME_H
+
+/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
+#undef HAVE_SYS_WAIT_H
+
+/* HAVE_TM_ZONE */
+#undef HAVE_TM_ZONE
+
+/* HAVE_TZNAME */
+#undef HAVE_TZNAME
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if you have the `utime' function. */
+#undef HAVE_UTIME
+
+/* Define to 1 if you have the `utimes' function. */
+#undef HAVE_UTIMES
+
+/* Define to 1 if you have the <utime.h> header file. */
+#undef HAVE_UTIME_H
+
+/* Define to 1 if you have the <wchar.h> header file. */
+#undef HAVE_WCHAR_H
+
+/* Define to 1 if `major', `minor', and `makedev' are declared in <mkdev.h>.
+   */
+#undef MAJOR_IN_MKDEV
+
+/* Define to 1 if `major', `minor', and `makedev' are declared in
+   <sysmacros.h>. */
+#undef MAJOR_IN_SYSMACROS
+
+/* 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 version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to 1 if your <sys/time.h> declares `struct tm'. */
+#undef TM_IN_SYS_TIME
+
+/* Version number of package */
+#undef VERSION
+
+/* 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
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define to a type if <wchar.h> does not define. */
+#undef mbstate_t
+
+/* Define to `long' if <sys/types.h> does not define. */
+#undef off_t
+
+/* Define to `unsigned' if <sys/types.h> does not define. */
+#undef size_t
diff --git a/file/config.sub b/file/config.sub
new file mode 100755 (executable)
index 0000000..9ff085e
--- /dev/null
@@ -0,0 +1,1460 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002 Free Software Foundation, Inc.
+
+timestamp='2002-07-03'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine.  It does not imply ALL GNU software can.
+#
+# This file 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 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+# 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.
+
+# Please send patches to <config-patches@gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#      CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#      CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+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."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit 0 ;;
+    --version | -v )
+       echo "$version" ; exit 0 ;;
+    --help | --h* | -h )
+       echo "$usage"; exit 0 ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )        # Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit 0;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | freebsd*-gnu* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+       -sun*os*)
+               # Prevent following clause from handling this invalid input.
+               ;;
+       -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+       -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+       -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+       -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+       -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+       -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+       -apple | -axis)
+               os=
+               basic_machine=$1
+               ;;
+       -sim | -cisco | -oki | -wec | -winbond)
+               os=
+               basic_machine=$1
+               ;;
+       -scout)
+               ;;
+       -wrs)
+               os=-vxworks
+               basic_machine=$1
+               ;;
+       -chorusos*)
+               os=-chorusos
+               basic_machine=$1
+               ;;
+       -chorusrdb)
+               os=-chorusrdb
+               basic_machine=$1
+               ;;
+       -hiux*)
+               os=-hiuxwe2
+               ;;
+       -sco5)
+               os=-sco3.2v5
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco4)
+               os=-sco3.2v4
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco3.2.[4-9]*)
+               os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco3.2v[4-9]*)
+               # Don't forget version if it is 3.2v4 or newer.
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco*)
+               os=-sco3.2v2
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -udk*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -isc)
+               os=-isc2.2
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -clix*)
+               basic_machine=clipper-intergraph
+               ;;
+       -isc*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -lynx*)
+               os=-lynxos
+               ;;
+       -ptx*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+               ;;
+       -windowsnt*)
+               os=`echo $os | sed -e 's/windowsnt/winnt/'`
+               ;;
+       -psos*)
+               os=-psos
+               ;;
+       -mint | -mint[0-9]*)
+               basic_machine=m68k-atari
+               os=-mint
+               ;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+       # Recognize the basic CPU types without company name.
+       # Some are omitted here because they have special meanings below.
+       1750a | 580 \
+       | a29k \
+       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+       | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+       | c4x | clipper \
+       | d10v | d30v | dlx | dsp16xx \
+       | fr30 | frv \
+       | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+       | i370 | i860 | i960 | ia64 \
+       | ip2k \
+       | m32r | m68000 | m68k | m88k | mcore \
+       | mips | mipsbe | mipseb | mipsel | mipsle \
+       | mips16 \
+       | mips64 | mips64el \
+       | mips64orion | mips64orionel \
+       | mips64vr4100 | mips64vr4100el \
+       | mips64vr4300 | mips64vr4300el \
+       | mips64vr5000 | mips64vr5000el \
+       | mipsisa32 | mipsisa32el \
+       | mipsisa64 | mipsisa64el \
+       | mipsisa64sb1 | mipsisa64sb1el \
+       | mipstx39 | mipstx39el \
+       | mn10200 | mn10300 \
+       | ns16k | ns32k \
+       | openrisc | or32 \
+       | pdp10 | pdp11 | pj | pjl \
+       | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+       | pyramid \
+       | sh | sh[1234] | sh3e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+       | sh64 | sh64le \
+       | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
+       | strongarm \
+       | tahoe | thumb | tic80 | tron \
+       | v850 | v850e \
+       | we32k \
+       | x86 | xscale | xstormy16 | xtensa \
+       | z8k)
+               basic_machine=$basic_machine-unknown
+               ;;
+       m6811 | m68hc11 | m6812 | m68hc12)
+               # Motorola 68HC11/12.
+               basic_machine=$basic_machine-unknown
+               os=-none
+               ;;
+       m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+               ;;
+
+       # We use `pc' rather than `unknown'
+       # because (1) that's what they normally are, and
+       # (2) the word "unknown" tends to confuse beginning users.
+       i*86 | x86_64)
+         basic_machine=$basic_machine-pc
+         ;;
+       # Object if more than one company name word.
+       *-*-*)
+               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+               exit 1
+               ;;
+       # Recognize the basic CPU types with company name.
+       580-* \
+       | a29k-* \
+       | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+       | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+       | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+       | avr-* \
+       | bs2000-* \
+       | c[123]* | c30-* | [cjt]90-* | c54x-* \
+       | clipper-* | cydra-* \
+       | d10v-* | d30v-* | dlx-* \
+       | elxsi-* \
+       | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+       | h8300-* | h8500-* \
+       | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+       | i*86-* | i860-* | i960-* | ia64-* \
+       | ip2k-* \
+       | m32r-* \
+       | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+       | m88110-* | m88k-* | mcore-* \
+       | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+       | mips16-* \
+       | mips64-* | mips64el-* \
+       | mips64orion-* | mips64orionel-* \
+       | mips64vr4100-* | mips64vr4100el-* \
+       | mips64vr4300-* | mips64vr4300el-* \
+       | mips64vr5000-* | mips64vr5000el-* \
+       | mipsisa32-* | mipsisa32el-* \
+       | mipsisa64-* | mipsisa64el-* \
+       | mipsisa64sb1-* | mipsisa64sb1el-* \
+       | mipstx39 | mipstx39el \
+       | none-* | np1-* | ns16k-* | ns32k-* \
+       | orion-* \
+       | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+       | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+       | pyramid-* \
+       | romp-* | rs6000-* \
+       | sh-* | sh[1234]-* | sh3e-* | sh[34]eb-* | shbe-* \
+       | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+       | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
+       | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+       | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \
+       | v850-* | v850e-* | vax-* \
+       | we32k-* \
+       | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
+       | xtensa-* \
+       | ymp-* \
+       | z8k-*)
+               ;;
+       # Recognize the various machine names and aliases which stand
+       # for a CPU type and a company and sometimes even an OS.
+       386bsd)
+               basic_machine=i386-unknown
+               os=-bsd
+               ;;
+       3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+               basic_machine=m68000-att
+               ;;
+       3b*)
+               basic_machine=we32k-att
+               ;;
+       a29khif)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       adobe68k)
+               basic_machine=m68010-adobe
+               os=-scout
+               ;;
+       alliant | fx80)
+               basic_machine=fx80-alliant
+               ;;
+       altos | altos3068)
+               basic_machine=m68k-altos
+               ;;
+       am29k)
+               basic_machine=a29k-none
+               os=-bsd
+               ;;
+       amdahl)
+               basic_machine=580-amdahl
+               os=-sysv
+               ;;
+       amiga | amiga-*)
+               basic_machine=m68k-unknown
+               ;;
+       amigaos | amigados)
+               basic_machine=m68k-unknown
+               os=-amigaos
+               ;;
+       amigaunix | amix)
+               basic_machine=m68k-unknown
+               os=-sysv4
+               ;;
+       apollo68)
+               basic_machine=m68k-apollo
+               os=-sysv
+               ;;
+       apollo68bsd)
+               basic_machine=m68k-apollo
+               os=-bsd
+               ;;
+       aux)
+               basic_machine=m68k-apple
+               os=-aux
+               ;;
+       balance)
+               basic_machine=ns32k-sequent
+               os=-dynix
+               ;;
+       c90)
+               basic_machine=c90-cray
+               os=-unicos
+               ;;
+       convex-c1)
+               basic_machine=c1-convex
+               os=-bsd
+               ;;
+       convex-c2)
+               basic_machine=c2-convex
+               os=-bsd
+               ;;
+       convex-c32)
+               basic_machine=c32-convex
+               os=-bsd
+               ;;
+       convex-c34)
+               basic_machine=c34-convex
+               os=-bsd
+               ;;
+       convex-c38)
+               basic_machine=c38-convex
+               os=-bsd
+               ;;
+       cray | j90)
+               basic_machine=j90-cray
+               os=-unicos
+               ;;
+       crds | unos)
+               basic_machine=m68k-crds
+               ;;
+       cris | cris-* | etrax*)
+               basic_machine=cris-axis
+               ;;
+       da30 | da30-*)
+               basic_machine=m68k-da30
+               ;;
+       decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+               basic_machine=mips-dec
+               ;;
+       decsystem10* | dec10*)
+               basic_machine=pdp10-dec
+               os=-tops10
+               ;;
+       decsystem20* | dec20*)
+               basic_machine=pdp10-dec
+               os=-tops20
+               ;;
+       delta | 3300 | motorola-3300 | motorola-delta \
+             | 3300-motorola | delta-motorola)
+               basic_machine=m68k-motorola
+               ;;
+       delta88)
+               basic_machine=m88k-motorola
+               os=-sysv3
+               ;;
+       dpx20 | dpx20-*)
+               basic_machine=rs6000-bull
+               os=-bosx
+               ;;
+       dpx2* | dpx2*-bull)
+               basic_machine=m68k-bull
+               os=-sysv3
+               ;;
+       ebmon29k)
+               basic_machine=a29k-amd
+               os=-ebmon
+               ;;
+       elxsi)
+               basic_machine=elxsi-elxsi
+               os=-bsd
+               ;;
+       encore | umax | mmax)
+               basic_machine=ns32k-encore
+               ;;
+       es1800 | OSE68k | ose68k | ose | OSE)
+               basic_machine=m68k-ericsson
+               os=-ose
+               ;;
+       fx2800)
+               basic_machine=i860-alliant
+               ;;
+       genix)
+               basic_machine=ns32k-ns
+               ;;
+       gmicro)
+               basic_machine=tron-gmicro
+               os=-sysv
+               ;;
+       go32)
+               basic_machine=i386-pc
+               os=-go32
+               ;;
+       h3050r* | hiux*)
+               basic_machine=hppa1.1-hitachi
+               os=-hiuxwe2
+               ;;
+       h8300hms)
+               basic_machine=h8300-hitachi
+               os=-hms
+               ;;
+       h8300xray)
+               basic_machine=h8300-hitachi
+               os=-xray
+               ;;
+       h8500hms)
+               basic_machine=h8500-hitachi
+               os=-hms
+               ;;
+       harris)
+               basic_machine=m88k-harris
+               os=-sysv3
+               ;;
+       hp300-*)
+               basic_machine=m68k-hp
+               ;;
+       hp300bsd)
+               basic_machine=m68k-hp
+               os=-bsd
+               ;;
+       hp300hpux)
+               basic_machine=m68k-hp
+               os=-hpux
+               ;;
+       hp3k9[0-9][0-9] | hp9[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hp9k2[0-9][0-9] | hp9k31[0-9])
+               basic_machine=m68000-hp
+               ;;
+       hp9k3[2-9][0-9])
+               basic_machine=m68k-hp
+               ;;
+       hp9k6[0-9][0-9] | hp6[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hp9k7[0-79][0-9] | hp7[0-79][0-9])
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k78[0-9] | hp78[0-9])
+               # FIXME: really hppa2.0-hp
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+               # FIXME: really hppa2.0-hp
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[0-9][13679] | hp8[0-9][13679])
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[0-9][0-9] | hp8[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hppa-next)
+               os=-nextstep3
+               ;;
+       hppaosf)
+               basic_machine=hppa1.1-hp
+               os=-osf
+               ;;
+       hppro)
+               basic_machine=hppa1.1-hp
+               os=-proelf
+               ;;
+       i370-ibm* | ibm*)
+               basic_machine=i370-ibm
+               ;;
+# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
+       i*86v32)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv32
+               ;;
+       i*86v4*)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv4
+               ;;
+       i*86v)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv
+               ;;
+       i*86sol2)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-solaris2
+               ;;
+       i386mach)
+               basic_machine=i386-mach
+               os=-mach
+               ;;
+       i386-vsta | vsta)
+               basic_machine=i386-unknown
+               os=-vsta
+               ;;
+       iris | iris4d)
+               basic_machine=mips-sgi
+               case $os in
+                   -irix*)
+                       ;;
+                   *)
+                       os=-irix4
+                       ;;
+               esac
+               ;;
+       isi68 | isi)
+               basic_machine=m68k-isi
+               os=-sysv
+               ;;
+       m88k-omron*)
+               basic_machine=m88k-omron
+               ;;
+       magnum | m3230)
+               basic_machine=mips-mips
+               os=-sysv
+               ;;
+       merlin)
+               basic_machine=ns32k-utek
+               os=-sysv
+               ;;
+       mingw32)
+               basic_machine=i386-pc
+               os=-mingw32
+               ;;
+       miniframe)
+               basic_machine=m68000-convergent
+               ;;
+       *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+               basic_machine=m68k-atari
+               os=-mint
+               ;;
+       mips3*-*)
+               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+               ;;
+       mips3*)
+               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+               ;;
+       mmix*)
+               basic_machine=mmix-knuth
+               os=-mmixware
+               ;;
+       monitor)
+               basic_machine=m68k-rom68k
+               os=-coff
+               ;;
+       morphos)
+               basic_machine=powerpc-unknown
+               os=-morphos
+               ;;
+       msdos)
+               basic_machine=i386-pc
+               os=-msdos
+               ;;
+       mvs)
+               basic_machine=i370-ibm
+               os=-mvs
+               ;;
+       ncr3000)
+               basic_machine=i486-ncr
+               os=-sysv4
+               ;;
+       netbsd386)
+               basic_machine=i386-unknown
+               os=-netbsd
+               ;;
+       netwinder)
+               basic_machine=armv4l-rebel
+               os=-linux
+               ;;
+       news | news700 | news800 | news900)
+               basic_machine=m68k-sony
+               os=-newsos
+               ;;
+       news1000)
+               basic_machine=m68030-sony
+               os=-newsos
+               ;;
+       news-3600 | risc-news)
+               basic_machine=mips-sony
+               os=-newsos
+               ;;
+       necv70)
+               basic_machine=v70-nec
+               os=-sysv
+               ;;
+       next | m*-next )
+               basic_machine=m68k-next
+               case $os in
+                   -nextstep* )
+                       ;;
+                   -ns2*)
+                     os=-nextstep2
+                       ;;
+                   *)
+                     os=-nextstep3
+                       ;;
+               esac
+               ;;
+       nh3000)
+               basic_machine=m68k-harris
+               os=-cxux
+               ;;
+       nh[45]000)
+               basic_machine=m88k-harris
+               os=-cxux
+               ;;
+       nindy960)
+               basic_machine=i960-intel
+               os=-nindy
+               ;;
+       mon960)
+               basic_machine=i960-intel
+               os=-mon960
+               ;;
+       nonstopux)
+               basic_machine=mips-compaq
+               os=-nonstopux
+               ;;
+       np1)
+               basic_machine=np1-gould
+               ;;
+       nsr-tandem)
+               basic_machine=nsr-tandem
+               ;;
+       op50n-* | op60c-*)
+               basic_machine=hppa1.1-oki
+               os=-proelf
+               ;;
+       or32 | or32-*)
+               basic_machine=or32-unknown
+               os=-coff
+               ;;
+       OSE68000 | ose68000)
+               basic_machine=m68000-ericsson
+               os=-ose
+               ;;
+       os68k)
+               basic_machine=m68k-none
+               os=-os68k
+               ;;
+       pa-hitachi)
+               basic_machine=hppa1.1-hitachi
+               os=-hiuxwe2
+               ;;
+       paragon)
+               basic_machine=i860-intel
+               os=-osf
+               ;;
+       pbd)
+               basic_machine=sparc-tti
+               ;;
+       pbb)
+               basic_machine=m68k-tti
+               ;;
+        pc532 | pc532-*)
+               basic_machine=ns32k-pc532
+               ;;
+       pentium | p5 | k5 | k6 | nexgen | viac3)
+               basic_machine=i586-pc
+               ;;
+       pentiumpro | p6 | 6x86 | athlon)
+               basic_machine=i686-pc
+               ;;
+       pentiumii | pentium2)
+               basic_machine=i686-pc
+               ;;
+       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+               basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentiumpro-* | p6-* | 6x86-* | athlon-*)
+               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentiumii-* | pentium2-*)
+               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pn)
+               basic_machine=pn-gould
+               ;;
+       power)  basic_machine=power-ibm
+               ;;
+       ppc)    basic_machine=powerpc-unknown
+               ;;
+       ppc-*)  basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ppcle | powerpclittle | ppc-le | powerpc-little)
+               basic_machine=powerpcle-unknown
+               ;;
+       ppcle-* | powerpclittle-*)
+               basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ppc64)  basic_machine=powerpc64-unknown
+               ;;
+       ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+               basic_machine=powerpc64le-unknown
+               ;;
+       ppc64le-* | powerpc64little-*)
+               basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ps2)
+               basic_machine=i386-ibm
+               ;;
+       pw32)
+               basic_machine=i586-unknown
+               os=-pw32
+               ;;
+       rom68k)
+               basic_machine=m68k-rom68k
+               os=-coff
+               ;;
+       rm[46]00)
+               basic_machine=mips-siemens
+               ;;
+       rtpc | rtpc-*)
+               basic_machine=romp-ibm
+               ;;
+       s390 | s390-*)
+               basic_machine=s390-ibm
+               ;;
+       s390x | s390x-*)
+               basic_machine=s390x-ibm
+               ;;
+       sa29200)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       sequent)
+               basic_machine=i386-sequent
+               ;;
+       sh)
+               basic_machine=sh-hitachi
+               os=-hms
+               ;;
+       sparclite-wrs | simso-wrs)
+               basic_machine=sparclite-wrs
+               os=-vxworks
+               ;;
+       sps7)
+               basic_machine=m68k-bull
+               os=-sysv2
+               ;;
+       spur)
+               basic_machine=spur-unknown
+               ;;
+       st2000)
+               basic_machine=m68k-tandem
+               ;;
+       stratus)
+               basic_machine=i860-stratus
+               os=-sysv4
+               ;;
+       sun2)
+               basic_machine=m68000-sun
+               ;;
+       sun2os3)
+               basic_machine=m68000-sun
+               os=-sunos3
+               ;;
+       sun2os4)
+               basic_machine=m68000-sun
+               os=-sunos4
+               ;;
+       sun3os3)
+               basic_machine=m68k-sun
+               os=-sunos3
+               ;;
+       sun3os4)
+               basic_machine=m68k-sun
+               os=-sunos4
+               ;;
+       sun4os3)
+               basic_machine=sparc-sun
+               os=-sunos3
+               ;;
+       sun4os4)
+               basic_machine=sparc-sun
+               os=-sunos4
+               ;;
+       sun4sol2)
+               basic_machine=sparc-sun
+               os=-solaris2
+               ;;
+       sun3 | sun3-*)
+               basic_machine=m68k-sun
+               ;;
+       sun4)
+               basic_machine=sparc-sun
+               ;;
+       sun386 | sun386i | roadrunner)
+               basic_machine=i386-sun
+               ;;
+        sv1)
+               basic_machine=sv1-cray
+               os=-unicos
+               ;;
+       symmetry)
+               basic_machine=i386-sequent
+               os=-dynix
+               ;;
+       t3d)
+               basic_machine=alpha-cray
+               os=-unicos
+               ;;
+       t3e)
+               basic_machine=alphaev5-cray
+               os=-unicos
+               ;;
+       t90)
+               basic_machine=t90-cray
+               os=-unicos
+               ;;
+       tic54x | c54x*)
+               basic_machine=tic54x-unknown
+               os=-coff
+               ;;
+       tx39)
+               basic_machine=mipstx39-unknown
+               ;;
+       tx39el)
+               basic_machine=mipstx39el-unknown
+               ;;
+       toad1)
+               basic_machine=pdp10-xkl
+               os=-tops20
+               ;;
+       tower | tower-32)
+               basic_machine=m68k-ncr
+               ;;
+       udi29k)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       ultra3)
+               basic_machine=a29k-nyu
+               os=-sym1
+               ;;
+       v810 | necv810)
+               basic_machine=v810-nec
+               os=-none
+               ;;
+       vaxv)
+               basic_machine=vax-dec
+               os=-sysv
+               ;;
+       vms)
+               basic_machine=vax-dec
+               os=-vms
+               ;;
+       vpp*|vx|vx-*)
+               basic_machine=f301-fujitsu
+               ;;
+       vxworks960)
+               basic_machine=i960-wrs
+               os=-vxworks
+               ;;
+       vxworks68)
+               basic_machine=m68k-wrs
+               os=-vxworks
+               ;;
+       vxworks29k)
+               basic_machine=a29k-wrs
+               os=-vxworks
+               ;;
+       w65*)
+               basic_machine=w65-wdc
+               os=-none
+               ;;
+       w89k-*)
+               basic_machine=hppa1.1-winbond
+               os=-proelf
+               ;;
+       windows32)
+               basic_machine=i386-pc
+               os=-windows32-msvcrt
+               ;;
+        xps | xps100)
+               basic_machine=xps100-honeywell
+               ;;
+       ymp)
+               basic_machine=ymp-cray
+               os=-unicos
+               ;;
+       z8k-*-coff)
+               basic_machine=z8k-unknown
+               os=-sim
+               ;;
+       none)
+               basic_machine=none-none
+               os=-none
+               ;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+       w89k)
+               basic_machine=hppa1.1-winbond
+               ;;
+       op50n)
+               basic_machine=hppa1.1-oki
+               ;;
+       op60c)
+               basic_machine=hppa1.1-oki
+               ;;
+       romp)
+               basic_machine=romp-ibm
+               ;;
+       rs6000)
+               basic_machine=rs6000-ibm
+               ;;
+       vax)
+               basic_machine=vax-dec
+               ;;
+       pdp10)
+               # there are many clones, so DEC is not a safe bet
+               basic_machine=pdp10-unknown
+               ;;
+       pdp11)
+               basic_machine=pdp11-dec
+               ;;
+       we32k)
+               basic_machine=we32k-att
+               ;;
+       sh3 | sh4 | sh3eb | sh4eb | sh[1234]le | sh3ele)
+               basic_machine=sh-unknown
+               ;;
+       sh64)
+               basic_machine=sh64-unknown
+               ;;
+       sparc | sparcv9 | sparcv9b)
+               basic_machine=sparc-sun
+               ;;
+        cydra)
+               basic_machine=cydra-cydrome
+               ;;
+       orion)
+               basic_machine=orion-highlevel
+               ;;
+       orion105)
+               basic_machine=clipper-highlevel
+               ;;
+       mac | mpw | mac-mpw)
+               basic_machine=m68k-apple
+               ;;
+       pmac | pmac-mpw)
+               basic_machine=powerpc-apple
+               ;;
+       c4x*)
+               basic_machine=c4x-none
+               os=-coff
+               ;;
+       *-unknown)
+               # Make sure to match an already-canonicalized machine name.
+               ;;
+       *)
+               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+               exit 1
+               ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+       *-digital*)
+               basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+               ;;
+       *-commodore*)
+               basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+               ;;
+       *)
+               ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+        # First match some system type aliases
+        # that might get confused with valid system types.
+       # -solaris* is a basic system type, with this one exception.
+       -solaris1 | -solaris1.*)
+               os=`echo $os | sed -e 's|solaris1|sunos4|'`
+               ;;
+       -solaris)
+               os=-solaris2
+               ;;
+       -svr4*)
+               os=-sysv4
+               ;;
+       -unixware*)
+               os=-sysv4.2uw
+               ;;
+       -gnu/linux*)
+               os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+               ;;
+       # First accept the basic system types.
+       # The portable systems comes first.
+       # Each alternative MUST END IN A *, to match a version number.
+       # -sysv* is not here because it comes later, after sysvr4.
+       -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+             | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+             | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+             | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+             | -aos* \
+             | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+             | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+             | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
+             | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+             | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+             | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+             | -chorusos* | -chorusrdb* \
+             | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+             | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
+             | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
+             | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+             | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+             | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+             | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* | -powermax*)
+       # Remember, each alternative MUST END IN *, to match a version number.
+               ;;
+       -qnx*)
+               case $basic_machine in
+                   x86-* | i*86-*)
+                       ;;
+                   *)
+                       os=-nto$os
+                       ;;
+               esac
+               ;;
+       -nto*)
+               os=-nto-qnx
+               ;;
+       -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+             | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+             | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+               ;;
+       -mac*)
+               os=`echo $os | sed -e 's|mac|macos|'`
+               ;;
+       -linux*)
+               os=`echo $os | sed -e 's|linux|linux-gnu|'`
+               ;;
+       -sunos5*)
+               os=`echo $os | sed -e 's|sunos5|solaris2|'`
+               ;;
+       -sunos6*)
+               os=`echo $os | sed -e 's|sunos6|solaris3|'`
+               ;;
+       -opened*)
+               os=-openedition
+               ;;
+       -wince*)
+               os=-wince
+               ;;
+       -osfrose*)
+               os=-osfrose
+               ;;
+       -osf*)
+               os=-osf
+               ;;
+       -utek*)
+               os=-bsd
+               ;;
+       -dynix*)
+               os=-bsd
+               ;;
+       -acis*)
+               os=-aos
+               ;;
+       -atheos*)
+               os=-atheos
+               ;;
+       -386bsd)
+               os=-bsd
+               ;;
+       -ctix* | -uts*)
+               os=-sysv
+               ;;
+       -nova*)
+               os=-rtmk-nova
+               ;;
+       -ns2 )
+               os=-nextstep2
+               ;;
+       -nsk*)
+               os=-nsk
+               ;;
+       # Preserve the version number of sinix5.
+       -sinix5.*)
+               os=`echo $os | sed -e 's|sinix|sysv|'`
+               ;;
+       -sinix*)
+               os=-sysv4
+               ;;
+       -triton*)
+               os=-sysv3
+               ;;
+       -oss*)
+               os=-sysv3
+               ;;
+       -svr4)
+               os=-sysv4
+               ;;
+       -svr3)
+               os=-sysv3
+               ;;
+       -sysvr4)
+               os=-sysv4
+               ;;
+       # This must come after -sysvr4.
+       -sysv*)
+               ;;
+       -ose*)
+               os=-ose
+               ;;
+       -es1800*)
+               os=-ose
+               ;;
+       -xenix)
+               os=-xenix
+               ;;
+        -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+               os=-mint
+               ;;
+       -none)
+               ;;
+       *)
+               # Get rid of the `-' at the beginning of $os.
+               os=`echo $os | sed 's/[^-]*-//'`
+               echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+               exit 1
+               ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+       *-acorn)
+               os=-riscix1.2
+               ;;
+       arm*-rebel)
+               os=-linux
+               ;;
+       arm*-semi)
+               os=-aout
+               ;;
+       # This must come before the *-dec entry.
+       pdp10-*)
+               os=-tops20
+               ;;
+        pdp11-*)
+               os=-none
+               ;;
+       *-dec | vax-*)
+               os=-ultrix4.2
+               ;;
+       m68*-apollo)
+               os=-domain
+               ;;
+       i386-sun)
+               os=-sunos4.0.2
+               ;;
+       m68000-sun)
+               os=-sunos3
+               # This also exists in the configure program, but was not the
+               # default.
+               # os=-sunos4
+               ;;
+       m68*-cisco)
+               os=-aout
+               ;;
+       mips*-cisco)
+               os=-elf
+               ;;
+       mips*-*)
+               os=-elf
+               ;;
+       or32-*)
+               os=-coff
+               ;;
+       *-tti)  # must be before sparc entry or we get the wrong os.
+               os=-sysv3
+               ;;
+       sparc-* | *-sun)
+               os=-sunos4.1.1
+               ;;
+       *-be)
+               os=-beos
+               ;;
+       *-ibm)
+               os=-aix
+               ;;
+       *-wec)
+               os=-proelf
+               ;;
+       *-winbond)
+               os=-proelf
+               ;;
+       *-oki)
+               os=-proelf
+               ;;
+       *-hp)
+               os=-hpux
+               ;;
+       *-hitachi)
+               os=-hiux
+               ;;
+       i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+               os=-sysv
+               ;;
+       *-cbm)
+               os=-amigaos
+               ;;
+       *-dg)
+               os=-dgux
+               ;;
+       *-dolphin)
+               os=-sysv3
+               ;;
+       m68k-ccur)
+               os=-rtu
+               ;;
+       m88k-omron*)
+               os=-luna
+               ;;
+       *-next )
+               os=-nextstep
+               ;;
+       *-sequent)
+               os=-ptx
+               ;;
+       *-crds)
+               os=-unos
+               ;;
+       *-ns)
+               os=-genix
+               ;;
+       i370-*)
+               os=-mvs
+               ;;
+       *-next)
+               os=-nextstep3
+               ;;
+        *-gould)
+               os=-sysv
+               ;;
+        *-highlevel)
+               os=-bsd
+               ;;
+       *-encore)
+               os=-bsd
+               ;;
+        *-sgi)
+               os=-irix
+               ;;
+        *-siemens)
+               os=-sysv4
+               ;;
+       *-masscomp)
+               os=-rtu
+               ;;
+       f30[01]-fujitsu | f700-fujitsu)
+               os=-uxpv
+               ;;
+       *-rom68k)
+               os=-coff
+               ;;
+       *-*bug)
+               os=-coff
+               ;;
+       *-apple)
+               os=-macos
+               ;;
+       *-atari*)
+               os=-mint
+               ;;
+       *)
+               os=-none
+               ;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+       *-unknown)
+               case $os in
+                       -riscix*)
+                               vendor=acorn
+                               ;;
+                       -sunos*)
+                               vendor=sun
+                               ;;
+                       -aix*)
+                               vendor=ibm
+                               ;;
+                       -beos*)
+                               vendor=be
+                               ;;
+                       -hpux*)
+                               vendor=hp
+                               ;;
+                       -mpeix*)
+                               vendor=hp
+                               ;;
+                       -hiux*)
+                               vendor=hitachi
+                               ;;
+                       -unos*)
+                               vendor=crds
+                               ;;
+                       -dgux*)
+                               vendor=dg
+                               ;;
+                       -luna*)
+                               vendor=omron
+                               ;;
+                       -genix*)
+                               vendor=ns
+                               ;;
+                       -mvs* | -opened*)
+                               vendor=ibm
+                               ;;
+                       -ptx*)
+                               vendor=sequent
+                               ;;
+                       -vxsim* | -vxworks* | -windiss*)
+                               vendor=wrs
+                               ;;
+                       -aux*)
+                               vendor=apple
+                               ;;
+                       -hms*)
+                               vendor=hitachi
+                               ;;
+                       -mpw* | -macos*)
+                               vendor=apple
+                               ;;
+                       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+                               vendor=atari
+                               ;;
+                       -vos*)
+                               vendor=stratus
+                               ;;
+               esac
+               basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+               ;;
+esac
+
+echo $basic_machine$os
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/file/configure b/file/configure
new file mode 100755 (executable)
index 0000000..794c201
--- /dev/null
@@ -0,0 +1,9302 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.57.
+#
+# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
+# 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 Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+
+# Support unset when possible.
+if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; 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
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)$' \| \
+        .     : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+         /^X\/\(\/\/\)$/{ s//\1/; q; }
+         /^X\/\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# 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
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
+  # Find who we are.  Look in the path if we contain no path at all
+  # relative or not.
+  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
+
+       ;;
+  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
+    { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
+   { (exit 1); exit 1; }; }
+  fi
+  case $CONFIG_SHELL in
+  '')
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for as_base in sh bash ksh sh5; do
+        case $as_dir in
+        /*)
+          if ("$as_dir/$as_base" -c '
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
+            $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+            $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+            CONFIG_SHELL=$as_dir/$as_base
+            export CONFIG_SHELL
+            exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+          fi;;
+        esac
+       done
+done
+;;
+  esac
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line before each line; the second 'sed' does the real
+  # work.  The second script uses 'N' to pair each line-number line
+  # with the numbered line, and appends trailing '-' during
+  # substitution so that $LINENO is not a special case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
+  sed '=' <$as_myself |
+    sed '
+      N
+      s,$,-,
+      : loop
+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+      t loop
+      s,-$,,
+      s,^['$as_cr_digits']*\n,,
+    ' >$as_me.lineno &&
+  chmod +x $as_me.lineno ||
+    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (exit 1); exit 1; }; }
+
+  # 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 sensible to this).
+  . ./$as_me.lineno
+  # Exit status is that of the last command.
+  exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T='     ' ;;
+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="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="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS="  $as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+exec 6>&1
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_config_libobj_dir=.
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Maximum number of lines to put in a shell here document.
+# This variable seems obsolete.  It should probably be removed, and
+# only ac_max_sed_lines should be used.
+: ${ac_max_here_lines=38}
+
+# Identity of this package.
+PACKAGE_NAME=
+PACKAGE_TARNAME=
+PACKAGE_VERSION=
+PACKAGE_STRING=
+PACKAGE_BUGREPORT=
+
+ac_unique_file="src/file.c"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#if STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# if HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#if HAVE_STRING_H
+# if !STDC_HEADERS && HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#if HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#else
+# if HAVE_STDINT_H
+#  include <stdint.h>
+# endif
+#endif
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE am__leading_dot MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT fsect FSECT5_TRUE FSECT5_FALSE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE LN_S build build_cpu build_vendor build_os host host_cpu host_vendor host_os RANLIB ac_ct_RANLIB LIBTOOL CPP EGREP LIBOBJS LTLIBOBJS'
+ac_subst_files=''
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# 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.
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+ac_prev=
+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
+
+  ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_option in
+
+  -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 | --data | --dat | --da)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+  | --da=*)
+    datadir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    eval "enable_$ac_feature=no" ;;
+
+  -enable-* | --enable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    case $ac_option in
+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "enable_$ac_feature='$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 ;;
+
+  -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 ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst \
+  | --locals | --local | --loca | --loc | --lo)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+    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 ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -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_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package| sed 's/-/_/g'`
+    case $ac_option in
+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "with_$ac_package='$ac_optarg'" ;;
+
+  -without-* | --without-*)
+    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package | sed 's/-/_/g'`
+    eval "with_$ac_package=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 ;;
+
+  -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; }
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+   { (exit 1); exit 1; }; }
+    ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+    eval "$ac_envvar='$ac_optarg'"
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      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'`
+  { echo "$as_me: error: missing argument to $ac_option" >&2
+   { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute paths.
+for ac_var in exec_prefix prefix
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# Be sure to have absolute paths.
+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+              localstatedir libdir includedir oldincludedir infodir mandir
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* ) ;;
+    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; };;
+  esac
+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
+    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used." >&2
+  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
+
+
+# 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 its parent.
+  ac_confdir=`(dirname "$0") 2>/dev/null ||
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$0" : 'X\(//\)[^/]' \| \
+         X"$0" : 'X\(//\)$' \| \
+         X"$0" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$0" |
+    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
+  if test "$ac_srcdir_defaulted" = yes; then
+    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
+   { (exit 1); exit 1; }; }
+  else
+    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+   { (exit 1); exit 1; }; }
+  fi
+fi
+(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
+  { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
+   { (exit 1); exit 1; }; }
+srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+ac_env_build_alias_set=${build_alias+set}
+ac_env_build_alias_value=$build_alias
+ac_cv_env_build_alias_set=${build_alias+set}
+ac_cv_env_build_alias_value=$build_alias
+ac_env_host_alias_set=${host_alias+set}
+ac_env_host_alias_value=$host_alias
+ac_cv_env_host_alias_set=${host_alias+set}
+ac_cv_env_host_alias_value=$host_alias
+ac_env_target_alias_set=${target_alias+set}
+ac_env_target_alias_value=$target_alias
+ac_cv_env_target_alias_set=${target_alias+set}
+ac_cv_env_target_alias_value=$target_alias
+ac_env_CC_set=${CC+set}
+ac_env_CC_value=$CC
+ac_cv_env_CC_set=${CC+set}
+ac_cv_env_CC_value=$CC
+ac_env_CFLAGS_set=${CFLAGS+set}
+ac_env_CFLAGS_value=$CFLAGS
+ac_cv_env_CFLAGS_set=${CFLAGS+set}
+ac_cv_env_CFLAGS_value=$CFLAGS
+ac_env_LDFLAGS_set=${LDFLAGS+set}
+ac_env_LDFLAGS_value=$LDFLAGS
+ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+ac_cv_env_LDFLAGS_value=$LDFLAGS
+ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_env_CPPFLAGS_value=$CPPFLAGS
+ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+ac_env_CPP_set=${CPP+set}
+ac_env_CPP_value=$CPP
+ac_cv_env_CPP_set=${CPP+set}
+ac_cv_env_CPP_value=$CPP
+
+#
+# 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 this package 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 \`..']
+
+_ACEOF
+
+  cat <<_ACEOF
+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]
+  --datadir=DIR          read-only architecture-independent data [PREFIX/share]
+  --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]
+  --libdir=DIR           object code libraries [EPREFIX/lib]
+  --includedir=DIR       C header files [PREFIX/include]
+  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
+  --infodir=DIR          info documentation [PREFIX/info]
+  --mandir=DIR           man documentation [PREFIX/man]
+_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
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-maintainer-mode enable make rules and dependencies not useful
+                          (and sometimes confusing) to the casual installer
+  --disable-elf            disable builtin ELF support
+  --disable-elf-core       disable ELF core file support
+  --enable-fsect-man5      enable file formats in man section 5
+  --disable-dependency-tracking Speeds up one-time builds
+  --enable-dependency-tracking  Do not reject slow dependency extractors
+  --enable-shared=PKGS  build shared libraries default=yes
+  --enable-static=PKGS  build static libraries default=yes
+  --enable-fast-install=PKGS  optimize for fast installation default=yes
+  --disable-libtool-lock  avoid locking (might break parallel builds)
+  --disable-largefile     omit support for large files
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-gnu-ld           assume the C compiler uses GNU ld default=no
+  --with-pic              try to use only PIC/non-PIC objects default=use both
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  CPPFLAGS    C/C++ preprocessor flags, e.g. -I<include dir> if you have
+              headers in a nonstandard directory <include dir>
+  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.
+
+_ACEOF
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  ac_popdir=`pwd`
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d $ac_dir || continue
+    ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
+# absolute.
+ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
+ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
+ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
+ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
+
+    cd $ac_dir
+    # Check for guested configure; otherwise get Cygnus style 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
+    elif test -f $ac_srcdir/configure.ac ||
+           test -f $ac_srcdir/configure.in; then
+      echo
+      $ac_configure --help
+    else
+      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi
+    cd $ac_popdir
+  done
+fi
+
+test -n "$ac_init_help" && exit 0
+if $ac_init_version; then
+  cat <<\_ACEOF
+
+Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
+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 0
+fi
+exec 5>config.log
+cat >&5 <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by $as_me, which was
+generated by GNU Autoconf 2.57.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+{
+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`
+hostinfo               = `(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=.
+  echo "PATH: $as_dir"
+done
+
+} >&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_sep=
+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=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+    2)
+      ac_configure_args1="$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
+      ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+      # Get rid of the leading space.
+      ac_sep=" "
+      ;;
+    esac
+  done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export 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: Be sure not to use single quotes in there, as some shells,
+# such as our DU 5.0 friend, will then `close' the trap.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+{
+  (set) 2>&1 |
+    case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+    *ac_space=\ *)
+      sed -n \
+        "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+      ;;
+    *)
+      sed -n \
+        "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+}
+    echo
+
+    cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=$`echo $ac_var`
+      echo "$ac_var='"'"'$ac_val'"'"'"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      cat <<\_ASBOX
+## ------------- ##
+## Output files. ##
+## ------------- ##
+_ASBOX
+      echo
+      for ac_var in $ac_subst_files
+      do
+       eval ac_val=$`echo $ac_var`
+        echo "$ac_var='"'"'$ac_val'"'"'"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+      echo
+      sed "/^$/d" confdefs.h | sort
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      echo "$as_me: caught signal $ac_signal"
+    echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core core.* *.core &&
+  rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+     ' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo >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
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+  if test "x$prefix" != xNONE; then
+    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+  else
+    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+  fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+  if test -r "$ac_site_file"; then
+    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file"
+  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.
+  if test -f "$cache_file"; then
+    { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . $cache_file;;
+      *)                      . ./$cache_file;;
+    esac
+  fi
+else
+  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+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 `(set) 2>&1 |
+               sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; 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,)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+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
+        { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+        { echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
+echo "$as_me:   former value:  $ac_old_val" >&2;}
+        { echo "$as_me:$LINENO:   current value: $ac_new_val" >&5
+echo "$as_me:   current value: $ac_new_val" >&2;}
+        ac_cache_corrupted=:
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *" "*|*"   "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+      ac_arg=$ac_var=`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.
+      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+   { (exit 1); exit 1; }; }
+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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+am__api_version="1.7"
+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
+  { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
+
+# 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"
+# ./install, which can be erroneously created by make from ./install.sh.
+echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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/* | \
+  /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_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
+            ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+            break 3
+          fi
+        fi
+      done
+    done
+    ;;
+esac
+done
+
+
+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.  We don't cache a
+    # path for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the path is relative.
+    INSTALL=$ac_install_sh
+  fi
+fi
+echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$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'
+
+echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# 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 (
+   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
+   rm -f conftest.file
+   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".
+      { { echo "$as_me:$LINENO: error: ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" >&5
+echo "$as_me: error: ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" >&2;}
+   { (exit 1); exit 1; }; }
+   fi
+
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
+Check your system clock" >&5
+echo "$as_me: error: newly created file is older than distributed files!
+Check your system clock" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+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 $.  echo might interpret backslashes.
+# By default was `s,x,x', remove it if useless.
+cat <<\_ACEOF >conftest.sed
+s/[\\$]/&&/g;s/;s,x,x,$//
+_ACEOF
+program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
+rm conftest.sed
+
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
+echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AWK+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AWK="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  echo "$as_me:$LINENO: result: $AWK" >&5
+echo "${ECHO_T}$AWK" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$AWK" && break
+done
+
+echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'`
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.make <<\_ACEOF
+all:
+       @echo 'ac_maketemp="$(MAKE)"'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+  eval ac_cv_prog_make_${ac_make}_set=yes
+else
+  eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftest.make
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+  SET_MAKE=
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}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
+
+ # test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+   test -f $srcdir/config.status; then
+  { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
+echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
+   { (exit 1); exit 1; }; }
+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=file
+ VERSION=4.09
+
+
+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"}
+
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+
+# 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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  STRIP=$ac_ct_STRIP
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+
+
+
+          ac_config_headers="$ac_config_headers config.h"
+
+echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6
+    # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then
+  enableval="$enable_maintainer_mode"
+  USE_MAINTAINER_MODE=$enableval
+else
+  USE_MAINTAINER_MODE=no
+fi;
+  echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
+echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6
+
+
+if test $USE_MAINTAINER_MODE = yes; then
+  MAINTAINER_MODE_TRUE=
+  MAINTAINER_MODE_FALSE='#'
+else
+  MAINTAINER_MODE_TRUE='#'
+  MAINTAINER_MODE_FALSE=
+fi
+
+  MAINT=$MAINTAINER_MODE_TRUE
+
+
+
+echo "$as_me:$LINENO: checking for builtin ELF support" >&5
+echo $ECHO_N "checking for builtin ELF support... $ECHO_C" >&6
+# Check whether --enable-elf or --disable-elf was given.
+if test "${enable_elf+set}" = set; then
+  enableval="$enable_elf"
+  if test "${enableval}" = yes; then
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+  cat >>confdefs.h <<\_ACEOF
+#define BUILTIN_ELF 1
+_ACEOF
+
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+else
+
+  # enable by default
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+  cat >>confdefs.h <<\_ACEOF
+#define BUILTIN_ELF 1
+_ACEOF
+
+
+fi;
+
+echo "$as_me:$LINENO: checking for ELF core file support" >&5
+echo $ECHO_N "checking for ELF core file support... $ECHO_C" >&6
+# Check whether --enable-elf-core or --disable-elf-core was given.
+if test "${enable_elf_core+set}" = set; then
+  enableval="$enable_elf_core"
+  if test "${enableval}" = yes; then
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+  cat >>confdefs.h <<\_ACEOF
+#define ELFCORE 1
+_ACEOF
+
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+else
+
+  # enable by default
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+  cat >>confdefs.h <<\_ACEOF
+#define ELFCORE 1
+_ACEOF
+
+
+fi;
+
+echo "$as_me:$LINENO: checking for file formats in man section 5" >&5
+echo $ECHO_N "checking for file formats in man section 5... $ECHO_C" >&6
+# Check whether --enable-fsect-man5 or --disable-fsect-man5 was given.
+if test "${enable_fsect_man5+set}" = set; then
+  enableval="$enable_fsect_man5"
+  if test "${enableval}" = yes; then
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+  fsect=5
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+  fsect=4
+fi
+else
+
+  # disable by default
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+  fsect=4
+
+fi;
+
+
+
+if test x$fsect = x5; then
+  FSECT5_TRUE=
+  FSECT5_FALSE='#'
+else
+  FSECT5_TRUE='#'
+  FSECT5_FALSE=
+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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  CC=$ac_ct_CC
+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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="cc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  CC=$ac_ct_CC
+else
+  CC="$ac_cv_prog_CC"
+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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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_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"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+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
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl
+  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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_CC" && break
+done
+
+  CC=$ac_ct_CC
+fi
+
+fi
+
+
+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+echo "$as_me: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+     "checking for C compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out 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.
+echo "$as_me:$LINENO: checking for C compiler default output" >&5
+echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
+  (eval $ac_link_default) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # Find the output, starting from the most likely.  This scheme is
+# not robust to junk in `.', hence go to wildcards (a.*) only as a last
+# resort.
+
+# Be careful to initialize this variable, since it used to be cached.
+# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
+ac_cv_exeext=
+# b.out is created by i960 compilers.
+for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
+        ;;
+    conftest.$ac_ext )
+        # This is the source file.
+        ;;
+    [ab].out )
+        # We found the default executable, but exeext='' is most
+        # certainly right.
+        break;;
+    *.* )
+        ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+        # FIXME: I believe we export ac_cv_exeext for Libtool,
+        # but it would be cool to find out if it's true.  Does anybody
+        # maintain Libtool? --akim.
+        export ac_cv_exeext
+        break;;
+    * )
+        break;;
+  esac
+done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
+See \`config.log' for more details." >&5
+echo "$as_me: error: C compiler cannot create executables
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6
+
+# Check the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+  if { ac_try='./$ac_file'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+       cross_compiling=yes
+    else
+       { { echo "$as_me:$LINENO: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+  fi
+fi
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $cross_compiling" >&5
+echo "${ECHO_T}$cross_compiling" >&6
+
+echo "$as_me:$LINENO: checking for suffix of executables" >&5
+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; 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 | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+          export ac_cv_exeext
+          break;;
+    * ) break;;
+  esac
+done
+else
+  { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+echo "${ECHO_T}$ac_cv_exeext" >&6
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+echo "$as_me:$LINENO: checking for suffix of object files" >&5
+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
+if test "${ac_cv_objext+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+echo "${ECHO_T}$ac_cv_objext" >&6
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
+GCC=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+CFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cc_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cc_g=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+echo "${ECHO_T}$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
+echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_cc_stdc=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* 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;
+}
+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
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX                  -qlanglvl=ansi
+# Ultrix and OSF/1     -std1
+# HP-UX 10.20 and later        -Ae
+# HP-UX older versions -Aa -D_HPUX_SOURCE
+# SVR4                 -Xc -D__EXTENSIONS__
+for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cc_stdc=$ac_arg
+break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.$ac_objext
+done
+rm -f conftest.$ac_ext conftest.$ac_objext
+CC=$ac_save_CC
+
+fi
+
+case "x$ac_cv_prog_cc_stdc" in
+  x|xno)
+    echo "$as_me:$LINENO: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6 ;;
+  *)
+    echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+    CC="$CC $ac_cv_prog_cc_stdc" ;;
+esac
+
+# Some people use a C++ compiler to compile C.  Since we use `exit',
+# in C++ we need to declare it.  In case someone uses the same compiler
+# for both compiling C and C++ we need to have the C++ compiler decide
+# the declaration of exit, since it's the most demanding environment.
+cat >conftest.$ac_ext <<_ACEOF
+#ifndef __cplusplus
+  choke me
+#endif
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  for ac_declaration in \
+   ''\
+   '#include <stdlib.h>' \
+   'extern "C" void std::exit (int) throw (); using std::exit;' \
+   'extern "C" void std::exit (int); using std::exit;' \
+   'extern "C" void exit (int) throw ();' \
+   'extern "C" void exit (int);' \
+   'void exit (int);'
+do
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+  echo '#ifdef __cplusplus' >>confdefs.h
+  echo $ac_declaration      >>confdefs.h
+  echo '#endif'             >>confdefs.h
+fi
+
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+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"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+       @echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+   am__include=include
+   am__quote=
+   _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+      am__include=.include
+      am__quote="\""
+      _am_result=BSD
+   fi
+fi
+
+
+echo "$as_me:$LINENO: result: $_am_result" >&5
+echo "${ECHO_T}$_am_result" >&6
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking or --disable-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='\'
+fi
+
+
+if test "x$enable_dependency_tracking" != xno; then
+  AMDEP_TRUE=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
+fi
+
+
+
+
+depcc="$CC"   am_compiler_list=
+
+echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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'.
+  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
+  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
+      : > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    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
+      ;;
+    none) break ;;
+    esac
+    # 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.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} 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
+      # (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored.
+      if grep 'ignoring option' 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
+echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+echo "${ECHO_T}$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
+
+
+# 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"
+# ./install, which can be erroneously created by make from ./install.sh.
+echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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/* | \
+  /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_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
+            ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+            break 3
+          fi
+        fi
+      done
+    done
+    ;;
+esac
+done
+
+
+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.  We don't cache a
+    # path for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the path is relative.
+    INSTALL=$ac_install_sh
+  fi
+fi
+echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$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'
+
+echo "$as_me:$LINENO: checking whether ln -s works" >&5
+echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+  echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+echo "${ECHO_T}no, using $LN_S" >&6
+fi
+
+# Check whether --enable-shared or --disable-shared was given.
+if test "${enable_shared+set}" = set; then
+  enableval="$enable_shared"
+  p=${PACKAGE-default}
+case $enableval in
+yes) enable_shared=yes ;;
+no) enable_shared=no ;;
+*)
+  enable_shared=no
+  # Look at the argument we got.  We use all the common list separators.
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+  for pkg in $enableval; do
+    if test "X$pkg" = "X$p"; then
+      enable_shared=yes
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac
+else
+  enable_shared=yes
+fi;
+# Check whether --enable-static or --disable-static was given.
+if test "${enable_static+set}" = set; then
+  enableval="$enable_static"
+  p=${PACKAGE-default}
+case $enableval in
+yes) enable_static=yes ;;
+no) enable_static=no ;;
+*)
+  enable_static=no
+  # Look at the argument we got.  We use all the common list separators.
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+  for pkg in $enableval; do
+    if test "X$pkg" = "X$p"; then
+      enable_static=yes
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac
+else
+  enable_static=yes
+fi;
+# Check whether --enable-fast-install or --disable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then
+  enableval="$enable_fast_install"
+  p=${PACKAGE-default}
+case $enableval in
+yes) enable_fast_install=yes ;;
+no) enable_fast_install=no ;;
+*)
+  enable_fast_install=no
+  # Look at the argument we got.  We use all the common list separators.
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
+  for pkg in $enableval; do
+    if test "X$pkg" = "X$p"; then
+      enable_fast_install=yes
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac
+else
+  enable_fast_install=yes
+fi;
+# Make sure we can run config.sub.
+$ac_config_sub sun4 >/dev/null 2>&1 ||
+  { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
+echo "$as_me: error: cannot run $ac_config_sub" >&2;}
+   { (exit 1); exit 1; }; }
+
+echo "$as_me:$LINENO: checking build system type" >&5
+echo $ECHO_N "checking build system type... $ECHO_C" >&6
+if test "${ac_cv_build+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_build_alias=$build_alias
+test -z "$ac_cv_build_alias" &&
+  ac_cv_build_alias=`$ac_config_guess`
+test -z "$ac_cv_build_alias" &&
+  { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+   { (exit 1); exit 1; }; }
+ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
+  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+echo "${ECHO_T}$ac_cv_build" >&6
+build=$ac_cv_build
+build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+echo "$as_me:$LINENO: checking host system type" >&5
+echo $ECHO_N "checking host system type... $ECHO_C" >&6
+if test "${ac_cv_host+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_host_alias=$host_alias
+test -z "$ac_cv_host_alias" &&
+  ac_cv_host_alias=$ac_cv_build_alias
+ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
+  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+echo "${ECHO_T}$ac_cv_host" >&6
+host=$ac_cv_host
+host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+  withval="$with_gnu_ld"
+  test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi;
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  echo "$as_me:$LINENO: checking for ld used by GCC" >&5
+echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | [A-Za-z]:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the path of ld
+      ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+       ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+else
+  echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$LD"; then
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+  for ac_dir in $PATH; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
+       test "$with_gnu_ld" != no && break
+      else
+       test "$with_gnu_ld" != yes && break
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+   { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
+  lt_cv_prog_gnu_ld=yes
+else
+  lt_cv_prog_gnu_ld=no
+fi
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
+if test "${lt_cv_ld_reload_flag+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_ld_reload_flag='-r'
+fi
+echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6
+reload_flag=$lt_cv_ld_reload_flag
+test -n "$reload_flag" && reload_flag=" $reload_flag"
+
+echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
+echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
+if test "${lt_cv_path_NM+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+  for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
+    test -z "$ac_dir" && ac_dir=.
+    tmp_nm=$ac_dir/${ac_tool_prefix}nm
+    if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then
+      # Check to see if the nm accepts a BSD-compat flag.
+      # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+      #   nm: unknown option "B" ignored
+      # Tru64's nm complains that /dev/null is an invalid object file
+      if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then
+       lt_cv_path_NM="$tmp_nm -B"
+       break
+      elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+       lt_cv_path_NM="$tmp_nm -p"
+       break
+      else
+       lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+       continue # so that we can try to find one that supports BSD flags
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+  test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi
+fi
+
+NM="$lt_cv_path_NM"
+echo "$as_me:$LINENO: result: $NM" >&5
+echo "${ECHO_T}$NM" >&6
+
+echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5
+echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6
+if test "${lt_cv_deplibs_check_method+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [regex]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given egrep regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi4*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin* | mingw* |pw32*)
+  lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  case "$host_os" in
+  rhapsody* | darwin1.012)
+    lt_cv_file_magic_test_file='/System/Library/Frameworks/System.framework/System'
+    ;;
+  *) # Darwin 1.3 on
+    lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib'
+    ;;
+  esac
+  ;;
+
+freebsd* )
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20*|hpux11*)
+  lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libc.sl
+  ;;
+
+irix5* | irix6*)
+  case $host_os in
+  irix5*)
+    # this will be overridden with pass_all, but let us keep it just in case
+    lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
+    ;;
+  *)
+    case $LD in
+    *-32|*"-32 ") libmagic=32-bit;;
+    *-n32|*"-n32 ") libmagic=N32;;
+    *-64|*"-64 ") libmagic=64-bit;;
+    *) libmagic=never-match;;
+    esac
+    # this will be overridden with pass_all, but let us keep it just in case
+    lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1"
+    ;;
+  esac
+  lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*`
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux-gnu*)
+  case $host_cpu in
+  alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* )
+    lt_cv_deplibs_check_method=pass_all ;;
+  *)
+    # glibc up to 2.1.1 does not perform some relocations on ARM
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;;
+  esac
+  lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
+  ;;
+
+netbsd*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$'
+  fi
+  ;;
+
+newsos6)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+osf3* | osf4* | osf5*)
+  # this will be overridden with pass_all, but let us keep it just in case
+  lt_cv_deplibs_check_method='file_magic COFF format alpha shared library'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sco3.2v5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  lt_cv_file_magic_test_file=/lib/libc.so
+  ;;
+
+sysv5uw[78]* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  case $host_vendor in
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  esac
+  ;;
+esac
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+
+
+
+
+
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MAGIC_CMD in
+  /*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+  ?:/*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
+  ;;
+  *)
+  ac_save_MAGIC_CMD="$MAGIC_CMD"
+  IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="/usr/bin:$PATH"
+  for ac_dir in $ac_dummy; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/${ac_tool_prefix}file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+      if test -n "$file_magic_test_file"; then
+       case $deplibs_check_method in
+       "file_magic "*)
+         file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+           egrep "$file_magic_regex" > /dev/null; then
+           :
+         else
+           cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+         fi ;;
+       esac
+      fi
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  MAGIC_CMD="$ac_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    echo "$as_me:$LINENO: checking for file" >&5
+echo $ECHO_N "checking for file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MAGIC_CMD in
+  /*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+  ?:/*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
+  ;;
+  *)
+  ac_save_MAGIC_CMD="$MAGIC_CMD"
+  IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="/usr/bin:$PATH"
+  for ac_dir in $ac_dummy; do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/file"
+      if test -n "$file_magic_test_file"; then
+       case $deplibs_check_method in
+       "file_magic "*)
+         file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+           egrep "$file_magic_regex" > /dev/null; then
+           :
+         else
+           cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+         fi ;;
+       esac
+      fi
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  MAGIC_CMD="$ac_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  else
+    MAGIC_CMD=:
+  fi
+fi
+
+  fi
+  ;;
+esac
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  echo "$as_me:$LINENO: result: $RANLIB" >&5
+echo "${ECHO_T}$RANLIB" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+echo "${ECHO_T}$ac_ct_RANLIB" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  RANLIB=$ac_ct_RANLIB
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}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
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  STRIP=$ac_ct_STRIP
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+
+# Check for any special flags to pass to ltconfig.
+libtool_flags="--cache-file=$cache_file"
+test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared"
+test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static"
+test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install"
+test "$GCC" = yes && libtool_flags="$libtool_flags --with-gcc"
+test "$lt_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
+
+
+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+  enableval="$enable_libtool_lock"
+
+fi;
+test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock"
+test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
+
+
+# Check whether --with-pic or --without-pic was given.
+if test "${with_pic+set}" = set; then
+  withval="$with_pic"
+  pic_mode="$withval"
+else
+  pic_mode=default
+fi;
+test x"$pic_mode" = xyes && libtool_flags="$libtool_flags --prefer-pic"
+test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic"
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '#line 3698 "configure"' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -32"
+      ;;
+    *N32*)
+      LD="${LD-ld} -n32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -64"
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
+if test "${lt_cv_cc_needs_belf+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+     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
+
+     cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  lt_cv_cc_needs_belf=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+lt_cv_cc_needs_belf=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+     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
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+
+
+esac
+
+
+# Save cache, so that ltconfig can load it
+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, don't put newlines in cache variables' values.
+# 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.
+{
+  (set) 2>&1 |
+    case `(ac_space=' '; set | grep ac_space) 2>&1` in
+    *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 \
+        "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+} |
+  sed '
+     t clear
+     : clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     : end' >>confcache
+if diff $cache_file confcache >/dev/null 2>&1; then :; else
+  if test -w $cache_file; then
+    test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+    cat confcache >$cache_file
+  else
+    echo "not updating unwritable cache $cache_file"
+  fi
+fi
+rm -f confcache
+
+# Actually configure libtool.  ac_aux_dir is where install-sh is found.
+AR="$AR" LTCC="$CC" CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
+MAGIC_CMD="$MAGIC_CMD" LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
+LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" STRIP="$STRIP" \
+AS="$AS" DLLTOOL="$DLLTOOL" OBJDUMP="$OBJDUMP" \
+objext="$OBJEXT" exeext="$EXEEXT" reload_flag="$reload_flag" \
+deplibs_check_method="$deplibs_check_method" file_magic_cmd="$file_magic_cmd" \
+${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
+$libtool_flags --no-verify --build="$build" $ac_aux_dir/ltmain.sh $host \
+|| { { echo "$as_me:$LINENO: error: libtool configure failed" >&5
+echo "$as_me: error: libtool configure failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+# Reload cache, that may have been modified by ltconfig
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special
+  # files actually), so we avoid doing that.
+  if test -f "$cache_file"; then
+    { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . $cache_file;;
+      *)                      . ./$cache_file;;
+    esac
+  fi
+else
+  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh $ac_aux_dir/ltcf-c.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+# Redirect the config.log output again, so that the ltconfig log is not
+# clobbered by the next message.
+exec 5>>./config.log
+
+
+
+
+
+
+
+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
+echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if test "${ac_cv_prog_CPP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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 <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> 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 >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                     Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f 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
+echo "$as_me:$LINENO: result: $CPP" >&5
+echo "${ECHO_T}$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 <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> 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 >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                     Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+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
+
+
+echo "$as_me:$LINENO: checking for egrep" >&5
+echo $ECHO_N "checking for egrep... $ECHO_C" >&6
+if test "${ac_cv_prog_egrep+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+    then ac_cv_prog_egrep='grep -E'
+    else ac_cv_prog_egrep='egrep'
+    fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
+echo "${ECHO_T}$ac_cv_prog_egrep" >&6
+ EGREP=$ac_cv_prog_egrep
+
+
+echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_header_stdc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_header_stdc=no
+fi
+rm -f 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 >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <string.h>
+
+_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 >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_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 >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ctype.h>
+#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))
+      exit(2);
+  exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+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=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_Header=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+echo "$as_me:$LINENO: checking whether sys/types.h defines makedev" >&5
+echo $ECHO_N "checking whether sys/types.h defines makedev... $ECHO_C" >&6
+if test "${ac_cv_header_sys_types_h_makedev+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+int
+main ()
+{
+return makedev(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_header_sys_types_h_makedev=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_header_sys_types_h_makedev=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_sys_types_h_makedev" >&5
+echo "${ECHO_T}$ac_cv_header_sys_types_h_makedev" >&6
+
+if test $ac_cv_header_sys_types_h_makedev = no; then
+if test "${ac_cv_header_sys_mkdev_h+set}" = set; then
+  echo "$as_me:$LINENO: checking for sys/mkdev.h" >&5
+echo $ECHO_N "checking for sys/mkdev.h... $ECHO_C" >&6
+if test "${ac_cv_header_sys_mkdev_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_sys_mkdev_h" >&5
+echo "${ECHO_T}$ac_cv_header_sys_mkdev_h" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking sys/mkdev.h usability" >&5
+echo $ECHO_N "checking sys/mkdev.h usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <sys/mkdev.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking sys/mkdev.h presence" >&5
+echo $ECHO_N "checking sys/mkdev.h presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/mkdev.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc in
+  yes:no )
+    { echo "$as_me:$LINENO: WARNING: sys/mkdev.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: sys/mkdev.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: sys/mkdev.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: sys/mkdev.h: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+  no:yes )
+    { echo "$as_me:$LINENO: WARNING: sys/mkdev.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: sys/mkdev.h: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: sys/mkdev.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: sys/mkdev.h: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: sys/mkdev.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: sys/mkdev.h: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for sys/mkdev.h" >&5
+echo $ECHO_N "checking for sys/mkdev.h... $ECHO_C" >&6
+if test "${ac_cv_header_sys_mkdev_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_header_sys_mkdev_h=$ac_header_preproc
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_sys_mkdev_h" >&5
+echo "${ECHO_T}$ac_cv_header_sys_mkdev_h" >&6
+
+fi
+if test $ac_cv_header_sys_mkdev_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define MAJOR_IN_MKDEV 1
+_ACEOF
+
+fi
+
+
+
+  if test $ac_cv_header_sys_mkdev_h = no; then
+    if test "${ac_cv_header_sys_sysmacros_h+set}" = set; then
+  echo "$as_me:$LINENO: checking for sys/sysmacros.h" >&5
+echo $ECHO_N "checking for sys/sysmacros.h... $ECHO_C" >&6
+if test "${ac_cv_header_sys_sysmacros_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_sys_sysmacros_h" >&5
+echo "${ECHO_T}$ac_cv_header_sys_sysmacros_h" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking sys/sysmacros.h usability" >&5
+echo $ECHO_N "checking sys/sysmacros.h usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <sys/sysmacros.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking sys/sysmacros.h presence" >&5
+echo $ECHO_N "checking sys/sysmacros.h presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/sysmacros.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc in
+  yes:no )
+    { echo "$as_me:$LINENO: WARNING: sys/sysmacros.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: sys/sysmacros.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: sys/sysmacros.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: sys/sysmacros.h: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+  no:yes )
+    { echo "$as_me:$LINENO: WARNING: sys/sysmacros.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: sys/sysmacros.h: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: sys/sysmacros.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: sys/sysmacros.h: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: sys/sysmacros.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: sys/sysmacros.h: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for sys/sysmacros.h" >&5
+echo $ECHO_N "checking for sys/sysmacros.h... $ECHO_C" >&6
+if test "${ac_cv_header_sys_sysmacros_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_header_sys_sysmacros_h=$ac_header_preproc
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_sys_sysmacros_h" >&5
+echo "${ECHO_T}$ac_cv_header_sys_sysmacros_h" >&6
+
+fi
+if test $ac_cv_header_sys_sysmacros_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define MAJOR_IN_SYSMACROS 1
+_ACEOF
+
+fi
+
+
+  fi
+fi
+
+echo "$as_me:$LINENO: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo $ECHO_N "checking for sys/wait.h that is POSIX.1 compatible... $ECHO_C" >&6
+if test "${ac_cv_header_sys_wait_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <sys/wait.h>
+#ifndef WEXITSTATUS
+# define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
+#endif
+#ifndef WIFEXITED
+# define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
+#endif
+
+int
+main ()
+{
+  int s;
+  wait (&s);
+  s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_header_sys_wait_h=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_header_sys_wait_h=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5
+echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6
+if test $ac_cv_header_sys_wait_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_SYS_WAIT_H 1
+_ACEOF
+
+fi
+
+
+for ac_header in stdint.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc in
+  yes:no )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+  no:yes )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+for ac_header in fcntl.h locale.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc in
+  yes:no )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+  no:yes )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+for ac_header in sys/mman.h sys/stat.h sys/types.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc in
+  yes:no )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+  no:yes )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+for ac_header in stdint.h inttypes.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc in
+  yes:no )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+  no:yes )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc in
+  yes:no )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+  no:yes )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in getopt.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc in
+  yes:no )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+  no:yes )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in locale.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc in
+  yes:no )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+  no:yes )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in utime.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc in
+  yes:no )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+  no:yes )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in sys/utime.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc in
+  yes:no )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+  no:yes )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in wchar.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc in
+  yes:no )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+  no:yes )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
+echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
+if test "${ac_cv_c_const+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+/* FIXME: Include the comments suggested by Paul. */
+#ifndef __cplusplus
+  /* Ultrix mips cc rejects this.  */
+  typedef int charset[2];
+  const charset x;
+  /* SunOS 4.1.1 cc rejects this.  */
+  char const *const *ccp;
+  char **p;
+  /* NEC SVR4.0.2 mips cc rejects this.  */
+  struct point {int x, y;};
+  static struct point const zero = {0,0};
+  /* AIX XL C 1.02.0.0 rejects this.
+     It does not let you subtract one const X* pointer from another in
+     an arm of an if-expression whose if-part is not a constant
+     expression */
+  const char *g = "string";
+  ccp = &g + (g ? g-g : 0);
+  /* HPUX 7.0 cc rejects these. */
+  ++ccp;
+  p = (char**) ccp;
+  ccp = (char const *const *) p;
+  { /* SCO 3.2v4 cc rejects this.  */
+    char *t;
+    char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+    *t++ = 0;
+  }
+  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
+    int x[] = {25, 17};
+    const int *foo = &x[0];
+    ++foo;
+  }
+  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+    typedef const int *iptr;
+    iptr p = 0;
+    ++p;
+  }
+  { /* AIX XL C 1.02.0.0 rejects this saying
+       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+    struct s { int j; const int *ap[3]; };
+    struct s *b; b->j = 5;
+  }
+  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+    const int foo = 10;
+  }
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_c_const=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_c_const=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
+echo "${ECHO_T}$ac_cv_c_const" >&6
+if test $ac_cv_c_const = no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define const
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for off_t" >&5
+echo $ECHO_N "checking for off_t... $ECHO_C" >&6
+if test "${ac_cv_type_off_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+if ((off_t *) 0)
+  return 0;
+if (sizeof (off_t))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_type_off_t=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_off_t=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
+echo "${ECHO_T}$ac_cv_type_off_t" >&6
+if test $ac_cv_type_off_t = yes; then
+  :
+else
+
+cat >>confdefs.h <<_ACEOF
+#define off_t long
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for size_t" >&5
+echo $ECHO_N "checking for size_t... $ECHO_C" >&6
+if test "${ac_cv_type_size_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+if ((size_t *) 0)
+  return 0;
+if (sizeof (size_t))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_type_size_t=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_size_t=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
+echo "${ECHO_T}$ac_cv_type_size_t" >&6
+if test $ac_cv_type_size_t = yes; then
+  :
+else
+
+cat >>confdefs.h <<_ACEOF
+#define size_t unsigned
+_ACEOF
+
+fi
+
+
+echo "$as_me:$LINENO: checking for struct stat.st_rdev" >&5
+echo $ECHO_N "checking for struct stat.st_rdev... $ECHO_C" >&6
+if test "${ac_cv_member_struct_stat_st_rdev+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static struct stat ac_aggr;
+if (ac_aggr.st_rdev)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_member_struct_stat_st_rdev=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static struct stat ac_aggr;
+if (sizeof ac_aggr.st_rdev)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_member_struct_stat_st_rdev=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_member_struct_stat_st_rdev=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_rdev" >&5
+echo "${ECHO_T}$ac_cv_member_struct_stat_st_rdev" >&6
+if test $ac_cv_member_struct_stat_st_rdev = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_RDEV 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ST_RDEV 1
+_ACEOF
+
+fi
+
+
+echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5
+echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6
+if test "${ac_cv_struct_tm+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <time.h>
+
+int
+main ()
+{
+struct tm *tp; tp->tm_sec;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_struct_tm=time.h
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_struct_tm=sys/time.h
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5
+echo "${ECHO_T}$ac_cv_struct_tm" >&6
+if test $ac_cv_struct_tm = sys/time.h; then
+
+cat >>confdefs.h <<\_ACEOF
+#define TM_IN_SYS_TIME 1
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for tm_zone in struct tm" >&5
+echo $ECHO_N "checking for tm_zone in struct tm... $ECHO_C" >&6
+if test "${ac_cv_struct_tm_zone+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <$ac_cv_struct_tm>
+int
+main ()
+{
+struct tm tm; tm.tm_zone;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_struct_tm_zone=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_struct_tm_zone=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_struct_tm_zone" >&5
+echo "${ECHO_T}$ac_cv_struct_tm_zone" >&6
+if test "$ac_cv_struct_tm_zone" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_TM_ZONE 1
+_ACEOF
+
+fi
+echo "$as_me:$LINENO: checking for tzname" >&5
+echo $ECHO_N "checking for tzname... $ECHO_C" >&6
+if test "${ac_cv_var_tzname+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <time.h>
+#ifndef tzname /* For SGI.  */
+extern char *tzname[]; /* RS6000 and others reject char **tzname.  */
+#endif
+int
+main ()
+{
+atoi(*tzname);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_var_tzname=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_var_tzname=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_var_tzname" >&5
+echo "${ECHO_T}$ac_cv_var_tzname" >&6
+  if test $ac_cv_var_tzname = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_TZNAME 1
+_ACEOF
+
+  fi
+
+echo "$as_me:$LINENO: checking for tm_isdst in struct tm" >&5
+echo $ECHO_N "checking for tm_isdst in struct tm... $ECHO_C" >&6
+if test "${ac_cv_struct_tm_isdst+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <$ac_cv_struct_tm>
+int
+main ()
+{
+struct tm tm; tm.tm_isdst;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_struct_tm_isdst=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_struct_tm_isdst=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_struct_tm_isdst" >&5
+echo "${ECHO_T}$ac_cv_struct_tm_isdst" >&6
+if test "$ac_cv_struct_tm_isdst" = yes; then
+  cat >>confdefs.h <<\_ACEOF
+#define HAVE_TM_ISDST 1
+_ACEOF
+
+fi
+echo "$as_me:$LINENO: checking for daylight" >&5
+echo $ECHO_N "checking for daylight... $ECHO_C" >&6
+if test "${ac_cv_var_daylight+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <time.h>
+#ifndef daylight /* In case IRIX #defines this, too  */
+extern int daylight;
+#endif
+int
+main ()
+{
+atoi(daylight);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_var_daylight=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_var_daylight=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_var_daylight" >&5
+echo "${ECHO_T}$ac_cv_var_daylight" >&6
+  if test $ac_cv_var_daylight = yes; then
+    cat >>confdefs.h <<\_ACEOF
+#define HAVE_DAYLIGHT 1
+_ACEOF
+
+  fi
+
+
+   # Check whether --enable-largefile or --disable-largefile was given.
+if test "${enable_largefile+set}" = set; then
+  enableval="$enable_largefile"
+
+fi;
+   if test "$enable_largefile" != no; then
+
+     echo "$as_me:$LINENO: checking for special C compiler options needed for large files=
+" >&5
+echo $ECHO_N "checking for special C compiler options needed for large files=
+... $ECHO_C" >&6
+if test "${ac_cv_sys_largefile_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_sys_largefile_CC=no
+        if test "$GCC" != yes; then
+         # IRIX 6.2 and later do not support large files by default,
+         # so use the C compiler's -n32 option if that helps.
+         cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+    /* Check that off_t can represent 2**63 - 1 correctly.
+       We can't simply "#define LARGE_OFF_T 9223372036854775807",
+       since some C++ compilers masquerading as C compilers
+       incorrectly reject 9223372036854775807.  */
+#   define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+    int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                       && LARGE_OFF_T % 2147483647 == 1)
+                      ? 1 : -1];
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_save_CC="$CC"
+            CC="$CC -n32"
+            cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+    /* Check that off_t can represent 2**63 - 1 correctly.
+       We can't simply "#define LARGE_OFF_T 9223372036854775807",
+       since some C++ compilers masquerading as C compilers
+       incorrectly reject 9223372036854775807.  */
+#   define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+    int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                       && LARGE_OFF_T % 2147483647 == 1)
+                      ? 1 : -1];
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sys_largefile_CC=' -n32'
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+            CC="$ac_save_CC"
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+        fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5
+echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6
+     if test "$ac_cv_sys_largefile_CC" != no; then
+       CC="$CC$ac_cv_sys_largefile_CC"
+     fi
+
+     echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6
+if test "${ac_cv_sys_file_offset_bits+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_sys_file_offset_bits=no
+      cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+    /* Check that off_t can represent 2**63 - 1 correctly.
+       We can't simply "#define LARGE_OFF_T 9223372036854775807",
+       since some C++ compilers masquerading as C compilers
+       incorrectly reject 9223372036854775807.  */
+#   define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+    int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                       && LARGE_OFF_T % 2147483647 == 1)
+                      ? 1 : -1];
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#define _FILE_OFFSET_BITS 64
+#include <sys/types.h>
+    /* Check that off_t can represent 2**63 - 1 correctly.
+       We can't simply "#define LARGE_OFF_T 9223372036854775807",
+       since some C++ compilers masquerading as C compilers
+       incorrectly reject 9223372036854775807.  */
+#   define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+    int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                       && LARGE_OFF_T % 2147483647 == 1)
+                      ? 1 : -1];
+
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sys_file_offset_bits=64
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5
+echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6
+   if test "$ac_cv_sys_file_offset_bits" != no; then
+
+cat >>confdefs.h <<_ACEOF
+#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+_ACEOF
+
+   fi
+     echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5
+echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6
+if test "${ac_cv_sys_large_files+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_sys_large_files=no
+      cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+    /* Check that off_t can represent 2**63 - 1 correctly.
+       We can't simply "#define LARGE_OFF_T 9223372036854775807",
+       since some C++ compilers masquerading as C compilers
+       incorrectly reject 9223372036854775807.  */
+#   define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+    int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                       && LARGE_OFF_T % 2147483647 == 1)
+                      ? 1 : -1];
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#define _LARGE_FILES 1
+#include <sys/types.h>
+    /* Check that off_t can represent 2**63 - 1 correctly.
+       We can't simply "#define LARGE_OFF_T 9223372036854775807",
+       since some C++ compilers masquerading as C compilers
+       incorrectly reject 9223372036854775807.  */
+#   define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+    int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                       && LARGE_OFF_T % 2147483647 == 1)
+                      ? 1 : -1];
+
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sys_large_files=1
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5
+echo "${ECHO_T}$ac_cv_sys_large_files" >&6
+   if test "$ac_cv_sys_large_files" != no; then
+
+cat >>confdefs.h <<_ACEOF
+#define _LARGE_FILES $ac_cv_sys_large_files
+_ACEOF
+
+   fi
+   fi
+
+
+
+for ac_header in stdlib.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc in
+  yes:no )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+  no:yes )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+   echo "$as_me:$LINENO: checking for mbstate_t" >&5
+echo $ECHO_N "checking for mbstate_t... $ECHO_C" >&6
+if test "${ac_cv_type_mbstate_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#if HAVE_STDLIB_H
+# include <stdlib.h>
+#endif
+#include <wchar.h>
+int
+main ()
+{
+mbstate_t x; return sizeof x;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_type_mbstate_t=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_mbstate_t=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_mbstate_t" >&5
+echo "${ECHO_T}$ac_cv_type_mbstate_t" >&6
+   if test $ac_cv_type_mbstate_t = no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define mbstate_t int
+_ACEOF
+
+   fi
+
+echo "$as_me:$LINENO: checking for uint8_t" >&5
+echo $ECHO_N "checking for uint8_t... $ECHO_C" >&6
+if test "${ac_cv_type_uint8_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "(^|[^a-zA-Z_0-9])uint8_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+  ac_cv_type_uint8_t=yes
+else
+  ac_cv_type_uint8_t=no
+fi
+rm -f conftest*
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_uint8_t" >&5
+echo "${ECHO_T}$ac_cv_type_uint8_t" >&6
+if test $ac_cv_type_uint8_t = no; then
+  cat >>confdefs.h <<\_ACEOF
+#define uint8_t unsigned char
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for uint16_t" >&5
+echo $ECHO_N "checking for uint16_t... $ECHO_C" >&6
+if test "${ac_cv_type_uint16_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "(^|[^a-zA-Z_0-9])uint16_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+  ac_cv_type_uint16_t=yes
+else
+  ac_cv_type_uint16_t=no
+fi
+rm -f conftest*
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_uint16_t" >&5
+echo "${ECHO_T}$ac_cv_type_uint16_t" >&6
+if test $ac_cv_type_uint16_t = no; then
+  cat >>confdefs.h <<\_ACEOF
+#define uint16_t unsigned short
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for uint32_t" >&5
+echo $ECHO_N "checking for uint32_t... $ECHO_C" >&6
+if test "${ac_cv_type_uint32_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "(^|[^a-zA-Z_0-9])uint32_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+  ac_cv_type_uint32_t=yes
+else
+  ac_cv_type_uint32_t=no
+fi
+rm -f conftest*
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_uint32_t" >&5
+echo "${ECHO_T}$ac_cv_type_uint32_t" >&6
+if test $ac_cv_type_uint32_t = no; then
+  cat >>confdefs.h <<\_ACEOF
+#define uint32_t unsigned int
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for int32_t" >&5
+echo $ECHO_N "checking for int32_t... $ECHO_C" >&6
+if test "${ac_cv_type_int32_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "(^|[^a-zA-Z_0-9])int32_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+  ac_cv_type_int32_t=yes
+else
+  ac_cv_type_int32_t=no
+fi
+rm -f conftest*
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_int32_t" >&5
+echo "${ECHO_T}$ac_cv_type_int32_t" >&6
+if test $ac_cv_type_int32_t = no; then
+  cat >>confdefs.h <<\_ACEOF
+#define int32_t int
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for long long" >&5
+echo $ECHO_N "checking for long long... $ECHO_C" >&6
+if test "${ac_cv_c_long_long+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$GCC" = yes; then
+  ac_cv_c_long_long=yes
+else
+if test "$cross_compiling" = yes; then
+  { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+int main() {
+long long foo = 0;
+exit(sizeof(long long) < sizeof(long)); }
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_c_long_long=yes
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_c_long_long=no
+fi
+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_long_long" >&5
+echo "${ECHO_T}$ac_cv_c_long_long" >&6
+if test $ac_cv_c_long_long = yes; then
+  cat >>confdefs.h <<\_ACEOF
+#define HAVE_LONG_LONG 1
+_ACEOF
+
+fi
+
+if test $ac_cv_c_long_long = yes; then
+  long64='unsigned long long';
+else
+  long64='unsigned long';
+fi
+echo "$as_me:$LINENO: checking for uint64_t" >&5
+echo $ECHO_N "checking for uint64_t... $ECHO_C" >&6
+if test "${ac_cv_type_uint64_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "(^|[^a-zA-Z_0-9])uint64_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+  eval "ac_cv_type_uint64_t=yes"
+else
+  eval "ac_cv_type_uint64_t=no"
+fi
+rm -f conftest*
+
+fi
+if eval "test \"`echo '$ac_cv_type_'uint64_t`\" = yes"; then
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+  cat >>confdefs.h <<_ACEOF
+#define uint64_t $long64
+_ACEOF
+
+fi
+
+
+echo "$as_me:$LINENO: checking size of uint8_t" >&5
+echo $ECHO_N "checking size of uint8_t... $ECHO_C" >&6
+if test "${ac_cv_sizeof_uint8_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$cross_compiling" = yes; then
+  ac_cv_sizeof_uint8_t=0
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#include <sys/types.h>
+#ifdef STDC_HEADERS
+#include <stdlib.h>
+#endif
+
+#include <stdio.h>
+main()
+{
+  FILE *f=fopen("conftestval", "w");
+  if (!f) exit(1);
+  fprintf(f, "%d\n", sizeof(uint8_t));
+  exit(0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sizeof_uint8_t=`cat conftestval`
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_sizeof_uint8_t=0
+fi
+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_uint8_t" >&5
+echo "${ECHO_T}$ac_cv_sizeof_uint8_t" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_UINT8_T $ac_cv_sizeof_uint8_t
+_ACEOF
+
+
+
+echo "$as_me:$LINENO: checking size of uint16_t" >&5
+echo $ECHO_N "checking size of uint16_t... $ECHO_C" >&6
+if test "${ac_cv_sizeof_uint16_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$cross_compiling" = yes; then
+  ac_cv_sizeof_uint16_t=0
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#include <sys/types.h>
+#ifdef STDC_HEADERS
+#include <stdlib.h>
+#endif
+
+#include <stdio.h>
+main()
+{
+  FILE *f=fopen("conftestval", "w");
+  if (!f) exit(1);
+  fprintf(f, "%d\n", sizeof(uint16_t));
+  exit(0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sizeof_uint16_t=`cat conftestval`
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_sizeof_uint16_t=0
+fi
+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_uint16_t" >&5
+echo "${ECHO_T}$ac_cv_sizeof_uint16_t" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_UINT16_T $ac_cv_sizeof_uint16_t
+_ACEOF
+
+
+
+echo "$as_me:$LINENO: checking size of uint32_t" >&5
+echo $ECHO_N "checking size of uint32_t... $ECHO_C" >&6
+if test "${ac_cv_sizeof_uint32_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$cross_compiling" = yes; then
+  ac_cv_sizeof_uint32_t=0
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#include <sys/types.h>
+#ifdef STDC_HEADERS
+#include <stdlib.h>
+#endif
+
+#include <stdio.h>
+main()
+{
+  FILE *f=fopen("conftestval", "w");
+  if (!f) exit(1);
+  fprintf(f, "%d\n", sizeof(uint32_t));
+  exit(0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sizeof_uint32_t=`cat conftestval`
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_sizeof_uint32_t=0
+fi
+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_uint32_t" >&5
+echo "${ECHO_T}$ac_cv_sizeof_uint32_t" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_UINT32_T $ac_cv_sizeof_uint32_t
+_ACEOF
+
+
+
+echo "$as_me:$LINENO: checking size of uint64_t" >&5
+echo $ECHO_N "checking size of uint64_t... $ECHO_C" >&6
+if test "${ac_cv_sizeof_uint64_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$cross_compiling" = yes; then
+  ac_cv_sizeof_uint64_t=0
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#include <sys/types.h>
+#ifdef STDC_HEADERS
+#include <stdlib.h>
+#endif
+
+#include <stdio.h>
+main()
+{
+  FILE *f=fopen("conftestval", "w");
+  if (!f) exit(1);
+  fprintf(f, "%d\n", sizeof(uint64_t));
+  exit(0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sizeof_uint64_t=`cat conftestval`
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_sizeof_uint64_t=0
+fi
+rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_uint64_t" >&5
+echo "${ECHO_T}$ac_cv_sizeof_uint64_t" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_UINT64_T $ac_cv_sizeof_uint64_t
+_ACEOF
+
+
+
+
+
+
+
+
+
+
+
+for ac_func in mmap strerror strtoul mkstemp getopt_long utimes utime
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+/* 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_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+echo "$as_me:$LINENO: checking for gzopen in -lz" >&5
+echo $ECHO_N "checking for gzopen in -lz... $ECHO_C" >&6
+if test "${ac_cv_lib_z_gzopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lz  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char gzopen ();
+int
+main ()
+{
+gzopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_z_gzopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_z_gzopen=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_z_gzopen" >&5
+echo "${ECHO_T}$ac_cv_lib_z_gzopen" >&6
+if test $ac_cv_lib_z_gzopen = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBZ 1
+_ACEOF
+
+  LIBS="-lz $LIBS"
+
+fi
+
+
+                                        ac_config_files="$ac_config_files Makefile src/Makefile magic/Makefile doc/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, don't put newlines in cache variables' values.
+# 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.
+{
+  (set) 2>&1 |
+    case `(ac_space=' '; set | grep ac_space) 2>&1` in
+    *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 \
+        "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+} |
+  sed '
+     t clear
+     : clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     : end' >>confcache
+if diff $cache_file confcache >/dev/null 2>&1; then :; else
+  if test -w $cache_file; then
+    test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+    cat confcache >$cache_file
+  else
+    echo "not updating unwritable cache $cache_file"
+  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}'
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ 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[        ]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[   ]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[     ]*$//;
+}'
+fi
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_i=`echo "$ac_i" |
+         sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+  # 2. Add them.
+  ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+  ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${FSECT5_TRUE}" && test -z "${FSECT5_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"FSECT5\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"FSECT5\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $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}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+
+# Support unset when possible.
+if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; 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
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)$' \| \
+        .     : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+         /^X\/\(\/\/\)$/{ s//\1/; q; }
+         /^X\/\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# 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
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
+  # Find who we are.  Look in the path if we contain no path at all
+  # relative or not.
+  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
+
+       ;;
+  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
+    { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+  case $CONFIG_SHELL in
+  '')
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for as_base in sh bash ksh sh5; do
+        case $as_dir in
+        /*)
+          if ("$as_dir/$as_base" -c '
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
+            $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+            $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+            CONFIG_SHELL=$as_dir/$as_base
+            export CONFIG_SHELL
+            exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+          fi;;
+        esac
+       done
+done
+;;
+  esac
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line before each line; the second 'sed' does the real
+  # work.  The second script uses 'N' to pair each line-number line
+  # with the numbered line, and appends trailing '-' during
+  # substitution so that $LINENO is not a special case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
+  sed '=' <$as_myself |
+    sed '
+      N
+      s,$,-,
+      : loop
+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+      t loop
+      s,-$,,
+      s,^['$as_cr_digits']*\n,,
+    ' >$as_me.lineno &&
+  chmod +x $as_me.lineno ||
+    { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
+   { (exit 1); exit 1; }; }
+
+  # 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 sensible to this).
+  . ./$as_me.lineno
+  # Exit status is that of the last command.
+  exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T='     ' ;;
+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="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="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS="  $as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+exec 6>&1
+
+# Open the log real soon, to keep \$[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.  Logging --version etc. is OK.
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+cat >&5 <<_CSEOF
+
+This file was extended by $as_me, which was
+generated by GNU Autoconf 2.57.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+_CSEOF
+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+echo >&5
+_ACEOF
+
+# Files that config.status was made for.
+if test -n "$ac_config_files"; then
+  echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_headers"; then
+  echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_links"; then
+  echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_commands"; then
+  echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number, then exit
+  -q, --quiet      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 <bug-autoconf@gnu.org>."
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+config.status
+configured by $0, generated by GNU Autoconf 2.57,
+  with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=$srcdir
+INSTALL="$INSTALL"
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value.  By we need to know if files were specified by the user.
+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=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  *) # This is not an option, so the user has probably given explicit
+     # arguments.
+     ac_option=$1
+     ac_need_defaults=false;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --vers* | -V )
+    echo "$ac_cs_version"; exit 0 ;;
+  --he | --h)
+    # Conflict between --help and --header
+    { { echo "$as_me:$LINENO: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; };;
+  --help | --hel | -h )
+    echo "$ac_cs_usage"; exit 0 ;;
+  --debug | --d* | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+    ac_need_defaults=false;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; } ;;
+
+  *) ac_config_targets="$ac_config_targets $1" ;;
+
+  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
+if \$ac_cs_recheck; then
+  echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+  exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+fi
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+#
+# INIT-COMMANDS section.
+#
+
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+_ACEOF
+
+
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_config_target in $ac_config_targets
+do
+  case "$ac_config_target" in
+  # Handling of arguments.
+  "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+  "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+  "magic/Makefile" ) CONFIG_FILES="$CONFIG_FILES magic/Makefile" ;;
+  "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
+  "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+  "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+   { (exit 1); exit 1; }; };;
+  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 to put it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+  trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=./confstat$$-$RANDOM
+  (umask 077 && mkdir $tmp)
+} ||
+{
+   echo "$me: cannot create a temporary directory in ." >&2
+   { (exit 1); exit 1; }
+}
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "\$CONFIG_FILES"; then
+  # Protect against being on the right side of a sed subst in config.status.
+  sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+   s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+s,@SHELL@,$SHELL,;t t
+s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
+s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
+s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+s,@exec_prefix@,$exec_prefix,;t t
+s,@prefix@,$prefix,;t t
+s,@program_transform_name@,$program_transform_name,;t t
+s,@bindir@,$bindir,;t t
+s,@sbindir@,$sbindir,;t t
+s,@libexecdir@,$libexecdir,;t t
+s,@datadir@,$datadir,;t t
+s,@sysconfdir@,$sysconfdir,;t t
+s,@sharedstatedir@,$sharedstatedir,;t t
+s,@localstatedir@,$localstatedir,;t t
+s,@libdir@,$libdir,;t t
+s,@includedir@,$includedir,;t t
+s,@oldincludedir@,$oldincludedir,;t t
+s,@infodir@,$infodir,;t t
+s,@mandir@,$mandir,;t t
+s,@build_alias@,$build_alias,;t t
+s,@host_alias@,$host_alias,;t t
+s,@target_alias@,$target_alias,;t t
+s,@DEFS@,$DEFS,;t t
+s,@ECHO_C@,$ECHO_C,;t t
+s,@ECHO_N@,$ECHO_N,;t t
+s,@ECHO_T@,$ECHO_T,;t t
+s,@LIBS@,$LIBS,;t t
+s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+s,@INSTALL_DATA@,$INSTALL_DATA,;t t
+s,@CYGPATH_W@,$CYGPATH_W,;t t
+s,@PACKAGE@,$PACKAGE,;t t
+s,@VERSION@,$VERSION,;t t
+s,@ACLOCAL@,$ACLOCAL,;t t
+s,@AUTOCONF@,$AUTOCONF,;t t
+s,@AUTOMAKE@,$AUTOMAKE,;t t
+s,@AUTOHEADER@,$AUTOHEADER,;t t
+s,@MAKEINFO@,$MAKEINFO,;t t
+s,@AMTAR@,$AMTAR,;t t
+s,@install_sh@,$install_sh,;t t
+s,@STRIP@,$STRIP,;t t
+s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
+s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
+s,@AWK@,$AWK,;t t
+s,@SET_MAKE@,$SET_MAKE,;t t
+s,@am__leading_dot@,$am__leading_dot,;t t
+s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
+s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
+s,@MAINT@,$MAINT,;t t
+s,@fsect@,$fsect,;t t
+s,@FSECT5_TRUE@,$FSECT5_TRUE,;t t
+s,@FSECT5_FALSE@,$FSECT5_FALSE,;t t
+s,@CC@,$CC,;t t
+s,@CFLAGS@,$CFLAGS,;t t
+s,@LDFLAGS@,$LDFLAGS,;t t
+s,@CPPFLAGS@,$CPPFLAGS,;t t
+s,@ac_ct_CC@,$ac_ct_CC,;t t
+s,@EXEEXT@,$EXEEXT,;t t
+s,@OBJEXT@,$OBJEXT,;t t
+s,@DEPDIR@,$DEPDIR,;t t
+s,@am__include@,$am__include,;t t
+s,@am__quote@,$am__quote,;t t
+s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t
+s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t
+s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t
+s,@CCDEPMODE@,$CCDEPMODE,;t t
+s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t
+s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t
+s,@LN_S@,$LN_S,;t t
+s,@build@,$build,;t t
+s,@build_cpu@,$build_cpu,;t t
+s,@build_vendor@,$build_vendor,;t t
+s,@build_os@,$build_os,;t t
+s,@host@,$host,;t t
+s,@host_cpu@,$host_cpu,;t t
+s,@host_vendor@,$host_vendor,;t t
+s,@host_os@,$host_os,;t t
+s,@RANLIB@,$RANLIB,;t t
+s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+s,@LIBTOOL@,$LIBTOOL,;t t
+s,@CPP@,$CPP,;t t
+s,@EGREP@,$EGREP,;t t
+s,@LIBOBJS@,$LIBOBJS,;t t
+s,@LTLIBOBJS@,$LTLIBOBJS,;t t
+CEOF
+
+_ACEOF
+
+  cat >>$CONFIG_STATUS <<\_ACEOF
+  # Split the substitutions into bite-sized pieces for seds with
+  # small command number limits, like on Digital OSF/1 and HP-UX.
+  ac_max_sed_lines=48
+  ac_sed_frag=1 # Number of current file.
+  ac_beg=1 # First line for current file.
+  ac_end=$ac_max_sed_lines # Line after last line for current file.
+  ac_more_lines=:
+  ac_sed_cmds=
+  while $ac_more_lines; do
+    if test $ac_beg -gt 1; then
+      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    else
+      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    fi
+    if test ! -s $tmp/subs.frag; then
+      ac_more_lines=false
+    else
+      # The purpose of the label and of the branching condition is to
+      # speed up the sed processing (if there are no `@' at all, there
+      # is no need to browse any of the substitutions).
+      # These are the two extra sed commands mentioned above.
+      (echo ':t
+  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+      if test -z "$ac_sed_cmds"; then
+       ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+      else
+       ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+      fi
+      ac_sed_frag=`expr $ac_sed_frag + 1`
+      ac_beg=$ac_end
+      ac_end=`expr $ac_end + $ac_max_sed_lines`
+    fi
+  done
+  if test -z "$ac_sed_cmds"; then
+    ac_sed_cmds=cat
+  fi
+fi # test -n "$CONFIG_FILES"
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+        cat >$tmp/stdin
+        ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
+  esac
+
+  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+  ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$ac_file" : 'X\(//\)[^/]' \| \
+         X"$ac_file" : 'X\(//\)$' \| \
+         X"$ac_file" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+         /^X\(\/\/\)$/{ s//\1/; q; }
+         /^X\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
+  { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$as_dir" : 'X\(//\)[^/]' \| \
+         X"$as_dir" : 'X\(//\)$' \| \
+         X"$as_dir" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+         /^X\(\/\/\)$/{ s//\1/; q; }
+         /^X\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+  ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
+# absolute.
+ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
+ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
+ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
+ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
+
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
+  esac
+
+  if test x"$ac_file" != x-; then
+    { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+    rm -f "$ac_file"
+  fi
+  # 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.  */
+  if test x"$ac_file" = x-; then
+    configure_input=
+  else
+    configure_input="$ac_file.  "
+  fi
+  configure_input=$configure_input"Generated from `echo $ac_file_in |
+                                     sed 's,.*/,,'` by configure."
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+         # Absolute (can't be DOS-style, as IFS=:)
+         test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         echo $f;;
+      *) # Relative
+         if test -f "$f"; then
+           # Build tree
+           echo $f
+         elif test -f "$srcdir/$f"; then
+           # Source tree
+           echo $srcdir/$f
+         else
+           # /dev/null tree
+           { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+  sed "$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s,@configure_input@,$configure_input,;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,@top_builddir@,$ac_top_builddir,;t t
+s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+s,@INSTALL@,$ac_INSTALL,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+  rm -f $tmp/stdin
+  if test x"$ac_file" != x-; then
+    mv $tmp/out $ac_file
+  else
+    cat $tmp/out
+    rm -f $tmp/out
+  fi
+
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_HEADER section.
+#
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s,^\([  ]*\)#\([        ]*define[       ][      ]*\)'
+ac_dB='[       ].*$,\1#\2'
+ac_dC=' '
+ac_dD=',;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_uA='s,^\([  ]*\)#\([        ]*\)undef\([    ][      ]*\)'
+ac_uB='$,\1#\2define\3'
+ac_uC=' '
+ac_uD=',;t'
+
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+        cat >$tmp/stdin
+        ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
+  esac
+
+  test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+         # Absolute (can't be DOS-style, as IFS=:)
+         test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         echo $f;;
+      *) # Relative
+         if test -f "$f"; then
+           # Build tree
+           echo $f
+         elif test -f "$srcdir/$f"; then
+           # Source tree
+           echo $srcdir/$f
+         else
+           # /dev/null tree
+           { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+         fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+  # Remove the trailing spaces.
+  sed 's/[     ]*$//' $ac_file_inputs >$tmp/in
+
+_ACEOF
+
+# Transform confdefs.h into two sed scripts, `conftest.defines' and
+# `conftest.undefs', that substitutes the proper values into
+# config.h.in to produce config.h.  The first handles `#define'
+# templates, and the second `#undef' templates.
+# And first: Protect against being on the right side of a sed subst in
+# config.status.  Protect against being in an unquoted here document
+# in config.status.
+rm -f conftest.defines conftest.undefs
+# Using a here document instead of a string reduces the quoting nightmare.
+# Putting comments in sed scripts is not portable.
+#
+# `end' is used to avoid that the second main sed command (meant for
+# 0-ary CPP macros) applies to n-ary macro definitions.
+# See the Autoconf documentation for `clear'.
+cat >confdef2sed.sed <<\_ACEOF
+s/[\\&,]/\\&/g
+s,[\\$`],\\&,g
+t clear
+: clear
+s,^[   ]*#[    ]*define[       ][      ]*\([^  (][^    (]*\)\(([^)]*)\)[       ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
+t end
+s,^[   ]*#[    ]*define[       ][      ]*\([^  ][^     ]*\)[   ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+: end
+_ACEOF
+# If some macros were called several times there might be several times
+# the same #defines, which is useless.  Nevertheless, we may not want to
+# sort them, since we want the *last* AC-DEFINE to be honored.
+uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
+sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
+rm -f confdef2sed.sed
+
+# This sed command replaces #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.
+cat >>conftest.undefs <<\_ACEOF
+s,^[   ]*#[    ]*undef[        ][      ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+_ACEOF
+
+# Break up conftest.defines because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo '  # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
+echo '  if grep "^[    ]*#[    ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+echo '  # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
+echo '  :' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.defines >/dev/null
+do
+  # Write a limited-size here document to $tmp/defines.sed.
+  echo '  cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
+  # Speed up: don't consider the non `#define' lines.
+  echo '/^[    ]*#[    ]*define/!b' >>$CONFIG_STATUS
+  # Work around the forget-to-reset-the-flag bug.
+  echo 't clr' >>$CONFIG_STATUS
+  echo ': clr' >>$CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
+  echo 'CEOF
+  sed -f $tmp/defines.sed $tmp/in >$tmp/out
+  rm -f $tmp/in
+  mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
+  rm -f conftest.defines
+  mv conftest.tail conftest.defines
+done
+rm -f conftest.defines
+echo '  fi # grep' >>$CONFIG_STATUS
+echo >>$CONFIG_STATUS
+
+# Break up conftest.undefs because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo '  # Handle all the #undef templates' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.undefs >/dev/null
+do
+  # Write a limited-size here document to $tmp/undefs.sed.
+  echo '  cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
+  # Speed up: don't consider the non `#undef'
+  echo '/^[    ]*#[    ]*undef/!b' >>$CONFIG_STATUS
+  # Work around the forget-to-reset-the-flag bug.
+  echo 't clr' >>$CONFIG_STATUS
+  echo ': clr' >>$CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
+  echo 'CEOF
+  sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+  rm -f $tmp/in
+  mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
+  rm -f conftest.undefs
+  mv conftest.tail conftest.undefs
+done
+rm -f conftest.undefs
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+  # 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.  */
+  if test x"$ac_file" = x-; then
+    echo "/* Generated by configure.  */" >$tmp/config.h
+  else
+    echo "/* $ac_file.  Generated by configure.  */" >$tmp/config.h
+  fi
+  cat $tmp/in >>$tmp/config.h
+  rm -f $tmp/in
+  if test x"$ac_file" != x-; then
+    if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
+      { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$ac_file" : 'X\(//\)[^/]' \| \
+         X"$ac_file" : 'X\(//\)$' \| \
+         X"$ac_file" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+         /^X\(\/\/\)$/{ s//\1/; q; }
+         /^X\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
+      { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$as_dir" : 'X\(//\)[^/]' \| \
+         X"$as_dir" : 'X\(//\)$' \| \
+         X"$as_dir" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+         /^X\(\/\/\)$/{ s//\1/; q; }
+         /^X\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+      rm -f $ac_file
+      mv $tmp/config.h $ac_file
+    fi
+  else
+    cat $tmp/config.h
+    rm -f $tmp/config.h
+  fi
+# Compute $ac_file's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $ac_file | $ac_file:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null ||
+$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X$ac_file : 'X\(//\)[^/]' \| \
+         X$ac_file : 'X\(//\)$' \| \
+         X$ac_file : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X$ac_file |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+         /^X\(\/\/\)$/{ s//\1/; q; }
+         /^X\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`/stamp-h$_am_stamp_count
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_COMMANDS section.
+#
+for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
+  ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
+  ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
+  ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
+$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$ac_dest" : 'X\(//\)[^/]' \| \
+         X"$ac_dest" : 'X\(//\)$' \| \
+         X"$ac_dest" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_dest" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+         /^X\(\/\/\)$/{ s//\1/; q; }
+         /^X\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
+  ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
+# absolute.
+ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
+ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
+ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
+ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
+
+
+  { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
+echo "$as_me: executing $ac_dest commands" >&6;}
+  case $ac_dest in
+    depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
+  # Strip MF so we end up with the name of the file.
+  mf=`echo "$mf" | sed -e 's/:.*$//'`
+  # Check whether this is an Automake generated Makefile or not.
+  # We used to match only the files named `Makefile.in', but
+  # some people rename them; so instead we look at the file content.
+  # Grep'ing the first line is not enough: some people post-process
+  # each Makefile.in and add a new line on top of each file to say so.
+  # So let's grep whole file.
+  if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+    dirpart=`(dirname "$mf") 2>/dev/null ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$mf" : 'X\(//\)[^/]' \| \
+         X"$mf" : 'X\(//\)$' \| \
+         X"$mf" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+         /^X\(\/\/\)$/{ s//\1/; q; }
+         /^X\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
+  else
+    continue
+  fi
+  grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue
+  # Extract the definition of DEP_FILES from the Makefile without
+  # running `make'.
+  DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
+  test -z "$DEPDIR" && continue
+  # When using ansi2knr, U may be empty or an underscore; expand it
+  U=`sed -n -e '/^U = / s///p' < "$mf"`
+  test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
+  # We invoke sed twice because it is the simplest approach to
+  # changing $(DEPDIR) to its actual value in the expansion.
+  for file in `sed -n -e '
+    /^DEP_FILES = .*\\\\$/ {
+      s/^DEP_FILES = //
+      :loop
+       s/\\\\$//
+       p
+       n
+       /\\\\$/ b loop
+      p
+    }
+    /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
+       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+    # Make sure the directory exists.
+    test -f "$dirpart/$file" && continue
+    fdir=`(dirname "$file") 2>/dev/null ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$file" : 'X\(//\)[^/]' \| \
+         X"$file" : 'X\(//\)$' \| \
+         X"$file" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+         /^X\(\/\/\)$/{ s//\1/; q; }
+         /^X\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
+    { if $as_mkdir_p; then
+    mkdir -p $dirpart/$fdir
+  else
+    as_dir=$dirpart/$fdir
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+         X"$as_dir" : 'X\(//\)[^/]' \| \
+         X"$as_dir" : 'X\(//\)$' \| \
+         X"$as_dir" : 'X\(/\)' \| \
+         .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+         /^X\(\/\/\)$/{ s//\1/; q; }
+         /^X\(\/\).*/{ s//\1/; q; }
+         s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5
+echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+    # echo "creating $dirpart/$file"
+    echo '# dummy' > "$dirpart/$file"
+  done
+done
+ ;;
+  esac
+done
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+
+# 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 || { (exit 1); exit 1; }
+fi
+
similarity index 54%
rename from file/configure.ac
rename to file/configure.in
index ae35a98..df869ba 100644 (file)
@@ -1,41 +1,35 @@
-#                                               -*- Autoconf -*-
-# Process this file with autoconf to produce a configure script.
-                                                                                
-AC_PREREQ(2.59)
-AC_INIT([file],[4.02])
-AC_CANONICAL_TARGET
-AC_CONFIG_HEADERS([config.h])
-
-AM_INIT_AUTOMAKE([foreign])
+dnl Process this file with autoconf to produce a configure script.
+AC_INIT(src/file.c)
+AM_INIT_AUTOMAKE(file, 4.09)
+AM_CONFIG_HEADER(config.h)
+AM_MAINTAINER_MODE
 
 AC_MSG_CHECKING(for builtin ELF support)
 AC_ARG_ENABLE(elf,
 [  --disable-elf            disable builtin ELF support],
-AH_TEMPLATE([BUILTIN_ELF],     [Define if builtin ELF support is enabled.])
 [if test "${enableval}" = yes; then
   AC_MSG_RESULT(yes)
-  AC_DEFINE([BUILTIN_ELF],1)
+  AC_DEFINE(BUILTIN_ELF)
 else
   AC_MSG_RESULT(no)
 fi], [
   # enable by default
   AC_MSG_RESULT(yes)
-  AC_DEFINE([BUILTIN_ELF], 1)
+  AC_DEFINE(BUILTIN_ELF)
 ])
 
 AC_MSG_CHECKING(for ELF core file support)
 AC_ARG_ENABLE(elf-core,
 [  --disable-elf-core       disable ELF core file support],
-AH_TEMPLATE([ELFCORE], [Define if ELF core file support is enabled.])
 [if test "${enableval}" = yes; then
   AC_MSG_RESULT(yes)
-  AC_DEFINE([ELFCORE], 1)
+  AC_DEFINE(ELFCORE)
 else
   AC_MSG_RESULT(no)
 fi], [
   # enable by default
   AC_MSG_RESULT(yes)
-  AC_DEFINE([ELFCORE], 1)
+  AC_DEFINE(ELFCORE)
 ])
 
 AC_MSG_CHECKING(for file formats in man section 5)
@@ -53,48 +47,42 @@ fi], [
   fsect=4
 ])
 AC_SUBST(fsect)
+AM_CONDITIONAL(FSECT5, test x$fsect = x5)
 
-# Checks for programs.
+dnl Checks for programs.
 AC_PROG_CC
 AC_PROG_INSTALL
 AC_PROG_LN_S
 AC_PROG_LIBTOOL
 
-if test "$ac_cv_c_compiler_gnu" = yes; then
-    CFLAGS="$CFLAGS -D_GNU_SOURCE -D_REENTRANT -Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes -Wno-char-subscripts"
-fi
-export CFLAGS
-
-# Checks for libraries
-AC_CHECK_LIB(z, gzopen)
-dnl AC_CHECK_LIB(bz2, BZ2_bzReadOpen)
-
-# Checks for header files.
+dnl Checks for headers
 AC_HEADER_STDC
-AC_HEADER_STDINT
 AC_HEADER_MAJOR
 AC_HEADER_SYS_WAIT
+AC_HEADER_STDINT
+AC_CHECK_HEADERS(fcntl.h locale.h)
 AC_CHECK_HEADERS(sys/mman.h sys/stat.h sys/types.h)
-AC_CHECK_HEADERS(error.h)
-AC_CHECK_HEADERS(fcntl.h)
+AC_CHECK_HEADERS(stdint.h inttypes.h)
+AC_CHECK_HEADERS(unistd.h)
 AC_CHECK_HEADERS(getopt.h)
 AC_CHECK_HEADERS(locale.h)
-AC_CHECK_HEADERS(mcheck.h)
-AC_CHECK_HEADERS(regex.h)
-AC_CHECK_HEADERS(unistd.h)
+AC_CHECK_HEADERS(utime.h)
+AC_CHECK_HEADERS(sys/utime.h)
+AC_CHECK_HEADERS(wchar.h)
 
-# Checks for typedefs, structures, and compiler characteristics.
+dnl Checks for typedefs, structures, and compiler characteristics.
 AC_C_CONST
 AC_TYPE_OFF_T
-AC_TYPE_PID_T
 AC_TYPE_SIZE_T
-
+AC_STRUCT_ST_RDEV
 AC_STRUCT_TIMEZONE_DAYLIGHT
 AC_SYS_LARGEFILE
+AC_MBSTATE_T
 
 AC_CHECK_TYPE_STDC(uint8_t, unsigned char)
 AC_CHECK_TYPE_STDC(uint16_t, unsigned short)
 AC_CHECK_TYPE_STDC(uint32_t, unsigned int)
+AC_CHECK_TYPE_STDC(int32_t, int)
 AC_C_LONG_LONG
 if test $ac_cv_c_long_long = yes; then
   long64='unsigned long long';
@@ -109,15 +97,10 @@ AC_CHECK_SIZEOF_STDC_HEADERS(uint16_t, 0)
 AC_CHECK_SIZEOF_STDC_HEADERS(uint32_t, 0)
 AC_CHECK_SIZEOF_STDC_HEADERS(uint64_t, 0)
 
-# Checks for library functions.
-AC_CHECK_FUNCS(error mtrace mkstemp mmap strdup strerror strtoul)
+dnl Checks for functions
+AC_CHECK_FUNCS(mmap strerror strtoul mkstemp getopt_long utimes utime)
 
-# XXX Choose /usr/lib or /usr/lib64 for library installs.
-MARK64=
-case "${target_cpu}" in
-x86_64*|powerpc64*|ppc64*|sparc64*|s390x*)        MARK64=64 ;;
-esac
-AC_SUBST(MARK64)
+dnl Checks for libraries
+AC_CHECK_LIB(z,gzopen)
 
-AC_CONFIG_FILES([Makefile src/Makefile magic/Makefile doc/Makefile])
-AC_OUTPUT
+AC_OUTPUT(Makefile src/Makefile magic/Makefile doc/Makefile)
diff --git a/file/depcomp b/file/depcomp
new file mode 100755 (executable)
index 0000000..51606f8
--- /dev/null
@@ -0,0 +1,464 @@
+#! /bin/sh
+
+# depcomp - compile a program generating dependencies as side-effects
+# Copyright 1999, 2000 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# 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 <oliva@dcc.unicamp.br>.
+
+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
+# `libtool' can also be set to `yes' or `no'.
+
+if test -z "$depfile"; then
+   base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
+   dir=`echo "$object" | sed 's,/.*$,/,'`
+   if test "$dir" = "$object"; then
+      dir=
+   fi
+   # FIXME: should be _deps on DOS.
+   depfile="$dir.deps/$base"
+fi
+
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# 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
+
+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.
+  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## 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).
+## - 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 -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## 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.
+  tr ' ' '
+' < "$tmpdepfile" |
+## 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.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -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 -eq 0; then :
+  else
+    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 ' ' '
+' < "$tmpdepfile" \
+    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+    tr '
+' ' ' >> $depfile
+    echo >> $depfile
+
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' '
+' < "$tmpdepfile" \
+   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+   >> $depfile
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  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.
+  stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'`
+  tmpdepfile="$stripped.u"
+  outname="$stripped.o"
+  if test "$libtool" = yes; then
+    "$@" -Wc,-M
+  else
+    "$@" -M
+  fi
+
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form `foo.o: dependent.h'.
+    # Do two passes, one to just change these to
+    # `$object: dependent.h' and one to simply `dependent.h:'.
+    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
+    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+icc)
+  # Must come before tru64.
+
+  # Intel's C compiler understands `-MD -MF file'.  However
+  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+  # will fill foo.d with something like
+  #    foo.o: sub/foo.c
+  #    foo.o: sub/foo.h
+  # which is wrong.  We want:
+  #    sub/foo.o: sub/foo.c
+  #    sub/foo.o: sub/foo.h
+  #    sub/foo.c:
+  #    sub/foo.h:
+
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form `foo.o: dependent.h'.
+  # Do two passes, one to just change these to
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed -e "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  sed -e "s,^[^:]*: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+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.
+   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+   test "x$dir" = "x$object" && dir=
+   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+   if test "$libtool" = yes; then
+      tmpdepfile1="$dir.libs/$base.lo.d"
+      tmpdepfile2="$dir.libs/$base.d"
+      "$@" -Wc,-MD
+   else
+      tmpdepfile1="$dir$base.o.d"
+      tmpdepfile2="$dir$base.d"
+      "$@" -MD
+   fi
+
+   stat=$?
+   if test $stat -eq 0; then :
+   else
+      rm -f "$tmpdepfile1" "$tmpdepfile2"
+      exit $stat
+   fi
+
+   if test -f "$tmpdepfile1"; then
+      tmpdepfile="$tmpdepfile1"
+   else
+      tmpdepfile="$tmpdepfile2"
+   fi
+   if test -f "$tmpdepfile"; then
+      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+      # That's a space and a tab in the [].
+      sed -e 's,^.*\.[a-z]*:[  ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+   else
+      echo "#dummy" > "$depfile"
+   fi
+   rm -f "$tmpdepfile"
+   ;;
+
+#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 proprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test $1 != '--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:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    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 $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+  # X makedepend
+  shift
+  cleared=no
+  for arg in "$@"; do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    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.
+    -*|$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"
+  cat < "$tmpdepfile" > "$depfile"
+  sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    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 proprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test $1 != '--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 '/^# [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 proprocessed file to stdout, regardless of -o,
+  # because we must use -o when running libtool.
+  "$@" || exit $?
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+       set fnord "$@"
+       shift
+       shift
+       ;;
+    *)
+       set fnord "$@" "$arg"
+       shift
+       shift
+       ;;
+    esac
+  done
+  "$@" -E |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::   \1 \\:p' >> "$depfile"
+  echo "       " >> "$depfile"
+  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0
diff --git a/file/doc/.cvsignore b/file/doc/.cvsignore
deleted file mode 100644 (file)
index 90b915b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-Makefile
-Makefile.in
-file.1
-magic.4
index 8790ef3..4a78589 100644 (file)
@@ -1,12 +1,13 @@
-#MAGIC  = $(pkgdatadir)/magic
-MAGIC   = $(pkglibdir)/magic
-
-man_MAGIC = magic.@fsect@
+MAGIC   = $(pkgdatadir)/magic
+if FSECT5
+man_MAGIC = magic.5
+else
+man_MAGIC = magic.4
+endif
 fsect = @fsect@
-#man_MANS = file.1 $(man_MAGIC) # libmagic.3
-noinst_MANS = file.1 $(man_MAGIC) # libmagic.3
+man_MANS = file.1 $(man_MAGIC) libmagic.3
 
-EXTRA_DIST = file.man magic.man libmagic.man
+EXTRA_DIST = file.man magic.man libmagic.man
 CLEANFILES = $(man_MANS)
 
 file.1:        Makefile file.man
@@ -23,9 +24,9 @@ magic.${fsect}: Makefile magic.man
            -e s@__VERSION__@${VERSION}@g \
            -e s@__MAGIC__@${MAGIC}@g $(srcdir)/magic.man > $@
 
-#libmagic.3: Makefile libmagic.man
-#      @rm -f $@
-#      sed -e s@__CSECTION__@1@g \
-#          -e s@__FSECTION__@${fsect}@g \
-#          -e s@__VERSION__@${VERSION}@g \
-#          -e s@__MAGIC__@${MAGIC}@g $(srcdir)/libmagic.man > $@
+libmagic.3: Makefile libmagic.man
+       @rm -f $@
+       sed -e s@__CSECTION__@1@g \
+           -e s@__FSECTION__@${fsect}@g \
+           -e s@__VERSION__@${VERSION}@g \
+           -e s@__MAGIC__@${MAGIC}@g $(srcdir)/libmagic.man > $@
diff --git a/file/doc/Makefile.in b/file/doc/Makefile.in
new file mode 100644 (file)
index 0000000..9192886
--- /dev/null
@@ -0,0 +1,499 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# 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@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+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 = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+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@
+FSECT5_FALSE = @FSECT5_FALSE@
+FSECT5_TRUE = @FSECT5_TRUE@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+fsect = @fsect@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+MAGIC = $(pkgdatadir)/magic
+@FSECT5_TRUE@man_MAGIC = magic.5
+@FSECT5_FALSE@man_MAGIC = magic.4
+man_MANS = file.1 $(man_MAGIC) libmagic.3
+
+EXTRA_DIST = file.man magic.man libmagic.man
+CLEANFILES = $(man_MANS)
+subdir = doc
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+
+NROFF = nroff
+MANS = $(man_MANS)
+DIST_COMMON = $(srcdir)/Makefile.in Makefile.am
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  doc/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+
+man1dir = $(mandir)/man1
+install-man1: $(man1_MANS) $(man_MANS)
+       @$(NORMAL_INSTALL)
+       $(mkinstalldirs) $(DESTDIR)$(man1dir)
+       @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+       l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+       for i in $$l2; do \
+         case "$$i" in \
+           *.1*) list="$$list $$i" ;; \
+         esac; \
+       done; \
+       for i in $$list; do \
+         if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
+         else file=$$i; fi; \
+         ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+         case "$$ext" in \
+           1*) ;; \
+           *) ext='1' ;; \
+         esac; \
+         inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+         inst=`echo $$inst | sed -e 's/^.*\///'`; \
+         inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+         echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \
+         $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \
+       done
+uninstall-man1:
+       @$(NORMAL_UNINSTALL)
+       @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+       l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+       for i in $$l2; do \
+         case "$$i" in \
+           *.1*) list="$$list $$i" ;; \
+         esac; \
+       done; \
+       for i in $$list; do \
+         ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+         case "$$ext" in \
+           1*) ;; \
+           *) ext='1' ;; \
+         esac; \
+         inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+         inst=`echo $$inst | sed -e 's/^.*\///'`; \
+         inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+         echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \
+         rm -f $(DESTDIR)$(man1dir)/$$inst; \
+       done
+
+man3dir = $(mandir)/man3
+install-man3: $(man3_MANS) $(man_MANS)
+       @$(NORMAL_INSTALL)
+       $(mkinstalldirs) $(DESTDIR)$(man3dir)
+       @list='$(man3_MANS) $(dist_man3_MANS) $(nodist_man3_MANS)'; \
+       l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+       for i in $$l2; do \
+         case "$$i" in \
+           *.3*) list="$$list $$i" ;; \
+         esac; \
+       done; \
+       for i in $$list; do \
+         if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
+         else file=$$i; fi; \
+         ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+         case "$$ext" in \
+           3*) ;; \
+           *) ext='3' ;; \
+         esac; \
+         inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+         inst=`echo $$inst | sed -e 's/^.*\///'`; \
+         inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+         echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man3dir)/$$inst"; \
+         $(INSTALL_DATA) $$file $(DESTDIR)$(man3dir)/$$inst; \
+       done
+uninstall-man3:
+       @$(NORMAL_UNINSTALL)
+       @list='$(man3_MANS) $(dist_man3_MANS) $(nodist_man3_MANS)'; \
+       l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+       for i in $$l2; do \
+         case "$$i" in \
+           *.3*) list="$$list $$i" ;; \
+         esac; \
+       done; \
+       for i in $$list; do \
+         ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+         case "$$ext" in \
+           3*) ;; \
+           *) ext='3' ;; \
+         esac; \
+         inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+         inst=`echo $$inst | sed -e 's/^.*\///'`; \
+         inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+         echo " rm -f $(DESTDIR)$(man3dir)/$$inst"; \
+         rm -f $(DESTDIR)$(man3dir)/$$inst; \
+       done
+
+man4dir = $(mandir)/man4
+install-man4: $(man4_MANS) $(man_MANS)
+       @$(NORMAL_INSTALL)
+       $(mkinstalldirs) $(DESTDIR)$(man4dir)
+       @list='$(man4_MANS) $(dist_man4_MANS) $(nodist_man4_MANS)'; \
+       l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+       for i in $$l2; do \
+         case "$$i" in \
+           *.4*) list="$$list $$i" ;; \
+         esac; \
+       done; \
+       for i in $$list; do \
+         if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
+         else file=$$i; fi; \
+         ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+         case "$$ext" in \
+           4*) ;; \
+           *) ext='4' ;; \
+         esac; \
+         inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+         inst=`echo $$inst | sed -e 's/^.*\///'`; \
+         inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+         echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man4dir)/$$inst"; \
+         $(INSTALL_DATA) $$file $(DESTDIR)$(man4dir)/$$inst; \
+       done
+uninstall-man4:
+       @$(NORMAL_UNINSTALL)
+       @list='$(man4_MANS) $(dist_man4_MANS) $(nodist_man4_MANS)'; \
+       l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+       for i in $$l2; do \
+         case "$$i" in \
+           *.4*) list="$$list $$i" ;; \
+         esac; \
+       done; \
+       for i in $$list; do \
+         ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+         case "$$ext" in \
+           4*) ;; \
+           *) ext='4' ;; \
+         esac; \
+         inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+         inst=`echo $$inst | sed -e 's/^.*\///'`; \
+         inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+         echo " rm -f $(DESTDIR)$(man4dir)/$$inst"; \
+         rm -f $(DESTDIR)$(man4dir)/$$inst; \
+       done
+
+man5dir = $(mandir)/man5
+install-man5: $(man5_MANS) $(man_MANS)
+       @$(NORMAL_INSTALL)
+       $(mkinstalldirs) $(DESTDIR)$(man5dir)
+       @list='$(man5_MANS) $(dist_man5_MANS) $(nodist_man5_MANS)'; \
+       l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+       for i in $$l2; do \
+         case "$$i" in \
+           *.5*) list="$$list $$i" ;; \
+         esac; \
+       done; \
+       for i in $$list; do \
+         if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
+         else file=$$i; fi; \
+         ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+         case "$$ext" in \
+           5*) ;; \
+           *) ext='5' ;; \
+         esac; \
+         inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+         inst=`echo $$inst | sed -e 's/^.*\///'`; \
+         inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+         echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man5dir)/$$inst"; \
+         $(INSTALL_DATA) $$file $(DESTDIR)$(man5dir)/$$inst; \
+       done
+uninstall-man5:
+       @$(NORMAL_UNINSTALL)
+       @list='$(man5_MANS) $(dist_man5_MANS) $(nodist_man5_MANS)'; \
+       l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+       for i in $$l2; do \
+         case "$$i" in \
+           *.5*) list="$$list $$i" ;; \
+         esac; \
+       done; \
+       for i in $$list; do \
+         ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+         case "$$ext" in \
+           5*) ;; \
+           *) ext='5' ;; \
+         esac; \
+         inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+         inst=`echo $$inst | sed -e 's/^.*\///'`; \
+         inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+         echo " rm -f $(DESTDIR)$(man5dir)/$$inst"; \
+         rm -f $(DESTDIR)$(man5dir)/$$inst; \
+       done
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkinstalldirs) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$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: check-am
+all-am: Makefile $(MANS)
+
+installdirs:
+       $(mkinstalldirs) $(DESTDIR)$(man1dir) $(DESTDIR)$(man3dir) $(DESTDIR)$(man4dir) $(DESTDIR)$(man5dir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+       -rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-man
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man: install-man1 install-man3 install-man4 install-man5
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-man
+
+uninstall-man: uninstall-man1 uninstall-man3 uninstall-man4 \
+       uninstall-man5
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+       distclean distclean-generic distclean-libtool distdir dvi \
+       dvi-am info info-am install install-am install-data \
+       install-data-am install-exec install-exec-am install-info \
+       install-info-am install-man install-man1 install-man3 \
+       install-man4 install-man5 install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+       uninstall-info-am uninstall-man uninstall-man1 uninstall-man3 \
+       uninstall-man4 uninstall-man5
+
+
+file.1:        Makefile file.man
+       @rm -f $@
+       sed -e s@__CSECTION__@1@g \
+           -e s@__FSECTION__@${fsect}@g \
+           -e s@__VERSION__@${VERSION}@g \
+           -e s@__MAGIC__@${MAGIC}@g $(srcdir)/file.man > $@
+
+magic.${fsect}: Makefile magic.man
+       @rm -f $@
+       sed -e s@__CSECTION__@1@g \
+           -e s@__FSECTION__@${fsect}@g \
+           -e s@__VERSION__@${VERSION}@g \
+           -e s@__MAGIC__@${MAGIC}@g $(srcdir)/magic.man > $@
+
+libmagic.3: Makefile libmagic.man
+       @rm -f $@
+       sed -e s@__CSECTION__@1@g \
+           -e s@__FSECTION__@${fsect}@g \
+           -e s@__VERSION__@${VERSION}@g \
+           -e s@__MAGIC__@${MAGIC}@g $(srcdir)/libmagic.man > $@
+# 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:
index 497fae6..f13ed8e 100644 (file)
@@ -1,28 +1,32 @@
 .TH FILE __CSECTION__ "Copyright but distributable"
-.\" Id: file.man,v 1.42 2002/07/03 18:26:37 christos Exp 
+.\" $Id: file.man,v 1.54 2003/10/27 18:09:08 christos Exp $
 .SH NAME
 file
 \- determine file type
 .SH SYNOPSIS
 .B file
 [
-.B \-bciknsvzL
+.B \-bcikLnNprsvz
 ]
 [
 .B \-f
 .I namefile
 ]
 [
-.B \-m
+.B \-F
+.I separator
+]
+[
+.B \-m 
 .I magicfiles
 ]
 .I file
-\*[Am]...
+\&...
 .br
 .B file
 .B -C
 [
-.B \-m
+.B \-m 
 magicfile ]
 .SH DESCRIPTION
 This manual page documents version __VERSION__ of the
@@ -54,7 +58,7 @@ Exceptions are well-known file formats (core files, tar archives)
 that are known to contain binary data.
 When modifying the file
 .I __MAGIC__
-or the program itself,
+or the program itself, 
 .B "preserve these keywords" .
 People depend on knowing that all the readable files in a directory
 have the word ``text'' printed.
@@ -77,13 +81,13 @@ Any known file types appropriate to the system you are running on
 implement them)
 are intuited if they are defined in
 the system header file
-.IR \*[Lt]sys/stat.h\*[Gt] .
+.IR <sys/stat.h>  .
 .PP
 The magic number tests are used to check for files with data in
 particular fixed formats.
 The canonical example of this is a binary executable (compiled program)
 .I a.out
-file, whose format is defined in
+file, whose format is defined in 
 .I a.out.h
 and possibly
 .I exec.h
@@ -97,7 +101,7 @@ offset into the file can usually be described in this way.
 The information identifying these files is read from the compiled
 magic file
 .I __MAGIC__.mgc ,
-or
+or 
 .I __MAGIC__
 if the compile file does not exist.
 .PP
@@ -135,13 +139,13 @@ For example, the keyword
 .B .br
 indicates that the file is most likely a
 .BR troff (1)
-input file, just as the keyword
+input file, just as the keyword 
 .B struct
 indicates a C program.
 These tests are less reliable than the previous
 two groups, so they are performed last.
 The language test routines also test for some miscellany
-(such as
+(such as 
 .BR tar (1)
 archives).
 .PP
@@ -149,64 +153,83 @@ Any file that cannot be identified as having been written
 in any of the character sets listed above is simply said to be ``data''.
 .SH OPTIONS
 .TP 8
-.B \-b
+.B "\-b, \-\-brief"
 Do not prepend filenames to output lines (brief mode).
 .TP 8
-.B \-c
+.B "\-c, \-\-checking\-printout"
 Cause a checking printout of the parsed form of the magic file.
-This is usually used in conjunction with
+This is usually used in conjunction with 
 .B \-m
 to debug a new magic file before installing it.
 .TP 8
-.B \-C
+.B "\-C, \-\-compile"
 Write a magic.mgc output file that contains a pre-parsed version of
 file.
 .TP 8
-.BI \-f " namefile"
-Read the names of the files to be examined from
+.BI "\-f, \-\-files\-from" " namefile"
+Read the names of the files to be examined from 
 .I namefile
-(one per line)
+(one per line) 
 before the argument list.
-Either
+Either 
 .I namefile
 or at least one filename argument must be present;
 to test the standard input, use ``\-'' as a filename argument.
 .TP 8
-.B \-i
+.BI "\-F, \-\-separator" " separator"
+Use the specified string as the separator between the filename and the
+file result returned. Defaults to ``:''.
+.TP 8
+.B "\-i, \-\-mime"
 Causes the file command to output mime type strings rather than the more
 traditional human readable ones. Thus it may say
 ``text/plain; charset=us-ascii''
 rather
-than ``ASCII text''. In order for this option to work, file changes the way
+than ``ASCII text''.
+In order for this option to work, file changes the way
 it handles files recognised by the command itself (such as many of the
 text file types, directories etc), and makes use of an alternative
 ``magic'' file.
 (See ``FILES'' section, below).
 .TP 8
-.B \-k
+.B "\-k, \-\-keep\-going"
 Don't stop at the first match, keep going.
 .TP 8
-.BI \-m " list"
+.B "\-L, \-\-dereference"
+option causes symlinks to be followed, as the like-named option in
+.BR ls (1).
+(on systems that support symbolic links).
+.TP 8
+.BI "\-m, \-\-magic\-file" " list"
 Specify an alternate list of files containing magic numbers.
 This can be a single file, or a colon-separated list of files.
+If a compiled magic file is found alongside, it will be used instead.
+With the \-i or \-\-mime option, the program adds ".mime" to each file name.
 .TP 8
-.B \-n
-Force stdout to be flushed after checking each file. This is only useful if
-checking a list of files. It is intended to be used by programs that want
-filetype output from a pipe.
+.B "\-n, \-\-no\-buffer"
+Force stdout to be flushed after checking each file.
+This is only useful if checking a list of files.
+It is intended to be used by programs that want filetype output from a pipe.
 .TP 8
-.B \-v
-Print the version of the program and exit.
+.B "\-N, \-\-no\-pad"
+Don't pad filenames so that they align in the output.
 .TP 8
-.B \-z
-Try to look inside compressed files.
+.B "\-p, \-\-preserve\-date"
+On systems that support
+.BR utime (2)
+or
+.BR utimes(2),
+attempt to preserve the access time of files analyzed, to pretend that
+.BR file (2)
+never read them.
 .TP 8
-.B \-L
-option causes symlinks to be followed, as the like-named option in
-.BR ls (1).
-(on systems that support symbolic links).
+.B "\-r, \-\-raw"
+Don't translate unprintable characters to \eooo.
+Normally
+.B file
+translates unprintable characters to their octal representation.
 .TP 8
-.B \-s
+.B "\-s, \-\-special\-files"
 Normally,
 .B file
 only attempts to read and determine the type of argument files which
@@ -226,21 +249,40 @@ This option also causes
 to disregard the file size as reported by
 .BR stat (2)
 since on some systems it reports a zero size for raw disk partitions.
+.TP 8
+.B "\-v, \-\-version"
+Print the version of the program and exit.
+.TP 8
+.B "\-z, \-\-uncompress"
+Try to look inside compressed files.
+.TP 8
+.B "\-\-help"
+Print a help message and exit.
 .SH FILES
+.TP
 .I __MAGIC__.mgc
-\- defaults compiled list of magic numbers
-.PP
+Default compiled list of magic numbers
+.TP
 .I __MAGIC__
-\- default list of magic numbers
-.PP
+Default list of magic numbers
+.TP
+.I __MAGIC__.mime.mgc
+Default compiled list of magic numbers, used to output mime types when
+the -i option is specified.
+.TP
 .I __MAGIC__.mime
-\- default list of magic numbers, used to output mime types when the -i option
+Default list of magic numbers, used to output mime types when the -i option
 is specified.
+.TP
+.I /etc/magic
+Local additions to magic wisdom.
 
 .SH ENVIRONMENT
 The environment variable
 .B MAGIC
-can be used to set the default magic number files.
+can be used to set the default magic number file name.
+.B file
+adds ".mime" and/or ".mgc" to the value of this variable as appropriate.
 .SH SEE ALSO
 .BR magic (__FSECTION__)
 \- description of magic file format.
@@ -250,25 +292,26 @@ can be used to set the default magic number files.
 .SH STANDARDS CONFORMANCE
 This program is believed to exceed the System V Interface Definition
 of FILE(CMD), as near as one can determine from the vague language
-contained therein.
+contained therein. 
 Its behaviour is mostly compatible with the System V program of the same name.
 This version knows more magic, however, so it will produce
-different (albeit more accurate) output in many cases.
+different (albeit more accurate) output in many cases. 
 .PP
-The one significant difference
+The one significant difference 
 between this version and System V
 is that this version treats any white space
 as a delimiter, so that spaces in pattern strings must be escaped.
 For example,
 .br
-\*[Gt]10       string  language impress\       (imPRESS data)
+>10    string  language impress\       (imPRESS data)
 .br
 in an existing magic file would have to be changed to
 .br
-\*[Gt]10       string  language\e impress      (imPRESS data)
+>10    string  language\e impress      (imPRESS data)
 .br
 In addition, in this version, if a pattern string contains a backslash,
-it must be escaped.  For example
+it must be escaped.
+For example
 .br
 0      string          \ebegindata     Andrew Toolkit document
 .br
@@ -281,16 +324,16 @@ SunOS releases 3.2 and later from Sun Microsystems include a
 .BR file (1)
 command derived from the System V one, but with some extensions.
 My version differs from Sun's only in minor ways.
-It includes the extension of the `\*[Am]' operator, used as,
+It includes the extension of the `&' operator, used as,
 for example,
 .br
-\*[Gt]16       long\*[Am]0x7fffffff    \*[Gt]0         not stripped
+>16    long&0x7fffffff >0              not stripped
 .SH MAGIC DIRECTORY
 The magic file entries have been collected from various sources,
 mainly USENET, and contributed by various authors.
 Christos Zoulas (address below) will collect additional
 or corrected magic file entries.
-A consolidation of magic file entries
+A consolidation of magic file entries 
 will be distributed periodically.
 .PP
 The order of entries in the magic file is significant.
@@ -300,7 +343,7 @@ If your old
 .B file
 command uses a magic file,
 keep the old magic file around for comparison purposes
-(rename it to
+(rename it to 
 .IR __MAGIC__.orig ).
 .SH EXAMPLES
 .nf
@@ -335,7 +378,7 @@ not stripped
 
 .fi
 .SH HISTORY
-There has been a
+There has been a 
 .B file
 command in every \s-1UNIX\s0 since at least Research Version 4
 (man page dated November, 1973).
@@ -344,14 +387,14 @@ the external list of magic number types.
 This slowed the program down slightly but made it a lot more flexible.
 .PP
 This program, based on the System V version,
-was written by Ian Darwin \*[Lt]ian@darwinsys.com\*[Gt]
+was written by Ian Darwin <ian@darwinsys.com>
 without looking at anybody else's source code.
 .PP
 John Gilmore revised the code extensively, making it better than
 the first version.
 Geoff Collyer found several inadequacies
 and provided some magic file entries.
-Contributions by the `\*[Am]' operator by Rob McMahon, cudcv@warwick.ac.uk, 1989.
+Contributions by the `&' operator by Rob McMahon, cudcv@warwick.ac.uk, 1989.
 .PP
 Guy Harris, guy@netapp.com, made many changes from 1993 to the present.
 .PP
@@ -368,7 +411,8 @@ of non-ASCII files.
 .PP
 The list of contributors to the "Magdir" directory (source for the
 /etc/magic
-file) is too long to include here. You know who you are; thank you.
+file) is too long to include here.
+You know who you are; thank you.
 .SH LEGAL NOTICE
 Copyright (c) Ian F. Darwin, Toronto, Canada, 1986-1999.
 Covered by the standard Berkeley Software Distribution copyright; see the file
@@ -383,7 +427,8 @@ were written by John Gilmore from his public-domain
 program, and are not covered by the above license.
 .SH BUGS
 There must be a better way to automate the construction of the Magic
-file from all the glop in Magdir. What is it?
+file from all the glop in magdir.
+What is it?
 Better yet, the magic file should be compiled into binary (say,
 .BR ndbm (3)
 or, better yet, fixed-length
@@ -418,11 +463,11 @@ commands vs man page macros.
 Regular expression support would make this easy.
 .PP
 The program doesn't grok \s-2FORTRAN\s0.
-It should be able to figure \s-2FORTRAN\s0 by seeing some keywords which
+It should be able to figure \s-2FORTRAN\s0 by seeing some keywords which 
 appear indented at the start of line.
 Regular expression support would make this easy.
 .PP
-The list of keywords in
+The list of keywords in 
 .I ascmagic
 probably belongs in the Magic file.
 This could be done by using some keyword like `*' for the offset value.
@@ -430,16 +475,18 @@ This could be done by using some keyword like `*' for the offset value.
 Another optimisation would be to sort
 the magic file so that we can just run down all the
 tests for the first byte, first word, first long, etc, once we
-have fetched it.  Complain about conflicts in the magic file entries.
+have fetched it.
+Complain about conflicts in the magic file entries.
 Make a rule that the magic entries sort based on file offset rather
 than position within the magic file?
 .PP
-The program should provide a way to give an estimate
+The program should provide a way to give an estimate 
 of ``how good'' a guess is.
 We end up removing guesses (e.g. ``From '' as first 5 chars of file) because
 they are not as good as other guesses (e.g. ``Newsgroups:'' versus
-``Return-Path:'').  Still, if the others don't pan out, it should be
-possible to use the first guess.
+``Return-Path:'').
+Still, if the others don't pan out, it should be possible to use the
+first guess.  
 .PP
 This program is slower than some vendors' file commands.
 The new support for multiple character codes makes it even slower.
@@ -450,4 +497,4 @@ You can obtain the original author's latest version by anonymous FTP
 on
 .B ftp.astron.com
 in the directory
-.I /pub/file/file-X.YY.tar.gz
+.I /pub/file/file-X.YZ.tar.gz
diff --git a/file/doc/libmagic.man b/file/doc/libmagic.man
new file mode 100644 (file)
index 0000000..c60a044
--- /dev/null
@@ -0,0 +1,228 @@
+.\"
+.\" Copyright (c) Christos Zoulas 2003.
+.\" All Rights Reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice immediately at the beginning of the file, without modification,
+.\"    this list of conditions, and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. The name of the author may not be used to endorse or promote products
+.\"    derived from this software without specific prior written permission.
+.\" 
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+.\" ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.Dd March 22, 2003
+.Dt MAGIC 3
+.Os
+.Sh NAME
+.Nm magic_open ,
+.Nm magic_close ,
+.Nm magic_error ,
+.Nm magic_file ,
+.Nm magic_buffer ,
+.Nm magic_setflags ,
+.Nm magic_check ,
+.Nm magic_compile ,
+.Nm magic_load
+.Nd Magic number recognition library.
+.Sh LIBRARY
+.Lb libmagic
+.Sh SYNOPSIS
+.In magic.h
+.Ft magic_t
+.Fn magic_open "int flags"
+.Ft void
+.Fn magic_close "magic_t cookie"
+.Ft const char *
+.Fn magic_error "magic_t cookie"
+.Ft int
+.Fn magic_errno "magic_t cookie"
+.Ft const char *
+.Fn magic_file "magic_t cookie, const char *filename"
+.Ft const char *
+.Fn magic_buffer "magic_t cookie, const void *buffer, size_t length"
+.Ft int
+.Fn magic_setflags "magic_t cookie, int flags"
+.Ft int
+.Fn magic_check "magic_t cookie, const char *filename"
+.Ft int
+.Fn magic_compile "magic_t cookie, const char *filename"
+.Ft int
+.Fn magic_load "magic_t cookie, const char *filename"
+.Sh DESCRIPTION
+These functions
+operate on the magic database file
+which is described
+in
+.Xr magic __FSECTION__ .
+.Pp
+The function
+.Fn magic_open
+creates a magic cookie pointer and returns it. It returns NULL if
+there was an error allocating the magic cookie. The 
+.Ar flags
+argument specifies how the other magic functions should behave:
+.Bl -tag -width MAGIC_COMPRESS
+.It Dv MAGIC_NONE
+No special handling.
+.It Dv MAGIC_DEBUG
+Print debugging messages to stderr.
+.It Dv MAGIC_SYMLINK
+If the file queried is a symlink, follow it.
+.It Dv MAGIC_COMPRESS
+If the file is compressed, unpack it and look at the contents.
+.It Dv MAGIC_DEVICES
+If the file is a block or character special device, then open the device
+and try to look in its contents.
+.It Dv MAGIC_MIME
+Return a mime string, instead of a textual description.
+.It Dv MAGIC_CONTINUE
+Return all matches, not just the first.
+.It Dv MAGIC_CHECK
+Check the magic database for consistency and print warnings to stderr.
+.It Dv MAGIC_PRESERVE_ATIME
+On systems that support
+.Xr utime 2
+or
+.Xr utimes 2 ,
+attempt to preserve the access time of files analyzed.
+.It Dv MAGIC_RAW
+Don't translate unprintable characters to a \eooo octal representation.
+.It Dv MAGIC_ERROR
+Treat operating system errors while trying to open files and follow symlinks
+as real errors, instead of printing them in the magic buffer.
+.El
+.Pp
+The
+.Fn magic_close
+function closes the
+.Xr magic __FSECTION__
+database and deallocates any resources used.
+.Pp
+The
+.Fn magic_error
+function returns a textual explanation of the last error, or NULL if there was
+no error.
+.Pp
+The
+.Fn magic_errno
+function returns the last operating system error number (
+.Xr errno 3 )
+that was encountered by a system call.
+.Pp
+The
+.Fn magic_file
+function returns a textual description of the contents of the
+.Ar filename
+argument, or NULL if an error occurred.
+If the
+.Ar filename
+is NULL, then stdin is used.
+.Pp
+The
+.Fn magic_buffer
+function returns a textual description of the contents of the
+.Ar buffer
+argument with
+.Ar length
+bytes size.
+.Pp
+The
+.Fn magic_setflags
+function, sets the 
+.Ar flags
+described above.
+.Pp
+The
+.Fn magic_check
+function can be used to check the validity of entries in the colon
+separated database files passed in as
+.Ar filename ,
+or NULL for the default database. It returns 0 on success and -1 on
+failure.
+.Pp
+The
+.Fn magic_compile
+function can be used to compile the the colon
+separated list of database files passed in as
+.Ar filename ,
+or NULL for the default database. It returns 0 on success and -1 on
+failure. The compiled files created are named from the
+.Xr basename 1
+of each file argument with ".mgc" appended to it.
+.Pp
+The
+.Fn magic_load
+function must be used to load the the colon
+separated list of database files passed in as
+.Ar filename ,
+or NULL for the default database file
+before any magic queries can performed.
+.Pp
+The default database file is named by the MAGIC environment variable.  If
+that variable is not set, the default database file name is __MAGIC__.
+.Pp
+.Fn magic_load
+adds ".mime" and/or ".mgc" to the database filename as appropriate.
+.Sh RETURN VALUES
+The function
+.Fn magic_open
+returns a magic cookie on success and NULL on failure setting errno to
+an appropriate value. It will set errno to EINVAL if an unsupported
+value for flags was given.
+The
+.Fn magic_load ,
+.Fn magic_compile ,
+and
+.Fn magic_check
+functions return 0 on success and -1 on failure.
+The
+.Fn magic_file ,
+and
+.Fn magic_buffer 
+functions return a string on success and NULL on failure. The
+.Fn magic_error
+function returns a textual description of the errors of the above
+functions, or NULL if there was no error.
+Finally,
+.Fn magic_setflags
+returns -1 on systems that don't support
+.Xr utime 2 ,
+or
+.Xr utimes 2
+when
+.Dv MAGIC_PRESERVE_ATIME
+is set.
+.Sh FILES
+.Bl -tag -width __MAGIC__.mime.mgc -compact
+.It Pa __MAGIC__.mime
+The non-compiled default magic mime database.
+.It Pa __MAGIC__.mime.mgc
+The compiled default magic mime database.
+.It Pa __MAGIC__
+The non-compiled default magic database.
+.It Pa __MAGIC__.mgc
+The compiled default magic database.
+.El
+.Sh SEE ALSO
+.Xr file __CSECTION__ ,
+.Xr magic __FSECTION__ 
+.Sh AUTHORS
+MÃ¥ns RullgÃ¥rd Initial libmagic implementation,
+and configuration.
+Christos Zoulas API cleanup, error code and allocation handling.
index a55d34e..6917bc0 100644 (file)
@@ -6,7 +6,8 @@ magic \- file command's magic number file
 This manual page documents the format of the magic file as
 used by the
 .BR file (__CSECTION__)
-command, version __VERSION__. The
+command, version __VERSION__.
+The
 .BR file
 command identifies the type of a file using,
 among other tests,
@@ -21,13 +22,15 @@ and additional information to extract from the file.
 Each line of the file specifies a test to be performed.
 A test compares the data starting at a particular offset
 in the file with a 1-byte, 2-byte, or 4-byte numeric value or
-a string.  If the test succeeds, a message is printed.
+a string.
+If the test succeeds, a message is printed.
 The line consists of the following fields:
 .IP offset \w'message'u+2n
 A number specifying the offset, in bytes, into the file of the data
 which is to be tested.
 .IP type
-The type of the data to be tested.  The possible values are:
+The type of the data to be tested.
+The possible values are:
 .RS
 .IP byte \w'message'u+2n
 A one-byte value.
@@ -36,14 +39,21 @@ A two-byte value (on most systems) in this machine's native byte order.
 .IP long
 A four-byte value (on most systems) in this machine's native byte order.
 .IP string
-A string of bytes. The string type specification can be optionally followed
-by /[Bbc]*. The ``B'' flag compacts whitespace in the target, which must
-contain at least one whitespace character. If the magic has "n" consecutive
-blanks, the target needs at least "n" consecutive blanks to match. The ``b''
-flag treats every blank in the target as an optional blank. Finally the ``c''
-flag, specifies case insensitive matching: lowercase characters in the magic
-match both lower and upper case characters in the targer, whereas upper case
-characters in the magic, only much uppercase characters in the target.
+A string of bytes.
+The string type specification can be optionally followed
+by /[Bbc]*.
+The ``B'' flag compacts whitespace in the target, which must
+contain at least one whitespace character.
+If the magic has
+.I n
+consecutive blanks, the target needs at least
+.I n
+consecutive blanks to match.
+The ``b'' flag treats every blank in the target as an optional blank.
+Finally the ``c'' flag, specifies case insensitive matching: lowercase
+characters in the magic match both lower and upper case characters in the
+targer, whereas upper case characters in the magic, only much uppercase
+characters in the target.
 .IP date
 A four-byte value interpreted as a UNIX date.
 .IP ldate
@@ -55,7 +65,7 @@ A two-byte value (on most systems) in big-endian byte order.
 A four-byte value (on most systems) in big-endian byte order.
 .IP bedate
 A four-byte value (on most systems) in big-endian byte order,
-interpreted as a unix date.
+interpreted as a Unix date.
 .IP leshort
 A two-byte value (on most systems) in little-endian byte order.
 .IP lelong
@@ -70,14 +80,16 @@ than UTC.
 .RE
 .PP
 The numeric types may optionally be followed by
-.B \*[Am]
+.B &
 and a numeric value,
 to specify that the value is to be AND'ed with the
-numeric value before any comparisons are done.  Prepending a
+numeric value before any comparisons are done.
+Prepending a
 .B u
 to the type indicates that ordered comparisons should be unsigned.
 .IP test
-The value to be compared with the value from the file.  If the type is
+The value to be compared with the value from the file.
+If the type is
 numeric, this value
 is specified in C form; if it is a string, it is specified as a C string
 with the usual escapes permitted (e.g. \en for new-line).
@@ -87,21 +99,21 @@ may be preceded by a character indicating the operation to be performed.
 It may be
 .BR = ,
 to specify that the value from the file must equal the specified value,
-.BR \*[Lt] ,
+.BR < ,
 to specify that the value from the file must be less than the specified
 value,
-.BR \*[Gt] ,
+.BR > ,
 to specify that the value from the file must be greater than the specified
 value,
-.BR \*[Am] ,
-to specify that the value from the file must have set all of the bits
+.BR & ,
+to specify that the value from the file must have set all of the bits 
 that are set in the specified value,
 .BR ^ ,
-to specify that the value from the file must have clear any of the bits
+to specify that the value from the file must have clear any of the bits 
 that are set in the specified value, or
 .BR x ,
-to specify that any value will match. If the character is omitted,
-it is assumed to be
+to specify that any value will match.
+If the character is omitted, it is assumed to be
 .BR = .
 .IP
 Numeric values are specified in C form; e.g.
@@ -113,19 +125,20 @@ is octal, and
 is hexadecimal.
 .IP
 For string values, the byte string from the
-file must match the specified byte string.
+file must match the specified byte string. 
 The operators
 .BR = ,
-.B \*[Lt]
+.B <
 and
-.B \*[Gt]
+.B >
 (but not
-.BR \*[Am] )
+.BR & )
 can be applied to strings.
 The length used for matching is that of the string argument
-in the magic file.  This means that a line can match any string, and
+in the magic file.
+This means that a line can match any string, and
 then presumably print that string, by doing
-.B \*[Gt]\e0
+.B >\e0
 (because all strings are greater than the null string).
 .IP message
 The message to be printed if the comparison succeeds.  If the string
@@ -135,12 +148,14 @@ format specification, the value from the file (with any specified masking
 performed) is printed using the message as the format string.
 .PP
 Some file formats contain additional information which is to be printed
-along with the file type.  A line which begins with the character
-.B \*[Gt]
-indicates additional tests and messages to be printed.  The number of
-.B \*[Gt]
+along with the file type.
+A line which begins with the character
+.B >
+indicates additional tests and messages to be printed.
+The number of
+.B >
 on the line indicates the level of the test; a line with no
-.B \*[Gt]
+.B >
 at the beginning is considered to be at level 0.
 Each line at level
 .IB n \(pl1
@@ -151,41 +166,47 @@ If the test on a line at level
 .I n
 succeeds, the tests specified in all the subsequent lines at level
 .IB n \(pl1
-are performed, and the messages printed if the tests succeed.  The next
-line at level
+are performed, and the messages printed if the tests succeed.
+The next line at level
 .I n
 terminates this.
 If the first character following the last
-.B \*[Gt]
+.B >
 is a
 .B (
 then the string after the parenthesis is interpreted as an indirect offset.
 That means that the number after the parenthesis is used as an offset in
-the file. The value at that offset is read, and is used again as an offset
-in the file. Indirect offsets are of the form:
-.BI (( x [.[bslBSL]][+-][ y ]).
-The value of
+the file.
+The value at that offset is read, and is used again as an offset
+in the file.
+Indirect offsets are of the form:
+.BI (( x [.[bslBSL]][+\-][ y ]).
+The value of 
 .I x
 is used as an offset in the file. A byte, short or long is read at that offset
-depending on the
-.B [bslBSL]
-type specifier. The capitalized types interpret the number as a big endian
-value, whereas the small letter versions interpet the number as a little
-endian value. To that number the value of
+depending on the 
+.B [bslBSL] 
+type specifier.
+The capitalized types interpret the number as a big endian
+value, whereas the small letter versions interpret the number as a little
+endian value.
+To that number the value of
 .I y
-is added and the result is used as an offset in the file. The default type
-if one is not specified is long.
+is added and the result is used as an offset in the file.
+The default type if one is not specified is long.
 .PP
 Sometimes you do not know the exact offset as this depends on the length of
-preceding fields. You can specify an offset relative to the end of the
+preceding fields.
+You can specify an offset relative to the end of the
 last uplevel field (of course this may only be done for sublevel tests, i.e.
-test beginning with
-.B \*[Gt]
-). Such a relative offset is specified using
-.B \*[Am]
+test beginning with 
+.B >
+).
+Such a relative offset is specified using
+.B &
 as a prefix to the offset.
 .SH BUGS
-The formats
+The formats 
 .IR long ,
 .IR belong ,
 .IR lelong ,
@@ -197,7 +218,7 @@ The formats
 and
 .I ledate
 are system-dependent; perhaps they should be specified as a number
-of bytes (2B, 4B, etc),
+of bytes (2B, 4B, etc), 
 since the files being recognized typically come from
 a system on which the lengths are invariant.
 .PP
@@ -210,13 +231,13 @@ indirect offsets.
 .\" From: guy@sun.uucp (Guy Harris)
 .\" Newsgroups: net.bugs.usg
 .\" Subject: /etc/magic's format isn't well documented
-.\" Message-ID: \*[Lt]2752@sun.uucp\*[Gt]
+.\" Message-ID: <2752@sun.uucp>
 .\" Date: 3 Sep 85 08:19:07 GMT
 .\" Organization: Sun Microsystems, Inc.
 .\" Lines: 136
-.\"
+.\" 
 .\" Here's a manual page for the format accepted by the "file" made by adding
 .\" the changes I posted to the S5R2 version.
 .\"
 .\" Modified for Ian Darwin's version of the file command.
-.\" @(#)Id: magic.man,v 1.19 2002/07/03 18:26:38 christos Exp 
+.\" @(#)$Id: magic.man,v 1.27 2003/09/12 19:43:30 christos Exp $
diff --git a/file/ltcf-c.sh b/file/ltcf-c.sh
new file mode 100644 (file)
index 0000000..570aa45
--- /dev/null
@@ -0,0 +1,805 @@
+#### This script is meant to be sourced by ltconfig.
+
+# ltcf-c.sh - Create a C compiler specific configuration
+#
+# Copyright (C) 1996-2000, 2001 Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This file 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 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# 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.
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='main(){return(0);}'
+
+## Linker Characteristics
+case $host_os in
+cygwin* | mingw*)
+  # FIXME: the MSVC++ port hasn't been tested in a loooong time
+  # When not using gcc, we currently assume that we are using
+  # Microsoft Visual C++.
+  if test "$with_gcc" != yes; then
+    with_gnu_ld=no
+  fi
+  ;;
+
+esac
+
+ld_shlibs=yes
+if test "$with_gnu_ld" = yes; then
+  # If archive_cmds runs LD, not CC, wlarc should be empty
+  wlarc='${wl}'
+
+  # See if GNU ld supports shared libraries.
+  case $host_os in
+  aix3* | aix4* | aix5*)
+    # On AIX, the GNU linker is very broken
+    ld_shlibs=no
+    cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+    ;;
+
+  amigaos*)
+    archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_minus_L=yes
+
+    # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+    # that the semantics of dynamic libraries on AmigaOS, at least up
+    # to version 4, is to share data among multiple programs linked
+    # with the same dynamic library.  Since this doesn't match the
+    # behavior of shared libraries on other platforms, we can use
+    # them.
+    ld_shlibs=no
+    ;;
+
+  beos*)
+    if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+      allow_undefined_flag=unsupported
+      # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+      # support --undefined.  This deserves some investigation.  FIXME
+      archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    else
+      ld_shlibs=no
+    fi
+    ;;
+
+  cygwin* | mingw*)
+    # hardcode_libdir_flag_spec is actually meaningless, as there is
+    # no search path for DLLs.
+    hardcode_libdir_flag_spec='-L$libdir'
+    allow_undefined_flag=unsupported
+    always_export_symbols=yes
+
+    extract_expsyms_cmds='test -f $output_objdir/impgen.c || \
+      sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //; p; }" -e d < $0 > $output_objdir/impgen.c~
+      test -f $output_objdir/impgen.exe || (cd $output_objdir && \
+      if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \
+      else $CC -o impgen impgen.c ; fi)~
+      $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def'
+
+    old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib'
+
+    # cygwin and mingw dlls have different entry points and sets of symbols
+    # to exclude.
+    # FIXME: what about values for MSVC?
+    dll_entry=__cygwin_dll_entry@12
+    dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~
+    case $host_os in
+    mingw*)
+      # mingw values
+      dll_entry=_DllMainCRTStartup@12
+      dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~
+      ;;
+    esac
+
+    # mingw and cygwin differ, and it's simplest to just exclude the union
+    # of the two symbol sets.
+    dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12
+
+    # recent cygwin and mingw systems supply a stub DllMain which the user
+    # can override, but on older systems we have to supply one (in ltdll.c)
+    if test "x$lt_cv_need_dllmain" = "xyes"; then
+      ltdll_obj='$output_objdir/$soname-ltdll.'"$objext "
+      ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $output_objdir/$soname-ltdll.c~
+       test -f $output_objdir/$soname-ltdll.$objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~'
+    else
+      ltdll_obj=
+      ltdll_cmds=
+    fi
+
+    # Extract the symbol export list from an `--export-all' def file,
+    # then regenerate the def file from the symbol export list, so that
+    # the compiled dll only exports the symbol export list.
+    # Be careful not to strip the DATA tag left be newer dlltools.
+    export_symbols_cmds="$ltdll_cmds"'
+      $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~
+      sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols'
+
+    # If the export-symbols file already is a .def file (1st line
+    # is EXPORTS), use it as is.
+    # If DATA tags from a recent dlltool are present, honour them!
+    archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then
+        cp $export_symbols $output_objdir/$soname-def;
+      else
+        echo EXPORTS > $output_objdir/$soname-def;
+        _lt_hint=1;
+        cat $export_symbols | while read symbol; do
+         set dummy \$symbol;
+         case \[$]# in
+           2) echo "   \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;;
+           *) echo "     \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;;
+         esac;
+         _lt_hint=`expr 1 + \$_lt_hint`;
+        done;
+      fi~
+      '"$ltdll_cmds"'
+      $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
+      $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~
+      $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~
+      $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~
+      $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags'
+    ;;
+
+  netbsd*)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+      wlarc=
+    else
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+    fi
+    ;;
+
+  solaris* | sysv5*)
+    if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
+      ld_shlibs=no
+      cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+    elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+    else
+      ld_shlibs=no
+    fi
+    ;;
+
+  sunos4*)
+    archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+    wlarc=
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  *)
+    if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+    else
+      ld_shlibs=no
+    fi
+    ;;
+  esac
+
+  if test "$ld_shlibs" = yes; then
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec='${wl}--export-dynamic'
+    case $host_os in
+    cygwin* | mingw*)
+      # dlltool doesn't understand --whole-archive et. al.
+      whole_archive_flag_spec=
+      ;;
+    *)
+      # ancient GNU ld didn't support --whole-archive et. al.
+      if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then
+       whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+       whole_archive_flag_spec=
+      fi
+      ;;
+    esac
+  fi
+else
+  # PORTME fill in a description of your system's linker (not GNU ld)
+  case $host_os in
+  aix3*)
+    allow_undefined_flag=unsupported
+    always_export_symbols=yes
+    archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+    # Note: this linker hardcodes the directories in LIBPATH if there
+    # are no directories specified by -L.
+    hardcode_minus_L=yes
+    if test "$with_gcc" = yes && test -z "$link_static_flag"; then
+      # Neither direct hardcoding nor static linking is supported with a
+      # broken collect2.
+      hardcode_direct=unsupported
+    fi
+    ;;
+
+  aix4* | aix5*)
+    hardcode_direct=yes
+    hardcode_libdir_separator=':'
+    link_all_deplibs=yes
+    # When large executables or shared objects are built, AIX ld can
+    # have problems creating the table of contents.  If linking a library
+    # or program results in "error TOC overflow" add -mminimal-toc to
+    # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+    # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+    if test "$with_gcc" = yes; then
+      case $host_os in aix4.[012]|aix4.[012].*)
+      # We only want to do this on AIX 4.2 and lower, the check
+      # below for broken collect2 doesn't work under 4.3+
+        collect2name=`${CC} -print-prog-name=collect2`
+        if test -f "$collect2name" && \
+          strings "$collect2name" | grep resolve_lib_name >/dev/null
+        then
+         # We have reworked collect2
+         hardcode_direct=yes
+        else
+         # We have old collect2
+         hardcode_direct=unsupported
+         # It fails to find uninstalled libraries when the uninstalled
+         # path is not listed in the libpath.  Setting hardcode_minus_L
+         # to unsupported forces relinking
+         hardcode_minus_L=yes
+         hardcode_libdir_flag_spec='-L$libdir'
+         hardcode_libdir_separator=
+        fi
+      esac
+      shared_flag='-shared'
+    else
+      # not using gcc
+      if test "$host_cpu" = ia64; then
+        shared_flag='${wl}-G'
+      else
+        shared_flag='${wl}-bM:SRE'
+      fi
+    fi
+
+    if test "$host_cpu" = ia64; then
+      # On IA64, the linker does run time linking by default, so we don't
+      # have to do anything special.
+      aix_use_runtimelinking=no
+      exp_sym_flag='-Bexport'
+      no_entry_flag=""
+    else
+      # Test if we are trying to use run time linking, or normal AIX style linking.
+      # If -brtl is somewhere in LDFLAGS, we need to do run time linking.
+      aix_use_runtimelinking=no
+      for ld_flag in $LDFLAGS; do
+        if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl" ); then
+          aix_use_runtimelinking=yes
+          break
+        fi
+      done
+      exp_sym_flag='-bexport'
+      no_entry_flag='-bnoentry'
+    fi
+    # -bexpall does not export symbols beginning with underscore (_)
+    always_export_symbols=yes
+    if test "$aix_use_runtimelinking" = yes; then
+      # Warning - without using the other run time loading flags (-brtl), -berok will
+      #           link without error, but may produce a broken library.
+      allow_undefined_flag=' ${wl}-berok'
+      hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
+      archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+    else
+      if test "$host_cpu" = ia64; then
+        hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+        allow_undefined_flag="-z nodefs"
+        archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+      else
+        allow_undefined_flag=' ${wl}-berok'
+        # -bexpall does not export symbols beginning with underscore (_)
+        always_export_symbols=yes
+        # Exported symbols can be pulled into shared objects from archives
+        whole_archive_flag_spec=' '
+        build_libtool_need_lc=yes
+        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib'
+        # This is similar to how AIX traditionally builds it's shared libraries.
+        archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+      fi
+    fi
+    ;;
+
+  amigaos*)
+    archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_minus_L=yes
+    # see comment about different semantics on the GNU ld section
+    ld_shlibs=no
+    ;;
+
+  cygwin* | mingw*)
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    # hardcode_libdir_flag_spec is actually meaningless, as there is
+    # no search path for DLLs.
+    hardcode_libdir_flag_spec=' '
+    allow_undefined_flag=unsupported
+    # Tell ltmain to make .lib files, not .a files.
+    libext=lib
+    # FIXME: Setting linknames here is a bad hack.
+    archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames='
+    # The linker will automatically build a .lib file if we build a DLL.
+    old_archive_from_new_cmds='true'
+    # FIXME: Should let the user specify the lib program.
+    old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
+    fix_srcfile_path='`cygpath -w "$srcfile"`'
+    ;;
+
+  darwin* | rhapsody*)
+    case "$host_os" in
+    rhapsody* | darwin1.[012])
+      allow_undefined_flag='-undefined suppress'
+      ;;
+    *) # Darwin 1.3 on
+      allow_undefined_flag='-flat_namespace -undefined suppress'
+      ;;
+    esac
+    archive_cmds='$CC $(if test .$module = .yes; then echo -bundle; else echo -dynamiclib; fi) $allow_undefined_flag -o $lib $libobjs $deplibs $linkopts -install_name $rpath/$soname $verstring'
+    # We need to add '_' to the symbols in $export_symbols first
+    #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols $lib'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    whole_archive_flag_spec='-all_load $convenience'
+    ;;
+
+  freebsd1*)
+    ld_shlibs=no
+    ;;
+
+  # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+  # support.  Future versions do this automatically, but an explicit c++rt0.o
+  # does not break anything, and helps significantly (at the cost of a little
+  # extra space).
+  freebsd2.2*)
+    archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+  freebsd2*)
+    archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_direct=yes
+    hardcode_minus_L=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+  freebsd*)
+    archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  hpux9* | hpux10* | hpux11*)
+    case $host_os in
+    hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;;
+    *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;;
+    esac
+    hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+    hardcode_libdir_separator=:
+    hardcode_direct=yes
+    hardcode_minus_L=yes # Not in the search PATH, but as the default
+                        # location of the library.
+    export_dynamic_flag_spec='${wl}-E'
+    ;;
+
+  irix5* | irix6*)
+    if test "$with_gcc" = yes; then
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+    else
+      archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+    fi
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator=:
+    link_all_deplibs=yes
+    ;;
+
+  netbsd*)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+    else
+      archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+    fi
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  newsos6)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+    hardcode_direct=yes
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator=:
+    hardcode_shlibpath_var=no
+    ;;
+
+  openbsd*)
+    archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  os2*)
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_minus_L=yes
+    allow_undefined_flag=unsupported
+    archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+    old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+    ;;
+
+  osf3*)
+    if test "$with_gcc" = yes; then
+      allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+      archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+    else
+      allow_undefined_flag=' -expect_unresolved \*'
+      archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+    fi
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator=:
+    ;;
+
+  osf4* | osf5*)       # as osf3* with the addition of -msym flag
+    if test "$with_gcc" = yes; then
+      allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+      archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    else
+      allow_undefined_flag=' -expect_unresolved \*'
+      archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+      archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+      $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp'
+
+      # cc supports -rpath directly
+      hardcode_libdir_flag_spec='-rpath $libdir'
+    fi
+    hardcode_libdir_separator=:
+    ;;
+
+  sco3.2v5*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_shlibpath_var=no
+    runpath_var=LD_RUN_PATH
+    hardcode_runpath_var=yes
+    ;;
+
+  solaris*)
+    no_undefined_flag=' -z defs'
+    # $CC -shared without GNU ld will not create a library from C++
+    # object files and a static libstdc++, better avoid it by now
+    archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+               $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_shlibpath_var=no
+    case $host_os in
+    solaris2.[0-5] | solaris2.[0-5].*) ;;
+    *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+      whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+    esac
+    link_all_deplibs=yes
+    ;;
+
+  sunos4*)
+    archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_direct=yes
+    hardcode_minus_L=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  sysv4)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    runpath_var='LD_RUN_PATH'
+    hardcode_shlibpath_var=no
+    hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+    ;;
+
+  sysv4.3*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_shlibpath_var=no
+    export_dynamic_flag_spec='-Bexport'
+    ;;
+
+  sysv5*)
+    no_undefined_flag=' -z text'
+    # $CC -shared without GNU ld will not create a library from C++
+    # object files and a static libstdc++, better avoid it by now
+    archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+               $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+    hardcode_libdir_flag_spec=
+    hardcode_shlibpath_var=no
+    runpath_var='LD_RUN_PATH'
+    ;;
+
+  uts4*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_shlibpath_var=no
+    ;;
+
+  dgux*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_shlibpath_var=no
+    ;;
+
+  sysv4*MP*)
+    if test -d /usr/nec; then
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ld_shlibs=yes
+    fi
+    ;;
+
+  sysv4.2uw2*)
+    archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+    hardcode_direct=yes
+    hardcode_minus_L=no
+    hardcode_shlibpath_var=no
+    hardcode_runpath_var=yes
+    runpath_var=LD_RUN_PATH
+    ;;
+
+  sysv5uw7* | unixware7*)
+    no_undefined_flag='${wl}-z ${wl}text'
+    if test "$GCC" = yes; then
+      archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+    else
+      archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+    fi
+    runpath_var='LD_RUN_PATH'
+    hardcode_shlibpath_var=no
+    ;;
+
+  *)
+    ld_shlibs=no
+    ;;
+  esac
+fi
+
+## Compiler Characteristics: PIC flags, static flags, etc
+if test "X${ac_cv_prog_cc_pic+set}" = Xset; then
+  :
+else
+  ac_cv_prog_cc_pic=
+  ac_cv_prog_cc_shlib=
+  ac_cv_prog_cc_wl=
+  ac_cv_prog_cc_static=
+  ac_cv_prog_cc_no_builtin=
+  ac_cv_prog_cc_can_build_shared=$can_build_shared
+
+  if test "$with_gcc" = yes; then
+    ac_cv_prog_cc_wl='-Wl,'
+    ac_cv_prog_cc_static='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+        # AIX 5 now supports IA64 processor
+        lt_cv_prog_cc_static='-Bstatic'
+      else
+        lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      ac_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4'
+      ;;
+    beos* | irix5* | irix6* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    cygwin* | mingw* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      ac_cv_prog_cc_pic='-DDLL_EXPORT'
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      ac_cv_prog_cc_pic='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      ac_cv_prog_cc_pic=
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+        ac_cv_prog_cc_pic=-Kconform_pic
+      fi
+      ;;
+    *)
+      ac_cv_prog_cc_pic='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for PIC flags for the system compiler.
+    case $host_os in
+    aix*)
+     # All AIX code is PIC.
+      ac_cv_prog_cc_static="$ac_cv_prog_cc_static ${ac_cv_prog_cc_wl}-lC"
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      # Is there a better ac_cv_prog_cc_static that works with the bundled CC?
+      ac_cv_prog_cc_wl='-Wl,'
+      ac_cv_prog_cc_static="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+      ac_cv_prog_cc_pic='+Z'
+      ;;
+
+    irix5* | irix6*)
+      ac_cv_prog_cc_wl='-Wl,'
+      ac_cv_prog_cc_static='-non_shared'
+      # PIC (with -KPIC) is the default.
+      ;;
+
+    cygwin* | mingw* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      ac_cv_prog_cc_pic='-DDLL_EXPORT'
+      ;;
+
+    newsos6)
+      ac_cv_prog_cc_pic='-KPIC'
+      ac_cv_prog_cc_static='-Bstatic'
+      ;;
+
+    osf3* | osf4* | osf5*)
+      # All OSF/1 code is PIC.
+      ac_cv_prog_cc_wl='-Wl,'
+      ac_cv_prog_cc_static='-non_shared'
+      ;;
+
+    sco3.2v5*)
+      ac_cv_prog_cc_pic='-Kpic'
+      ac_cv_prog_cc_static='-dn'
+      ac_cv_prog_cc_shlib='-belf'
+      ;;
+
+    solaris*)
+      ac_cv_prog_cc_pic='-KPIC'
+      ac_cv_prog_cc_static='-Bstatic'
+      ac_cv_prog_cc_wl='-Wl,'
+      ;;
+
+    sunos4*)
+      ac_cv_prog_cc_pic='-PIC'
+      ac_cv_prog_cc_static='-Bstatic'
+      ac_cv_prog_cc_wl='-Qoption ld '
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      ac_cv_prog_cc_pic='-KPIC'
+      ac_cv_prog_cc_static='-Bstatic'
+      ac_cv_prog_cc_wl='-Wl,'
+      ;;
+
+    uts4*)
+      ac_cv_prog_cc_pic='-pic'
+      ac_cv_prog_cc_static='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+       ac_cv_prog_cc_pic='-Kconform_pic'
+       ac_cv_prog_cc_static='-Bstatic'
+      fi
+      ;;
+
+    *)
+      ac_cv_prog_cc_can_build_shared=no
+      ;;
+    esac
+  fi
+  case "$host_os" in
+      # Platforms which do not suport PIC and -DPIC is meaningless
+      # on them:
+      *djgpp*)
+        ac_cv_prog_cc_pic=
+        ;;
+      *)
+        ac_cv_prog_cc_pic="$ac_cv_prog_cc_pic -DPIC"
+        ;;
+  esac
+fi
+
+need_lc=yes
+if test "$enable_shared" = yes && test "$with_gcc" = yes; then
+  case $archive_cmds in
+  *'~'*)
+    # FIXME: we may have to deal with multi-command sequences.
+    ;;
+  '$CC '*)
+    # Test whether the compiler implicitly links with -lc since on some
+    # systems, -lgcc has to come before -lc. If gcc already passes -lc
+    # to ld, don't add -lc before -lgcc.
+    echo $ac_n "checking whether -lc should be explicitly linked in... $ac_c" 1>&6
+    if eval "test \"`echo '$''{'ac_cv_archive_cmds_needs_lc'+set}'`\" = set"; then
+      echo $ac_n "(cached) $ac_c" 1>&6
+      need_lc=$ac_cv_archive_cmds_needs_lc
+    else
+      $rm conftest*
+      echo "static int dummy;" > conftest.$ac_ext
+      if { (eval echo ltcf-c.sh:need_lc: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then
+       # Append any warnings to the config.log.
+       cat conftest.err 1>&5
+       soname=conftest
+       lib=conftest
+       libobjs=conftest.$ac_objext
+       deplibs=
+       wl=$ac_cv_prog_cc_wl
+       compiler_flags=-v
+       linker_flags=-v
+       verstring=
+       output_objdir=.
+       libname=conftest
+       save_allow_undefined_flag=$allow_undefined_flag
+       allow_undefined_flag=
+       if { (eval echo ltcf-c.sh:need_lc: \"$archive_cmds\") 1>&5; (eval $archive_cmds) 2>&1 | grep " -lc " 1>&5 ; }; then
+         need_lc=no
+       fi
+       allow_undefined_flag=$save_allow_undefined_flag
+      else
+       cat conftest.err 1>&5
+      fi
+    fi
+    $rm conftest*
+    echo "$ac_t$need_lc" 1>&6
+    ;;
+  esac
+fi
+ac_cv_archive_cmds_needs_lc=$need_lc
diff --git a/file/ltconfig b/file/ltconfig
new file mode 100755 (executable)
index 0000000..354dc1e
--- /dev/null
@@ -0,0 +1,2797 @@
+#! /bin/sh
+
+# ltconfig - Create a system-specific libtool.
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This file 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 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# 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.
+
+# A lot of this script is taken from autoconf-2.10.
+
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+echo=echo
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell.
+  exec "$SHELL" "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit 0
+fi
+
+# Find the correct PATH separator.  Usually this is `:', but
+# DJGPP uses `;' like DOS.
+if test "X${PATH_SEPARATOR+set}" != Xset; then
+  UNAME=${UNAME-`uname 2>/dev/null`}
+  case X$UNAME in
+    *-DOS) PATH_SEPARATOR=';' ;;
+    *)     PATH_SEPARATOR=':' ;;
+  esac
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+if test "X${echo_test_string+set}" != Xset; then
+  # find a string as large as possible, as long as the shell can cope with it
+  for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
+    # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+    if (echo_test_string="`eval $cmd`") 2>/dev/null &&
+       echo_test_string="`eval $cmd`" &&
+       (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null; then
+      break
+    fi
+  done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+   echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+   test "X$echo_testing_string" = "X$echo_test_string"; then
+  :
+else
+  # The Solaris, AIX, and Digital Unix default echo programs unquote
+  # backslashes.  This makes it impossible to quote backslashes using
+  #   echo "$something" | sed 's/\\/\\\\/g'
+  #
+  # So, first we look for a working echo in the user's PATH.
+
+  IFS="${IFS=  }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+  for dir in $PATH /usr/ucb; do
+    if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+       test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      echo="$dir/echo"
+      break
+    fi
+  done
+  IFS="$save_ifs"
+
+  if test "X$echo" = Xecho; then
+    # We didn't find a better echo, so look for alternatives.
+    if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      # This shell has a builtin print -r that does the trick.
+      echo='print -r'
+    elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+        test "X$CONFIG_SHELL" != X/bin/ksh; then
+      # If we have ksh, try running ltconfig again with it.
+      ORIGINAL_CONFIG_SHELL="${CONFIG_SHELL-/bin/sh}"
+      export ORIGINAL_CONFIG_SHELL
+      CONFIG_SHELL=/bin/ksh
+      export CONFIG_SHELL
+      exec "$CONFIG_SHELL" "$0" --no-reexec ${1+"$@"}
+    else
+      # Try using printf.
+      echo='printf %s\n'
+      if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+        echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+        test "X$echo_testing_string" = "X$echo_test_string"; then
+       # Cool, printf works
+       :
+      elif echo_testing_string=`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null` &&
+          test "X$echo_testing_string" = 'X\t' &&
+          echo_testing_string=`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+          test "X$echo_testing_string" = "X$echo_test_string"; then
+       CONFIG_SHELL="$ORIGINAL_CONFIG_SHELL"
+       export CONFIG_SHELL
+       SHELL="$CONFIG_SHELL"
+       export SHELL
+       echo="$CONFIG_SHELL $0 --fallback-echo"
+      elif echo_testing_string=`("$CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null` &&
+          test "X$echo_testing_string" = 'X\t' &&
+          echo_testing_string=`("$CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+          test "X$echo_testing_string" = "X$echo_test_string"; then
+       echo="$CONFIG_SHELL $0 --fallback-echo"
+      else
+       # maybe with a smaller string...
+       prev=:
+
+       for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
+         if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null; then
+           break
+         fi
+         prev="$cmd"
+       done
+
+       if test "$prev" != 'sed 50q "$0"'; then
+         echo_test_string=`eval $prev`
+         
+         export echo_test_string
+         exec "${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}}" "$0" ${1+"$@"}
+       else
+         # Oops.  We lost completely, so just stick with echo.
+         echo=echo
+       fi
+      fi
+    fi
+  fi
+fi
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e s/^X//'
+sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# The name of this program.
+progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'`
+
+# Constants:
+PROGRAM=ltconfig
+PACKAGE=libtool
+VERSION=1.4a
+TIMESTAMP=" (1.641.2.255 2001/05/22 10:39:30)"
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+rm="rm -f"
+
+help="Try \`$progname --help' for more information."
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+enable_shared=yes
+# All known linkers require a `.a' archive for static linking (except M$VC,
+# which needs '.lib').
+enable_static=yes
+enable_fast_install=yes
+enable_dlopen=unknown
+enable_win32_dll=no
+pic_mode=default
+ltmain=
+silent=
+srcdir=
+ac_config_guess=
+ac_config_sub=
+host=
+build=NONE
+nonopt=NONE
+ofile="$default_ofile"
+verify_host=yes
+tagname=
+with_gcc=no
+with_gnu_ld=no
+need_locks=yes
+ac_ext=c
+libext=a
+cache_file=
+max_cmd_len=
+
+## Dependencies to place before and after the object being linked:
+predep_objects=
+postdep_objects=
+predeps=
+postdeps=
+compiler_lib_search_path=
+
+## Link characteristics:
+allow_undefined_flag=
+no_undefined_flag=
+need_lib_prefix=unknown
+need_version=unknown
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+archive_cmds=
+archive_expsym_cmds=
+old_archive_from_new_cmds=
+old_archive_from_expsyms_cmds=
+striplib=
+old_striplib=
+export_dynamic_flag_spec=
+whole_archive_flag_spec=
+thread_safe_flag_spec=
+hardcode_into_libs=no
+hardcode_libdir_flag_spec=
+hardcode_libdir_separator=
+hardcode_direct=no
+hardcode_minus_L=no
+hardcode_shlibpath_var=unsupported
+runpath_var=
+link_all_deplibs=unknown
+always_export_symbols=no
+export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
+# include_expsyms should be a list of space-separated symbols to be *always*
+# included in the symbol list
+include_expsyms=
+# exclude_expsyms can be an egrep regular expression of symbols to exclude
+# it will be wrapped by ` (' and `)$', so one must not match beginning or
+# end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+# as well as any symbol that contains `d'.
+exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+# platforms (ab)use it in PIC code, but their linkers get confused if
+# the symbol is explicitly referenced.  Since portable code cannot
+# rely on this symbol name, it's probably fine to never include it in
+# preloaded symbol tables.
+extract_expsyms_cmds=
+
+## Tools:
+old_AR="$AR"
+old_AR_FLAGS="$AR_FLAGS"
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+old_CPPFLAGS="$CPPFLAGS"
+old_LDFLAGS="$LDFLAGS"
+old_LIBS="$LIBS"
+old_MAGIC_CMD="$MAGIC_CMD"
+old_LD="$LD"
+old_LN_S="$LN_S"
+old_LTCC="$LTCC"
+old_NM="$NM"
+old_RANLIB="$RANLIB"
+old_STRIP="$STRIP"
+old_AS="$AS"
+old_DLLTOOL="$DLLTOOL"
+old_OBJDUMP="$OBJDUMP"
+old_OBJEXT="$OBJEXT"
+old_EXEEXT="$EXEEXT"
+old_reload_flag="$reload_flag"
+old_deplibs_check_method="$deplibs_check_method"
+old_file_magic_cmd="$file_magic_cmd"
+
+# Parse the command line options.
+args=
+prev=
+for option
+do
+  case $option in
+  -*=*) optarg=`echo "$option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) optarg= ;;
+  esac
+
+  # If the previous option needs an argument, assign it.
+  if test -n "$prev"; then
+    eval "$prev=\$option"
+    prev=
+    continue
+  fi
+
+  case $option in
+  --help) cat <<EOM
+Usage: $progname [OPTION]... LTMAIN [HOST]
+
+Generate a system-specific libtool script.
+
+    --build                configure for building on BUILD [BUILD=HOST]
+    --debug                enable verbose shell tracing
+    --disable-shared       do not build shared libraries
+    --disable-static       do not build static libraries
+    --disable-fast-install do not optimize for fast installation
+    --enable-dlopen        enable dlopen support
+    --enable-win32-dll     enable building dlls on win32 hosts
+    --help                 display this help and exit
+    --no-verify            do not verify that HOST is a valid host type
+-o, --output=FILE          specify the output file [default=$default_ofile]
+    --quiet                same as \`--silent'
+    --silent               do not print informational messages
+    --srcdir=DIR           find \`config.guess' in DIR
+    --version              output version information and exit
+    --add-tag=TAG          append an alternate configuration
+    --with-gcc             assume that the GNU C compiler will be used
+    --with-gnu-ld          assume that the C compiler uses the GNU linker
+    --prefer-pic           try to use only PIC objects
+    --prefer-non-pic       try to use only non-PIC objects
+    --disable-lock         disable file locking
+    --cache-file=FILE      configure cache file
+
+LTMAIN is the \`ltmain.sh' shell script fragment or \`ltmain.c' program
+that provides basic libtool functionality.
+
+HOST is the canonical host system name [default=guessed].
+EOM
+  exit 0
+  ;;
+
+  --build) prev=build ;;
+  --build=*) build="$optarg" ;;
+
+  --debug)
+    echo "$progname: enabling shell trace mode"
+    set -x
+    ;;
+
+  --disable-shared) enable_shared=no ;;
+
+  --disable-static) enable_static=no ;;
+
+  --disable-fast-install) enable_fast_install=no ;;
+
+  --enable-dlopen) enable_dlopen=yes ;;
+
+  --enable-win32-dll) enable_win32_dll=yes ;;
+
+  --quiet | --silent) silent=yes ;;
+
+  --srcdir) prev=srcdir ;;
+  --srcdir=*) srcdir="$optarg" ;;
+
+  --no-verify) verify_host=no ;;
+
+  --output | -o) prev=ofile ;;
+  --output=*) ofile="$optarg" ;;
+
+  --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"; exit 0 ;;
+
+  --add-tag) prev=tagname ;;
+  --add-tag=*) tagname="$optarg" ;;
+
+  --with-gcc) with_gcc=yes ;;
+  --with-gnu-ld) with_gnu_ld=yes ;;
+
+  --prefer-pic) pic_mode=yes ;;
+  --prefer-non-pic) pic_mode=no ;;
+
+  --disable-lock) need_locks=no ;;
+
+  --cache-file=*) cache_file="$optarg" ;;
+
+  -*)
+    echo "$progname: unrecognized option \`$option'" 1>&2
+    echo "$help" 1>&2
+    exit 1
+    ;;
+
+  *)
+    if test -z "$ltmain"; then
+      ltmain="$option"
+    elif test -z "$host"; then
+# This generates an unnecessary warning for sparc-sun-solaris4.1.3_U1
+#      if test -n "`echo $option| sed 's/[-a-z0-9.]//g'`"; then
+#        echo "$progname: warning \`$option' is not a valid host type" 1>&2
+#      fi
+      host="$option"
+    else
+      echo "$progname: too many arguments" 1>&2
+      echo "$help" 1>&2
+      exit 1
+    fi ;;
+  esac
+done
+
+if test -z "$ltmain"; then
+  echo "$progname: you must specify a LTMAIN file" 1>&2
+  echo "$help" 1>&2
+  exit 1
+fi
+
+if test ! -f "$ltmain"; then
+  echo "$progname: \`$ltmain' does not exist" 1>&2
+  echo "$help" 1>&2
+  exit 1
+fi
+
+if test -n "$tagname"; then
+  # Check whether tagname contains only valid characters
+  case `$echo "X$tagname" | $Xsed -e 's/[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]//g'` in
+  "") ;;
+  *)
+    echo "$progname: invalid tag name: $tagname" 1>&2
+    exit 1
+    ;;
+  esac
+
+  if grep "^### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$ofile" > /dev/null; then
+    echo "$progname: tag name $tagname already exists" 1>&2
+    exit 1
+  fi
+
+  if test ! -f "$ofile"; then
+    echo "$progname: warning: output file \`$ofile' does not exist" 1>&2
+  fi
+
+  if test -z "$LTCC"; then
+    eval "`$SHELL $ofile --config | grep '^LTCC='`"
+    if test -z "$LTCC"; then
+      echo "$progname: warning: output file \`$ofile' does not look like a libtool script" 1>&2
+    else
+      echo "$progname: warning: using \`LTCC=$LTCC', extracted from \`$ofile'" 1>&2
+    fi
+  fi
+fi
+
+# Quote any args containing shell metacharacters.
+ltconfig_args=
+for arg
+do
+  case $arg in
+  *" "*|*"     "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
+  ltconfig_args="$ltconfig_args '$arg'" ;;
+  *) ltconfig_args="$ltconfig_args $arg" ;;
+  esac
+done
+
+# A relevant subset of AC_INIT.
+
+# File descriptor usage:
+# 0 standard input
+# 1 file creation
+# 2 errors and warnings
+# 3 some systems may open it to /dev/tty
+# 4 used on the Kubota Titan
+# 5 compiler messages saved in config.log
+# 6 checking for... messages and results
+if test "$silent" = yes; then
+  exec 6>/dev/null
+else
+  exec 6>&1
+fi
+exec 5>>./config.log
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+if test "X${LC_ALL+set}" = Xset; then LC_ALL=C; export LC_ALL; fi
+if test "X${LANG+set}"   = Xset; then LANG=C;   export LANG;   fi
+
+if test -n "$cache_file" && test -r "$cache_file" && test -f "$cache_file"; then
+  echo "loading cache $cache_file within ltconfig"
+  . $cache_file
+fi
+
+if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
+  # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
+  if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
+    ac_n= ac_c='
+' ac_t='       '
+  else
+    ac_n=-n ac_c= ac_t=
+  fi
+else
+  ac_n= ac_c='\c' ac_t=
+fi
+
+if test -z "$srcdir"; then
+  # Assume the source directory is the same one as the path to LTMAIN.
+  srcdir=`$echo "X$ltmain" | $Xsed -e 's%/[^/]*$%%'`
+  test "$srcdir" = "$ltmain" && srcdir=.
+fi
+
+trap "$rm conftest*; exit 1" 1 2 15
+if test "$verify_host" = yes; then
+  # Check for config.guess and config.sub.
+  ac_aux_dir=
+  for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+    if test -f $ac_dir/config.guess; then
+      ac_aux_dir=$ac_dir
+      break
+    fi
+  done
+  if test -z "$ac_aux_dir"; then
+    echo "$progname: cannot find config.guess in $srcdir $srcdir/.. $srcdir/../.." 1>&2
+    echo "$help" 1>&2
+    exit 1
+  fi
+  ac_config_guess=$ac_aux_dir/config.guess
+  ac_config_sub=$ac_aux_dir/config.sub
+
+  # Make sure we can run config.sub.
+  if $SHELL $ac_config_sub sun4 >/dev/null 2>&1; then :
+  else
+    echo "$progname: cannot run $ac_config_sub" 1>&2
+    echo "$help" 1>&2
+    exit 1
+  fi
+
+  echo $ac_n "checking host system type""... $ac_c" 1>&6
+
+  host_alias=$host
+  case $host_alias in
+  "")
+    # Force config.guess to use the C compiler.
+    # CC_FOR_BUILD overrides the CC variable in config.guess but I had
+    # problems with it so do it this way for now.
+    CC="$LTCC"
+
+    if host_alias=`$SHELL $ac_config_guess`; then :
+    else
+      echo "$progname: cannot guess host type; you must specify one" 1>&2
+      echo "$help" 1>&2
+      exit 1
+    fi
+
+    # Restore the C compiler.
+    CC="$old_CC"
+    ;;
+  esac
+  host=`$SHELL $ac_config_sub $host_alias`
+  echo "$ac_t$host" 1>&6
+
+  # Make sure the host verified.
+  test -z "$host" && exit 1
+
+  # Check for the build system type
+  echo $ac_n "checking build system type... $ac_c" 1>&6
+
+  build_alias=$build
+  case $build_alias in
+  NONE)
+    case $nonopt in
+    NONE) build_alias=$host_alias ;;
+    *) build_alias=$nonopt ;;
+    esac ;;
+  esac
+
+  build=`$SHELL $ac_config_sub $build_alias`
+  build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+  build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+  build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+  echo "$ac_t""$build" 1>&6
+
+elif test -z "$host"; then
+  echo "$progname: you must specify a host type if you use \`--no-verify'" 1>&2
+  echo "$help" 1>&2
+  exit 1
+else
+  host_alias=$host
+  build_alias=$host_alias
+  build=$host
+fi
+
+if test x"$host" != x"$build"; then
+  ac_tool_prefix=${host_alias}-
+else
+  ac_tool_prefix=
+fi
+
+host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+# Transform linux* to *-*-linux-gnu*, to support old configure scripts.
+case $host_os in
+linux-gnu*) ;;
+linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
+esac
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+  old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+fi
+
+# Source the script associated with the $tagname tag configuration.
+if test -n "$tagname"; then
+  . $ltmain
+else
+  # FIXME:  We should use a variable here
+  # Configure for a C compiler
+  . $srcdir/ltcf-c.sh
+fi
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$NM" && NM=nm
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$objext" && objext=o
+
+echo $ac_n "checking for objdir... $ac_c" 1>&6
+rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+echo "$ac_t$objdir" 1>&6
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+set dummy $CC
+compiler="$2"
+
+# We assume here that the value for ac_cv_prog_cc_pic will not be cached
+# in isolation, and that seeing it set (from the cache) indicates that
+# the associated values are set (in the cache) correctly too.
+echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6
+echo "$progname:678:checking for $compiler option to produce PIC" 1>&5
+
+if test -z "$ac_cv_prog_cc_pic"; then
+  echo "$ac_t"none 1>&6
+else
+  echo "$ac_t""$ac_cv_prog_cc_pic" 1>&6
+
+  # Check to make sure the pic_flag actually works.
+  echo $ac_n "checking if $compiler PIC flag $ac_cv_prog_cc_pic works... $ac_c" 1>&6
+  echo "$progname:687:checking that $compiler PIC flag $ac_cv_prog_cc_pic works." 1>&5
+  if test "X${ac_cv_prog_cc_pic_works+set}" = Xset && \
+     test "X${ac_cv_prog_cc_pic_works}" != X; then
+    echo $ac_n "(cached) $ac_c" 1>&6
+  else
+    ac_cv_prog_cc_pic_works=yes
+    $rm conftest*
+    echo $lt_simple_compile_test_code > conftest.$ac_ext
+    save_CFLAGS="$CFLAGS"
+    CFLAGS="$CFLAGS $ac_cv_prog_cc_pic -DPIC"
+    if { (eval echo $progname:697: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then
+      # Append any warnings to the config.log.
+      cat conftest.err 1>&5
+
+      case $host_os in
+      hpux9* | hpux10* | hpux11*)
+       # On HP-UX, both CC and GCC only warn that PIC is supported... then
+       # they create non-PIC objects.  So, if there were any warnings, we
+       # assume that PIC is not supported.
+       if test -s conftest.err; then
+         ac_cv_prog_cc_pic_works=no
+         ac_cv_prog_cc_can_build_shared=no
+         ac_cv_prog_cc_pic=
+       else
+         ac_cv_prog_cc_pic_works=yes
+         ac_cv_prog_cc_pic=" $ac_cv_prog_cc_pic"
+       fi
+       ;;
+      *)
+       ac_cv_prog_cc_pic_works=yes
+       ac_cv_prog_cc_pic=" $ac_cv_prog_cc_pic"
+       ;;
+      esac
+    else
+      # Append any errors to the config.log.
+      cat conftest.err 1>&5
+      ac_cv_prog_cc_pic_works=no
+      ac_cv_prog_cc_can_build_shared=no
+      ac_cv_prog_cc_pic=
+    fi
+    CFLAGS="$save_CFLAGS"
+    $rm conftest*
+  fi
+  # Belt *and* braces to stop my trousers falling down:
+  if test "X$ac_cv_prog_cc_pic_works" = Xno; then
+    ac_cv_prog_cc_pic=
+    ac_cv_prog_cc_can_build_shared=no
+  fi
+  echo "$ac_t""$ac_cv_prog_cc_pic_works" 1>&6
+fi
+
+# Check for any special shared library compilation flags.
+if test -n "$ac_cv_prog_cc_shlib"; then
+  echo "$progname: warning: \`$CC' requires \`$ac_cv_prog_cc_shlib' to build shared libraries" 1>&2
+  if echo "$old_CC $old_CFLAGS " | egrep -e "[         ]$ac_cv_prog_cc_shlib[  ]" >/dev/null; then :
+  else
+    echo "$progname: add \`$ac_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" 1>&2
+    ac_cv_prog_cc_can_build_shared=no
+  fi
+fi
+
+echo $ac_n "checking if $compiler static flag $ac_cv_prog_cc_static works... $ac_c" 1>&6
+echo "$progname:749: checking if $compiler static flag $ac_cv_prog_cc_static works" >&5
+if test "X${ac_cv_prog_cc_static_works+set}" = Xset && \
+   test "X${ac_cv_prog_cc_static_works}" != X; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  $rm conftest*
+  echo $lt_simple_link_test_code > conftest.$ac_ext
+  save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="$LDFLAGS $ac_cv_prog_cc_static"
+  if { (eval echo $progname:758: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+    ac_cv_prog_cc_static_works=yes
+  else
+    ac_cv_prog_cc_static_works=no
+    ac_cv_prog_cc_static=
+  fi
+  LDFLAGS="$save_LDFLAGS"
+  $rm conftest*
+fi
+# Belt *and* braces to stop my trousers falling down:
+if test "X$ac_cv_prog_cc_static_works" = Xno; then
+  ac_cv_prog_cc_static=
+fi
+echo "$ac_t""$ac_cv_prog_cc_static_works" 1>&6
+pic_flag="$ac_cv_prog_cc_pic"
+special_shlib_compile_flags="$ac_cv_prog_cc_shlib"
+wl="$ac_cv_prog_cc_wl"
+link_static_flag="$ac_cv_prog_cc_static"
+no_builtin_flag="$ac_cv_prog_cc_no_builtin"
+can_build_shared="$ac_cv_prog_cc_can_build_shared"
+
+# find the maximum length of command line arguments
+echo "$progname:780: finding the maximum length of command line arguments" 1>&5
+echo $ac_n "finding the maximum length of command line arguments... $ac_c" 1>&6
+if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  i=0
+  testring="ABCD"
+  # If test is not a shell built-in, we'll probably end up computing a
+  # maximum length that is only half of the actual maximum length, but
+  # we can't tell.
+  while test "X"`$CONFIG_SHELL $0 --fallback-echo "X$testring" 2>/dev/null` \
+             = "XX$testring" &&
+          new_result=`expr "X$testring" : ".*" 2>&1` &&
+          lt_cv_sys_max_cmd_len=$new_result &&
+          test $i != 18 # 1 MB should be enough
+  do
+    i=`expr $i + 1`
+    testring=$testring$testring
+  done
+  testring=
+  # add a significant safety factor because C++ compilers can tack on massive amounts
+  # of additional arguments before passing them to the linker.  1/4 should be good.
+  len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+  lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len - $len`
+fi
+echo "$progname:@lineno@: result: $lt_cv_sys_max_cmd_len" 1>&5
+echo "${ac_t}$lt_cv_sys_max_cmd_len" 1>&6
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+  max_cmd_len=$lt_cv_sys_max_cmd_len
+else
+  max_cmd_len=none
+fi
+
+# Check to see if options -o and -c are simultaneously supported by compiler
+echo $ac_n "checking if $compiler supports -c -o file.$objext... $ac_c" 1>&6
+if test "${lt_cv_compiler_c_o+set}" = set; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  $rm -r conftest 2>/dev/null
+  mkdir conftest
+  cd conftest
+  $rm conftest*
+  echo $lt_simple_compile_test_code > conftest.$ac_ext
+  mkdir out
+  # According to Tom Tromey, Ian Lance Taylor reported there are C compilers
+  # that will create temporary files in the current directory regardless of
+  # the output directory.  Thus, making CWD read-only will cause this test
+  # to fail, enabling locking or at least warning the user not to do parallel
+  # builds.
+  chmod -w .
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -o out/conftest2.$objext"
+  echo "$progname:833: checking if $compiler supports -c -o file.$objext" >&5
+  if { (eval echo $progname:834: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$objext; then
+
+    # The compiler can only warn and ignore the option if not recognized
+    # So say no if there are warnings
+      if test -s out/conftest.err; then
+        lt_cv_compiler_c_o=no
+      else
+        lt_cv_compiler_c_o=yes
+      fi
+  else
+    # Append any errors to the config.log.
+    cat out/conftest.err 1>&5
+    lt_cv_compiler_c_o=no
+  fi
+  CFLAGS="$save_CFLAGS"
+  chmod u+w .
+  $rm conftest* out/*
+  rmdir out
+  cd ..
+  rmdir conftest
+  $rm -r conftest 2>/dev/null
+fi
+compiler_c_o=$lt_cv_compiler_c_o
+echo "${ac_t}$compiler_c_o" 1>&6
+
+# Check to see if we can do hard links to lock some files if needed
+hard_links="nottested"
+if test "$compiler_c_o" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo $ac_n "checking if we can lock with hard links... $ac_c" 1>&6
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  echo "$ac_t$hard_links" 1>&6
+  $rm conftest*
+  if test "$hard_links" = no; then
+    echo "*** WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+if test "$with_gcc" = yes; then
+  # Check to see if options -fno-rtti -fno-exceptions are supported by compiler
+  echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions ... $ac_c" 1>&6
+  $rm conftest*
+  echo $lt_simple_compile_test_code > conftest.$ac_ext
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext"
+  echo "$progname:887: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+  if { (eval echo $progname:888: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then
+
+    # The compiler can only warn and ignore the option if not recognized
+    # So say no if there are warnings
+      if test -s conftest.err; then
+       echo "$ac_t"no 1>&6
+       compiler_rtti_exceptions=no
+      else
+       echo "$ac_t"yes 1>&6
+       compiler_rtti_exceptions=yes
+      fi
+  else
+    # Append any errors to the config.log.
+    cat conftest.err 1>&5
+    compiler_rtti_exceptions=no
+    echo "$ac_t"no 1>&6
+  fi
+  CFLAGS="$save_CFLAGS"
+  $rm conftest*
+
+  if test "$compiler_rtti_exceptions" = "yes"; then
+    no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions'
+  else
+    no_builtin_flag=' -fno-builtin'
+  fi
+  
+fi
+
+# See if the linker supports building shared libraries.
+echo $ac_n "checking whether the linker ($LD) supports shared libraries... $ac_c" 1>&6
+
+echo "$ac_t$ld_shlibs" 1>&6
+test "$ld_shlibs" = no && can_build_shared=no
+
+# Check hardcoding attributes.
+echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" || \
+   test -n "$runpath_var"; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$hardcode_shlibpath_var" != no &&
+     test "$hardcode_minus_L" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+echo "$ac_t$hardcode_action" 1>&6
+
+echo $ac_n "checking whether stripping libraries is possible... $ac_c" 1>&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  echo "${ac_t}yes" 1>&6
+else
+  echo "${ac_t}no" 1>&6
+fi
+
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+# PORTME Fill in your ld.so characteristics
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+
+echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}.so$major'
+  ;;
+
+aix4* | aix5*)
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    # We preserve .a as extension for shared libraries though AIX4.2
+    # and later linker supports .so
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so instead of
+      # lib<name>.a to let people know that these are not typical AIX shared libraries.
+      library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+    else
+      # We preserve .a as extension for shared libraries though AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}.so$major.o'
+    fi
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    if $NM -V 2>&1 | egrep '(GNU)' > /dev/null; then
+      export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+    else
+      export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+    fi
+    shlibpath_var=LIBPATH
+    deplibs_check_method=pass_all
+    case $host_os in
+    aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+          echo ' yes '
+          echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+       :
+      else
+       # With GCC up to 2.95.x, collect2 would create an import file
+       # for dependence libraries.  The import file would start with
+       # the line `#! .'.  This would cause the generated library to
+       # depend on `.', always an invalid library.  This was fixed in
+       # development snapshots of GCC prior to 3.0.
+        can_build_shared=no
+      fi
+      ;;
+    esac
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}.so'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  lt_cv_dlopen="load_add_on"
+  lt_cv_dlopen_libs=
+  lt_cv_dlopen_self=yes
+  ;;
+
+bsdi4*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  export_dynamic_flag_spec=-rdynamic
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  need_version=no
+  need_lib_prefix=no
+  case $with_gcc,$host_os in
+  yes,cygwin*)
+    library_names_spec='$libname.dll.a'
+    soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | [sed -e 's/[.]/-/g']`${versuffix}.dll'
+    postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog .libs/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll; $rm \$dlpath'
+    ;;
+  yes,mingw*)
+    library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll'
+    sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"`
+    ;;
+  yes,pw32*)
+    library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll'
+;;
+  *)
+    library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  lt_cv_dlopen="LoadLibrary"
+  lt_cv_dlopen_libs=
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}.`test .$module = .yes && echo so || echo dylib` ${libname}${release}${major}.`test .$module = .yes && echo so || echo dylib` ${libname}.`test .$module = .yes && echo so || echo dylib`'
+  soname_spec='${libname}${release}${major}.`test .$module = .yes && echo so || echo dylib`'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+freebsd*)
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=sunos
+  case $objformat in
+    elf*)
+      library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+      soname_spec='${libname}${release}.so$major'
+      need_version=no
+      need_lc=no
+      need_lib_prefix=no
+      ;;
+    *)
+      library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  *)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  dynamic_linker="$host_os dld.sl"
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  shlibpath_var=SHLIB_PATH
+  shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+  library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl'
+  soname_spec='${libname}${release}.sl$major'
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6*)
+  version_type=irix
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}.so$major'
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so'
+  case $host_os in
+  irix5*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux-gnu*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  need_lib_prefix=no
+  need_version=no
+  version_type=sunos
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so'
+    soname_spec='${libname}${release}.so$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  sys_lib_search_path_spec="/usr/lib"
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+    need_version=no
+  fi
+  library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+os2*)
+  libname_spec='$name'
+  need_lib_prefix=no
+  library_names_spec='$libname.dll $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_version=no
+  soname_spec='${libname}${release}.so'
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}.so$major'
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so'
+    soname_spec='$libname.so.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$ac_t$dynamic_linker" 1>&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+echo $ac_n "checking command to parse $NM output... $ac_c" 1>&6
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Transform the above into a raw symbol and a C symbol.
+symxfrm='\1 \2\3 \3'
+
+# Transform an extracted symbol line into a proper C declaration
+global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[BCDT]'
+  ;;
+cygwin* | mingw* | pw32*)
+  symcode='[ABCDGISTW]'
+  ;;
+hpux*) # Its linker distinguishes data from code symbols
+  global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+  ;;
+irix*)
+  symcode='[BCDEGRST]'
+  ;;
+solaris* | sysv5*)
+  symcode='[BDT]'
+  ;;
+sysv4)
+  symcode='[DFNSTU]'
+  ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $host_os in
+mingw*)
+  opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
+  symcode='[ABCDGISTW]'
+fi
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Write the raw and C identifiers.
+  global_symbol_pipe="sed -n -e 's/^.*[        ]\($symcode$symcode*\)[         ][      ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+  $rm conftest*
+  cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+  echo "$progname:1433: checking if global_symbol_pipe works" >&5
+  if { (eval echo $progname:1434: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if { echo "$progname:1437: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then
+
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+       mv -f "$nlist"T "$nlist"
+      else
+       rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if egrep ' nm_test_var$' "$nlist" >/dev/null; then
+       if egrep ' nm_test_func$' "$nlist" >/dev/null; then
+         cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+         # Now generate the symbol file.
+         eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext'
+
+         cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr_t address;
+}
+lt_preloaded_symbols[] =
+{
+EOF
+         sed "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" >> conftest.$ac_ext
+         cat <<\EOF >> conftest.$ac_ext
+  {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+         # Now try linking the two files.
+         mv conftest.$objext conftstm.$objext
+         save_LIBS="$LIBS"
+         save_CFLAGS="$CFLAGS"
+         LIBS="conftstm.$objext"
+         CFLAGS="$CFLAGS$no_builtin_flag"
+         if { (eval echo $progname:1489: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+           pipe_works=yes
+         else
+           echo "$progname: failed program was:" >&5
+           cat conftest.$ac_ext >&5
+         fi
+         LIBS="$save_LIBS"
+       else
+         echo "cannot find nm_test_func in $nlist" >&5
+       fi
+      else
+       echo "cannot find nm_test_var in $nlist" >&5
+      fi
+    else
+      echo "cannot run $global_symbol_pipe" >&5
+    fi
+  else
+    echo "$progname: failed program was:" >&5
+    cat conftest.$ac_ext >&5
+  fi
+  $rm conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    global_symbol_pipe=
+  fi
+done
+if test "$pipe_works" = yes; then
+  echo "${ac_t}ok" 1>&6
+else
+  echo "${ac_t}failed" 1>&6
+fi
+
+if test -z "$global_symbol_pipe"; then
+  global_symbol_to_cdecl=
+fi
+
+# Report the final consequences.
+echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6
+
+# Only try to build win32 dlls if AC_LIBTOOL_WIN32_DLL was used in
+# configure.in, otherwise build static only libraries.
+case $host_os in
+cygwin* | mingw* | pw32* | os2*)
+  if test x$can_build_shared = xyes; then
+    test x$enable_win32_dll = xno && can_build_shared=no
+    echo "checking if package supports dlls... $can_build_shared" 1>&6
+  fi
+;;
+esac
+
+echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&6
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case $host_os in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+
+aix4*)
+  test "$enable_shared" = yes && enable_static=no
+  ;;
+esac
+
+echo "$ac_t$enable_shared" 1>&6
+
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+
+echo "checking whether to build static libraries... $enable_static" 1>&6
+
+if test "$hardcode_action" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$with_gcc" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+# Check whether we must set pic_mode to default
+test -z "$pic_flag" && pic_mode=default
+
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+if test "X${lt_cv_dlopen+set}" != Xset; then
+  lt_cv_dlopen=no lt_cv_dlopen_libs=
+echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
+echo "$progname:1593: checking for dlopen in -ldl" >&5
+if test "X${ac_cv_lib_dl_dlopen+set}" = Xset; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-ldl  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 1600 "ltconfig"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen();
+
+int main() {
+dlopen()
+; return 0; }
+EOF
+if { (eval echo $progname:1613: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$progname: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if test "X$ac_cv_lib_dl_dlopen" = Xyes; then
+  echo "$ac_t""yes" 1>&6
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  echo "$ac_t""no" 1>&6
+echo $ac_n "checking for dlopen""... $ac_c" 1>&6
+echo "$progname:1632: checking for dlopen" >&5
+if test "X${ac_cv_func_dlopen+set}" = Xset; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1637 "ltconfig"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char dlopen(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen();
+
+int main() {
+
+/* 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_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+dlopen();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo $progname:1662: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  ac_cv_func_dlopen=yes
+else
+  echo "$progname: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ac_cv_func_dlopen=no
+fi
+rm -f conftest*
+fi
+if test "X$ac_cv_func_dlopen" = Xyes; then
+  echo "$ac_t""yes" 1>&6
+  lt_cv_dlopen="dlopen"
+else
+  echo "$ac_t""no" 1>&6
+echo $ac_n "checking for dlopen in -lsvld""... $ac_c" 1>&6
+echo "$progname:1679: checking for dlopen in -lsvld" >&5
+if test "X${ac_cv_lib_svld_dlopen+set}" = Xset; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-lsvld  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 1686 "ltconfig"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen();
+
+int main() {
+dlopen()
+; return 0; }
+EOF
+if { (eval echo $progname:1699: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  ac_cv_lib_svld_dlopen=yes
+else
+  echo "$progname: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if test "X$ac_cv_lib_svld_dlopen" = Xyes; then
+  echo "$ac_t""yes" 1>&6
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  echo "$ac_t""no" 1>&6
+echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6
+echo "$progname:1718: checking for dld_link in -ldld" >&5
+if test "X${ac_cv_lib_dld_dld_link+set}" = Xset; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-ldld  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 1725 "ltconfig"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dld_link();
+
+int main() {
+dld_link()
+; return 0; }
+EOF
+if { (eval echo $progname:1738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  ac_cv_lib_dld_dld_link=yes
+else
+  echo "$progname: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if test "X$ac_cv_lib_dld_dld_link" = Xyes; then
+  echo "$ac_t""yes" 1>&6
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+else
+  echo "$ac_t""no" 1>&6
+echo $ac_n "checking for shl_load""... $ac_c" 1>&6
+echo "$progname:1757: checking for shl_load" >&5
+if test "X${ac_cv_func_shl_load+set}" = Xset; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1762 "ltconfig"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shl_load(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load();
+
+int main() {
+
+/* 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_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+shl_load();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo $progname:1787: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  ac_cv_func_shl_load=yes
+else
+  echo "$progname: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ac_cv_func_shl_load=no
+fi
+rm -f conftest*
+fi
+
+if test "X$ac_cv_func_shl_load" = Xyes; then
+  echo "$ac_t""yes" 1>&6
+  lt_cv_dlopen="shl_load"
+else
+  echo "$ac_t""no" 1>&6
+echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
+echo "$progname:1805: checking for shl_load in -ldld" >&5
+if test "X${ac_cv_lib_dld_shl_load+set}" = Xset; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-ldld  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 1812 "ltconfig"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load();
+
+int main() {
+shl_load()
+; return 0; }
+EOF
+if { (eval echo $progname:1826: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  ac_cv_lib_dld_shl_load=yes
+else
+  echo "$progname: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if test "X$ac_cv_lib_dld_shl_load" = Xyes; then
+  echo "$ac_t""yes" 1>&6
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+fi
+
+fi
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+for ac_hdr in dlfcn.h; do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "$progname:1873: checking for $ac_hdr" >&5
+if eval "test \"`echo 'X$''{'ac_cv_header_$ac_safe'+set}'`\" = Xset"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 1878 "ltconfig"
+#include <$ac_hdr>
+int fnord = 0;
+int main () { return(0); }
+EOF
+ac_try="$ac_compile >/dev/null 2>conftest.out"
+{ (eval echo $progname:1884: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  echo "$progname: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+    if test "x$ac_cv_header_dlfcn_h" = xyes; then
+      CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+    fi
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+  echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6
+echo "$progname:1912: checking whether a program can dlopen itself" >&5
+if test "X${lt_cv_dlopen_self+set}" = Xset; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test "$cross_compiling" = yes; then
+    lt_cv_dlopen_self=cross
+  else
+    cat > conftest.$ac_ext <<EOF
+#line 1920 "ltconfig"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LTDL_GLOBAL   RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+#  define LTDL_GLOBAL  DL_GLOBAL
+# else
+#  define LTDL_GLOBAL  0
+# endif
+#endif
+
+/* We may have to define LTDL_LAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LTDL_LAZY_OR_NOW
+# ifdef RTLD_LAZY
+#  define LTDL_LAZY_OR_NOW     RTLD_LAZY
+# else
+#  ifdef DL_LAZY
+#   define LTDL_LAZY_OR_NOW    DL_LAZY
+#  else
+#   ifdef RTLD_NOW
+#    define LTDL_LAZY_OR_NOW   RTLD_NOW
+#   else
+#    ifdef DL_NOW
+#     define LTDL_LAZY_OR_NOW  DL_NOW
+#    else
+#     define LTDL_LAZY_OR_NOW  0
+#    endif
+#   endif
+#  endif
+# endif
+#endif
+
+void fnord() { int i=42; }
+int main() {
+    void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW);
+    if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord");
+               if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); }
+
+EOF
+if { (eval echo $progname:1967: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  lt_cv_dlopen_self=yes
+else
+  echo "$progname: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  lt_cv_dlopen_self=no
+fi
+rm -fr conftest*
+fi
+
+fi
+
+echo "$ac_t""$lt_cv_dlopen_self" 1>&6
+
+  if test "$lt_cv_dlopen_self" = yes; then
+    LDFLAGS="$LDFLAGS $link_static_flag"
+  echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6
+echo "$progname:1986: checking whether a statically linked program can dlopen itself" >&5
+if test "X${lt_cv_dlopen_self_static+set}" = Xset; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test "$cross_compiling" = yes; then
+    lt_cv_dlopen_self_static=cross
+  else
+    cat > conftest.$ac_ext <<EOF
+#line 1994 "ltconfig"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LTDL_GLOBAL   RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+#  define LTDL_GLOBAL  DL_GLOBAL
+# else
+#  define LTDL_GLOBAL  0
+# endif
+#endif
+
+/* We may have to define LTDL_LAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LTDL_LAZY_OR_NOW
+# ifdef RTLD_LAZY
+#  define LTDL_LAZY_OR_NOW     RTLD_LAZY
+# else
+#  ifdef DL_LAZY
+#   define LTDL_LAZY_OR_NOW    DL_LAZY
+#  else
+#   ifdef RTLD_NOW
+#    define LTDL_LAZY_OR_NOW   RTLD_NOW
+#   else
+#    ifdef DL_NOW
+#     define LTDL_LAZY_OR_NOW  DL_NOW
+#    else
+#     define LTDL_LAZY_OR_NOW  0
+#    endif
+#   endif
+#  endif
+# endif
+#endif
+
+void fnord() { int i=42; }
+int main() {
+    void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW);
+    if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord");
+    if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); }
+
+EOF
+if { (eval echo $progname:2041: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  lt_cv_dlopen_self_static=yes
+else
+  echo "$progname: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  lt_cv_dlopen_self_static=no
+fi
+rm -fr conftest*
+fi
+
+fi
+
+echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6
+fi
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+# Copy echo and quote the copy, instead of the original, because it is
+# used later.
+ltecho="$echo"
+if test "X$ltecho" = "X$CONFIG_SHELL $0 --fallback-echo"; then
+   ltecho="$CONFIG_SHELL \$0 --fallback-echo"
+fi
+LTSHELL="$SHELL"
+
+LTCONFIG_VERSION="$VERSION"
+
+# Only quote variables if we're using ltmain.sh.
+case $ltmain in
+*.sh)
+  # Now quote all the things that may contain metacharacters.
+  for var in ltecho old_AR old_AR_FLAGS old_CC old_LTCC old_CFLAGS old_CPPFLAGS \
+    old_MAGIC_CMD old_LD old_LDFLAGS old_LIBS \
+    old_LN_S old_NM old_RANLIB old_STRIP \
+    old_AS old_DLLTOOL old_OBJDUMP \
+    old_OBJEXT old_EXEEXT old_reload_flag \
+    old_deplibs_check_method old_file_magic_cmd \
+    AR AR_FLAGS CC LTCC LD LN_S NM LTSHELL LTCONFIG_VERSION \
+    reload_flag reload_cmds wl \
+    pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \
+    thread_safe_flag_spec whole_archive_flag_spec libname_spec \
+    library_names_spec soname_spec \
+    RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \
+    old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \
+    postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \
+    predep_objects postdep_objects predeps postdeps compiler_lib_search_path \
+    old_striplib striplib file_magic_cmd export_symbols_cmds \
+    deplibs_check_method allow_undefined_flag no_undefined_flag \
+    finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \
+    hardcode_libdir_flag_spec hardcode_libdir_separator  \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    compiler_c_o need_locks exclude_expsyms include_expsyms; do
+
+    case $var in
+    reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    export_symbols_cmds | archive_cmds | archive_expsym_cmds | \
+    extract_expsyms_cmds | old_archive_from_expsyms_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ### testsuite: skip nested quoting test
+      ;;
+    *)
+      eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ### testsuite: skip nested quoting test
+      ;;
+    esac
+  done
+
+  case $ltecho in
+  *'\$0 --fallback-echo"')
+    ltecho=`$echo "X$ltecho" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+  if test -z "$tagname"; then
+    trap "$rm \"$ofile\"; exit 1" 1 2 15
+    echo "creating $ofile"
+    $rm "$ofile"
+    cat <<EOF > "$ofile"
+#! $SHELL
+
+# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh.
+#
+# Copyright (C) 1996-2000 Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# 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.
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="sed -e s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+### BEGIN LIBTOOL CONFIG
+EOF
+  else
+    echo "appending configuration tag \"$tagname\" to $ofile"
+    echo "### BEGIN LIBTOOL TAG CONFIG: $tagname" >> "$ofile"
+  fi
+  cfgfile="$ofile"
+  ;;
+
+*)
+  # Double-quote the variables that need it (for aesthetics).
+  for var in old_AR old_AR_FLAGS old_CC old_LTCC old_CFLAGS old_CPPFLAGS \
+    old_MAGIC_CMD old_LD old_LDFLAGS old_LIBS \
+    old_LN_S old_NM old_RANLIB old_STRIP \
+    old_AS old_DLLTOOL old_OBJDUMP \
+    old_OBJEXT old_EXEEXT old_reload_flag \
+    old_deplibs_check_method old_file_magic_cmd; do
+    eval "$var=\\\"\$var\\\""
+  done
+
+  # Just create a config file.
+  cfgfile="$ofile.cfg"
+  if test -z "$tagname"; then
+    trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+    echo "creating $cfgfile"
+    $rm "$cfgfile"
+    cat <<EOF > "$cfgfile"
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Libtool configuration file.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+
+### BEGIN LIBTOOL CONFIG
+EOF
+  else
+    echo "appending to $cfgfile"
+    echo "### BEGIN LIBTOOL TAG CONFIG: $tagname" >> "$ofile"
+  fi
+  ;;
+esac
+
+cat <<EOF >> "$cfgfile"
+# Libtool was configured as follows, on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+#
+# AR=$old_AR AR_FLAGS=$old_AR_FLAGS LTCC=$old_LTCC CC=$old_CC \\
+# CFLAGS=$old_CFLAGS CPPFLAGS=$old_CPPFLAGS \\
+# MAGIC_CMD=$old_MAGIC_CMD LD=$old_LD LDFLAGS=$old_LDFLAGS LIBS=$old_LIBS \\
+# LN_S=$old_LN_S NM=$old_NM RANLIB=$old_RANLIB STRIP=$old_STRIP \\
+# AS=$old_AS DLLTOOL=$old_DLLTOOL OBJDUMP=$old_OBJDUMP \\
+# objext=$old_OBJEXT exeext=$old_EXEEXT reload_flag=$old_reload_flag \\
+# deplibs_check_method=$old_deplibs_check_method \\
+# file_magic_cmd=$old_file_magic_cmd \\
+#   $0$ltconfig_args
+#
+# Compiler and other test output produced by $progname, useful for
+# debugging $progname, is in ./config.log if it exists.
+
+# The version of $progname that generated this script.
+LTCONFIG_VERSION=$LTCONFIG_VERSION
+
+# Shell to use when invoking shell scripts.
+SHELL=$LTSHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$need_lc
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$ltecho
+
+# The archiver.
+AR=$AR
+AR_FLAGS=$AR_FLAGS
+
+# A C compiler.
+LTCC=$LTCC
+
+# A language-specific compiler.
+CC=$CC
+
+# Is the compiler the GNU C compiler?
+with_gcc=$with_gcc
+
+# The linker used to build libraries.
+LD=$LD
+
+# Whether we need hard or soft links.
+LN_S=$LN_S
+
+# A BSD-compatible nm program.
+NM=$NM
+
+# A symbol stripping program
+STRIP=$STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$reload_flag
+reload_cmds=$reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$wl
+
+# Object file suffix (normally "o").
+objext="$objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$pic_flag
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$compiler_c_o
+
+# Must we lock files when doing compilation ?
+need_locks=$need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$link_static_flag
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$no_builtin_flag
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$whole_archive_flag_spec
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$thread_safe_flag_spec
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$RANLIB
+old_archive_cmds=$old_archive_cmds
+old_postinstall_cmds=$old_postinstall_cmds
+old_postuninstall_cmds=$old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$old_archive_from_expsyms_cmds
+
+# Commands used to build and install a shared archive.
+archive_cmds=$archive_cmds
+archive_expsym_cmds=$archive_expsym_cmds
+postinstall_cmds=$postinstall_cmds
+postuninstall_cmds=$postuninstall_cmds
+
+# Commands to strip libraries.
+old_striplib=$old_striplib
+striplib=$striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$predep_objects
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$postdep_objects
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$predeps
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$postdeps
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$compiler_lib_search_path
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$allow_undefined_flag
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$no_undefined_flag
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$global_symbol_to_cdecl
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$hardcode_libdir_flag_spec
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$hardcode_libdir_separator
+
+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$export_symbols_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$include_expsyms
+
+EOF
+
+if test -z "$tagname"; then
+  echo '### END LIBTOOL CONFIG' >> "$ofile"
+else
+  echo "### END LIBTOOL TAG CONFIG: $tagname" >> "$ofile"
+fi
+
+case $ltmain in
+*.sh)
+  echo >> "$ofile"
+  if test -z "$tagname"; then
+    case $host_os in
+    aix3*)
+      cat <<\EOF >> "$ofile"
+
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+EOF
+      ;;
+    esac
+    case $host in
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+      cat <<'EOF' >> "$ofile"
+      # This is a source program that is used to create dlls on Windows
+      # Don't remove nor modify the starting and closing comments
+# /* ltdll.c starts here */
+# #define WIN32_LEAN_AND_MEAN
+# #include <windows.h>
+# #undef WIN32_LEAN_AND_MEAN
+# #include <stdio.h>
+#
+# #ifndef __CYGWIN__
+# #  ifdef __CYGWIN32__
+# #    define __CYGWIN__ __CYGWIN32__
+# #  endif
+# #endif
+#
+# #ifdef __cplusplus
+# extern "C" {
+# #endif
+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
+# #ifdef __cplusplus
+# }
+# #endif
+#
+# #ifdef __CYGWIN__
+# #include <cygwin/cygwin_dll.h>
+# DECLARE_CYGWIN_DLL( DllMain );
+# #endif
+# HINSTANCE __hDllInstance_base;
+#
+# BOOL APIENTRY
+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
+# {
+#   __hDllInstance_base = hInst;
+#   return TRUE;
+# }
+# /* ltdll.c ends here */
+      # This is a source program that is used to create import libraries
+      # on Windows for dlls which lack them. Don't remove nor modify the
+      # starting and closing comments
+# /* impgen.c starts here */
+# /*   Copyright (C) 1999-2000 Free Software Foundation, Inc.
+#
+#  This file is part of GNU libtool.
+#
+#  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 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, write to the Free Software
+#  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#  */
+#
+#  #include <stdio.h>          /* for printf() */
+#  #include <unistd.h>         /* for open(), lseek(), read() */
+#  #include <fcntl.h>          /* for O_RDONLY, O_BINARY */
+#  #include <string.h>         /* for strdup() */
+#
+#  /* O_BINARY isn't required (or even defined sometimes) under Unix */
+#  #ifndef O_BINARY
+#  #define O_BINARY 0
+#  #endif
+#
+#  static unsigned int
+#  pe_get16 (fd, offset)
+#       int fd;
+#       int offset;
+#  {
+#    unsigned char b[2];
+#    lseek (fd, offset, SEEK_SET);
+#    read (fd, b, 2);
+#    return b[0] + (b[1]<<8);
+#  }
+#
+#  static unsigned int
+#  pe_get32 (fd, offset)
+#      int fd;
+#      int offset;
+#  {
+#    unsigned char b[4];
+#    lseek (fd, offset, SEEK_SET);
+#    read (fd, b, 4);
+#    return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
+#  }
+#
+#  static unsigned int
+#  pe_as32 (ptr)
+#       void *ptr;
+#  {
+#    unsigned char *b = ptr;
+#    return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
+#  }
+#
+#  int
+#  main (argc, argv)
+#      int argc;
+#      char *argv[];
+#  {
+#      int dll;
+#      unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
+#      unsigned long export_rva, export_size, nsections, secptr, expptr;
+#      unsigned long name_rvas, nexp;
+#      unsigned char *expdata, *erva;
+#      char *filename, *dll_name;
+#
+#      filename = argv[1];
+#
+#      dll = open(filename, O_RDONLY|O_BINARY);
+#      if (dll < 1)
+#      return 1;
+#
+#      dll_name = filename;
+#
+#      for (i=0; filename[i]; i++)
+#      if (filename[i] == '/' || filename[i] == '\\'  || filename[i] == ':')
+#          dll_name = filename + i +1;
+#
+#      pe_header_offset = pe_get32 (dll, 0x3c);
+#      opthdr_ofs = pe_header_offset + 4 + 20;
+#      num_entries = pe_get32 (dll, opthdr_ofs + 92);
+#
+#      if (num_entries < 1) /* no exports */
+#      return 1;
+#
+#      export_rva = pe_get32 (dll, opthdr_ofs + 96);
+#      export_size = pe_get32 (dll, opthdr_ofs + 100);
+#      nsections = pe_get16 (dll, pe_header_offset + 4 +2);
+#      secptr = (pe_header_offset + 4 + 20 +
+#            pe_get16 (dll, pe_header_offset + 4 + 16));
+#
+#      expptr = 0;
+#      for (i = 0; i < nsections; i++)
+#      {
+#      char sname[8];
+#      unsigned long secptr1 = secptr + 40 * i;
+#      unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
+#      unsigned long vsize = pe_get32 (dll, secptr1 + 16);
+#      unsigned long fptr = pe_get32 (dll, secptr1 + 20);
+#      lseek(dll, secptr1, SEEK_SET);
+#      read(dll, sname, 8);
+#      if (vaddr <= export_rva && vaddr+vsize > export_rva)
+#      {
+#          expptr = fptr + (export_rva - vaddr);
+#          if (export_rva + export_size > vaddr + vsize)
+#              export_size = vsize - (export_rva - vaddr);
+#          break;
+#      }
+#      }
+#
+#      expdata = (unsigned char*)malloc(export_size);
+#      lseek (dll, expptr, SEEK_SET);
+#      read (dll, expdata, export_size);
+#      erva = expdata - export_rva;
+#
+#      nexp = pe_as32 (expdata+24);
+#      name_rvas = pe_as32 (expdata+32);
+#
+#      printf ("EXPORTS\n");
+#      for (i = 0; i<nexp; i++)
+#      {
+#      unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
+#      printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
+#      }
+#
+#      return 0;
+#  }
+# /* impgen.c ends here */
+
+EOF
+    ;;
+  esac
+
+
+    # Append the ltmain.sh script.
+    sed '$q' "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1)
+    # We use sed instead of cat because bash on DJGPP gets confused if
+    # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+    # text mode, it properly converts lines to CR/LF.  This bash problem
+    # is reportedly fixed, but why not run on old versions too?
+
+    chmod +x "$ofile"
+  fi
+  ;;
+
+*)
+  # Compile the libtool program.
+  echo "FIXME: would compile $ltmain"
+  ;;
+esac
+
+# Update the list of available tags.
+if test -n "$tagname"; then
+
+  # Extract list of available tagged configurations in $ofile.
+  # Note that this assumes the entire list is on one line.
+  available_tags=`grep "^available_tags=" $ofile | sed -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+  # Append the new tag name to the list of available tags.
+  available_tags="$available_tags $tagname"
+
+  # Now substitute the updated of available tags.
+  if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' ${ofile} > ${ofile}.new"; then
+    mv ${ofile}.new ${ofile}
+    chmod +x "$ofile"
+  else
+    rm -f ${ofile}.new
+    echo "$progname: unable to update list of available tagged configurations."
+    exit 1
+  fi
+fi
+
+# Don't cache tagged configuration!
+test -n "$cache_file" && test -z "$tagname" || exit 0
+
+# AC_CACHE_SAVE
+trap '' 1 2 15
+cat > confcache <<\EOF
+# 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.  It is not useful on other systems.
+# If it contains results you don't want to keep, you may remove or edit it.
+#
+# By default, configure uses ./config.cache as the cache file,
+# creating it if it does not exist already.  You can give configure
+# the --cache-file=FILE option to use a different cache file; that is
+# what configure does when it calls configure scripts in
+# subdirectories, so they share the cache.
+# Giving --cache-file=/dev/null disables caching, for debugging configure.
+# config.status only pays attention to the cache file if you give it the
+# --recheck option to rerun configure.
+#
+EOF
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# 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.
+(set) 2>&1 |
+  case `(ac_space=' '; set | grep ac_space) 2>&1` in
+  *ac_space=\ *)
+    # `set' does not quote correctly, so add quotes (double-quote substitution
+    # turns \\\\ into \\, and sed turns \\ into \).
+    sed -n \
+      -e "s/'/'\\\\''/g" \
+      -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
+    ;;
+  *)
+    # `set' quotes correctly as required by POSIX, so do not add quotes.
+    sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
+    ;;
+  esac >> confcache
+if cmp -s $cache_file confcache; then
+  :
+else
+  if test -w $cache_file; then
+    echo "updating cache $cache_file"
+    cat confcache > $cache_file
+  else
+    echo "not updating unwritable cache $cache_file"
+  fi
+fi
+rm -f confcache
+
+exit 0
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
diff --git a/file/ltmain.sh b/file/ltmain.sh
new file mode 100644 (file)
index 0000000..ecc7e6d
--- /dev/null
@@ -0,0 +1,5500 @@
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun ltconfig.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# 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.
+
+# Check that we have a working $echo.
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell, and then maybe $echo will work.
+  exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit 0
+fi
+
+# The name of this program.
+progname=`$echo "$0" | sed 's%^.*/%%'`
+modename="$progname"
+
+# Constants.
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.4a
+TIMESTAMP=" (1.641.2.255 2001/05/22 10:39:30)"
+
+default_mode=
+help="Try \`$progname --help' for more information."
+magic="%%%MAGIC variable%%%"
+mkdir="mkdir"
+mv="mv -f"
+rm="rm -f"
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e 1s/^X//'
+sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
+SP2NL='tr \040 \012'
+NL2SP='tr \015\012 \040\040'
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+# We save the old values to restore during execute mode.
+if test "${LC_ALL+set}" = set; then
+  save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
+fi
+if test "${LANG+set}" = set; then
+  save_LANG="$LANG"; LANG=C; export LANG
+fi
+
+if test "$LTCONFIG_VERSION" != "$VERSION"; then
+  echo "$modename: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2
+  echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+  exit 1
+fi
+
+if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+  echo "$modename: not configured to build any kind of library" 1>&2
+  echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+  exit 1
+fi
+
+# Global variables.
+mode=$default_mode
+nonopt=
+prev=
+prevopt=
+run=
+show="$echo"
+show_help=
+execute_dlfiles=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+
+# Parse our command line options once, thoroughly.
+while test $# -gt 0
+do
+  arg="$1"
+  shift
+
+  case $arg in
+  -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) optarg= ;;
+  esac
+
+  # If the previous option needs an argument, assign it.
+  if test -n "$prev"; then
+    case $prev in
+    execute_dlfiles)
+      execute_dlfiles="$execute_dlfiles $arg"
+      ;;
+    tag)
+      tagname="$arg"
+
+      # Check whether tagname contains only valid characters
+      case $tagname in
+      *[!-_A-Za-z0-9,/]*)
+       echo "$progname: invalid tag name: $tagname" 1>&2
+       exit 1
+        ;;
+      esac
+
+      case $tagname in
+      CC)
+       # Don't test for the "default" C tag, as we know, it's there, but
+       # not specially marked.
+       ;;
+      *)
+        if grep "^### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$0" > /dev/null; then
+          taglist="$taglist $tagname"
+         # Evaluate the configuration.
+         eval "`sed -n -e '/^### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $0`"
+        else
+         echo "$progname: ignoring unknown tag $tagname" 1>&2
+        fi
+        ;;
+      esac
+      ;;
+    *)
+      eval "$prev=\$arg"
+      ;;
+    esac
+
+    prev=
+    prevopt=
+    continue
+  fi
+
+  # Have we seen a non-optional argument yet?
+  case $arg in
+  --help)
+    show_help=yes
+    ;;
+
+  --version)
+    echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+    exit 0
+    ;;
+
+  --config)
+    sed -n -e '/^### BEGIN LIBTOOL CONFIG/,/^### END LIBTOOL CONFIG/p' < "$0"
+    # Now print the configurations for the tags.
+    for tagname in $taglist; do
+      sed -n -e "/^### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^### END LIBTOOL TAG CONFIG: $tagname$/p" < "$0"
+    done
+    exit 0
+    ;;
+
+  --debug)
+    echo "$progname: enabling shell trace mode"
+    set -x
+    ;;
+
+  --dry-run | -n)
+    run=:
+    ;;
+
+  --features)
+    echo "host: $host"
+    if test "$build_libtool_libs" = yes; then
+      echo "enable shared libraries"
+    else
+      echo "disable shared libraries"
+    fi
+    if test "$build_old_libs" = yes; then
+      echo "enable static libraries"
+    else
+      echo "disable static libraries"
+    fi
+    exit 0
+    ;;
+
+  --finish) mode="finish" ;;
+
+  --mode) prevopt="--mode" prev=mode ;;
+  --mode=*) mode="$optarg" ;;
+
+  --preserve-dup-deps) duplicate_deps="yes" ;;
+
+  --quiet | --silent)
+    show=:
+    ;;
+
+  --tag) prevopt="--tag" prev=tag ;;
+  --tag=*)
+    set tag "$optarg" ${1+"$@"}
+    shift
+    prev=tag
+    ;;
+
+  -dlopen)
+    prevopt="-dlopen"
+    prev=execute_dlfiles
+    ;;
+
+  -*)
+    $echo "$modename: unrecognized option \`$arg'" 1>&2
+    $echo "$help" 1>&2
+    exit 1
+    ;;
+
+  *)
+    nonopt="$arg"
+    break
+    ;;
+  esac
+done
+
+if test -n "$prevopt"; then
+  $echo "$modename: option \`$prevopt' requires an argument" 1>&2
+  $echo "$help" 1>&2
+  exit 1
+fi
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end.  This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+if test -z "$show_help"; then
+
+  # Infer the operation mode.
+  if test -z "$mode"; then
+    case $nonopt in
+    *cc | *++ | gcc* | *-gcc* | *CC)
+      mode=link
+      for arg
+      do
+       case $arg in
+       -c)
+          mode=compile
+          break
+          ;;
+       esac
+      done
+      ;;
+    *db | *dbx | *strace | *truss)
+      mode=execute
+      ;;
+    *install*|cp|mv)
+      mode=install
+      ;;
+    *rm)
+      mode=uninstall
+      ;;
+    *)
+      # If we have no mode, but dlfiles were specified, then do execute mode.
+      test -n "$execute_dlfiles" && mode=execute
+
+      # Just use the default operation mode.
+      if test -z "$mode"; then
+       if test -n "$nonopt"; then
+         $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
+       else
+         $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
+       fi
+      fi
+      ;;
+    esac
+  fi
+
+  # Only execute mode is allowed to have -dlopen flags.
+  if test -n "$execute_dlfiles" && test "$mode" != execute; then
+    $echo "$modename: unrecognized option \`-dlopen'" 1>&2
+    $echo "$help" 1>&2
+    exit 1
+  fi
+
+  # Change the help message to a mode-specific one.
+  generic_help="$help"
+  help="Try \`$modename --help --mode=$mode' for more information."
+
+  # These modes are in order of execution frequency so that they run quickly.
+  case $mode in
+  # libtool compile mode
+  compile)
+    modename="$modename: compile"
+    # Get the compilation command and the source file.
+    base_compile=
+    prev=
+    lastarg=
+    srcfile="$nonopt"
+    suppress_output=
+
+    user_target=no
+    for arg
+    do
+      case $prev in
+      "") ;;
+      xcompiler)
+       # Aesthetically quote the previous argument.
+       prev=
+       lastarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+
+       case $arg in
+       # Double-quote args containing other shell metacharacters.
+       # Many Bourne shells cannot handle close brackets correctly
+       # in scan sets, so we specify it separately.
+       *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \   ]*|*]*|"")
+         arg="\"$arg\""
+         ;;
+       esac
+
+       # Add the previous argument to base_compile.
+       if test -z "$base_compile"; then
+         base_compile="$lastarg"
+       else
+         base_compile="$base_compile $lastarg"
+       fi
+       continue
+       ;;
+      esac
+
+      # Accept any command-line options.
+      case $arg in
+      -o)
+       if test "$user_target" != "no"; then
+         $echo "$modename: you cannot specify \`-o' more than once" 1>&2
+         exit 1
+       fi
+       user_target=next
+       ;;
+
+      -static)
+       build_old_libs=yes
+       continue
+       ;;
+
+      -prefer-pic)
+       pic_mode=yes
+       continue
+       ;;
+
+      -prefer-non-pic)
+       pic_mode=no
+       continue
+       ;;
+
+      -Xcompiler)
+       prev=xcompiler
+       continue
+       ;;
+
+      -Wc,*)
+       args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
+       lastarg=
+       IFS="${IFS=     }"; save_ifs="$IFS"; IFS=','
+       for arg in $args; do
+         IFS="$save_ifs"
+
+         # Double-quote args containing other shell metacharacters.
+         # Many Bourne shells cannot handle close brackets correctly
+         # in scan sets, so we specify it separately.
+         case $arg in
+           *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \       ]*|*]*|"")
+           arg="\"$arg\""
+           ;;
+         esac
+         lastarg="$lastarg $arg"
+       done
+       IFS="$save_ifs"
+       lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
+
+       # Add the arguments to base_compile.
+       if test -z "$base_compile"; then
+         base_compile="$lastarg"
+       else
+         base_compile="$base_compile $lastarg"
+       fi
+       continue
+       ;;
+      esac
+
+      case $user_target in
+      next)
+       # The next one is the -o target name
+       user_target=yes
+       continue
+       ;;
+      yes)
+       # We got the output file
+       user_target=set
+       libobj="$arg"
+       continue
+       ;;
+      esac
+
+      # Accept the current argument as the source file.
+      lastarg="$srcfile"
+      srcfile="$arg"
+
+      # Aesthetically quote the previous argument.
+
+      # Backslashify any backslashes, double quotes, and dollar signs.
+      # These are the only characters that are still specially
+      # interpreted inside of double-quoted scrings.
+      lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
+
+      # Double-quote args containing other shell metacharacters.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      case $lastarg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*|"")
+       lastarg="\"$lastarg\""
+       ;;
+      esac
+
+      # Add the previous argument to base_compile.
+      if test -z "$base_compile"; then
+       base_compile="$lastarg"
+      else
+       base_compile="$base_compile $lastarg"
+      fi
+    done
+
+    case $user_target in
+    set)
+      ;;
+    no)
+      # Get the name of the library object.
+      libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+      ;;
+    *)
+      $echo "$modename: you must specify a target with \`-o'" 1>&2
+      exit 1
+      ;;
+    esac
+
+    # Recognize several different file suffixes.
+    # If the user specifies -o file.o, it is replaced with file.lo
+    xform='[cCFSfmso]'
+    case $libobj in
+    *.ada) xform=ada ;;
+    *.adb) xform=adb ;;
+    *.ads) xform=ads ;;
+    *.asm) xform=asm ;;
+    *.c++) xform=c++ ;;
+    *.cc) xform=cc ;;
+    *.class) xform=class ;;
+    *.cpp) xform=cpp ;;
+    *.cxx) xform=cxx ;;
+    *.f90) xform=f90 ;;
+    *.for) xform=for ;;
+    *.java) xform=java ;;
+    esac
+
+    libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
+
+    case $libobj in
+    *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
+    *)
+      $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
+      exit 1
+      ;;
+    esac
+
+    # Infer tagged configuration to use if any are available and
+    # if one wasn't chosen via the "--tag" command line option.
+    # Only attempt this if the compiler in the base compile
+    # command doesn't match the default compiler.
+    if test -n "$available_tags" && test -z "$tagname"; then
+      case $base_compile in
+      "$CC "*) tagname=CC ;;
+      # Blanks in the command may have been stripped by the calling shell,
+      # but not from the CC environment variable when ltconfig was run.
+      "`$echo $CC` "*) tagname=CC ;;
+      *)   base_compiler=`echo $base_compile | awk '{ print $1 }'`
+          case $base_compiler in
+          *cc) tagname=CC ;;
+          *++)
+            tagname=CXX
+            eval "`sed -n -e '/^### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $0`"
+            ;;
+          esac ;;
+      esac
+    fi
+    if test -n "$available_tags" && test -z "$tagname"; then
+        for z in $available_tags; do
+          if grep "^### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then
+           # Evaluate the configuration.
+           eval "`sed -n -e '/^### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`"
+            case $base_compile in
+           "$CC "*)
+              # The compiler in the base compile command matches
+              # the one in the tagged configuration.
+              # Assume this is the tagged configuration we want.
+              tagname=$z
+              break
+              ;;
+           "`$echo $CC` "*)
+             tagname=$z
+             break
+             ;;
+           esac
+          fi
+        done
+        # If $tagname still isn't set, then no tagged configuration
+        # was found and let the user know that the "--tag" command
+        # line option must be used.
+        if test -z "$tagname"; then
+          echo "$modename: unable to infer tagged configuration"
+          echo "$modename: specify a tag with \`--tag'" 1>&2
+         exit 1
+#        else
+#          echo "$modename: using $tagname tagged configuration"
+        fi
+    fi
+
+    objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+    xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$xdir" = "X$obj"; then
+      xdir=
+    else
+      xdir=$xdir/
+    fi
+    lobj=${xdir}$objdir/$objname
+
+    if test -z "$base_compile"; then
+      $echo "$modename: you must specify a compilation command" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    # Delete any leftover library objects.
+    if test "$build_old_libs" = yes; then
+      removelist="$obj $lobj $libobj ${libobj}T"
+    else
+      removelist="$lobj $libobj ${libobj}T"
+    fi
+
+    $run $rm $removelist
+    trap "$run $rm $removelist; exit 1" 1 2 15
+
+    # On Cygwin there's no "real" PIC flag so we must build both object types
+    case $host_os in
+    cygwin* | mingw* | pw32* | os2*)
+      pic_mode=default
+      ;;
+    esac
+    if test $pic_mode = no && test "$deplibs_check_method" != pass_all; then
+      # non-PIC code in shared libraries is not supported
+      pic_mode=default
+    fi
+
+    # Calculate the filename of the output object if compiler does
+    # not support -o with -c
+    if test "$compiler_c_o" = no; then
+      output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+      lockfile="$output_obj.lock"
+      removelist="$removelist $output_obj $lockfile"
+      trap "$run $rm $removelist; exit 1" 1 2 15
+    else
+      output_obj=
+      need_locks=no
+      lockfile=
+    fi
+
+    # Lock this critical section if it is needed
+    # We use this script file to make the link, it avoids creating a new file
+    if test "$need_locks" = yes; then
+      until $run ln "$0" "$lockfile" 2>/dev/null; do
+       $show "Waiting for $lockfile to be removed"
+       sleep 2
+      done
+    elif test "$need_locks" = warn; then
+      if test -f "$lockfile"; then
+       echo "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+       $run $rm $removelist
+       exit 1
+      fi
+      echo $srcfile > "$lockfile"
+    fi
+
+    if test -n "$fix_srcfile_path"; then
+      eval srcfile=\"$fix_srcfile_path\"
+    fi
+
+    $run $rm "$libobj" "${libobj}T"
+
+    # Create a libtool object file (analogous to a ".la" file),
+    # but don't create it if we're doing a dry run.
+    test -z "$run" && cat > ${libobj}T <<EOF
+# $libobj - a libtool object file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+EOF
+
+    # Only build a PIC object if we are building libtool libraries.
+    if test "$build_libtool_libs" = yes; then
+      # Without this assignment, base_compile gets emptied.
+      fbsd_hideous_sh_bug=$base_compile
+
+      if test "$pic_mode" != no; then
+       command="$base_compile $srcfile $pic_flag"
+      else
+       # Don't build PIC code
+       command="$base_compile $srcfile"
+      fi
+
+      if test ! -d ${xdir}$objdir; then
+       $show "$mkdir ${xdir}$objdir"
+       $run $mkdir ${xdir}$objdir
+       status=$?
+       if test $status -ne 0 && test ! -d ${xdir}$objdir; then
+         exit $status
+        fi
+      fi 
+
+      if test -z "$output_obj"; then
+        # Place PIC objects in $objdir
+        command="$command -o $lobj"
+      fi
+
+      $run $rm "$lobj" "$output_obj"
+
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+       test -n "$output_obj" && $run $rm $removelist
+       exit 1
+      fi
+
+      if test "$need_locks" = warn &&
+        test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
+       echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+       $run $rm $removelist
+       exit 1
+      fi
+
+      # Just move the object if needed, then go on to compile the next one
+      if test -n "$output_obj" && test "x$output_obj" != "x$lobj"; then
+       $show "$mv $output_obj $lobj"
+       if $run $mv $output_obj $lobj; then :
+       else
+         error=$?
+         $run $rm $removelist
+         exit $error
+       fi
+      fi
+
+      # Append the name of the PIC object to the libtool object file.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object='$objdir/$objname'
+
+EOF
+
+      # Allow error messages only from the first compilation.
+      suppress_output=' >/dev/null 2>&1'
+    else
+      # No PIC object so indicate it doesn't exist in the libtool
+      # object file.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object=none
+
+EOF
+    fi
+
+    # Only build a position-dependent object if we build old libraries.
+    if test "$build_old_libs" = yes; then
+      if test "$pic_mode" != yes; then
+       # Don't build PIC code
+       command="$base_compile $srcfile"
+      else
+       command="$base_compile $srcfile $pic_flag"
+      fi
+      if test "$compiler_c_o" = yes; then
+       command="$command -o $obj"
+      fi
+
+      # Suppress compiler output if we already did a PIC compilation.
+      command="$command$suppress_output"
+      $run $rm "$obj" "$output_obj"
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+       $run $rm $removelist
+       exit 1
+      fi
+
+      if test "$need_locks" = warn &&
+        test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
+       echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+       $run $rm $removelist
+       exit 1
+      fi
+
+      # Just move the object if needed
+      if test -n "$output_obj" && test "x$output_obj" != "x$obj"; then
+       $show "$mv $output_obj $obj"
+       if $run $mv $output_obj $obj; then :
+       else
+         error=$?
+         $run $rm $removelist
+         exit $error
+       fi
+      fi
+
+      # Append the name of the non-PIC object the libtool object file.
+      # Only append if the libtool object file exists.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object='$objname'
+
+EOF
+    else
+      # Append the name of the non-PIC object the libtool object file.
+      # Only append if the libtool object file exists.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object=none
+
+EOF
+    fi
+
+    $run $mv "${libobj}T" "${libobj}"
+
+    # Unlock the critical section if it was locked
+    if test "$need_locks" != no; then
+      $run $rm "$lockfile"
+    fi
+
+    exit 0
+    ;;
+
+  # libtool link mode
+  link | relink)
+    modename="$modename: link"
+    case $host in
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+      # It is impossible to link a dll without this setting, and
+      # we shouldn't force the makefile maintainer to figure out
+      # which system we are compiling for in order to pass an extra
+      # flag for every libtool invokation.
+      # allow_undefined=no
+
+      # FIXME: Unfortunately, there are problems with the above when trying
+      # to make a dll which has undefined symbols, in which case not
+      # even a static library is built.  For now, we need to specify
+      # -no-undefined on the libtool link line when we can be certain
+      # that all symbols are satisfied, otherwise we get a static library.
+      allow_undefined=yes
+      ;;
+    *)
+      allow_undefined=yes
+      ;;
+    esac
+    libtool_args="$nonopt"
+    base_compile="$nonopt"
+    compile_command="$nonopt"
+    finalize_command="$nonopt"
+
+    compile_rpath=
+    finalize_rpath=
+    compile_shlibpath=
+    finalize_shlibpath=
+    convenience=
+    old_convenience=
+    deplibs=
+    old_deplibs=
+    compiler_flags=
+    linker_flags=
+    dllsearchpath=
+    lib_search_path=`pwd`
+
+    avoid_version=no
+    dlfiles=
+    dlprefiles=
+    dlself=no
+    export_dynamic=no
+    export_symbols=
+    export_symbols_regex=
+    generated=
+    libobjs=
+    ltlibs=
+    module=no
+    no_install=no
+    objs=
+    non_pic_objects=
+    prefer_static_libs=no
+    preload=no
+    prev=
+    prevarg=
+    release=
+    rpath=
+    xrpath=
+    perm_rpath=
+    temp_rpath=
+    thread_safe=no
+    vinfo=
+
+    # We need to know -static, to get the right output filenames.
+    for arg
+    do
+      case $arg in
+      -all-static | -static)
+       if test "X$arg" = "X-all-static"; then
+         if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+           $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+         fi
+         if test -n "$link_static_flag"; then
+           dlopen_self=$dlopen_self_static
+         fi
+       else
+         if test -z "$pic_flag" && test -n "$link_static_flag"; then
+           dlopen_self=$dlopen_self_static
+         fi
+       fi
+       build_libtool_libs=no
+       build_old_libs=yes
+       prefer_static_libs=yes
+       break
+       ;;
+      esac
+    done
+
+    # See if our shared archives depend on static archives.
+    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+    # Go through the arguments, transforming them on the way.
+    while test $# -gt 0; do
+      arg="$1"
+      base_compile="$base_compile $arg"
+      shift
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*|"")
+       qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
+       ;;
+      *) qarg=$arg ;;
+      esac
+      libtool_args="$libtool_args $qarg"
+
+      # If the previous option needs an argument, assign it.
+      if test -n "$prev"; then
+       case $prev in
+       output)
+         compile_command="$compile_command @OUTPUT@"
+         finalize_command="$finalize_command @OUTPUT@"
+         ;;
+       esac
+
+       case $prev in
+       dlfiles|dlprefiles)
+         if test "$preload" = no; then
+           # Add the symbol object into the linking commands.
+           compile_command="$compile_command @SYMFILE@"
+           finalize_command="$finalize_command @SYMFILE@"
+           preload=yes
+         fi
+         case $arg in
+         *.la | *.lo) ;;  # We handle these cases below.
+         force)
+           if test "$dlself" = no; then
+             dlself=needless
+             export_dynamic=yes
+           fi
+           prev=
+           continue
+           ;;
+         self)
+           if test "$prev" = dlprefiles; then
+             dlself=yes
+           elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+             dlself=yes
+           else
+             dlself=needless
+             export_dynamic=yes
+           fi
+           prev=
+           continue
+           ;;
+         *)
+           if test "$prev" = dlfiles; then
+             dlfiles="$dlfiles $arg"
+           else
+             dlprefiles="$dlprefiles $arg"
+           fi
+           prev=
+           continue
+           ;;
+         esac
+         ;;
+       expsyms)
+         export_symbols="$arg"
+         if test ! -f "$arg"; then
+           $echo "$modename: symbol file \`$arg' does not exist"
+           exit 1
+         fi
+         prev=
+         continue
+         ;;
+       expsyms_regex)
+         export_symbols_regex="$arg"
+         prev=
+         continue
+         ;;
+       release)
+         release="-$arg"
+         prev=
+         continue
+         ;;
+       objectlist)
+         if test -f "$arg"; then
+            save_arg=$arg
+           moreargs=
+           for fil in `cat $save_arg`
+           do
+#            moreargs="$moreargs $fil"
+              arg=$fil
+              # A libtool-controlled object.
+
+             # Check to see that this really is a libtool object.
+             if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+                pic_object=
+                non_pic_object=
+
+                # Read the .lo file
+                # If there is no directory component, then add one.
+                case $arg in
+                */* | *\\*) . $arg ;;
+                *) . ./$arg ;;
+                esac
+
+                if test -z "$pic_object" || \
+                   test -z "$non_pic_object" ||
+                   test "$pic_object" = none && \
+                   test "$non_pic_object" = none; then
+                  $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+                  exit 1
+                fi
+
+               # Extract subdirectory from the argument.
+               xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+               if test "X$xdir" = "X$arg"; then
+                 xdir=
+               else
+                 xdir="$xdir/"
+               fi
+
+                if test "$pic_object" != none; then
+                  # Prepend the subdirectory the object is found in.
+                 pic_object="$xdir$pic_object"
+
+                 if test "$prev" = dlfiles; then
+                   if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+                     dlfiles="$dlfiles $pic_object"
+                     prev=
+                     continue
+                   else
+                     # If libtool objects are unsupported, then we need to preload.
+                     prev=dlprefiles
+                   fi
+                 fi
+
+                 # CHECK ME:  I think I busted this.  -Ossama
+                  if test "$prev" = dlprefiles; then
+                   # Preload the old-style object.
+                   dlprefiles="$dlprefiles $pic_object"
+                   prev=
+                  fi
+
+                  # A PIC object.
+                 libobjs="$libobjs $pic_object"
+                 arg="$pic_object"
+                fi
+
+                # Non-PIC object.
+                if test "$non_pic_object" != none; then
+                  # Prepend the subdirectory the object is found in.
+                 non_pic_object="$xdir$non_pic_object"
+
+                  # A standard non-PIC object
+                  non_pic_objects="$non_pic_objects $non_pic_object"
+                  if test -z "$pic_object" || test "$pic_object" = none ; then
+                    arg="$non_pic_object"
+                  fi
+                fi
+              else
+                # Only an error if not doing a dry-run.
+                if test -z "$run"; then
+                  $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+                  exit 1
+                else
+                  # Dry-run case.
+
+                 # Extract subdirectory from the argument.
+                 xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+                 if test "X$xdir" = "X$arg"; then
+                   xdir=
+                 else
+                   xdir="$xdir/"
+                 fi
+
+                  pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+                  non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+                 libobjs="$libobjs $pic_object"
+                  non_pic_objects="$non_pic_objects $non_pic_object"
+                fi
+             fi
+           done
+         else
+           $echo "$modename: link input file \`$save_arg' does not exist"
+           exit 1
+         fi
+          arg=$save_arg
+         prev=
+         continue
+         ;;
+       rpath | xrpath)
+         # We need an absolute path.
+         case $arg in
+         [\\/]* | [A-Za-z]:[\\/]*) ;;
+         *)
+           $echo "$modename: only absolute run-paths are allowed" 1>&2
+           exit 1
+           ;;
+         esac
+         if test "$prev" = rpath; then
+           case "$rpath " in
+           *" $arg "*) ;;
+           *) rpath="$rpath $arg" ;;
+           esac
+         else
+           case "$xrpath " in
+           *" $arg "*) ;;
+           *) xrpath="$xrpath $arg" ;;
+           esac
+         fi
+         prev=
+         continue
+         ;;
+       xcompiler)
+         compiler_flags="$compiler_flags $qarg"
+         prev=
+         compile_command="$compile_command $qarg"
+         finalize_command="$finalize_command $qarg"
+         continue
+         ;;
+       xlinker)
+         linker_flags="$linker_flags $qarg"
+         compiler_flags="$compiler_flags $wl$qarg"
+         prev=
+         compile_command="$compile_command $wl$qarg"
+         finalize_command="$finalize_command $wl$qarg"
+         continue
+         ;;
+       *)
+         eval "$prev=\"\$arg\""
+         prev=
+         continue
+         ;;
+       esac
+      fi # test -n $prev
+
+      prevarg="$arg"
+
+      case $arg in
+      -all-static)
+       if test -n "$link_static_flag"; then
+         compile_command="$compile_command $link_static_flag"
+         finalize_command="$finalize_command $link_static_flag"
+       fi
+       continue
+       ;;
+
+      -allow-undefined)
+       # FIXME: remove this flag sometime in the future.
+       $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
+       continue
+       ;;
+
+      -avoid-version)
+       avoid_version=yes
+       continue
+       ;;
+
+      -dlopen)
+       prev=dlfiles
+       continue
+       ;;
+
+      -dlpreopen)
+       prev=dlprefiles
+       continue
+       ;;
+
+      -export-dynamic)
+       export_dynamic=yes
+       continue
+       ;;
+
+      -export-symbols | -export-symbols-regex)
+       if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+         $echo "$modename: more than one -exported-symbols argument is not allowed"
+         exit 1
+       fi
+       if test "X$arg" = "X-export-symbols"; then
+         prev=expsyms
+       else
+         prev=expsyms_regex
+       fi
+       continue
+       ;;
+
+      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+      # so, if we see these flags be careful not to treat them like -L
+      -L[A-Z][A-Z]*:*)
+       case $with_gcc/$host in
+       no/*-*-irix*)
+         compile_command="$compile_command $arg"
+         finalize_command="$finalize_command $arg"
+         ;;
+       esac
+       continue
+       ;;
+
+      -L*)
+       dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
+       # We need an absolute path.
+       case $dir in
+       [\\/]* | [A-Za-z]:[\\/]*) ;;
+       *)
+         absdir=`cd "$dir" && pwd`
+         if test -z "$absdir"; then
+           $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+           exit 1
+         fi
+         dir="$absdir"
+         ;;
+       esac
+       case "$deplibs " in
+       *" -L$dir "*) ;;
+       *)
+         deplibs="$deplibs -L$dir"
+         lib_search_path="$lib_search_path $dir"
+         ;;
+       esac
+       case $host in
+       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+         case :$dllsearchpath: in
+         *":$dir:"*) ;;
+         *) dllsearchpath="$dllsearchpath:$dir";;
+         esac
+         ;;
+       esac
+       continue
+       ;;
+
+      -l*)
+       if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+         case $host in
+         *-*-cygwin* | *-*-pw32* | *-*-beos*)
+           # These systems don't actually have a C or math library (as such)
+           continue
+           ;;
+         *-*-mingw* | *-*-os2*)
+           # These systems don't actually have a C library (as such)
+           test "X$arg" = "X-lc" && continue
+           ;;
+         esac
+       fi
+       deplibs="$deplibs $arg"
+       continue
+       ;;
+
+      -module)
+       module=yes
+       continue
+       ;;
+
+      -no-fast-install)
+       fast_install=no
+       continue
+       ;;
+
+      -no-install)
+       case $host in
+       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+         # The PATH hackery in wrapper scripts is required on Windows
+         # in order for the loader to find any dlls it needs.
+         $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+         $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+         fast_install=no
+         ;;
+       *) no_install=yes ;;
+       esac
+       continue
+       ;;
+
+      -no-undefined)
+       allow_undefined=no
+       continue
+       ;;
+
+      -objectlist)
+       prev=objectlist
+       continue
+       ;;
+
+      -o) prev=output ;;
+
+      -release)
+       prev=release
+       continue
+       ;;
+
+      -rpath)
+       prev=rpath
+       continue
+       ;;
+
+      -R)
+       prev=xrpath
+       continue
+       ;;
+
+      -R*)
+       dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
+       # We need an absolute path.
+       case $dir in
+       [\\/]* | [A-Za-z]:[\\/]*) ;;
+       *)
+         $echo "$modename: only absolute run-paths are allowed" 1>&2
+         exit 1
+         ;;
+       esac
+       case "$xrpath " in
+       *" $dir "*) ;;
+       *) xrpath="$xrpath $dir" ;;
+       esac
+       continue
+       ;;
+
+      -static)
+       # The effects of -static are defined in a previous loop.
+       # We used to do the same as -all-static on platforms that
+       # didn't have a PIC flag, but the assumption that the effects
+       # would be equivalent was wrong.  It would break on at least
+       # Digital Unix and AIX.
+       continue
+       ;;
+
+      -thread-safe)
+       thread_safe=yes
+       continue
+       ;;
+
+      -version-info)
+       prev=vinfo
+       continue
+       ;;
+
+      -Wc,*)
+       args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
+       arg=
+       IFS="${IFS=     }"; save_ifs="$IFS"; IFS=','
+       for flag in $args; do
+         IFS="$save_ifs"
+         case $flag in
+           *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \       ]*|*]*|"")
+           flag="\"$flag\""
+           ;;
+         esac
+         arg="$arg $wl$flag"
+         compiler_flags="$compiler_flags $flag"
+       done
+       IFS="$save_ifs"
+       arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+       ;;
+
+      -Wl,*)
+       args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
+       arg=
+       IFS="${IFS=     }"; save_ifs="$IFS"; IFS=','
+       for flag in $args; do
+         IFS="$save_ifs"
+         case $flag in
+           *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \       ]*|*]*|"")
+           flag="\"$flag\""
+           ;;
+         esac
+         arg="$arg $wl$flag"
+         compiler_flags="$compiler_flags $wl$flag"
+         linker_flags="$linker_flags $flag"
+       done
+       IFS="$save_ifs"
+       arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+       ;;
+
+      -Xcompiler)
+       prev=xcompiler
+       continue
+       ;;
+
+      -Xlinker)
+       prev=xlinker
+       continue
+       ;;
+
+      # Some other compiler flag.
+      -* | +*)
+       # Unknown arguments in both finalize_command and compile_command need
+       # to be aesthetically quoted because they are evaled later.
+       arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+       case $arg in
+       *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \   ]*|*]*|"")
+         arg="\"$arg\""
+         ;;
+       esac
+       ;;
+
+      *.$objext)
+       # A standard object.
+       objs="$objs $arg"
+       ;;
+
+      *.lo)
+       # A libtool-controlled object.
+
+       # Check to see that this really is a libtool object.
+       if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+          pic_object=
+          non_pic_object=
+
+          # Read the .lo file
+          # If there is no directory component, then add one.
+          case $arg in
+          */* | *\\*) . $arg ;;
+          *) . ./$arg ;;
+          esac
+
+          if test -z "$pic_object" || \
+             test -z "$non_pic_object" ||
+             test "$pic_object" = none && \
+             test "$non_pic_object" = none; then
+            $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+            exit 1
+          fi
+
+         # Extract subdirectory from the argument.
+         xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+         if test "X$xdir" = "X$arg"; then
+           xdir=
+         else
+           xdir="$xdir/"
+         fi
+
+          if test "$pic_object" != none; then
+            # Prepend the subdirectory the object is found in.
+           pic_object="$xdir$pic_object"
+
+           if test "$prev" = dlfiles; then
+             if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+               dlfiles="$dlfiles $pic_object"
+               prev=
+               continue
+             else
+               # If libtool objects are unsupported, then we need to preload.
+               prev=dlprefiles
+             fi
+           fi
+
+           # CHECK ME:  I think I busted this.  -Ossama
+            if test "$prev" = dlprefiles; then
+             # Preload the old-style object.
+             dlprefiles="$dlprefiles $pic_object"
+             prev=
+            fi
+
+            # A PIC object.
+           libobjs="$libobjs $pic_object"
+           arg="$pic_object"
+          fi
+
+          # Non-PIC object.
+          if test "$non_pic_object" != none; then
+            # Prepend the subdirectory the object is found in.
+           non_pic_object="$xdir$non_pic_object"
+
+            # A standard non-PIC object
+            non_pic_objects="$non_pic_objects $non_pic_object"
+            if test -z "$pic_object" || test "$pic_object" = none ; then
+              arg="$non_pic_object"
+            fi
+          fi
+        else
+          # Only an error if not doing a dry-run.
+          if test -z "$run"; then
+            $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+            exit 1
+          else
+            # Dry-run case.
+
+           # Extract subdirectory from the argument.
+           xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+           if test "X$xdir" = "X$arg"; then
+             xdir=
+           else
+             xdir="$xdir/"
+           fi
+
+            pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+            non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+           libobjs="$libobjs $pic_object"
+            non_pic_objects="$non_pic_objects $non_pic_object"
+          fi
+       fi
+       ;;
+
+      *.$libext)
+       # An archive.
+       deplibs="$deplibs $arg"
+       old_deplibs="$old_deplibs $arg"
+       continue
+       ;;
+
+      *.la)
+       # A libtool-controlled library.
+
+       if test "$prev" = dlfiles; then
+         # This library was specified with -dlopen.
+         dlfiles="$dlfiles $arg"
+         prev=
+       elif test "$prev" = dlprefiles; then
+         # The library was specified with -dlpreopen.
+         dlprefiles="$dlprefiles $arg"
+         prev=
+       else
+         deplibs="$deplibs $arg"
+       fi
+       continue
+       ;;
+
+      # Some other compiler argument.
+      *)
+       # Unknown arguments in both finalize_command and compile_command need
+       # to be aesthetically quoted because they are evaled later.
+       arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+       case $arg in
+       *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \   ]*|*]*|"")
+         arg="\"$arg\""
+         ;;
+       esac
+       ;;
+      esac # arg
+
+      # Now actually substitute the argument into the commands.
+      if test -n "$arg"; then
+       compile_command="$compile_command $arg"
+       finalize_command="$finalize_command $arg"
+      fi
+    done # argument parsing loop
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    # Infer tagged configuration to use if any are available and
+    # if one wasn't chosen via the "--tag" command line option.
+    # Only attempt this if the compiler in the base link
+    # command doesn't match the default compiler.
+    if test -n "$available_tags" && test -z "$tagname"; then
+      case $base_compile in
+      "$CC "*) tagname=CC ;;
+      # Blanks in the command may have been stripped by the calling shell,
+      # but not from the CC environment variable when ltconfig was run.
+      "`$echo $CC` "*) tagname=CC ;;
+      *)   base_compiler=`echo $base_compile | awk '{ print $1 }'`
+          case $base_compiler in
+          *cc) tagname=CC ;;
+          *++)
+            tagname=CXX
+            eval "`sed -n -e '/^### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $0`"
+            ;;
+          esac ;;
+      esac
+    fi
+    if test -n "$available_tags" && test -z "$tagname"; then
+        for z in $available_tags; do
+          if grep "^### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then
+           # Evaluate the configuration.
+           eval "`sed -n -e '/^### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`"
+            case $base_compile in
+           "$CC "*)
+              # The compiler in $compile_command matches
+              # the one in the tagged configuration.
+              # Assume this is the tagged configuration we want.
+              tagname=$z
+              break
+             ;;
+           "`$echo $CC` "*)
+             tagname=$z
+             break
+             ;;
+           esac
+          fi
+        done
+        # If $tagname still isn't set, then no tagged configuration
+        # was found and let the user know that the "--tag" command
+        # line option must be used.
+        if test -z "$tagname"; then
+          echo "$modename: unable to infer tagged configuration"
+          echo "$modename: specify a tag with \`--tag'" 1>&2
+         exit 1
+#       else
+#         echo "$modename: using $tagname tagged configuration"
+        fi
+    fi
+
+    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+      eval arg=\"$export_dynamic_flag_spec\"
+      compile_command="$compile_command $arg"
+      finalize_command="$finalize_command $arg"
+    fi
+
+    # calculate the name of the file, without its directory
+    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
+    libobjs_save="$libobjs"
+
+    if test -n "$shlibpath_var"; then
+      # get the directories listed in $shlibpath_var
+      eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+    else
+      shlib_search_path=
+    fi
+    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+    output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$output_objdir" = "X$output"; then
+      output_objdir="$objdir"
+    else
+      output_objdir="$output_objdir/$objdir"
+    fi
+    # Create the object directory.
+    if test ! -d $output_objdir; then
+      $show "$mkdir $output_objdir"
+      $run $mkdir $output_objdir
+      status=$?
+      if test $status -ne 0 && test ! -d $output_objdir; then
+       exit $status
+      fi
+    fi
+
+    # Determine the type of output
+    case $output in
+    "")
+      $echo "$modename: you must specify an output file" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+      ;;
+    *.$libext) linkmode=oldlib ;;
+    *.lo | *.$objext) linkmode=obj ;;
+    *.la) linkmode=lib ;;
+    *) linkmode=prog ;; # Anything else should be a program.
+    esac
+
+    specialdeplibs=
+    libs=
+    # Find all interdependent deplibs by searching for libraries
+    # that are linked more than once (e.g. -la -lb -la)
+    for deplib in $deplibs; do
+      if test "X$duplicate_deps" = "Xyes" ; then
+      case "$libs " in
+      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+      esac
+      fi
+      libs="$libs $deplib"
+    done
+
+    if test $linkmode = lib; then
+      libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+      # Compute libraries that are listed more than once in $predeps
+      # $postdeps and mark them as special (i.e., whose duplicates are
+      # not to be eliminated).
+      pre_post_deps=
+      if test "X$duplicate_deps" = "Xyes" ; then
+      for pre_post_dep in $predeps $postdeps; do
+        case "$pre_post_deps " in
+       *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+       esac
+       pre_post_deps="$pre_post_deps $pre_post_dep"
+      done
+      fi
+      pre_post_deps=
+    fi
+
+    deplibs=
+    newdependency_libs=
+    newlib_search_path=
+    need_relink=no # whether we're linking any uninstalled libtool libraries
+    notinst_deplibs= # not-installed libtool libraries
+    notinst_path= # paths that contain not-installed libtool libraries
+    case $linkmode in
+    lib)
+       passes="conv link"
+       for file in $dlfiles $dlprefiles; do
+         case $file in
+         *.la) ;;
+         *)
+           $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
+           exit 1
+           ;;
+         esac
+       done
+       ;;
+    prog)
+       compile_deplibs=
+       finalize_deplibs=
+       alldeplibs=no
+       newdlfiles=
+       newdlprefiles=
+       passes="conv scan dlopen dlpreopen link"
+       ;;
+    *)  passes="conv"
+       ;;
+    esac
+    for pass in $passes; do
+      if test $linkmode = prog; then
+       # Determine which files to process
+       case $pass in
+       dlopen)
+         libs="$dlfiles"
+         save_deplibs="$deplibs" # Collect dlpreopened libraries
+         deplibs=
+         ;;
+       dlpreopen) libs="$dlprefiles" ;;
+       link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+       esac
+      fi
+      for deplib in $libs; do
+       lib=
+       found=no
+       case $deplib in
+       -l*)
+         if test $linkmode = oldlib && test $linkmode = obj; then
+           $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2
+           continue
+         fi
+         if test $pass = conv; then
+           deplibs="$deplib $deplibs"
+           continue
+         fi
+         name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+         for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
+           # Search the libtool library
+           lib="$searchdir/lib${name}.la"
+           if test -f "$lib"; then
+             found=yes
+             break
+           fi
+         done
+         if test "$found" != yes; then
+           # deplib doesn't seem to be a libtool library
+           if test "$linkmode,$pass" = "prog,link"; then
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           else
+             deplibs="$deplib $deplibs"
+             test $linkmode = lib && newdependency_libs="$deplib $newdependency_libs"
+           fi
+           continue
+         fi
+         ;; # -l
+       -L*)
+         case $linkmode in
+         lib)
+           deplibs="$deplib $deplibs"
+           test $pass = conv && continue
+           newdependency_libs="$deplib $newdependency_libs"
+           newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+           ;;
+         prog)
+           if test $pass = conv; then
+             deplibs="$deplib $deplibs"
+             continue
+           fi
+           if test $pass = scan; then
+             deplibs="$deplib $deplibs"
+             newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+           else
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           fi
+           ;;
+         *)
+           $echo "$modename: warning: \`-L' is ignored for archives/objects: $deplib" 1>&2
+           ;;
+         esac # linkmode
+         continue
+         ;; # -L
+       -R*)
+         if test $pass = link; then
+           dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+           # Make sure the xrpath contains only unique directories.
+           case "$xrpath " in
+           *" $dir "*) ;;
+           *) xrpath="$xrpath $dir" ;;
+           esac
+         fi
+         deplibs="$deplib $deplibs"
+         continue
+         ;;
+       *.la) lib="$deplib" ;;
+       *.$libext)
+         if test $pass = conv; then
+           deplibs="$deplib $deplibs"
+           continue
+         fi
+         case $linkmode in
+         lib)
+           if test "$deplibs_check_method" != pass_all; then
+             echo
+             echo "*** Warning: This library needs some functionality provided by $deplib."
+             echo "*** I have the capability to make that library automatically link in when"
+             echo "*** you link to this library.  But I can only do this if you have a"
+             echo "*** shared version of the library, which you do not appear to have."
+           else
+             echo
+             echo "*** Warning: Linking the shared library $output against the"
+             echo "*** static library $deplib is not portable!"
+             deplibs="$deplib $deplibs"
+           fi
+           continue
+           ;;
+         prog)
+           if test $pass != link; then
+             deplibs="$deplib $deplibs"
+           else
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           fi
+           continue
+           ;;
+         esac # linkmode
+         ;; # *.$libext
+       *.lo | *.$objext)
+         if test $pass = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+           # If there is no dlopen support or we're linking statically,
+           # we need to preload.
+           newdlprefiles="$newdlprefiles $deplib"
+           compile_deplibs="$deplib $compile_deplibs"
+           finalize_deplibs="$deplib $finalize_deplibs"
+         else
+           newdlfiles="$newdlfiles $deplib"
+         fi
+         continue
+         ;;
+       %DEPLIBS%)
+         alldeplibs=yes
+         continue
+         ;;
+       esac # case $deplib
+       if test $found = yes || test -f "$lib"; then :
+       else
+         $echo "$modename: cannot find the library \`$lib'" 1>&2
+         exit 1
+       fi
+
+       # Check to see that this really is a libtool archive.
+       if (sed -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+       else
+         $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+         exit 1
+       fi
+
+       ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+       test "X$ladir" = "X$lib" && ladir="."
+
+       dlname=
+       dlopen=
+       dlpreopen=
+       libdir=
+       library_names=
+       old_library=
+       # If the library was installed with an old release of libtool,
+       # it will not redefine variable installed.
+       installed=yes
+
+       # Read the .la file
+       case $lib in
+       */* | *\\*) . $lib ;;
+       *) . ./$lib ;;
+       esac
+
+       if test "$linkmode,$pass" = "lib,link" ||
+          test "$linkmode,$pass" = "prog,scan" ||
+          { test $linkmode = oldlib && test $linkmode = obj; }; then
+          # Add dl[pre]opened files of deplib
+         test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+         test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+       fi
+
+       if test $pass = conv; then
+         # Only check for convenience libraries
+         deplibs="$lib $deplibs"
+         if test -z "$libdir"; then
+           if test -z "$old_library"; then
+             $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+             exit 1
+           fi
+           # It is a libtool convenience library, so add in its objects.
+           convenience="$convenience $ladir/$objdir/$old_library"
+           old_convenience="$old_convenience $ladir/$objdir/$old_library"
+           tmp_libs=
+           for deplib in $dependency_libs; do
+             deplibs="$deplib $deplibs"
+              if test "X$duplicate_deps" = "Xyes" ; then
+             case "$tmp_libs " in
+             *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+             esac
+              fi
+             tmp_libs="$tmp_libs $deplib"
+           done
+         elif test $linkmode != prog && test $linkmode != lib; then
+           $echo "$modename: \`$lib' is not a convenience library" 1>&2
+           exit 1
+         fi
+         continue
+       fi # $pass = conv
+
+       # Get the name of the library we link against.
+       linklib=
+       for l in $old_library $library_names; do
+         linklib="$l"
+       done
+       if test -z "$linklib"; then
+         $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+         exit 1
+       fi
+
+       # This library was specified with -dlopen.
+       if test $pass = dlopen; then
+         if test -z "$libdir"; then
+           $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
+           exit 1
+         fi
+         if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+           # If there is no dlname, no dlopen support or we're linking
+           # statically, we need to preload.
+           dlprefiles="$dlprefiles $lib"
+         else
+           newdlfiles="$newdlfiles $lib"
+         fi
+         continue
+       fi # $pass = dlopen
+
+       # We need an absolute path.
+       case $ladir in
+       [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+       *)
+         abs_ladir=`cd "$ladir" && pwd`
+         if test -z "$abs_ladir"; then
+           $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
+           $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+           abs_ladir="$ladir"
+         fi
+         ;;
+       esac
+       laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+
+       # Find the relevant object directory and library name.
+       if test "X$installed" = Xyes; then
+         if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+           $echo "$modename: warning: library \`$lib' was moved." 1>&2
+           dir="$ladir"
+           absdir="$abs_ladir"
+           libdir="$abs_ladir"
+         else
+           dir="$libdir"
+           absdir="$libdir"
+         fi
+       else
+         dir="$ladir/$objdir"
+         absdir="$abs_ladir/$objdir"
+         # Remove this search path later
+         notinst_path="$notinst_path $abs_ladir"
+       fi # $installed = yes
+       name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+       # This library was specified with -dlpreopen.
+       if test $pass = dlpreopen; then
+         if test -z "$libdir"; then
+           $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
+           exit 1
+         fi
+         # Prefer using a static library (so that no silly _DYNAMIC symbols
+         # are required to link).
+         if test -n "$old_library"; then
+           newdlprefiles="$newdlprefiles $dir/$old_library"
+         # Otherwise, use the dlname, so that lt_dlopen finds it.
+         elif test -n "$dlname"; then
+           newdlprefiles="$newdlprefiles $dir/$dlname"
+         else
+           newdlprefiles="$newdlprefiles $dir/$linklib"
+         fi
+       fi # $pass = dlpreopen
+
+       if test -z "$libdir"; then
+         # Link the convenience library
+         if test $linkmode = lib; then
+           deplibs="$dir/$old_library $deplibs"
+         elif test "$linkmode,$pass" = "prog,link"; then
+           compile_deplibs="$dir/$old_library $compile_deplibs"
+           finalize_deplibs="$dir/$old_library $finalize_deplibs"
+         else
+           deplibs="$lib $deplibs"
+         fi
+         continue
+       fi
+
+       if test $linkmode = prog && test $pass != link; then
+         newlib_search_path="$newlib_search_path $ladir"
+         deplibs="$lib $deplibs"
+
+         linkalldeplibs=no
+         if test "$link_all_deplibs" != no || test -z "$library_names" ||
+            test "$build_libtool_libs" = no; then
+           linkalldeplibs=yes
+         fi
+
+         tmp_libs=
+         for deplib in $dependency_libs; do
+           case $deplib in
+           -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
+           esac
+           # Need to link against all dependency_libs?
+           if test $linkalldeplibs = yes; then
+             deplibs="$deplib $deplibs"
+           else
+             # Need to hardcode shared library paths
+             # or/and link against static libraries
+             newdependency_libs="$deplib $newdependency_libs"
+           fi
+           if test "X$duplicate_deps" = "Xyes" ; then
+           case "$tmp_libs " in
+           *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+           esac
+           fi
+           tmp_libs="$tmp_libs $deplib"
+         done # for deplib
+         continue
+       fi # $linkmode = prog...
+
+       link_static=no # Whether the deplib will be linked statically
+       if test -n "$library_names" &&
+          { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+         # Link against this shared library
+
+         if test "$linkmode,$pass" = "prog,link" ||
+          { test $linkmode = lib && test $hardcode_into_libs = yes; }; then
+           # Hardcode the library path.
+           # Skip directories that are in the system default run-time
+           # search path.
+           case " $sys_lib_dlsearch_path " in
+           *" $absdir "*) ;;
+           *)
+             case "$compile_rpath " in
+             *" $absdir "*) ;;
+             *) compile_rpath="$compile_rpath $absdir"
+             esac
+             ;;
+           esac
+           case " $sys_lib_dlsearch_path " in
+           *" $libdir "*) ;;
+           *)
+             case "$finalize_rpath " in
+             *" $libdir "*) ;;
+             *) finalize_rpath="$finalize_rpath $libdir"
+             esac
+             ;;
+           esac
+           if test $linkmode = prog; then
+             # We need to hardcode the library path
+             if test -n "$shlibpath_var"; then
+               # Make sure the rpath contains only unique directories.
+               case "$temp_rpath " in
+               *" $dir "*) ;;
+               *" $absdir "*) ;;
+               *) temp_rpath="$temp_rpath $dir" ;;
+               esac
+             fi
+           fi
+         fi # $linkmode,$pass = prog,link...
+
+         if test "$alldeplibs" = yes &&
+            { test "$deplibs_check_method" = pass_all ||
+              { test "$build_libtool_libs" = yes &&
+                test -n "$library_names"; }; }; then
+           # We only need to search for static libraries
+           continue
+         fi
+
+         if test "$installed" = no; then
+           notinst_deplibs="$notinst_deplibs $lib"
+           need_relink=yes
+         fi
+
+         if test -n "$old_archive_from_expsyms_cmds"; then
+           # figure out the soname
+           set dummy $library_names
+           realname="$2"
+           shift; shift
+           libname=`eval \\$echo \"$libname_spec\"`
+           # use dlname if we got it. it's perfectly good, no?
+           if test -n "$dlname"; then
+             soname="$dlname"
+           elif test -n "$soname_spec"; then
+             # bleh windows
+             case $host in
+             *cygwin*)
+               major=`expr $current - $age`
+               versuffix="-$major"
+               ;;
+             esac
+             eval soname=\"$soname_spec\"
+           else
+             soname="$realname"
+           fi
+
+           # Make a new name for the extract_expsyms_cmds to use
+           soroot="$soname"
+           soname=`echo $soroot | sed -e 's/^.*\///'`
+           newlib="libimp-`echo $soname | sed 's/^lib//;s/\.dll$//'`.a"
+
+           # If the library has no export list, then create one now
+           if test -f "$output_objdir/$soname-def"; then :
+           else
+             $show "extracting exported symbol list from \`$soname'"
+             IFS="${IFS=       }"; save_ifs="$IFS"; IFS='~'
+             eval cmds=\"$extract_expsyms_cmds\"
+             for cmd in $cmds; do
+               IFS="$save_ifs"
+               $show "$cmd"
+               $run eval "$cmd" || exit $?
+             done
+             IFS="$save_ifs"
+           fi
+
+           # Create $newlib
+           if test -f "$output_objdir/$newlib"; then :; else
+             $show "generating import library for \`$soname'"
+             IFS="${IFS=       }"; save_ifs="$IFS"; IFS='~'
+             eval cmds=\"$old_archive_from_expsyms_cmds\"
+             for cmd in $cmds; do
+               IFS="$save_ifs"
+               $show "$cmd"
+               $run eval "$cmd" || exit $?
+             done
+             IFS="$save_ifs"
+           fi
+           # make sure the library variables are pointing to the new library
+           dir=$output_objdir
+           linklib=$newlib
+         fi # test -n $old_archive_from_expsyms_cmds
+
+         if test $linkmode = prog || test "$mode" != relink; then
+           add_shlibpath=
+           add_dir=
+           add=
+           lib_linked=yes
+           case $hardcode_action in
+           immediate | unsupported)
+             if test "$hardcode_direct" = no; then
+               add="$dir/$linklib"
+             elif test "$hardcode_minus_L" = no; then
+               case $host in
+               *-*-sunos*) add_shlibpath="$dir" ;;
+               esac
+               add_dir="-L$dir"
+               add="-l$name"
+             elif test "$hardcode_shlibpath_var" = no; then
+               add_shlibpath="$dir"
+               add="-l$name"
+             else
+               lib_linked=no
+             fi
+             ;;
+           relink)
+             if test "$hardcode_direct" = yes; then
+               add="$dir/$linklib"
+             elif test "$hardcode_minus_L" = yes; then
+               add_dir="-L$dir"
+               add="-l$name"
+             elif test "$hardcode_shlibpath_var" = yes; then
+               add_shlibpath="$dir"
+               add="-l$name"
+             else
+               lib_linked=no
+             fi
+             ;;
+           *) lib_linked=no ;;
+           esac
+
+           if test "$lib_linked" != yes; then
+             $echo "$modename: configuration error: unsupported hardcode properties"
+             exit 1
+           fi
+
+           if test -n "$add_shlibpath"; then
+             case :$compile_shlibpath: in
+             *":$add_shlibpath:"*) ;;
+             *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+             esac
+           fi
+           if test $linkmode = prog; then
+             test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+             test -n "$add" && compile_deplibs="$add $compile_deplibs"
+           else
+             test -n "$add_dir" && deplibs="$add_dir $deplibs"
+             test -n "$add" && deplibs="$add $deplibs"
+             if test "$hardcode_direct" != yes && \
+                test "$hardcode_minus_L" != yes && \
+                test "$hardcode_shlibpath_var" = yes; then
+               case :$finalize_shlibpath: in
+               *":$libdir:"*) ;;
+               *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+               esac
+             fi
+           fi
+         fi
+
+         if test $linkmode = prog || test "$mode" = relink; then
+           add_shlibpath=
+           add_dir=
+           add=
+           # Finalize command for both is simple: just hardcode it.
+           if test "$hardcode_direct" = yes; then
+             add="$libdir/$linklib"
+           elif test "$hardcode_minus_L" = yes; then
+             add_dir="-L$libdir"
+             add="-l$name"
+           elif test "$hardcode_shlibpath_var" = yes; then
+             case :$finalize_shlibpath: in
+             *":$libdir:"*) ;;
+             *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+             esac
+             add="-l$name"
+           else
+             # We cannot seem to hardcode it, guess we'll fake it.
+             add_dir="-L$libdir"
+             add="-l$name"
+           fi
+
+           if test $linkmode = prog; then
+             test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+             test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+           else
+             test -n "$add_dir" && deplibs="$add_dir $deplibs"
+             test -n "$add" && deplibs="$add $deplibs"
+           fi
+         fi
+       elif test $linkmode = prog; then
+         if test "$alldeplibs" = yes &&
+            { test "$deplibs_check_method" = pass_all ||
+              { test "$build_libtool_libs" = yes &&
+                test -n "$library_names"; }; }; then
+           # We only need to search for static libraries
+           continue
+         fi
+
+         # Try to link the static library
+         # Here we assume that one of hardcode_direct or hardcode_minus_L
+         # is not unsupported.  This is valid on all known static and
+         # shared platforms.
+         if test "$hardcode_direct" != unsupported; then
+           test -n "$old_library" && linklib="$old_library"
+           compile_deplibs="$dir/$linklib $compile_deplibs"
+           finalize_deplibs="$dir/$linklib $finalize_deplibs"
+         else
+           compile_deplibs="-l$name -L$dir $compile_deplibs"
+           finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+         fi
+       elif test "$build_libtool_libs" = yes; then
+         # Not a shared library
+         if test "$deplibs_check_method" != pass_all; then
+           # We're trying link a shared library against a static one
+           # but the system doesn't support it.
+
+           # Just print a warning and add the library to dependency_libs so
+           # that the program can be linked against the static library.
+           echo
+           echo "*** Warning: This library needs some functionality provided by $lib."
+           echo "*** I have the capability to make that library automatically link in when"
+           echo "*** you link to this library.  But I can only do this if you have a"
+           echo "*** shared version of the library, which you do not appear to have."
+           if test "$module" = yes; then
+             echo "*** Therefore, libtool will create a static module, that should work "
+             echo "*** as long as the dlopening application is linked with the -dlopen flag."
+             if test -z "$global_symbol_pipe"; then
+               echo
+               echo "*** However, this would only work if libtool was able to extract symbol"
+               echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+               echo "*** not find such a program.  So, this module is probably useless."
+               echo "*** \`nm' from GNU binutils and a full rebuild may help."
+             fi
+             if test "$build_old_libs" = no; then
+               build_libtool_libs=module
+               build_old_libs=yes
+             else
+               build_libtool_libs=no
+             fi
+           fi
+         else
+           convenience="$convenience $dir/$old_library"
+           old_convenience="$old_convenience $dir/$old_library"
+           deplibs="$dir/$old_library $deplibs"
+           link_static=yes
+         fi
+       fi # link shared/static library?
+
+       if test $linkmode = lib; then
+         if test -n "$dependency_libs" &&
+            { test $hardcode_into_libs != yes || test $build_old_libs = yes ||
+              test $link_static = yes; }; then
+           # Extract -R from dependency_libs
+           temp_deplibs=
+           for libdir in $dependency_libs; do
+             case $libdir in
+             -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
+                  case " $xrpath " in
+                  *" $temp_xrpath "*) ;;
+                  *) xrpath="$xrpath $temp_xrpath";;
+                  esac;;
+             *) temp_deplibs="$temp_deplibs $libdir";;
+             esac
+           done
+           dependency_libs="$temp_deplibs"
+         fi
+
+         newlib_search_path="$newlib_search_path $absdir"
+         # Link against this library
+         test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+         # ... and its dependency_libs
+         tmp_libs=
+         for deplib in $dependency_libs; do
+           newdependency_libs="$deplib $newdependency_libs"
+           if test "X$duplicate_deps" = "Xyes" ; then
+           case "$tmp_libs " in
+           *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+           esac
+           fi
+           tmp_libs="$tmp_libs $deplib"
+         done
+
+         if test $link_all_deplibs != no; then
+           # Add the search paths of all dependency libraries
+           for deplib in $dependency_libs; do
+             case $deplib in
+             -L*) path="$deplib" ;;
+             *.la)
+               dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
+               test "X$dir" = "X$deplib" && dir="."
+               # We need an absolute path.
+               case $dir in
+               [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+               *)
+                 absdir=`cd "$dir" && pwd`
+                 if test -z "$absdir"; then
+                   $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+                   absdir="$dir"
+                 fi
+                 ;;
+               esac
+               if grep "^installed=no" $deplib > /dev/null; then
+                 path="-L$absdir/$objdir"
+               else
+                 eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+                 if test -z "$libdir"; then
+                   $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+                   exit 1
+                 fi
+                 if test "$absdir" != "$libdir"; then
+                   $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+                 fi
+                 path="-L$absdir"
+               fi
+               ;;
+             *) continue ;;
+             esac
+             case " $deplibs " in
+             *" $path "*) ;;
+             *) deplibs="$path $deplibs" ;;
+             esac
+           done
+         fi # link_all_deplibs != no
+       fi # linkmode = lib
+      done # for deplib in $libs
+      if test $pass = dlpreopen; then
+       # Link the dlpreopened libraries before other libraries
+       for deplib in $save_deplibs; do
+         deplibs="$deplib $deplibs"
+       done
+      fi
+      if test $pass != dlopen; then
+       test $pass != scan && dependency_libs="$newdependency_libs"
+       if test $pass != conv; then
+         # Make sure lib_search_path contains only unique directories.
+         lib_search_path=
+         for dir in $newlib_search_path; do
+           case "$lib_search_path " in
+           *" $dir "*) ;;
+           *) lib_search_path="$lib_search_path $dir" ;;
+           esac
+         done
+         newlib_search_path=
+       fi
+
+       if test "$linkmode,$pass" != "prog,link"; then
+         vars="deplibs"
+       else
+         vars="compile_deplibs finalize_deplibs"
+       fi
+       for var in $vars dependency_libs; do
+         # Add libraries to $var in reverse order
+         eval tmp_libs=\"\$$var\"
+         new_libs=
+         for deplib in $tmp_libs; do
+           case $deplib in
+           -L*) new_libs="$deplib $new_libs" ;;
+           *)
+             case " $specialdeplibs " in
+             *" $deplib "*) new_libs="$deplib $new_libs" ;;
+             *)
+               case " $new_libs " in
+               *" $deplib "*) ;;
+               *) new_libs="$deplib $new_libs" ;;
+               esac
+               ;;
+             esac
+             ;;
+           esac
+         done
+         tmp_libs=
+         for deplib in $new_libs; do
+           case $deplib in
+           -L*)
+             case " $tmp_libs " in
+             *" $deplib "*) ;;
+             *) tmp_libs="$tmp_libs $deplib" ;;
+             esac
+             ;;
+           *) tmp_libs="$tmp_libs $deplib" ;;
+           esac
+         done
+         eval $var=\"$tmp_libs\"
+       done # for var
+      fi
+      if test "$pass" = "conv" &&
+       { test "$linkmode" = "lib" || test "$linkmode" = "prog"; }; then
+       libs="$deplibs" # reset libs
+       deplibs=
+      fi
+    done # for pass
+    if test $linkmode = prog; then
+      dlfiles="$newdlfiles"
+      dlprefiles="$newdlprefiles"
+    fi
+
+    case $linkmode in
+    oldlib)
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+       $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+       $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+       $echo "$modename: warning: \`-R' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+       $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$release"; then
+       $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+       $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
+      fi
+
+      # Now set the variables for building old libraries.
+      build_libtool_libs=no
+      oldlibs="$output"
+      objs="$objs$old_deplibs"
+      ;;
+
+    lib)
+      # Make sure we only generate libraries of the form `libNAME.la'.
+      case $outputname in
+      lib*)
+       name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+       eval libname=\"$libname_spec\"
+       ;;
+      *)
+       if test "$module" = no; then
+         $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
+         $echo "$help" 1>&2
+         exit 1
+       fi
+       if test "$need_lib_prefix" != no; then
+         # Add the "lib" prefix for modules if required
+         name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+         eval libname=\"$libname_spec\"
+       else
+         libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+       fi
+       ;;
+      esac
+
+      if test -n "$objs"; then
+       if test "$deplibs_check_method" != pass_all; then
+         $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
+         exit 1
+       else
+         echo
+         echo "*** Warning: Linking the shared library $output against the non-libtool"
+         echo "*** objects $objs is not portable!"
+         libobjs="$libobjs $objs"
+       fi
+      fi
+
+      if test "$dlself" != no; then
+       $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
+      fi
+
+      set dummy $rpath
+      if test $# -gt 2; then
+       $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
+      fi
+      install_libdir="$2"
+
+      oldlibs=
+      if test -z "$rpath"; then
+       if test "$build_libtool_libs" = yes; then
+         # Building a libtool convenience library.
+         # Some compilers have problems with a `.al' extension so
+          # convenience libraries should have the same extension an
+          # archive normally would.
+         oldlibs="$output_objdir/$libname.$libext $oldlibs"
+         build_libtool_libs=convenience
+         build_old_libs=yes
+       fi
+
+       if test -n "$vinfo"; then
+         $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2
+       fi
+
+       if test -n "$release"; then
+         $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
+       fi
+      else
+
+       # Parse the version information argument.
+       IFS="${IFS=     }"; save_ifs="$IFS"; IFS=':'
+       set dummy $vinfo 0 0 0
+       IFS="$save_ifs"
+
+       if test -n "$8"; then
+         $echo "$modename: too many parameters to \`-version-info'" 1>&2
+         $echo "$help" 1>&2
+         exit 1
+       fi
+
+       current="$2"
+       revision="$3"
+       age="$4"
+
+       # Check that each of the things are valid numbers.
+       case $current in
+       0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
+       *)
+         $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
+         $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+         exit 1
+         ;;
+       esac
+
+       case $revision in
+       0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
+       *)
+         $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
+         $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+         exit 1
+         ;;
+       esac
+
+       case $age in
+       0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
+       *)
+         $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
+         $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+         exit 1
+         ;;
+       esac
+
+       if test $age -gt $current; then
+         $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
+         $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+         exit 1
+       fi
+
+       # Calculate the version variables.
+       major=
+       versuffix=
+       verstring=
+       case $version_type in
+       none) ;;
+
+       darwin)
+         # Like Linux, but with the current version available in
+         # verstring for coding it into the library header
+         major=.`expr $current - $age`
+         versuffix="$major.$age.$revision"
+         # Darwin ld doesn't like 0 for these options...
+         minor_current=`expr $current + 1`
+         verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+         ;;
+
+       freebsd-aout)
+         major=".$current"
+         versuffix=".$current.$revision";
+         ;;
+
+       freebsd-elf)
+         major=".$current"
+         versuffix=".$current";
+         ;;
+
+       irix)
+         major=`expr $current - $age`
+         verstring="sgi$major.$revision"
+
+         # Add in all the interfaces that we are compatible with.
+         loop=$revision
+         while test $loop != 0; do
+           iface=`expr $revision - $loop`
+           loop=`expr $loop - 1`
+           verstring="sgi$major.$iface:$verstring"
+         done
+
+         # Before this point, $major must not contain `.'.
+         major=.$major
+         versuffix="$major.$revision"
+         ;;
+
+       linux)
+         major=.`expr $current - $age`
+         versuffix="$major.$age.$revision"
+         ;;
+
+       osf)
+         major=`expr $current - $age`
+         versuffix=".$current.$age.$revision"
+         verstring="$current.$age.$revision"
+
+         # Add in all the interfaces that we are compatible with.
+         loop=$age
+         while test $loop != 0; do
+           iface=`expr $current - $loop`
+           loop=`expr $loop - 1`
+           verstring="$verstring:${iface}.0"
+         done
+
+         # Make executables depend on our current version.
+         verstring="$verstring:${current}.0"
+         ;;
+
+       sunos)
+         major=".$current"
+         versuffix=".$current.$revision"
+         ;;
+
+       windows)
+         # Use '-' rather than '.', since we only want one
+         # extension on DOS 8.3 filesystems.
+         major=`expr $current - $age`
+         versuffix="-$major"
+         ;;
+
+       *)
+         $echo "$modename: unknown library version type \`$version_type'" 1>&2
+         echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+         exit 1
+         ;;
+       esac
+
+       # Clear the version info if we defaulted, and they specified a release.
+       if test -z "$vinfo" && test -n "$release"; then
+         major=
+         case $version_type in
+         darwin)
+           # we can't check for "0.0" in archive_cmds due to quoting
+           # problems, so we reset it completely
+           verstring=
+           ;;
+         *)
+           verstring="0.0"
+           ;;
+         esac
+         if test "$need_version" = no; then
+           versuffix=
+         else
+           versuffix=".0.0"
+         fi
+       fi
+
+       # Remove version info from name if versioning should be avoided
+       if test "$avoid_version" = yes && test "$need_version" = no; then
+         major=
+         versuffix=
+         verstring=""
+       fi
+
+       # Check to see if the archive will have undefined symbols.
+       if test "$allow_undefined" = yes; then
+         if test "$allow_undefined_flag" = unsupported; then
+           $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
+           build_libtool_libs=no
+           build_old_libs=yes
+         fi
+       else
+         # Don't allow undefined symbols.
+         allow_undefined_flag="$no_undefined_flag"
+       fi
+      fi
+
+      if test "$mode" != relink; then
+       # Remove our outputs, but don't remove object files since they
+        # may have been created when compiling PIC objects.
+        removelist=
+        tempremovelist=`echo "$output_objdir/*"`
+       for p in $tempremovelist; do
+          case $p in
+            *.$objext)
+               ;;
+            $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+               removelist="$removelist $p"
+               ;;
+            *) ;;
+          esac
+        done
+        if test -n "$removelist"; then
+         $show "${rm}r $removelist"
+         $run ${rm}r $removelist
+        fi
+      fi
+
+      # Now set the variables for building old libraries.
+      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+       oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+       # Transform .lo files to .o files.
+       oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+      fi
+
+      # Eliminate all temporary directories.
+      for path in $notinst_path; do
+       lib_search_path=`echo "$lib_search_path " | sed -e 's% $path % %g'`
+       deplibs=`echo "$deplibs " | sed -e 's% -L$path % %g'`
+       dependency_libs=`echo "$dependency_libs " | sed -e 's% -L$path % %g'`
+      done
+
+      if test -n "$xrpath"; then
+       # If the user specified any rpath flags, then add them.
+       temp_xrpath=
+       for libdir in $xrpath; do
+         temp_xrpath="$temp_xrpath -R$libdir"
+         case "$finalize_rpath " in
+         *" $libdir "*) ;;
+         *) finalize_rpath="$finalize_rpath $libdir" ;;
+         esac
+       done
+       if test $hardcode_into_libs != yes || test $build_old_libs = yes; then
+         dependency_libs="$temp_xrpath $dependency_libs"
+       fi
+      fi
+
+      # Make sure dlfiles contains only unique files that won't be dlpreopened
+      old_dlfiles="$dlfiles"
+      dlfiles=
+      for lib in $old_dlfiles; do
+       case " $dlprefiles $dlfiles " in
+       *" $lib "*) ;;
+       *) dlfiles="$dlfiles $lib" ;;
+       esac
+      done
+
+      # Make sure dlprefiles contains only unique files
+      old_dlprefiles="$dlprefiles"
+      dlprefiles=
+      for lib in $old_dlprefiles; do
+       case "$dlprefiles " in
+       *" $lib "*) ;;
+       *) dlprefiles="$dlprefiles $lib" ;;
+       esac
+      done
+
+      if test "$build_libtool_libs" = yes; then
+       if test -n "$rpath"; then
+         case $host in
+         *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+           # these systems don't actually have a c library (as such)!
+           ;;
+         *-*-rhapsody* | *-*-darwin1.[012])
+           # Rhapsody C library is in the System framework
+           deplibs="$deplibs -framework System"
+           ;;
+         *-*-netbsd*)
+           # Don't link with libc until the a.out ld.so is fixed.
+           ;;
+         *)
+           # Add libc to deplibs on all other systems if necessary.
+           if test $build_libtool_need_lc = "yes"; then
+             deplibs="$deplibs -lc"
+           fi
+           ;;
+         esac
+       fi
+
+       # Transform deplibs into only deplibs that can be linked in shared.
+       name_save=$name
+       libname_save=$libname
+       release_save=$release
+       versuffix_save=$versuffix
+       major_save=$major
+       # I'm not sure if I'm treating the release correctly.  I think
+       # release should show up in the -l (ie -lgmp5) so we don't want to
+       # add it in twice.  Is that correct?
+       release=""
+       versuffix=""
+       major=""
+       newdeplibs=
+       droppeddeps=no
+       case $deplibs_check_method in
+       pass_all)
+         # Don't check for shared/static.  Everything works.
+         # This might be a little naive.  We might want to check
+         # whether the library exists or not.  But this is on
+         # osf3 & osf4 and I'm not really sure... Just
+         # implementing what was already the behaviour.
+         newdeplibs=$deplibs
+         ;;
+       test_compile)
+         # This code stresses the "libraries are programs" paradigm to its
+         # limits. Maybe even breaks it.  We compile a program, linking it
+         # against the deplibs as a proxy for the library.  Then we can check
+         # whether they linked in statically or dynamically with ldd.
+         $rm conftest.c
+         cat > conftest.c <<EOF
+         int main() { return 0; }
+EOF
+         $rm conftest
+         $LTCC -o conftest conftest.c $deplibs
+         if test $? -eq 0 ; then
+           ldd_output=`ldd conftest`
+           for i in $deplibs; do
+             name="`expr $i : '-l\(.*\)'`"
+             # If $name is empty we are operating on a -L argument.
+             if test -n "$name" && test "$name" != "0"; then
+               libname=`eval \\$echo \"$libname_spec\"`
+               deplib_matches=`eval \\$echo \"$library_names_spec\"`
+               set dummy $deplib_matches
+               deplib_match=$2
+               if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+                 newdeplibs="$newdeplibs $i"
+               else
+                 droppeddeps=yes
+                 echo
+                 echo "*** Warning: This library needs some functionality provided by $i."
+                 echo "*** I have the capability to make that library automatically link in when"
+                 echo "*** you link to this library.  But I can only do this if you have a"
+                 echo "*** shared version of the library, which you do not appear to have."
+               fi
+             else
+               newdeplibs="$newdeplibs $i"
+             fi
+           done
+         else
+           # Error occured in the first compile.  Let's try to salvage the situation:
+           # Compile a seperate program for each library.
+           for i in $deplibs; do
+             name="`expr $i : '-l\(.*\)'`"
+            # If $name is empty we are operating on a -L argument.
+             if test -n "$name" && test "$name" != "0"; then
+               $rm conftest
+               $LTCC -o conftest conftest.c $i
+               # Did it work?
+               if test $? -eq 0 ; then
+                 ldd_output=`ldd conftest`
+                 libname=`eval \\$echo \"$libname_spec\"`
+                 deplib_matches=`eval \\$echo \"$library_names_spec\"`
+                 set dummy $deplib_matches
+                 deplib_match=$2
+                 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+                   newdeplibs="$newdeplibs $i"
+                 else
+                   droppeddeps=yes
+                   echo
+                   echo "*** Warning: This library needs some functionality provided by $i."
+                   echo "*** I have the capability to make that library automatically link in when"
+                   echo "*** you link to this library.  But I can only do this if you have a"
+                   echo "*** shared version of the library, which you do not appear to have."
+                 fi
+               else
+                 droppeddeps=yes
+                 echo
+                 echo "*** Warning!  Library $i is needed by this library but I was not able to"
+                 echo "***  make it link in!  You will probably need to install it or some"
+                 echo "*** library that it depends on before this library will be fully"
+                 echo "*** functional.  Installing it before continuing would be even better."
+               fi
+             else
+               newdeplibs="$newdeplibs $i"
+             fi
+           done
+         fi
+         ;;
+       file_magic*)
+         set dummy $deplibs_check_method
+         file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+         for a_deplib in $deplibs; do
+           name="`expr $a_deplib : '-l\(.*\)'`"
+           # If $name is empty we are operating on a -L argument.
+           if test -n "$name" && test "$name" != "0"; then
+             libname=`eval \\$echo \"$libname_spec\"`
+             for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+                   potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+                   for potent_lib in $potential_libs; do
+                     # Follow soft links.
+                     if ls -lLd "$potent_lib" 2>/dev/null \
+                        | grep " -> " >/dev/null; then
+                       continue
+                     fi
+                     # The statement above tries to avoid entering an
+                     # endless loop below, in case of cyclic links.
+                     # We might still enter an endless loop, since a link
+                     # loop can be closed while we follow links,
+                     # but so what?
+                     potlib="$potent_lib"
+                     while test -h "$potlib" 2>/dev/null; do
+                       potliblink=`ls -ld $potlib | sed 's/.* -> //'`
+                       case $potliblink in
+                       [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+                       *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+                       esac
+                     done
+                     if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
+                        | sed 10q \
+                        | egrep "$file_magic_regex" > /dev/null; then
+                       newdeplibs="$newdeplibs $a_deplib"
+                       a_deplib=""
+                       break 2
+                     fi
+                   done
+             done
+             if test -n "$a_deplib" ; then
+               droppeddeps=yes
+               echo
+               echo "*** Warning: This library needs some functionality provided by $a_deplib."
+               echo "*** I have the capability to make that library automatically link in when"
+               echo "*** you link to this library.  But I can only do this if you have a"
+               echo "*** shared version of the library, which you do not appear to have."
+             fi
+           else
+             # Add a -L argument.
+             newdeplibs="$newdeplibs $a_deplib"
+           fi
+         done # Gone through all deplibs.
+         ;;
+       match_pattern*)
+         set dummy $deplibs_check_method
+         match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+         for a_deplib in $deplibs; do
+           name="`expr $a_deplib : '-l\(.*\)'`"
+           # If $name is empty we are operating on a -L argument.
+           if test -n "$name" && test "$name" != "0"; then
+             libname=`eval \\$echo \"$libname_spec\"`
+             for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+               potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+               for potent_lib in $potential_libs; do
+                 if eval echo \"$potent_lib\" 2>/dev/null \
+                     | sed 10q \
+                     | egrep "$match_pattern_regex" > /dev/null; then
+                   newdeplibs="$newdeplibs $a_deplib"
+                   a_deplib=""
+                   break 2
+                 fi
+               done
+             done
+             if test -n "$a_deplib" ; then
+               droppeddeps=yes
+               echo
+               echo "*** Warning: This library needs some functionality provided by $a_deplib."
+               echo "*** I have the capability to make that library automatically link in when"
+               echo "*** you link to this library.  But I can only do this if you have a"
+               echo "*** shared version of the library, which you do not appear to have."
+             fi
+           else
+             # Add a -L argument.
+             newdeplibs="$newdeplibs $a_deplib"
+           fi
+         done # Gone through all deplibs.
+         ;;
+       none | unknown | *)
+         newdeplibs=""
+         if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
+              -e 's/ -[LR][^ ]*//g' -e 's/[    ]//g' |
+            grep . >/dev/null; then
+           echo
+           if test "X$deplibs_check_method" = "Xnone"; then
+             echo "*** Warning: inter-library dependencies are not supported in this platform."
+           else
+             echo "*** Warning: inter-library dependencies are not known to be supported."
+           fi
+           echo "*** All declared inter-library dependencies are being dropped."
+           droppeddeps=yes
+         fi
+         ;;
+       esac
+       versuffix=$versuffix_save
+       major=$major_save
+       release=$release_save
+       libname=$libname_save
+       name=$name_save
+
+       case $host in
+       *-*-rhapsody* | *-*-darwin1.[012])
+         # On Rhapsody replace the C library is the System framework
+         newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
+         ;;
+       esac
+
+       if test "$droppeddeps" = yes; then
+         if test "$module" = yes; then
+           echo
+           echo "*** Warning: libtool could not satisfy all declared inter-library"
+           echo "*** dependencies of module $libname.  Therefore, libtool will create"
+           echo "*** a static module, that should work as long as the dlopening"
+           echo "*** application is linked with the -dlopen flag."
+           if test -z "$global_symbol_pipe"; then
+             echo
+             echo "*** However, this would only work if libtool was able to extract symbol"
+             echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+             echo "*** not find such a program.  So, this module is probably useless."
+             echo "*** \`nm' from GNU binutils and a full rebuild may help."
+           fi
+           if test "$build_old_libs" = no; then
+             oldlibs="$output_objdir/$libname.$libext"
+             build_libtool_libs=module
+             build_old_libs=yes
+           else
+             build_libtool_libs=no
+           fi
+         else
+           echo "*** The inter-library dependencies that have been dropped here will be"
+           echo "*** automatically added whenever a program is linked with this library"
+           echo "*** or is declared to -dlopen it."
+
+           if test $allow_undefined = no; then
+             echo
+             echo "*** Since this library must not contain undefined symbols,"
+             echo "*** because either the platform does not support them or"
+             echo "*** it was explicitly requested with -no-undefined,"
+             echo "*** libtool will only create a static version of it."
+             if test "$build_old_libs" = no; then
+               oldlibs="$output_objdir/$libname.$libext"
+               build_libtool_libs=module
+               build_old_libs=yes
+             else
+               build_libtool_libs=no
+             fi
+           fi
+         fi
+       fi
+       # Done checking deplibs!
+       deplibs=$newdeplibs
+      fi
+
+      # All the library-specific variables (install_libdir is set above).
+      library_names=
+      old_library=
+      dlname=
+
+      # Test again, we may have decided not to build it any more
+      if test "$build_libtool_libs" = yes; then
+       if test $hardcode_into_libs = yes; then
+         # Hardcode the library paths
+         hardcode_libdirs=
+         dep_rpath=
+         rpath="$finalize_rpath"
+         test "$mode" != relink && rpath="$compile_rpath$rpath"
+         for libdir in $rpath; do
+           if test -n "$hardcode_libdir_flag_spec"; then
+             if test -n "$hardcode_libdir_separator"; then
+               if test -z "$hardcode_libdirs"; then
+                 hardcode_libdirs="$libdir"
+               else
+                 # Just accumulate the unique libdirs.
+                 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+                 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+                   ;;
+                 *)
+                   hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+                   ;;
+                 esac
+               fi
+             else
+               eval flag=\"$hardcode_libdir_flag_spec\"
+               dep_rpath="$dep_rpath $flag"
+             fi
+           elif test -n "$runpath_var"; then
+             case "$perm_rpath " in
+             *" $libdir "*) ;;
+             *) perm_rpath="$perm_rpath $libdir" ;;
+             esac
+           fi
+         done
+         # Substitute the hardcoded libdirs into the rpath.
+         if test -n "$hardcode_libdir_separator" &&
+            test -n "$hardcode_libdirs"; then
+           libdir="$hardcode_libdirs"
+           eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+         fi
+         if test -n "$runpath_var" && test -n "$perm_rpath"; then
+           # We should set the runpath_var.
+           rpath=
+           for dir in $perm_rpath; do
+             rpath="$rpath$dir:"
+           done
+           eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+         fi
+         test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+       fi
+
+       shlibpath="$finalize_shlibpath"
+       test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+       if test -n "$shlibpath"; then
+         eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+       fi
+
+       # Get the real and link names of the library.
+       eval library_names=\"$library_names_spec\"
+       set dummy $library_names
+       realname="$2"
+       shift; shift
+
+       if test -n "$soname_spec"; then
+         eval soname=\"$soname_spec\"
+       else
+         soname="$realname"
+       fi
+       test -z "$dlname" && dlname=$soname
+
+       lib="$output_objdir/$realname"
+       for link
+       do
+         linknames="$linknames $link"
+       done
+
+#      # Ensure that we have .o objects for linkers which dislike .lo
+#      # (e.g. aix) in case we are running --disable-static
+#      for obj in $libobjs; do
+#        xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+#        if test "X$xdir" = "X$obj"; then
+#          xdir="."
+#        else
+#          xdir="$xdir"
+#        fi
+#        baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+#        oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
+#        if test ! -f $xdir/$oldobj && test "$baseobj" != "$oldobj"; then
+#          $show "(cd $xdir && ${LN_S} $baseobj $oldobj)"
+#          $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $?
+#        fi
+#      done
+
+       # Use standard objects if they are pic
+       test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+
+       # Prepare the list of exported symbols
+       if test -z "$export_symbols"; then
+         if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+           $show "generating symbol list for \`$libname.la'"
+           export_symbols="$output_objdir/$libname.exp"
+           $run $rm $export_symbols
+           eval cmds=\"$export_symbols_cmds\"
+           IFS="${IFS=         }"; save_ifs="$IFS"; IFS='~'
+           for cmd in $cmds; do
+             IFS="$save_ifs"
+             $show "$cmd"
+             $run eval "$cmd" || exit $?
+           done
+           IFS="$save_ifs"
+           if test -n "$export_symbols_regex"; then
+             $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
+             $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+             $show "$mv \"${export_symbols}T\" \"$export_symbols\""
+             $run eval '$mv "${export_symbols}T" "$export_symbols"'
+           fi
+         fi
+       fi
+
+       if test -n "$export_symbols" && test -n "$include_expsyms"; then
+         $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
+       fi
+
+       if test -n "$convenience"; then
+         if test -n "$whole_archive_flag_spec"; then
+           save_libobjs=$libobjs
+           eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+         else
+           gentop="$output_objdir/${outputname}x"
+           $show "${rm}r $gentop"
+           $run ${rm}r "$gentop"
+           $show "$mkdir $gentop"
+           $run $mkdir "$gentop"
+           status=$?
+           if test $status -ne 0 && test ! -d "$gentop"; then
+             exit $status
+           fi
+           generated="$generated $gentop"
+
+           for xlib in $convenience; do
+             # Extract the objects.
+             case $xlib in
+             [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+             *) xabs=`pwd`"/$xlib" ;;
+             esac
+             xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+             xdir="$gentop/$xlib"
+
+             $show "${rm}r $xdir"
+             $run ${rm}r "$xdir"
+             $show "$mkdir $xdir"
+             $run $mkdir "$xdir"
+             status=$?
+             if test $status -ne 0 && test ! -d "$xdir"; then
+               exit $status
+             fi
+             $show "(cd $xdir && $AR x $xabs)"
+             $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+
+             libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+           done
+         fi
+       fi
+
+       if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+         eval flag=\"$thread_safe_flag_spec\"
+         linker_flags="$linker_flags $flag"
+       fi
+
+       # Make a backup of the uninstalled library when relinking
+       if test "$mode" = relink; then
+         $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
+       fi
+
+       # Do each of the archive commands.
+       if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+         eval cmds=\"$archive_expsym_cmds\"
+       else
+         eval cmds=\"$archive_cmds\"
+       fi
+        if len=`expr "X$cmds" : ".*"` &&
+           test $len -le $max_cmd_len; then
+          :
+        else
+         # The command line is too long to link in one step, link piecewise.
+          $echo "creating reloadable object files..."
+
+         # Save the value of $output and $libobjs because we want to
+         # use them later.  If we have whole_archive_flag_spec, we
+         # want to use save_libobjs as it was before
+         # whole_archive_flag_spec was expanded, because we can't
+         # assume the linker understands whole_archive_flag_spec.
+         # This may have to be revisited, in case too many
+         # convenience libraries get linked in and end up exceeding
+         # the spec.
+         if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+           save_libobjs=$libobjs
+         fi
+          save_output=$output
+
+         # Clear the reloadable object creation command queue and
+         # initialize k to one.
+          test_cmds=
+          concat_cmds=
+          objlist=
+          delfiles=
+          last_robj=
+          k=1
+          output=$output_objdir/$save_output-${k}.$objext
+         # Loop over the list of objects to be linked.
+          for obj in $save_libobjs
+          do
+            eval test_cmds=\"$reload_cmds $objlist $last_robj\"
+            if test "X$objlist" = X ||
+              { len=`expr "X$test_cmds" : ".*"` &&
+                 test $len -le $max_cmd_len; }; then
+              objlist="$objlist $obj"
+            else
+             # The command $test_cmds is almost too long, add a
+             # command to the queue.
+              if test $k -eq 1 ; then
+               # The first file doesn't have a previous command to add.
+                eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
+              else
+               # All subsequent reloadable object files will link in
+               # the last one created.
+                eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
+              fi
+              last_robj=$output_objdir/$save_output-${k}.$objext
+              k=`expr $k + 1`
+              output=$output_objdir/$save_output-${k}.$objext
+              objlist=$obj
+              len=1
+            fi
+          done
+         # Handle the remaining objects by creating one last
+         # reloadable object file.  All subsequent reloadable object
+         # files will link in the last one created.
+         test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+          eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+
+         # Set up a command to remove the reloadale object files
+         # after they are used.
+          i=0
+          while test $i -lt $k
+          do
+            i=`expr $i + 1`
+            delfiles="$delfiles $output_objdir/$save_output-${i}.$objext"
+          done
+
+          $echo "creating a temporary reloadable object file: $output"
+
+         # Loop through the commands generated above and execute them.
+          IFS="${IFS=  }"; save_ifs="$IFS"; IFS='~'
+          for cmd in $concat_cmds; do
+            IFS="$save_ifs"
+            $show "$cmd"
+            $run eval "$cmd" || exit $?
+          done
+          IFS="$save_ifs"
+
+          libobjs=$output
+         # Restore the value of output.
+          output=$save_output
+
+         if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+           eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+         fi
+         # Expand the library linking commands again to reset the
+         # value of $libobjs for piecewise linking.
+
+         # Do each of the archive commands.
+          if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+            eval cmds=\"$archive_expsym_cmds\"
+          else
+            eval cmds=\"$archive_cmds\"
+          fi
+
+         # Append the command to remove the reloadable object files
+         # to the just-reset $cmds.
+          eval cmds=\"\$cmds~$rm $delfiles\"
+        fi
+        IFS="${IFS=    }"; save_ifs="$IFS"; IFS='~'
+        for cmd in $cmds; do
+          IFS="$save_ifs"
+          $show "$cmd"
+          $run eval "$cmd" || exit $?
+        done
+        IFS="$save_ifs"
+
+       # Restore the uninstalled library and exit
+       if test "$mode" = relink; then
+         $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
+         exit 0
+       fi
+
+       # Create links to the real library.
+       for linkname in $linknames; do
+         if test "$realname" != "$linkname"; then
+           $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
+           $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
+         fi
+       done
+
+       # If -module or -export-dynamic was specified, set the dlname.
+       if test "$module" = yes || test "$export_dynamic" = yes; then
+         # On all known operating systems, these are identical.
+         dlname="$soname"
+       fi
+      fi
+      ;;
+
+    obj)
+      if test -n "$deplibs"; then
+       $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
+      fi
+
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+       $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+       $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+       $echo "$modename: warning: \`-R' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+       $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$release"; then
+       $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
+      fi
+
+      case $output in
+      *.lo)
+       if test -n "$objs$old_deplibs"; then
+         $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
+         exit 1
+       fi
+       libobj="$output"
+       obj=`$echo "X$output" | $Xsed -e "$lo2o"`
+       ;;
+      *)
+       libobj=
+       obj="$output"
+       ;;
+      esac
+
+      # Delete the old objects.
+      $run $rm $obj $libobj
+
+      # Objects from convenience libraries.  This assumes
+      # single-version convenience libraries.  Whenever we create
+      # different ones for PIC/non-PIC, this we'll have to duplicate
+      # the extraction.
+      reload_conv_objs=
+      gentop=
+      # reload_cmds runs $LD directly, so let us get rid of
+      # -Wl from whole_archive_flag_spec
+      wl=
+
+      if test -n "$convenience"; then
+       if test -n "$whole_archive_flag_spec"; then
+         eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+       else
+         gentop="$output_objdir/${obj}x"
+         $show "${rm}r $gentop"
+         $run ${rm}r "$gentop"
+         $show "$mkdir $gentop"
+         $run $mkdir "$gentop"
+         status=$?
+         if test $status -ne 0 && test ! -d "$gentop"; then
+           exit $status
+         fi
+         generated="$generated $gentop"
+
+         for xlib in $convenience; do
+           # Extract the objects.
+           case $xlib in
+           [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+           *) xabs=`pwd`"/$xlib" ;;
+           esac
+           xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+           xdir="$gentop/$xlib"
+
+           $show "${rm}r $xdir"
+           $run ${rm}r "$xdir"
+           $show "$mkdir $xdir"
+           $run $mkdir "$xdir"
+           status=$?
+           if test $status -ne 0 && test ! -d "$xdir"; then
+             exit $status
+           fi
+           $show "(cd $xdir && $AR x $xabs)"
+           $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+
+           reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+         done
+       fi
+      fi
+
+      # Create the old-style object.
+      reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+      output="$obj"
+      eval cmds=\"$reload_cmds\"
+      IFS="${IFS=      }"; save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+       IFS="$save_ifs"
+       $show "$cmd"
+       $run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+
+      # Exit if we aren't doing a library object file.
+      if test -z "$libobj"; then
+       if test -n "$gentop"; then
+         $show "${rm}r $gentop"
+         $run ${rm}r $gentop
+       fi
+
+       exit 0
+      fi
+
+      if test "$build_libtool_libs" != yes; then
+       if test -n "$gentop"; then
+         $show "${rm}r $gentop"
+         $run ${rm}r $gentop
+       fi
+
+       # Create an invalid libtool object if no PIC, so that we don't
+       # accidentally link it into a program.
+       # $show "echo timestamp > $libobj"
+       # $run eval "echo timestamp > $libobj" || exit $?
+       exit 0
+      fi
+
+      if test -n "$pic_flag" || test "$pic_mode" != default; then
+       # Only do commands if we really have different PIC objects.
+       reload_objs="$libobjs $reload_conv_objs"
+       output="$libobj"
+       eval cmds=\"$reload_cmds\"
+       IFS="${IFS=     }"; save_ifs="$IFS"; IFS='~'
+       for cmd in $cmds; do
+         IFS="$save_ifs"
+         $show "$cmd"
+         $run eval "$cmd" || exit $?
+       done
+       IFS="$save_ifs"
+#     else
+#      # Just create a symlink.
+#      $show $rm $libobj
+#      $run $rm $libobj
+#      xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
+#      if test "X$xdir" = "X$libobj"; then
+#        xdir="."
+#      else
+#        xdir="$xdir"
+#      fi
+#      baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
+#      oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
+#      $show "(cd $xdir && $LN_S $oldobj $baseobj)"
+#      $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $?
+      fi
+
+      if test -n "$gentop"; then
+       $show "${rm}r $gentop"
+       $run ${rm}r $gentop
+      fi
+
+      exit 0
+      ;;
+
+    prog)
+      case $host in
+       *cygwin*) output=`echo $output | sed -e 's,.exe$,,;s,$,.exe,'` ;;
+      esac
+      if test -n "$vinfo"; then
+       $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
+      fi
+
+      if test -n "$release"; then
+       $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
+      fi
+
+      if test "$preload" = yes; then
+       if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
+          test "$dlopen_self_static" = unknown; then
+         $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
+       fi
+      fi
+
+      case $host in
+      *-*-rhapsody* | *-*-darwin1.[012])
+       # On Rhapsody replace the C library is the System framework
+       compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+       finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+       ;;
+      esac
+
+      compile_command="$compile_command $compile_deplibs"
+      finalize_command="$finalize_command $finalize_deplibs"
+
+      if test -n "$rpath$xrpath"; then
+       # If the user specified any rpath flags, then add them.
+       for libdir in $rpath $xrpath; do
+         # This is the magic to use -rpath.
+         case "$finalize_rpath " in
+         *" $libdir "*) ;;
+         *) finalize_rpath="$finalize_rpath $libdir" ;;
+         esac
+       done
+      fi
+
+      # Now hardcode the library paths
+      rpath=
+      hardcode_libdirs=
+      for libdir in $compile_rpath $finalize_rpath; do
+       if test -n "$hardcode_libdir_flag_spec"; then
+         if test -n "$hardcode_libdir_separator"; then
+           if test -z "$hardcode_libdirs"; then
+             hardcode_libdirs="$libdir"
+           else
+             # Just accumulate the unique libdirs.
+             case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+             *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+               ;;
+             *)
+               hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+               ;;
+             esac
+           fi
+         else
+           eval flag=\"$hardcode_libdir_flag_spec\"
+           rpath="$rpath $flag"
+         fi
+       elif test -n "$runpath_var"; then
+         case "$perm_rpath " in
+         *" $libdir "*) ;;
+         *) perm_rpath="$perm_rpath $libdir" ;;
+         esac
+       fi
+       case $host in
+       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+         case :$dllsearchpath: in
+         *":$libdir:"*) ;;
+         *) dllsearchpath="$dllsearchpath:$libdir";;
+         esac
+         ;;
+       esac
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+        test -n "$hardcode_libdirs"; then
+       libdir="$hardcode_libdirs"
+       eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      compile_rpath="$rpath"
+
+      rpath=
+      hardcode_libdirs=
+      for libdir in $finalize_rpath; do
+       if test -n "$hardcode_libdir_flag_spec"; then
+         if test -n "$hardcode_libdir_separator"; then
+           if test -z "$hardcode_libdirs"; then
+             hardcode_libdirs="$libdir"
+           else
+             # Just accumulate the unique libdirs.
+             case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+             *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+               ;;
+             *)
+               hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+               ;;
+             esac
+           fi
+         else
+           eval flag=\"$hardcode_libdir_flag_spec\"
+           rpath="$rpath $flag"
+         fi
+       elif test -n "$runpath_var"; then
+         case "$finalize_perm_rpath " in
+         *" $libdir "*) ;;
+         *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+         esac
+       fi
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+        test -n "$hardcode_libdirs"; then
+       libdir="$hardcode_libdirs"
+       eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      finalize_rpath="$rpath"
+
+      dlsyms=
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+       if test -n "$NM" && test -n "$global_symbol_pipe"; then
+         dlsyms="${outputname}S.c"
+       else
+         $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
+       fi
+      fi
+
+      if test -n "$dlsyms"; then
+       case $dlsyms in
+       "") ;;
+       *.c)
+         # Discover the nlist of each of the dlfiles.
+         nlist="$output_objdir/${outputname}.nm"
+
+         $show "$rm $nlist ${nlist}S ${nlist}T"
+         $run $rm "$nlist" "${nlist}S" "${nlist}T"
+
+         # Parse the name list into a source file.
+         $show "creating $output_objdir/$dlsyms"
+
+         test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
+/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
+/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* Prevent the only kind of declaration conflicts we can make. */
+#define lt_preloaded_symbols some_other_symbol
+
+/* External symbol declarations for the compiler. */\
+"
+
+         if test "$dlself" = yes; then
+           $show "generating symbol list for \`$output'"
+
+           test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
+
+           # Add our own program objects to the symbol list.
+           progfiles="$objs$old_deplibs"
+           for arg in $progfiles; do
+             $show "extracting global C symbols from \`$arg'"
+             $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+           done
+
+           if test -n "$exclude_expsyms"; then
+             $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+             $run eval '$mv "$nlist"T "$nlist"'
+           fi
+
+           if test -n "$export_symbols_regex"; then
+             $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+             $run eval '$mv "$nlist"T "$nlist"'
+           fi
+
+           # Prepare the list of exported symbols
+           if test -z "$export_symbols"; then
+             export_symbols="$output_objdir/$output.exp"
+             $run $rm $export_symbols
+             $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+           else
+             $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
+             $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
+             $run eval 'mv "$nlist"T "$nlist"'
+           fi
+         fi
+
+         for arg in $dlprefiles; do
+           $show "extracting global C symbols from \`$arg'"
+           name=`echo "$arg" | sed -e 's%^.*/%%'`
+           $run eval 'echo ": $name " >> "$nlist"'
+           $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+         done
+
+         if test -z "$run"; then
+           # Make sure we have at least an empty file.
+           test -f "$nlist" || : > "$nlist"
+
+           if test -n "$exclude_expsyms"; then
+             egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+             $mv "$nlist"T "$nlist"
+           fi
+
+           # Try sorting and uniquifying the output.
+           if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then
+             :
+           else
+             grep -v "^: " < "$nlist" > "$nlist"S
+           fi
+
+           if test -f "$nlist"S; then
+             eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
+           else
+             echo '/* NONE */' >> "$output_objdir/$dlsyms"
+           fi
+
+           $echo >> "$output_objdir/$dlsyms" "\
+
+#undef lt_preloaded_symbols
+
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr_t address;
+}
+lt_preloaded_symbols[] =
+{\
+"
+
+           sed -n -e 's/^: \([^ ]*\) $/  {\"\1\", (lt_ptr_t) 0},/p' \
+               -e 's/^. \([^ ]*\) \([^ ]*\)$/  {"\2", (lt_ptr_t) \&\2},/p' \
+                 < "$nlist" >> "$output_objdir/$dlsyms"
+
+           $echo >> "$output_objdir/$dlsyms" "\
+  {0, (lt_ptr_t) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+         fi
+
+         pic_flag_for_symtable=
+         case $host in
+         # compiling the symbol table file with pic_flag works around
+         # a FreeBSD bug that causes programs to crash when -lm is
+         # linked before any other PIC object.  But we must not use
+         # pic_flag when linking with -static.  The problem exists in
+         # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+         *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+           case "$compile_command " in
+           *" -static "*) ;;
+           *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
+           esac;;
+         *-*-hpux*)
+           case "$compile_command " in
+           *" -static "*) ;;
+           *) pic_flag_for_symtable=" $pic_flag";;
+           esac
+         esac
+
+         # Now compile the dynamic symbol file.
+         $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+         $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+
+         # Clean up the generated files.
+         $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
+         $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
+
+         # Transform the symbol file into the correct name.
+         compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+         finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+         ;;
+       *)
+         $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+         exit 1
+         ;;
+       esac
+      else
+       # We keep going just in case the user didn't refer to
+       # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
+       # really was required.
+
+       # Nullify the symbol file.
+       compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+       finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+      fi
+
+      if test $need_relink = no || test "$build_libtool_libs" != yes; then
+       # Replace the output file specification.
+       compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+       link_command="$compile_command$compile_rpath"
+
+       # We have no uninstalled library dependencies, so finalize right now.
+       $show "$link_command"
+       $run eval "$link_command"
+       status=$?
+
+       # Delete the generated files.
+       if test -n "$dlsyms"; then
+         $show "$rm $output_objdir/${outputname}S.${objext}"
+         $run $rm "$output_objdir/${outputname}S.${objext}"
+       fi
+
+       exit $status
+      fi
+
+      if test -n "$shlibpath_var"; then
+       # We should set the shlibpath_var
+       rpath=
+       for dir in $temp_rpath; do
+         case $dir in
+         [\\/]* | [A-Za-z]:[\\/]*)
+           # Absolute path.
+           rpath="$rpath$dir:"
+           ;;
+         *)
+           # Relative path: add a thisdir entry.
+           rpath="$rpath\$thisdir/$dir:"
+           ;;
+         esac
+       done
+       temp_rpath="$rpath"
+      fi
+
+      if test -n "$compile_shlibpath$finalize_shlibpath"; then
+       compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+      fi
+      if test -n "$finalize_shlibpath"; then
+       finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+      fi
+
+      compile_var=
+      finalize_var=
+      if test -n "$runpath_var"; then
+       if test -n "$perm_rpath"; then
+         # We should set the runpath_var.
+         rpath=
+         for dir in $perm_rpath; do
+           rpath="$rpath$dir:"
+         done
+         compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+       fi
+       if test -n "$finalize_perm_rpath"; then
+         # We should set the runpath_var.
+         rpath=
+         for dir in $finalize_perm_rpath; do
+           rpath="$rpath$dir:"
+         done
+         finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+       fi
+      fi
+
+      if test "$no_install" = yes; then
+       # We don't need to create a wrapper script.
+       link_command="$compile_var$compile_command$compile_rpath"
+       # Replace the output file specification.
+       link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+       # Delete the old output file.
+       $run $rm $output
+       # Link the executable and exit
+       $show "$link_command"
+       $run eval "$link_command" || exit $?
+       exit 0
+      fi
+
+      if test "$hardcode_action" = relink; then
+       # Fast installation is not supported
+       link_command="$compile_var$compile_command$compile_rpath"
+       relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+       $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
+       $echo "$modename: \`$output' will be relinked during installation" 1>&2
+      else
+       if test "$fast_install" != no; then
+         link_command="$finalize_var$compile_command$finalize_rpath"
+         if test "$fast_install" = yes; then
+           relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+         else
+           # fast_install is set to needless
+           relink_command=
+         fi
+       else
+         link_command="$compile_var$compile_command$compile_rpath"
+         relink_command="$finalize_var$finalize_command$finalize_rpath"
+       fi
+      fi
+
+      # Replace the output file specification.
+      link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+      # Delete the old output files.
+      $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+      $show "$link_command"
+      $run eval "$link_command" || exit $?
+
+      # Now create the wrapper script.
+      $show "creating $output"
+
+      # Quote the relink command for shipping.
+      if test -n "$relink_command"; then
+       # Preserve any variables that may affect compiler behavior
+       for var in $variables_saved_for_relink; do
+         if eval test -z \"\${$var+set}\"; then
+           relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+         elif eval var_value=\$$var; test -z "$var_value"; then
+           relink_command="$var=; export $var; $relink_command"
+         else
+           var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+           relink_command="$var=\"$var_value\"; export $var; $relink_command"
+         fi
+       done
+       relink_command="cd `pwd`; $relink_command"
+       relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Quote $echo for shipping.
+      if test "X$echo" = "X$SHELL $0 --fallback-echo"; then
+       case $0 in
+       [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";;
+       *) qecho="$SHELL `pwd`/$0 --fallback-echo";;
+       esac
+       qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
+      else
+       qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Only actually do things if our run command is non-null.
+      if test -z "$run"; then
+       # win32 will think the script is a binary if it has
+       # a .exe suffix, so we strip it off here.
+       case $output in
+         *.exe) output=`echo $output|sed 's,.exe$,,'` ;;
+       esac
+       # test for cygwin because mv fails w/o .exe extensions
+       case $host in
+         *cygwin*) exeext=.exe ;;
+         *) exeext= ;;
+       esac
+       $rm $output
+       trap "$rm $output; exit 1" 1 2 15
+
+       $echo > $output "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e 1s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+  # install mode needs the following variable:
+  notinst_deplibs='$notinst_deplibs'
+else
+  # When we are sourced in execute mode, \$file and \$echo are already set.
+  if test \"\$libtool_execute_magic\" != \"$magic\"; then
+    echo=\"$qecho\"
+    file=\"\$0\"
+    # Make sure echo works.
+    if test \"X\$1\" = X--no-reexec; then
+      # Discard the --no-reexec flag, and continue.
+      shift
+    elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
+      # Yippee, \$echo works!
+      :
+    else
+      # Restart under the correct shell, and then maybe \$echo will work.
+      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+    fi
+  fi\
+"
+       $echo >> $output "\
+
+  # Find the directory that this script lives in.
+  thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\`
+  while test -n \"\$file\"; do
+    destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+
+    # If there was a directory component, then change thisdir.
+    if test \"x\$destdir\" != \"x\$file\"; then
+      case \"\$destdir\" in
+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+      *) thisdir=\"\$thisdir/\$destdir\" ;;
+      esac
+    fi
+
+    file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\`
+  done
+
+  # Try to get the absolute directory name.
+  absdir=\`cd \"\$thisdir\" && pwd\`
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+       if test "$fast_install" = yes; then
+         echo >> $output "\
+  program=lt-'$outputname'$exeext
+  progdir=\"\$thisdir/$objdir\"
+
+  if test ! -f \"\$progdir/\$program\" || \\
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\
+       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+    file=\"\$\$-\$program\"
+
+    if test ! -d \"\$progdir\"; then
+      $mkdir \"\$progdir\"
+    else
+      $rm \"\$progdir/\$file\"
+    fi"
+
+         echo >> $output "\
+
+    # relink executable if necessary
+    if test -n \"\$relink_command\"; then
+      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+      else
+        $echo \"\$relink_command_output\" >&2
+       $rm \"\$progdir/\$file\"
+       exit 1
+      fi
+    fi
+
+    $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+    { $rm \"\$progdir/\$program\";
+      $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+    $rm \"\$progdir/\$file\"
+  fi"
+       else
+         echo >> $output "\
+  program='$outputname'
+  progdir=\"\$thisdir/$objdir\"
+"
+       fi
+
+       echo >> $output "\
+
+  if test -f \"\$progdir/\$program\"; then"
+
+       # Export our shlibpath_var if we have one.
+       if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+         $echo >> $output "\
+    # Add our own library path to $shlibpath_var
+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+    # Some systems cannot cope with colon-terminated $shlibpath_var
+    # The second colon is a workaround for a bug in BeOS R4 sed
+    $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+    export $shlibpath_var
+"
+       fi
+
+       # fixup the dll searchpath if we need to.
+       if test -n "$dllsearchpath"; then
+         $echo >> $output "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
+       fi
+
+       $echo >> $output "\
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
+      # Run the actual program with our arguments.
+"
+       case $host in
+       # win32 systems need to use the prog path for dll
+       # lookup to work
+       *-*-cygwin* | *-*-pw32*)
+         $echo >> $output "\
+      exec \$progdir/\$program \${1+\"\$@\"}
+"
+         ;;
+
+       # Backslashes separate directories on plain windows
+       *-*-mingw | *-*-os2*)
+         $echo >> $output "\
+      exec \$progdir\\\\\$program \${1+\"\$@\"}
+"
+         ;;
+
+       *)
+         $echo >> $output "\
+      # Export the path to the program.
+      PATH=\"\$progdir:\$PATH\"
+      export PATH
+
+      exec \$program \${1+\"\$@\"}
+"
+         ;;
+       esac
+       $echo >> $output "\
+      \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
+      exit 1
+    fi
+  else
+    # The program doesn't exist.
+    \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
+    \$echo \"This script is just a wrapper for \$program.\" 1>&2
+    echo \"See the $PACKAGE documentation for more information.\" 1>&2
+    exit 1
+  fi
+fi\
+"
+       chmod +x $output
+      fi
+      exit 0
+      ;;
+    esac
+
+    # See if we need to build an old-fashioned archive.
+    for oldlib in $oldlibs; do
+
+      if test "$build_libtool_libs" = convenience; then
+       oldobjs="$libobjs_save"
+       addlibs="$convenience"
+       build_libtool_libs=no
+      else
+       if test "$build_libtool_libs" = module; then
+         oldobjs="$libobjs_save"
+         build_libtool_libs=no
+       else
+         oldobjs="$objs$old_deplibs $non_pic_objects"
+       fi
+       addlibs="$old_convenience"
+      fi
+
+      if test -n "$addlibs"; then
+       gentop="$output_objdir/${outputname}x"
+       $show "${rm}r $gentop"
+       $run ${rm}r "$gentop"
+       $show "$mkdir $gentop"
+       $run $mkdir "$gentop"
+       status=$?
+       if test $status -ne 0 && test ! -d "$gentop"; then
+         exit $status
+       fi
+       generated="$generated $gentop"
+
+       # Add in members from convenience archives.
+       for xlib in $addlibs; do
+         # Extract the objects.
+         case $xlib in
+         [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
+         *) xabs=`pwd`"/$xlib" ;;
+         esac
+         xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
+         xdir="$gentop/$xlib"
+
+         $show "${rm}r $xdir"
+         $run ${rm}r "$xdir"
+         $show "$mkdir $xdir"
+         $run $mkdir "$xdir"
+         status=$?
+         if test $status -ne 0 && test ! -d "$xdir"; then
+           exit $status
+         fi
+         $show "(cd $xdir && $AR x $xabs)"
+         $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
+
+         oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print | $NL2SP`
+       done
+      fi
+
+      # Do each command in the archive commands.
+      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+       eval cmds=\"$old_archive_from_new_cmds\"
+      else
+#      # Ensure that we have .o objects in place in case we decided
+#      # not to build a shared library, and have fallen back to building
+#      # static libs even though --disable-static was passed!
+#      for oldobj in $oldobjs; do
+#        if test ! -f $oldobj; then
+#          xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'`
+#          if test "X$xdir" = "X$oldobj"; then
+#            xdir="."
+#          else
+#            xdir="$xdir"
+#          fi
+#          baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'`
+#          obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
+#          $show "(cd $xdir && ${LN_S} $obj $baseobj)"
+#          $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $?
+#        fi
+#      done
+
+        eval cmds=\"$old_archive_cmds\"
+
+        if len=`expr "X$cmds" : ".*"` &&
+             test $len -le $max_cmd_len; then
+          :
+        else
+          # the command line is too long to link in one step, link in parts
+          $echo "using piecewise archive linking..."
+         save_RANLIB=$RANLIB
+         RANLIB=:
+          objlist=
+          concat_cmds=
+          save_oldobjs=$oldobjs
+          for obj in $save_oldobjs
+          do
+            oldobjs="$objlist $obj"
+            objlist="$objlist $obj"
+            eval test_cmds=\"$old_archive_cmds\"
+            if len=`expr "X$test_cmds" : ".*"` &&
+               test $len -le $max_cmd_len; then
+              :
+            else
+              # the above command should be used before it gets too long
+              oldobjs=$objlist
+             test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+              eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+              objlist=
+            fi
+          done
+         RANLIB=$save_RANLIB
+          oldobjs=$objlist
+          eval cmds=\"\$concat_cmds~$old_archive_cmds\"
+        fi
+      fi
+      IFS="${IFS=      }"; save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+       IFS="$save_ifs"
+       $show "$cmd"
+       $run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$generated"; then
+      $show "${rm}r$generated"
+      $run ${rm}r$generated
+    fi
+
+    # Now create the libtool archive.
+    case $output in
+    *.la)
+      old_library=
+      test "$build_old_libs" = yes && old_library="$libname.$libext"
+      $show "creating $output"
+
+      # Preserve any variables that may affect compiler behavior
+      for var in $variables_saved_for_relink; do
+       if eval test -z \"\${$var+set}\"; then
+         relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+       elif eval var_value=\$$var; test -z "$var_value"; then
+         relink_command="$var=; export $var; $relink_command"
+       else
+         var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+         relink_command="$var=\"$var_value\"; export $var; $relink_command"
+       fi
+      done
+      # Quote the link command for shipping.
+      relink_command="cd `pwd`; $SHELL $0 --mode=relink $libtool_args"
+      relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+
+      # Only create the output if not a dry run.
+      if test -z "$run"; then
+       for installed in no yes; do
+         if test "$installed" = yes; then
+           if test -z "$install_libdir"; then
+             break
+           fi
+           output="$output_objdir/$outputname"i
+           # Replace all uninstalled libtool libraries with the installed ones
+           newdependency_libs=
+           for deplib in $dependency_libs; do
+             case $deplib in
+             *.la)
+               name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+               eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+               if test -z "$libdir"; then
+                 $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+                 exit 1
+               fi
+               newdependency_libs="$newdependency_libs $libdir/$name"
+               ;;
+             *) newdependency_libs="$newdependency_libs $deplib" ;;
+             esac
+           done
+           dependency_libs="$newdependency_libs"
+           newdlfiles=
+           for lib in $dlfiles; do
+             name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+             eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+             if test -z "$libdir"; then
+               $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+               exit 1
+             fi
+             newdlfiles="$newdlfiles $libdir/$name"
+           done
+           dlfiles="$newdlfiles"
+           newdlprefiles=
+           for lib in $dlprefiles; do
+             name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+             eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+             if test -z "$libdir"; then
+               $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+               exit 1
+             fi
+             newdlprefiles="$newdlprefiles $libdir/$name"
+           done
+           dlprefiles="$newdlprefiles"
+         fi
+         $rm $output
+         # place dlname in correct position for cygwin
+         tdlname=$dlname
+         case $host,$output,$installed,$module,$dlname in
+           *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+         esac
+         $echo > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+         if test "$installed" = no && test $need_relink = yes; then
+           $echo >> $output "\
+relink_command=\"$relink_command\""
+         fi
+       done
+      fi
+
+      # Do a symbolic link so that the libtool archive can be found in
+      # LD_LIBRARY_PATH before the program is installed.
+      $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
+      $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
+      ;;
+    esac
+    exit 0
+    ;;
+
+  # libtool install mode
+  install)
+    modename="$modename: install"
+
+    # There may be an optional sh(1) argument at the beginning of
+    # install_prog (especially on Windows NT).
+    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+       # Allow the use of GNU shtool's install command.
+       $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
+      # Aesthetically quote it.
+      arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*)
+       arg="\"$arg\""
+       ;;
+      esac
+      install_prog="$arg "
+      arg="$1"
+      shift
+    else
+      install_prog=
+      arg="$nonopt"
+    fi
+
+    # The real first argument should be the name of the installation program.
+    # Aesthetically quote it.
+    arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+    case $arg in
+    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \      ]*|*]*)
+      arg="\"$arg\""
+      ;;
+    esac
+    install_prog="$install_prog$arg"
+
+    # We need to accept at least all the BSD install flags.
+    dest=
+    files=
+    opts=
+    prev=
+    install_type=
+    isdir=no
+    stripme=
+    for arg
+    do
+      if test -n "$dest"; then
+       files="$files $dest"
+       dest="$arg"
+       continue
+      fi
+
+      case $arg in
+      -d) isdir=yes ;;
+      -f) prev="-f" ;;
+      -g) prev="-g" ;;
+      -m) prev="-m" ;;
+      -o) prev="-o" ;;
+      -s)
+       stripme=" -s"
+       continue
+       ;;
+      -*) ;;
+
+      *)
+       # If the previous option needed an argument, then skip it.
+       if test -n "$prev"; then
+         prev=
+       else
+         dest="$arg"
+         continue
+       fi
+       ;;
+      esac
+
+      # Aesthetically quote the argument.
+      arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \    ]*|*]*)
+       arg="\"$arg\""
+       ;;
+      esac
+      install_prog="$install_prog $arg"
+    done
+
+    if test -z "$install_prog"; then
+      $echo "$modename: you must specify an install program" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prev' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    if test -z "$files"; then
+      if test -z "$dest"; then
+       $echo "$modename: no file or destination specified" 1>&2
+      else
+       $echo "$modename: you must specify a destination" 1>&2
+      fi
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    # Strip any trailing slash from the destination.
+    dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
+
+    # Check to see that the destination is a directory.
+    test -d "$dest" && isdir=yes
+    if test "$isdir" = yes; then
+      destdir="$dest"
+      destname=
+    else
+      destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
+      test "X$destdir" = "X$dest" && destdir=.
+      destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
+
+      # Not a directory, so check to see that there is only one file specified.
+      set dummy $files
+      if test $# -gt 2; then
+       $echo "$modename: \`$dest' is not a directory" 1>&2
+       $echo "$help" 1>&2
+       exit 1
+      fi
+    fi
+    case $destdir in
+    [\\/]* | [A-Za-z]:[\\/]*) ;;
+    *)
+      for file in $files; do
+       case $file in
+       *.lo) ;;
+       *)
+         $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
+         $echo "$help" 1>&2
+         exit 1
+         ;;
+       esac
+      done
+      ;;
+    esac
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    staticlibs=
+    future_libdirs=
+    current_libdirs=
+    for file in $files; do
+
+      # Do each installation.
+      case $file in
+      *.$libext)
+       # Do the static libraries later.
+       staticlibs="$staticlibs $file"
+       ;;
+
+      *.la)
+       # Check to see that this really is a libtool archive.
+       if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+       else
+         $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
+         $echo "$help" 1>&2
+         exit 1
+       fi
+
+       library_names=
+       old_library=
+       relink_command=
+       # If there is no directory component, then add one.
+       case $file in
+       */* | *\\*) . $file ;;
+       *) . ./$file ;;
+       esac
+
+       # Add the libdir to current_libdirs if it is the destination.
+       if test "X$destdir" = "X$libdir"; then
+         case "$current_libdirs " in
+         *" $libdir "*) ;;
+         *) current_libdirs="$current_libdirs $libdir" ;;
+         esac
+       else
+         # Note the libdir as a future libdir.
+         case "$future_libdirs " in
+         *" $libdir "*) ;;
+         *) future_libdirs="$future_libdirs $libdir" ;;
+         esac
+       fi
+
+       dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
+       test "X$dir" = "X$file/" && dir=
+       dir="$dir$objdir"
+
+       if test -n "$relink_command"; then
+         $echo "$modename: warning: relinking \`$file'" 1>&2
+         $show "$relink_command"
+         if $run eval "$relink_command"; then :
+         else
+           $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+           continue
+         fi
+       fi
+
+       # See the names of the shared library.
+       set dummy $library_names
+       if test -n "$2"; then
+         realname="$2"
+         shift
+         shift
+
+         srcname="$realname"
+         test -n "$relink_command" && srcname="$realname"T
+
+         # Install the shared library and build the symlinks.
+         $show "$install_prog $dir/$srcname $destdir/$realname"
+         $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
+         if test -n "$stripme" && test -n "$striplib"; then
+           $show "$striplib $destdir/$realname"
+           $run eval "$striplib $destdir/$realname" || exit $?
+         fi
+
+         if test $# -gt 0; then
+           # Delete the old symlinks, and create new ones.
+           for linkname
+           do
+             if test "$linkname" != "$realname"; then
+               $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+               $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+             fi
+           done
+         fi
+
+         # Do each command in the postinstall commands.
+         lib="$destdir/$realname"
+         eval cmds=\"$postinstall_cmds\"
+         IFS="${IFS=   }"; save_ifs="$IFS"; IFS='~'
+         for cmd in $cmds; do
+           IFS="$save_ifs"
+           $show "$cmd"
+           $run eval "$cmd" || exit $?
+         done
+         IFS="$save_ifs"
+       fi
+
+       # Install the pseudo-library for information purposes.
+       name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+       instname="$dir/$name"i
+       $show "$install_prog $instname $destdir/$name"
+       $run eval "$install_prog $instname $destdir/$name" || exit $?
+
+       # Maybe install the static library, too.
+       test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+       ;;
+
+      *.lo)
+       # Install (i.e. copy) a libtool object.
+
+       # Figure out destination file name, if it wasn't already specified.
+       if test -n "$destname"; then
+         destfile="$destdir/$destname"
+       else
+         destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+         destfile="$destdir/$destfile"
+       fi
+
+       # Deduce the name of the destination old-style object file.
+       case $destfile in
+       *.lo)
+         staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
+         ;;
+       *.$objext)
+         staticdest="$destfile"
+         destfile=
+         ;;
+       *)
+         $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
+         $echo "$help" 1>&2
+         exit 1
+         ;;
+       esac
+
+       # Install the libtool object if requested.
+       if test -n "$destfile"; then
+         $show "$install_prog $file $destfile"
+         $run eval "$install_prog $file $destfile" || exit $?
+       fi
+
+       # Install the old object if enabled.
+       if test "$build_old_libs" = yes; then
+         # Deduce the name of the old-style object file.
+         staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
+
+         $show "$install_prog $staticobj $staticdest"
+         $run eval "$install_prog \$staticobj \$staticdest" || exit $?
+       fi
+       exit 0
+       ;;
+
+      *)
+       # Figure out destination file name, if it wasn't already specified.
+       if test -n "$destname"; then
+         destfile="$destdir/$destname"
+       else
+         destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+         destfile="$destdir/$destfile"
+       fi
+
+       # Do a test to see if this is really a libtool program.
+       if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+         notinst_deplibs=
+         relink_command=
+
+         # If there is no directory component, then add one.
+         case $file in
+         */* | *\\*) . $file ;;
+         *) . ./$file ;;
+         esac
+
+         # Check the variables that should have been set.
+         if test -z "$notinst_deplibs"; then
+           $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
+           exit 1
+         fi
+
+         finalize=yes
+         for lib in $notinst_deplibs; do
+           # Check to see that each library is installed.
+           libdir=
+           if test -f "$lib"; then
+             # If there is no directory component, then add one.
+             case $lib in
+             */* | *\\*) . $lib ;;
+             *) . ./$lib ;;
+             esac
+           fi
+           libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+           if test -n "$libdir" && test ! -f "$libfile"; then
+             $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+             finalize=no
+           fi
+         done
+
+         relink_command=
+         # If there is no directory component, then add one.
+         case $file in
+         */* | *\\*) . $file ;;
+         *) . ./$file ;;
+         esac
+
+         outputname=
+         if test "$fast_install" = no && test -n "$relink_command"; then
+           if test "$finalize" = yes && test -z "$run"; then
+             tmpdir="/tmp"
+             test -n "$TMPDIR" && tmpdir="$TMPDIR"
+             tmpdir="$tmpdir/libtool-$$"
+             if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then :
+             else
+               $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
+               continue
+             fi
+             file=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+             outputname="$tmpdir/$file"
+             # Replace the output file specification.
+             relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+
+             $show "$relink_command"
+             if $run eval "$relink_command"; then :
+             else
+               $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+               ${rm}r "$tmpdir"
+               continue
+             fi
+             file="$outputname"
+           else
+             $echo "$modename: warning: cannot relink \`$file'" 1>&2
+           fi
+         else
+           # Install the binary that we compiled earlier.
+           file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+         fi
+       fi
+
+
+       # remove .exe since cygwin /usr/bin/install will append another
+       # one anyways
+       case $install_prog,$host in
+       */usr/bin/install*,*cygwin*)
+         case $file:$destfile in
+         *.exe:*.exe)
+           # this is ok
+           ;;
+         *.exe:*)
+           destfile=$destfile.exe
+           ;;
+         *:*.exe)
+           destfile=`echo $destfile | sed -e 's,.exe$,,'`
+           ;;
+         esac
+         ;;
+       esac
+
+       $show "$install_prog$stripme $file $destfile"
+       $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
+       test -n "$outputname" && ${rm}r "$tmpdir"
+       ;;
+      esac
+    done
+
+    for file in $staticlibs; do
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+
+      # Set up the ranlib parameters.
+      oldlib="$destdir/$name"
+
+      $show "$install_prog $file $oldlib"
+      $run eval "$install_prog \$file \$oldlib" || exit $?
+
+      if test -n "$stripme" && test -n "$striplib"; then
+       $show "$old_striplib $oldlib"
+       $run eval "$old_striplib $oldlib" || exit $?
+      fi
+
+      # Do each command in the postinstall commands.
+      eval cmds=\"$old_postinstall_cmds\"
+      IFS="${IFS=      }"; save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+       IFS="$save_ifs"
+       $show "$cmd"
+       $run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$future_libdirs"; then
+      $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
+    fi
+
+    if test -n "$current_libdirs"; then
+      # Maybe just do a dry run.
+      test -n "$run" && current_libdirs=" -n$current_libdirs"
+      exec_cmd='$SHELL $0 --finish$current_libdirs'
+    else
+      exit 0
+    fi
+    ;;
+
+  # libtool finish mode
+  finish)
+    modename="$modename: finish"
+    libdirs="$nonopt"
+    admincmds=
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      for dir
+      do
+       libdirs="$libdirs $dir"
+      done
+
+      for libdir in $libdirs; do
+       if test -n "$finish_cmds"; then
+         # Do each command in the finish commands.
+         eval cmds=\"$finish_cmds\"
+         IFS="${IFS=   }"; save_ifs="$IFS"; IFS='~'
+         for cmd in $cmds; do
+           IFS="$save_ifs"
+           $show "$cmd"
+           $run eval "$cmd" || admincmds="$admincmds
+       $cmd"
+         done
+         IFS="$save_ifs"
+       fi
+       if test -n "$finish_eval"; then
+         # Do the single finish_eval.
+         eval cmds=\"$finish_eval\"
+         $run eval "$cmds" || admincmds="$admincmds
+       $cmds"
+       fi
+      done
+    fi
+
+    # Exit here if they wanted silent mode.
+    test "$show" = ":" && exit 0
+
+    echo "----------------------------------------------------------------------"
+    echo "Libraries have been installed in:"
+    for libdir in $libdirs; do
+      echo "   $libdir"
+    done
+    echo
+    echo "If you ever happen to want to link against installed libraries"
+    echo "in a given directory, LIBDIR, you must either use libtool, and"
+    echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+    echo "flag during linking and do at least one of the following:"
+    if test -n "$shlibpath_var"; then
+      echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
+      echo "     during execution"
+    fi
+    if test -n "$runpath_var"; then
+      echo "   - add LIBDIR to the \`$runpath_var' environment variable"
+      echo "     during linking"
+    fi
+    if test -n "$hardcode_libdir_flag_spec"; then
+      libdir=LIBDIR
+      eval flag=\"$hardcode_libdir_flag_spec\"
+
+      echo "   - use the \`$flag' linker flag"
+    fi
+    if test -n "$admincmds"; then
+      echo "   - have your system administrator run these commands:$admincmds"
+    fi
+    if test -f /etc/ld.so.conf; then
+      echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+    fi
+    echo
+    echo "See any operating system documentation about shared libraries for"
+    echo "more information, such as the ld(1) and ld.so(8) manual pages."
+    echo "----------------------------------------------------------------------"
+    exit 0
+    ;;
+
+  # libtool execute mode
+  execute)
+    modename="$modename: execute"
+
+    # The first argument is the command name.
+    cmd="$nonopt"
+    if test -z "$cmd"; then
+      $echo "$modename: you must specify a COMMAND" 1>&2
+      $echo "$help"
+      exit 1
+    fi
+
+    # Handle -dlopen flags immediately.
+    for file in $execute_dlfiles; do
+      if test ! -f "$file"; then
+       $echo "$modename: \`$file' is not a file" 1>&2
+       $echo "$help" 1>&2
+       exit 1
+      fi
+
+      dir=
+      case $file in
+      *.la)
+       # Check to see that this really is a libtool archive.
+       if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+       else
+         $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+         $echo "$help" 1>&2
+         exit 1
+       fi
+
+       # Read the libtool library.
+       dlname=
+       library_names=
+
+       # If there is no directory component, then add one.
+       case $file in
+       */* | *\\*) . $file ;;
+       *) . ./$file ;;
+       esac
+
+       # Skip this library if it cannot be dlopened.
+       if test -z "$dlname"; then
+         # Warn if it was a shared library.
+         test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
+         continue
+       fi
+
+       dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+       test "X$dir" = "X$file" && dir=.
+
+       if test -f "$dir/$objdir/$dlname"; then
+         dir="$dir/$objdir"
+       else
+         $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+         exit 1
+       fi
+       ;;
+
+      *.lo)
+       # Just add the directory containing the .lo file.
+       dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+       test "X$dir" = "X$file" && dir=.
+       ;;
+
+      *)
+       $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
+       continue
+       ;;
+      esac
+
+      # Get the absolute pathname.
+      absdir=`cd "$dir" && pwd`
+      test -n "$absdir" && dir="$absdir"
+
+      # Now add the directory to shlibpath_var.
+      if eval "test -z \"\$$shlibpath_var\""; then
+       eval "$shlibpath_var=\"\$dir\""
+      else
+       eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+      fi
+    done
+
+    # This variable tells wrapper scripts just to set shlibpath_var
+    # rather than running their programs.
+    libtool_execute_magic="$magic"
+
+    # Check if any of the arguments is a wrapper script.
+    args=
+    for file
+    do
+      case $file in
+      -*) ;;
+      *)
+       # Do a test to see if this is really a libtool program.
+       if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+         # If there is no directory component, then add one.
+         case $file in
+         */* | *\\*) . $file ;;
+         *) . ./$file ;;
+         esac
+
+         # Transform arg to wrapped name.
+         file="$progdir/$program"
+       fi
+       ;;
+      esac
+      # Quote arguments (to preserve shell metacharacters).
+      file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
+      args="$args \"$file\""
+    done
+
+    if test -z "$run"; then
+      if test -n "$shlibpath_var"; then
+       # Export the shlibpath_var.
+       eval "export $shlibpath_var"
+      fi
+
+      # Restore saved enviroment variables
+      if test "${save_LC_ALL+set}" = set; then
+       LC_ALL="$save_LC_ALL"; export LC_ALL
+      fi
+      if test "${save_LANG+set}" = set; then
+       LANG="$save_LANG"; export LANG
+      fi
+
+      # Now prepare to actually exec the command.
+      exec_cmd="\$cmd$args"
+    else
+      # Display what would be done.
+      if test -n "$shlibpath_var"; then
+       eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
+       $echo "export $shlibpath_var"
+      fi
+      $echo "$cmd$args"
+      exit 0
+    fi
+    ;;
+
+  # libtool clean and uninstall mode
+  clean | uninstall)
+    modename="$modename: $mode"
+    rm="$nonopt"
+    files=
+    rmforce=
+    exit_status=0
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    for arg
+    do
+      case $arg in
+      -f) rm="$rm $arg"; rmforce=yes ;;
+      -*) rm="$rm $arg" ;;
+      *) files="$files $arg" ;;
+      esac
+    done
+
+    if test -z "$rm"; then
+      $echo "$modename: you must specify an RM program" 1>&2
+      $echo "$help" 1>&2
+      exit 1
+    fi
+
+    rmdirs=
+
+    for file in $files; do
+      dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+      if test "X$dir" = "X$file"; then
+       dir=.
+       objdir="$objdir"
+      else
+       objdir="$dir/$objdir"
+      fi
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+      test $mode = uninstall && objdir="$dir"
+
+      # Remember objdir for removal later, being careful to avoid duplicates
+      if test $mode = clean; then
+       case " $rmdirs " in
+         *" $objdir "*) ;;
+         *) rmdirs="$rmdirs $objdir" ;;
+       esac
+      fi
+
+      # Don't error if the file doesn't exist and rm -f was used.
+      if (test -L "$file") >/dev/null 2>&1 \
+        || (test -h "$file") >/dev/null 2>&1 \
+       || test -f "$file"; then
+        :
+      elif test -d "$file"; then
+        exit_status=1
+       continue
+      elif test "$rmforce" = yes; then
+        continue
+      fi
+
+      rmfiles="$file"
+
+      case $name in
+      *.la)
+       # Possibly a libtool archive, so verify it.
+       if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+         . $dir/$name
+
+         # Delete the libtool libraries and symlinks.
+         for n in $library_names; do
+           rmfiles="$rmfiles $objdir/$n"
+         done
+         test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+         test $mode = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+
+         if test $mode = uninstall; then
+           if test -n "$library_names"; then
+             # Do each command in the postuninstall commands.
+             eval cmds=\"$postuninstall_cmds\"
+             IFS="${IFS=       }"; save_ifs="$IFS"; IFS='~'
+             for cmd in $cmds; do
+               IFS="$save_ifs"
+               $show "$cmd"
+               $run eval "$cmd"
+               if test $? != 0 && test "$rmforce" != yes; then
+                 exit_status=1
+               fi
+             done
+             IFS="$save_ifs"
+           fi
+
+           if test -n "$old_library"; then
+             # Do each command in the old_postuninstall commands.
+             eval cmds=\"$old_postuninstall_cmds\"
+             IFS="${IFS=       }"; save_ifs="$IFS"; IFS='~'
+             for cmd in $cmds; do
+               IFS="$save_ifs"
+               $show "$cmd"
+               $run eval "$cmd"
+               if test $? != 0 && test "$rmforce" != yes; then
+                 exit_status=1
+               fi
+             done
+             IFS="$save_ifs"
+           fi
+           # FIXME: should reinstall the best remaining shared library.
+         fi
+       fi
+       ;;
+
+      *.lo)
+       # Possibly a libtool object, so verify it.
+       if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+
+          # Read the .lo file
+          . $dir/$name
+
+         # Add PIC object to the list of files to remove.
+          if test -n "$pic_object" \
+             && test "$pic_object" != none; then
+           rmfiles="$rmfiles $dir/$pic_object"
+          fi
+
+         # Add non-PIC object to the list of files to remove.
+          if test -n "$non_pic_object" \
+             && test "$non_pic_object" != none; then
+           rmfiles="$rmfiles $dir/$non_pic_object"
+          fi
+       fi
+       ;;
+
+      *)
+       # Do a test to see if this is a libtool program.
+       if test $mode = clean &&
+          (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+         relink_command=
+         . $dir/$file
+
+         rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+         if test "$fast_install" = yes && test -n "$relink_command"; then
+           rmfiles="$rmfiles $objdir/lt-$name"
+         fi
+       fi
+       ;;
+      esac
+      $show "$rm $rmfiles"
+      $run $rm $rmfiles || exit_status=1
+    done
+
+    # Try to remove the ${objdir}s in the directories where we deleted files
+    for dir in $rmdirs; do
+      if test -d "$dir"; then
+       $show "rmdir $dir"
+       $run rmdir $dir >/dev/null 2>&1
+      fi
+    done
+
+    exit $exit_status
+    ;;
+
+  "")
+    $echo "$modename: you must specify a MODE" 1>&2
+    $echo "$generic_help" 1>&2
+    exit 1
+    ;;
+  esac
+
+  if test -z "$exec_cmd"; then
+    $echo "$modename: invalid operation mode \`$mode'" 1>&2
+    $echo "$generic_help" 1>&2
+    exit 1
+  fi
+fi # test -z "$show_help"
+
+if test -n "$exec_cmd"; then
+  eval exec $exec_cmd
+  exit 1
+fi
+
+# We need to display help for each of the modes.
+case $mode in
+"") $echo \
+"Usage: $modename [OPTION]... [MODE-ARG]...
+
+Provide generalized library-building support services.
+
+    --config          show all configuration variables
+    --debug           enable verbose shell tracing
+-n, --dry-run         display commands without modifying any files
+    --features        display basic configuration information and exit
+    --finish          same as \`--mode=finish'
+    --help            display this help message and exit
+    --mode=MODE       use operation mode MODE [default=inferred from MODE-ARGS]
+    --quiet           same as \`--silent'
+    --silent          don't print informational messages
+    --tag=TAG         use configuration variables from tag TAG
+    --version         print version information
+
+MODE must be one of the following:
+
+      clean           remove files from the build directory
+      compile         compile a source file into a libtool object
+      execute         automatically set library path, then run a program
+      finish          complete the installation of libtool libraries
+      install         install libraries or executables
+      link            create a library or an executable
+      uninstall       remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE.  Try \`$modename --help --mode=MODE' for
+a more detailed description of MODE."
+  exit 0
+  ;;
+
+clean)
+  $echo \
+"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+compile)
+  $echo \
+"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
+  -prefer-pic       try to building PIC objects only
+  -prefer-non-pic   try to building non-PIC objects only
+  -static           always build a \`.o' file suitable for static linking
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+  ;;
+
+execute)
+  $echo \
+"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+  -dlopen FILE      add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+  ;;
+
+finish)
+  $echo \
+"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges.  Use
+the \`--dry-run' option if you just want to see what would be executed."
+  ;;
+
+install)
+  $echo \
+"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command.  The first component should be
+either the \`install' or \`cp' program.
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+  ;;
+
+link)
+  $echo \
+"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+  -all-static       do not do any dynamic linking at all
+  -avoid-version    do not add a version suffix if possible
+  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
+  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+  -export-symbols SYMFILE
+                   try to export only the symbols listed in SYMFILE
+  -export-symbols-regex REGEX
+                   try to export only the symbols matching REGEX
+  -LLIBDIR          search LIBDIR for required installed libraries
+  -lNAME            OUTPUT-FILE requires the installed library libNAME
+  -module           build a library that can dlopened
+  -no-fast-install  disable the fast-install mode
+  -no-install       link a not-installable executable
+  -no-undefined     declare that a library does not refer to external symbols
+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
+  -objectlist FILE  Use a list of object files found in FILE to specify objects
+  -release RELEASE  specify package release information
+  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
+  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
+  -static           do not do any dynamic linking of libtool libraries
+  -version-info CURRENT[:REVISION[:AGE]]
+                   specify library version info [each variable defaults to 0]
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename.  Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+  ;;
+
+uninstall)
+  $echo \
+"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+*)
+  $echo "$modename: invalid operation mode \`$mode'" 1>&2
+  $echo "$help" 1>&2
+  exit 1
+  ;;
+esac
+
+echo
+$echo "Try \`$modename --help' for more information about other modes."
+
+exit 0
+
+# The TAGs below are defined such that we never get into a situation
+# in which we disable both kinds of libraries.  Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them.  This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration.  But we'll never go from static-only to shared-only.
+
+### BEGIN LIBTOOL TAG CONFIG: disable-shared
+build_libtool_libs=no
+build_old_libs=yes
+### END LIBTOOL TAG CONFIG: disable-shared
+
+### BEGIN LIBTOOL TAG CONFIG: disable-static
+build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
diff --git a/file/magic/.cvsignore b/file/magic/.cvsignore
deleted file mode 100644 (file)
index eee4514..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-Makefile
-Makefile.in
-magic
-*.mgc
index 2b5ca8f..914d449 100644 (file)
@@ -2,15 +2,6 @@
 #------------------------------------------------------------------------------
 # Localstuff:  file(1) magic for locally observed files
 #
-# Id: Localstuff,v 1.3 1995/01/21 21:09:00 christos Exp 
+# $Id: Localstuff,v 1.4 2003/03/23 04:17:27 christos Exp $
 # Add any locally observed files here.  Remember:
 # text if readable, executable if runnable binary, data if unreadable.
-
-# XXX promoted from tex so that *.tfm is not mis-identified as mc68k file.
-# There is no way to detect TeX Font Metric (*.tfm) files without
-# breaking them apart and reading the data.  The following patterns
-# match most *.tfm files generated by METAFONT or afm2tfm.
-2      string          \000\021        TeX font metric data
->33    string          >\0             (%s)
-2      string          \000\022        TeX font metric data
->33    string          >\0             (%s)
index a1be613..f7acbcf 100644 (file)
 0      string          ARP.            The Holy Noise Module sound file
 0      string          BeEp\0          JamCracker Module sound file
 0      string          COSO\0          Hippel-COSO Module sound file
-26     string          V.3             Brian Postma's Soundmon Module sound file v3
-26     string          BPSM            Brian Postma's Soundmon Module sound file v3
-26     string          V.2             Brian Postma's Soundmon Module sound file v2
+# Too simple (short, pure ASCII, deep), MPi
+#26    string          V.3             Brian Postma's Soundmon Module sound file v3
+#26    string          BPSM            Brian Postma's Soundmon Module sound file v3
+#26    string          V.2             Brian Postma's Soundmon Module sound file v2
 
+# The following are from: "Stefan A. Haubenthal" <polluks@web.de>
+0      beshort         0x0f00          AmigaOS bitmap font
+0      beshort         0x0f03          AmigaOS outline font
+0      belong          0x80001001      AmigaOS outline tag
+0      string          ##\ version     catalog translation
+
+0      string          FORM            IFF data
+>8     string          CTLG            \b, CTLG message catalog
+>8     string          PREF            \b, PREF preferences
+
+0      string          Rar!            RAR archive data,
+>44    byte            x               v%0x,
+>35    byte            0               os: MS-DOS
+>35    byte            1               os: OS/2
+>35    byte            2               os: Win32
+>35    byte            3               os: Unix
+
+0      belong          0x000003fa      AmigaOS shared library
+
+# Amiga disk types
+# 
+0      string          RDSK            Rigid Disk Block
+>160   string          x               on %.24s
+0      string          DOS\0           Amiga DOS disk
+0      string          DOS\1           Amiga FFS disk
+0      string          DOS\2           Amiga Inter DOS disk
+0      string          DOS\3           Amiga Inter FFS disk
+0      string          DOS\4           Amiga Fastdir DOS disk
+0      string          DOS\5           Amiga Fastdir FFS disk
+0      string          KICK            Kickstart disk
index 56f25cf..815a208 100644 (file)
 #>3     byte&0x03       1               \b, Emphasis 5
 #>3     byte&0x03       3               \b, Emphasis c
 
+#From: Johan Gade <jgade@diku.dk>
+
+# MPEG-4 Advanced Audio Coding (AAC) file (perhaps also MPEG-2 ACC?)
+16     string          M4A             MPEG-4 Advanced Audio Coding file (AAC)
+
+
 # FLI animation format
 4      leshort         0xAF11                  FLI file
 >6     leshort         x                       - %d frames,
 # \003.  Most of them start with non-null values at hex offset 0x34 or so.
 #0     string  \3\0\0\0\0\0\0\0\0\0\0\0        DL version 3
 
-# SGI and Apple formats
+# SGI formats
 0      string          MOVI            Silicon Graphics movie file
+
+# Apple Quicktime: Scan for all known top-level QT atom markers
 4      string          moov            Apple QuickTime movie file (moov)
 4      string          mdat            Apple QuickTime movie file (mdat)
+4      string          ftyp            Apple QuickTime movie file (ftyp)
+4      string          free            Apple QuickTime movie file (free)
+4      string          junk            Apple QuickTime movie file (junk)
+4      string          pnot            Apple QuickTime movie file (pnot)
+4      string          skip            Apple QuickTime movie file (skip)
+4      string          wide            Apple QuickTime movie file (wide)
+4      string          pict            Apple QuickTime movie file (pict)
 
 # iso 13818 transport stream
 #
 0      string                  \x8aMNG         MNG video data,
 >4     belong                  !0x0d0a1a0a     CORRUPTED,
 >4     belong                  0x0d0a1a0a
+>>16    belong x                               %ld x
+>>20    belong x                               %ld
+
+# JNG Video Format, <URL:http://www.libpng.org/pub/mng/spec/>
+0      string                  \x8bJNG         JNG video data,
+>4     belong                  !0x0d0a1a0a     CORRUPTED,
+>4     belong                  0x0d0a1a0a
+>>16    belong x                               %ld x
+>>20    belong x                               %ld
+
+# Vivo video (Wolfram Kleff)
+3      string          \x0D\x0AVersion:Vivo    Vivo video data
+
+# VRML (Virtual Reality Modelling Language)
+0       string/b        #VRML\ V1.0\ ascii     VRML 1 file
+0      string/b        #VRML\ V2.0\ utf8       ISO/IEC 14772 VRML 97 file
+
+#---------------------------------------------------------------------------
+# HVQM4: compressed movie format designed by Hudson for Nintendo GameCube
+# From Mark Sheppard <msheppard@climax.co.uk>, 2002-10-03
+#
+0      string          HVQM4           %s
+>6     string          >\0             v%s
+>0     byte            x               GameCube movie,
+>0x34  ubeshort        x               %d x
+>0x36  ubeshort        x               %d,
+>0x26  ubeshort        x               %dµs,
+>0x42  ubeshort        0               no audio
+>0x42  ubeshort        >0              %dHz audio
index c2b372b..659043c 100644 (file)
 >12    belong  &0x02000000     UseFasterCompression,
 >16    belong  x               version %d
 
+0      string  package4        Newton package,
+>8     byte    8               NOS 1.x,
+>8     byte    9               NOS 2.x,
+>12    belong  &0x80000000     AutoRemove,
+>12    belong  &0x40000000     CopyProtect,
+>12    belong  &0x10000000     NoCompression,
+
 # The following entries for the Apple II are for files that have
 # been transferred as raw binary data from an Apple, without having
 # been encapsulated by any of the above archivers.
index 133e50c..d27e39b 100644 (file)
 0      string          !<arch>\ndebian
 >8     string          debian-split    part of multipart Debian package
 >8     string          debian-binary   Debian binary package
->68    string          >\n             (format %s)
->136   ledate          x               created: %s
+>68    string          >\0             (format %s)
+>81    string          bz2             \b, uses bzip2 compression
+>84    string          gz              \b, uses gzip compression
+#>136  ledate          x               created: %s
 
 # other archives
 0      long            0177555         very old archive
 
 # Microsoft cabinets 
 # by David Necas (Yeti) <yeti@physics.muni.cz>
-0      string  MSCF\0\0\0\0    Microsoft cabinet file data,
->25    byte    x               v%d
->24    byte    x               \b.%d
+#0     string  MSCF\0\0\0\0    Microsoft cabinet file data,
+#>25   byte    x               v%d
+#>24   byte    x               \b.%d
+# MPi: All CABs have version 1.3, so this is pointless.
+# Better magic in debian-additions.
 
 # GTKtalog catalogs 
 # by David Necas (Yeti) <yeti@physics.muni.cz>
 0       string          PAR\0  PARity archive data
 >48    leshort         =0      - Index file
 >48    leshort         >0      - file number %d
+
+# Felix von Leitner <felix-file@fefe.de>
+0      string  d8:announce     BitTorrent file
+
+# Atari MSA archive - Teemu Hukkanen <tjhukkan@iki.fi>
+0       beshort 0x0e0f          Atari MSA archive data
+>2      beshort x              \b, %d sectors per track
+>4      beshort 0              \b, 1 sided
+>4      beshort 1              \b, 2 sided
+>6      beshort x              \b, starting track: %d
+>8      beshort x              \b, ending track: %d
+
+# Alternate ZIP string (amc@arwen.cs.berkeley.edu)
+0      string  PK00PK\003\004  Zip archive data
+
+# ACE archive (from http://www.wotsit.org/download.asp?f=ace)
+# by Stefan `Sec` Zehl <sec@42.org>
+7      string          **ACE**         ACE compressed archive
+>15    byte    >0              version %d
+>16    byte    =0x00           \b, from MS-DOS
+>16    byte    =0x01           \b, from OS/2
+>16    byte    =0x02           \b, from Win/32
+>16    byte    =0x03           \b, from Unix
+>16    byte    =0x04           \b, from MacOS
+>16    byte    =0x05           \b, from WinNT
+>16    byte    =0x06           \b, from Primos
+>16    byte    =0x07           \b, from AppleGS
+>16    byte    =0x08           \b, from Atari
+>16    byte    =0x09           \b, from Vax/VMS
+>16    byte    =0x0A           \b, from Amiga
+>16    byte    =0x0B           \b, from Next
+>14    byte    x               \b, version %d to extract
+>5     leshort &0x0080         \b, multiple volumes,
+>>17   byte    x               \b (part %d),
+>5     leshort &0x0002         \b, contains comment
+>5     leshort &0x0200         \b, sfx
+>5     leshort &0x0400         \b, small dictionary
+>5     leshort &0x0800         \b, multi-volume
+>5     leshort &0x1000         \b, contains AV-String
+>>30   string\x16*UNREGISTERED\x20VERSION*     (unregistered)
+>5     leshort &0x2000         \b, with recovery record
+>5     leshort &0x4000         \b, locked
+>5     leshort &0x8000         \b, solid
+# Date in MS-DOS format (whatever that is)
+#>18   lelong  x               Created on
index 9507c12..70db774 100644 (file)
@@ -8,14 +8,14 @@
 
 # Sun/NeXT audio data
 0      string          .snd            Sun/NeXT audio data:
->12    belong          1               8-bit ISDN u-law,
+>12    belong          1               8-bit ISDN mu-law,
 >12    belong          2               8-bit linear PCM [REF-PCM],
 >12    belong          3               16-bit linear PCM,
 >12    belong          4               24-bit linear PCM,
 >12    belong          5               32-bit linear PCM,
 >12    belong          6               32-bit IEEE floating point,
 >12    belong          7               64-bit IEEE floating point,
->12    belong          23              8-bit ISDN u-law compressed (CCITT G.721 ADPCM voice data encoding),
+>12    belong          23              8-bit ISDN mu-law compressed (CCITT G.721 ADPCM voice data encoding),
 >12    belong          24              compressed (8-bit G.722 ADPCM)
 >12    belong          25              compressed (3-bit G.723 ADPCM),
 >12    belong          26              compressed (5-bit G.723 ADPCM),
 # DEC systems (e.g. DECstation 5000) use a variant of the Sun/NeXT format
 # that uses little-endian encoding and has a different magic number
 0      lelong          0x0064732E      DEC audio data:
->12    lelong          1               8-bit ISDN u-law,
+>12    lelong          1               8-bit ISDN mu-law,
 >12    lelong          2               8-bit linear PCM [REF-PCM],
 >12    lelong          3               16-bit linear PCM,
 >12    lelong          4               24-bit linear PCM,
 >12    lelong          5               32-bit linear PCM,
 >12    lelong          6               32-bit IEEE floating point,
 >12    lelong          7               64-bit IEEE floating point,
->12    lelong          23              8-bit ISDN u-law compressed (CCITT G.721 ADPCM voice data encoding),
+>12    lelong          23              8-bit ISDN mu-law compressed (CCITT G.721 ADPCM voice data encoding),
 >20    lelong          1               mono,
 >20    lelong          2               stereo,
 >20    lelong          4               quad,
 
 # Creative Labs AUDIO stuff
 0      string  MThd                    Standard MIDI data
->9     byte    >0                      (format %d)
->11    byte    >1                      using %d tracks
+>8     beshort x                       (format %d)
+>10    beshort x                       using %d track
+>10    beshort         >1              \bs
+>12    beshort&0x7fff  x               at 1/%d
+>12    beshort&0x8000  >0              SMPTE
+
 0      string  CTMF                    Creative Music (CMF) data
 0      string  SBI                     SoundBlaster instrument data
 0      string  Creative\ Voice\ File   Creative Labs voice data
 
 # MTM/669/FAR/S3M/ULT/XM format checking [Aaron Eppert, aeppert@dialin.ind.net]
 # Oct 31, 1995
-0      string          MTM             MultiTracker Module sound file
+# fixed by <doj@cubic.org> 2003-06-24
+# Too short...
+#0     string          MTM             MultiTracker Module sound file
 #0     string          if              Composer 669 Module sound data
-0      string          FAR             Module sound data
+#0     string          JN              Composer 669 Module sound data (extended format)
 0      string          MAS_U           ULT(imate) Module sound data
+
+#0     string          FAR             Module sound data
+#>4    string          >\15            Title: "%s"
+
 0x2c   string          SCRM            ScreamTracker III Module sound data
-0      string          Extended Module Extended Module sound data
+>0     string          >\0             Title: "%s"
 
 # Gravis UltraSound patches
 # From <ache@nagual.ru>
 #
 # Taken from loader code from mikmod version 2.14
 # by Steve McIntyre (stevem@chiark.greenend.org.uk)
-0      string  JN              extended 669 module data
+# <doj@cubic.org> added title printing on 2003-06-24
 0      string  MAS_UTrack_V00
 >14    string  >/0             ultratracker V1.%.1s module sound data
+
 0      string  UN05            MikMod UNI format module sound data
+
 0      string  Extended\ Module: Fasttracker II module sound data
-21     string  !SCREAM!        Screamtracker 2 module sound data
+>17    string  >\0             Title: "%s"
+
+21     string/c        !SCREAM!        Screamtracker 2 module sound data
+21     string  BMOD2STM        Screamtracker 2 module sound data
 1080   string  M.K.            4-channel Protracker module sound data
+>0     string  >\0             Title: "%s"
 1080   string  M!K!            4-channel Protracker module sound data
+>0     string  >\0             Title: "%s"
 1080   string  FLT4            4-channel Startracker module sound data
+>0     string  >\0             Title: "%s"
+1080   string  FLT8            8-channel Startracker module sound data
+>0     string  >\0             Title: "%s"
 1080   string  4CHN            4-channel Fasttracker module sound data
+>0     string  >\0             Title: "%s"
 1080   string  6CHN            6-channel Fasttracker module sound data
+>0     string  >\0             Title: "%s"
 1080   string  8CHN            8-channel Fasttracker module sound data
-1080   string  CD81            8-channel Oktalyzer module sound data
+>0     string  >\0             Title: "%s"
+1080   string  CD81            8-channel Octalyser module sound data
+>0     string  >\0             Title: "%s"
 1080   string  OKTA            8-channel Oktalyzer module sound data
+>0     string  >\0             Title: "%s"
 # Not good enough.
 #1082  string  CH
 #>1080 string  >/0             %.2s-channel Fasttracker "oktalyzer" module sound data
 1080   string  16CN            16-channel Taketracker module sound data
+>0     string  >\0             Title: "%s"
 1080   string  32CN            32-channel Taketracker module sound data
+>0     string  >\0             Title: "%s"
 
 # TOC sound files -Trevor Johnson <trevor@jpj.net>
 #
 0       string          TOC             TOC sound file
 
 # sidfiles <pooka@iki.fi>
+# added name,author,(c) and new RSID type by <doj@cubic.org> 2003-06-24
 0      string          SIDPLAY\ INFOFILE       Sidplay info file
+
 0      string          PSID                    PlaySID v2.2+ (AMIGA) sidtune
 >4     beshort         >0                      w/ header v%d,
 >14    beshort         =1                      single song,
 >14    beshort         >1                      %d songs,
 >16    beshort         >0                      default song: %d
+>0x16  string          >\0                     name: "%s"
+>0x36  string          >\0                     author: "%s"
+>0x56  string          >\0                     copyright: "%s"
+
+0      string          RSID                    RSID sidtune PlaySID compatible
+>4     beshort         >0                      w/ header v%d,
+>14    beshort         =1                      single song,
+>14    beshort         >1                      %d songs,
+>16    beshort         >0                      default song: %d
+>0x16  string          >\0                     name: "%s"
+>0x36  string          >\0                     author: "%s"
+>0x56  string          >\0                     copyright: "%s"
 
 # IRCAM <mpruett@sgi.com>
 # VAX and MIPS files are little-endian; Sun and NeXT are big-endian
 # Sample Vision <mpruett@sgi.com>
 0      string          SOUND\ SAMPLE\ DATA\    Sample Vision file
 
-# Audio Visual Research <mpruett@sgi.com>
-0      string          2BIT                    Audio Visual Research file
+# Audio Visual Research <tonigonenstein@users.sourceforge.net>
+0      string          2BIT                    Audio Visual Research file,
+>12    beshort         =0                      mono,
+>12    beshort         =-1                     stereo,
+>14    beshort         x                       %d bits
+>16    beshort         =0                      unsigned,
+>16    beshort         =-1                     signed,
+>22    belong&0x00ffffff       x               %d Hz,
+>18    beshort         =0                      no loop,
+>18    beshort         =-1                     loop,
+>21    ubyte           <=127                   note %d,
+>22    byte            =0                      replay 5.485 KHz
+>22    byte            =1                      replay 8.084 KHz
+>22    byte            =2                      replay 10.971 Khz
+>22    byte            =3                      replay 16.168 Khz
+>22    byte            =4                      replay 21.942 KHz
+>22    byte            =5                      replay 32.336 KHz
+>22    byte            =6                      replay 43.885 KHz
+>22    byte            =7                      replay 47.261 KHz
 
 # SGI SoundTrack <mpruett@sgi.com>
 0      string          _SGI_SoundTrack         SGI SoundTrack project file
 0      string          FTMN            FaceTheMusic module
 >16    string          >\0d            \b, "%s"
 
+# From: <doj@cubic.org> 2003-06-24
+0      string          AMShdr\32       Velvet Studio AMS Module v2.2
+0      string          Extreme         Extreme Tracker AMS Module v1.3
+0      string          DDMF            Xtracker DMF Module
+>4     byte            x               v%i
+>0xD   string          >\0             Title: "%s"
+>0x2B  string          >\0             Composer: "%s"
+0      string          DSM\32          Dynamic Studio Module DSM
+0      string          SONG            DigiTrekker DTM Module
+0      string          DMDL            DigiTrakker MDL Module
+0      string          PSM\32          Protracker Studio PSM Module
+44     string          PTMF            Poly Tracker PTM Module
+>0     string          >\32            Title: "%s"
+0      string          MT20            MadTracker 2.0 Module MT2
+0      string          RAD\40by\40REALiTY!! RAD Adlib Tracker Module RAD
+0      string          RTMM            RTM Module
+0x426  string          MaDoKaN96       XMS Adlib Module
+>0     string          >\0             Composer: "%s"
+0      string          AMF             AMF Module
+>4     string          >\0             Title: "%s"
+0      string          MODINFO1        Open Cubic Player Module Inforation MDZ
+0      string          Extended\40Instrument: Fast Tracker II Instrument
+
 # From: Takeshi Hamasaki <hma@syd.odn.ne.jp>
 # NOA Nancy Codec file
 0      string          \210NOA\015\012\032     NOA Nancy Codec Movie file
 >20    string          Ver01.00        Ver. 1.00
 >>32   byte            x               , %d tracks
 
-# FLAC audio stream <URL:http://flac.sourceforge.net/>
-# From: Dan Fandrich <dan@coneharvesters.com>
-0      string          fLaC            FLAC audio stream data
+# Free lossless audio codec <http://flac.sourceforge.net>
+# From: Przemyslaw Augustyniak <silvathraec@rpg.pl>
+0      string                  fLaC            FLAC audio bitstream data
+>4     byte&0x7f               >0              \b, unknown version
+>4     byte&0x7f               0               \b
+# some common bits/sample values
+>>20   beshort&0x1f0           0x030           \b, 4 bit
+>>20   beshort&0x1f0           0x050           \b, 6 bit
+>>20   beshort&0x1f0           0x070           \b, 8 bit
+>>20   beshort&0x1f0           0x0b0           \b, 12 bit
+>>20   beshort&0x1f0           0x0f0           \b, 16 bit
+>>20   beshort&0x1f0           0x170           \b, 24 bit
+>>20   byte&0xe                0x0             \b, mono
+>>20   byte&0xe                0x2             \b, stereo
+>>20   byte&0xe                0x4             \b, 3 channels
+>>20   byte&0xe                0x6             \b, 4 channels
+>>20   byte&0xe                0x8             \b, 5 channels
+>>20   byte&0xe                0xa             \b, 6 channels
+>>20   byte&0xe                0xc             \b, 7 channels
+>>20   byte&0xe                0xe             \b, 8 channels
+# some common sample rates
+>>17   belong&0xfffff0         0x0ac440        \b, 44.1 kHz
+>>17   belong&0xfffff0         0x0bb800        \b, 48 kHz
+>>17   belong&0xfffff0         0x07d000        \b, 32 kHz
+>>17   belong&0xfffff0         0x056220        \b, 22.05 kHz
+>>17   belong&0xfffff0         0x05dc00        \b, 24 kHz
+>>17   belong&0xfffff0         0x03e800        \b, 16 kHz
+>>17   belong&0xfffff0         0x02b110        \b, 11.025 kHz
+>>17   belong&0xfffff0         0x02ee00        \b, 12 kHz
+>>17   belong&0xfffff0         0x01f400        \b, 8 kHz
+>>17   belong&0xfffff0         0x177000        \b, 96 kHz
+>>17   belong&0xfffff0         0x0fa000        \b, 64 kHz
+>>21   byte&0xf                >0              \b, >4G samples
+>>21   byte&0xf                0               \b
+>>>22  belong                  >0              \b, %u samples
+>>>22  belong                  0               \b, length unknown
+
+# (ISDN) VBOX voice message file (Wolfram Kleff)
+0       string          VBOX            VBOX voice message data
+
+# ReBorn Song Files (.rbs)
+# David J. Singer <doc@deadvirgins.org.uk>
+8       string          RB40             RBS Song file
+>29     string          ReBorn           created by ReBorn
+>37     string          Propellerhead    created by ReBirth
+
+# Synthesizer Generator and Kimwitu share their file format
+0      string          A#S#C#S#S#L#V#3     Synthesizer Generator or Kimwitu data
+# Kimwitu++ uses a slightly different magic
+0      string          A#S#C#S#S#L#HUB     Kimwitu++ data
 
+# From "Simon Hosie
+0       string  TFMX-SONG       TFMX module sound data
index 2d350f6..1dcf636 100644 (file)
@@ -10,7 +10,7 @@
 # this first will upset you if you're a PL/1 shop...
 # in which case rm it; ascmagic will catch real C programs
 #0     string          /*              C or REXX program text
-     string          //              C++ program text
+#0     string          //              C++ program text
 
 # From: Mikhail Teterin <mi@aldan.algebra.com> 
 0      string          cscope          cscope reference data
diff --git a/file/magic/Magdir/c64 b/file/magic/Magdir/c64
new file mode 100644 (file)
index 0000000..4ca143f
--- /dev/null
@@ -0,0 +1,27 @@
+
+#------------------------------------------------------------------------------
+# c64:  file(1) magic for various commodore 64 related files
+#
+# From <doj@cubic.org>
+
+0x16500        belong          0x12014100      D64 Image
+0x16500        belong          0x12014180      D71 Image
+0x61800 belong         0x28034400      D81 Image
+0      string          C64\40CARTRIDGE CCS C64 Emultar Cartridge Image
+0      belong          0x43154164      X64 Image
+
+0      string          GCR-1541        GCR Image
+>8     byte            x               version: $i
+>9     byte            x               tracks: %i
+
+9      string          PSUR            ARC archive (c64)
+2      string          -LH1-           LHA archive (c64)
+
+0      string          C64File         PC64 Emulator file
+>8     string          >\0             "%s"
+0      string          C64Image        PC64 Freezer Image
+
+0      beshort         0x38CD          C64 PCLink Image
+0      string          CBM\144\0\0     Power 64 C64 Emulator Snapshot
+
+0      belong          0xFF424CFF      WRAptor packer (c64)
diff --git a/file/magic/Magdir/cad b/file/magic/Magdir/cad
new file mode 100644 (file)
index 0000000..92aa837
--- /dev/null
@@ -0,0 +1,36 @@
+
+#------------------------------------------------------------------------------
+# autocad:  file(1) magic for cad files
+#
+
+# AutoCAD DWG versions R13/R14 (www.autodesk.com)
+# Written December 01, 2003 by Lester Hightower
+# Based on the DWG File Format Specifications at http://www.opendwg.org/
+0      string         \101\103\061\060\061                AutoCAD
+>5     string         \062\000\000\000\000                DWG ver. R13
+>5     string         \064\000\000\000\000                DWG ver. R14
+
+# Microstation DGN/CIT Files (www.bentley.com)
+# Written October 30, 2003 by Lester Hightower
+# DGN is the default file extension of Microstation/Intergraph CAD files.
+# CIT is the proprietary raster format (similar to TIFF) used to attach
+# raster underlays to Microstation DGN (vector) drawings.
+# 
+# http://www.wotsit.org/search.asp
+# http://filext.com/detaillist.php?extdetail=DGN
+# http://filext.com/detaillist.php?extdetail=CIT
+#
+# http://www.bentley.com/products/default.cfm?objectid=97F351F5-9C35-4E5E-89C2
+# 3F86C928&method=display&p_objectid=97F351F5-9C35-4E5E-89C280A93F86C928
+# http://www.bentley.com/products/default.cfm?objectid=A5C2FD43-3AC9-4C71-B682
+# 721C479F&method=display&p_objectid=A5C2FD43-3AC9-4C71-B682C7BE721C479F
+0      string         \010\011\376                        Microstation
+>3     string         \002
+>>30   string         \372\104                            DGN File
+>>30   string         \172\104                            DGN File
+>>30   string         \026\105                            DGN File
+>4     string         \030\000\000                        CIT File
+
+# AutoCad, from Nahuel Greco
+0      string AC1012   AutoCad (release 12)
+0      string AC1014   AutoCad (release 14)
index 35d0e32..93244b8 100644 (file)
@@ -13,8 +13,8 @@
 
 #
 # zsh/ash/ae/nawk/gawk magic from cameron@cs.unsw.oz.au (Cameron Simpson)
-0      string/b        #!\ /bin                Paul Falstad's zsh script text executable
-0      string/b        #!\ /usr/bin            Paul Falstad's zsh script text executable
+0      string/b        #!\ /bin/zsh            Paul Falstad's zsh script text executable
+0      string/b        #!\ /usr/bin/zsh        Paul Falstad's zsh script text executable
 0      string/b        #!\ /usr/local/bin/zsh  Paul Falstad's zsh script text executable
 0      string/b        #!\ /usr/local/bin/ash  Neil Brown's ash script text executable
 0      string/b        #!\ /usr/local/bin/ae   Neil Brown's ae script text executable
 0      string          #!\ /usr/bin/env        a
 >16    string          >\0                     %s script text executable
 
-
-# generic shell magic
-0      string          #!\ /                   a
->3     string          >\0                     %s script text executable
-0      string          #!\     /               a
->3     string          >\0                     %s script text executable
-0      string          #!/                     a
->2     string          >\0                     %s script text executable
-0      string          #!\                     script text executable
->3     string          >\0                     for %s
-
 # PHP scripts
 # Ulf Harnhammar <ulfh@update.uu.se>
 0      string/c        =<?php                  PHP script text
diff --git a/file/magic/Magdir/communications b/file/magic/Magdir/communications
new file mode 100644 (file)
index 0000000..bdc19d8
--- /dev/null
@@ -0,0 +1,21 @@
+
+#----------------------------------------------------------------------------
+# communcation
+
+# TTCN is the Tree and Tabular Combined Notation described in ISO 9646-3.
+# It is used for conformance testing of communication protocols.
+# Added by W. Borgert <debacle@debian.org>.
+0      string          $Suite                  TTCN Abstract Test Suite
+>&1    string          $SuiteId
+>>&1   string          >\n                     %s
+>&2    string          $SuiteId
+>>&1   string          >\n                     %s
+>&3    string          $SuiteId
+>>&1   string          >\n                     %s
+
+# MSC (message sequence charts) are a formal description technique,
+# described in ITU-T Z.120, mainly used for communication protocols.
+# Added by W. Borgert <debacle@debian.org>.
+0      string          mscdocument     Message Sequence Chart (document)
+0      string          msc             Message Sequence Chart (chart)
+0      string          submsc          Message Sequence Chart (subchart)
index 0130541..71e689c 100644 (file)
 >2     belong          >1              \b, %d characters originally
 >2     belong          =1              \b, %d character originally
 #
-# This magic number is byte-order-independent.  XXX - Does that mean this
-# is big-endian, little-endian, either, or that you can't tell?
-# this short is valid for SunOS
-0      short           017437          old packed data
+# This magic number is byte-order-independent.
+0      short           0x1f1f          old packed data
 
 # XXX - why *two* entries for "compacted data", one of which is
 # byte-order independent, and one of which is byte-order dependent?
 0      string          7z\274\257\047\034      7z archive data,
 >6     byte            x                       version %d
 >7     byte            x                       \b.%d
+
+# AFX compressed files (Wolfram Kleff)
+2      string          -afx-           AFX compressed file data
index f8d2ebb..ff5a152 100644 (file)
 
 #------------------------------------------------------------------------------
 # msx: file(1) magic for MSX game cartridge dumps
-0 beshort 0x4142 MSX game cartridge dump 
+# Too simple - MPi
+#0 beshort 0x4142 MSX game cartridge dump 
+
+#------------------------------------------------------------------------------
+# Sony Playstation executables (Adam Sjoegren <asjo@diku.dk>) :
+0      string  PS-X\ EXE       Sony Playstation executable
+#  Area:
+>113   string  x               (%s)
+
+#------------------------------------------------------------------------------
+# Microsoft Xbox executables .xbe (Esa Hyytiä <ehyytia@cc.hut.fi>)
+0       string          XBEH            XBE, Microsoft Xbox executable
+# probabilistic checks whether signed or not
+>0x0004 ulelong =0x0
+>>&2    ulelong =0x0
+>>>&2   ulelong =0x0  \b, not signed
+>0x0004 ulelong >0
+>>&2    ulelong >0
+>>>&2   ulelong >0    \b, signed
+# expect base address of 0x10000
+>0x0104               ulelong =0x10000
+>>(0x0118-0x0FF60)    ulelong&0x80000007  0x80000007 \b, all regions
+>>(0x0118-0x0FF60)    ulelong&0x80000007  !0x80000007
+>>>(0x0118-0x0FF60)   ulelong >0           (regions:
+>>>>(0x0118-0x0FF60)  ulelong &0x00000001  NA
+>>>>(0x0118-0x0FF60)  ulelong &0x00000002  Japan
+>>>>(0x0118-0x0FF60)  ulelong &0x00000004  Rest_of_World
+>>>>(0x0118-0x0FF60)  ulelong &0x80000000  Manufacturer
+>>>(0x0118-0x0FF60)   ulelong >0           \b)
+
+# --------------------------------
+# Microsoft Xbox data file formats
+0       string          XIP0            XIP, Microsoft Xbox data
+0       string          XTF0            XTF, Microsoft Xbox data
diff --git a/file/magic/Magdir/dact b/file/magic/Magdir/dact
new file mode 100644 (file)
index 0000000..5cca8d9
--- /dev/null
@@ -0,0 +1,10 @@
+
+#------------------------------------------------------------------------------
+# dact:  file(1) magic for DACT compressed files
+#
+0      long            0x444354C3      DACT compressed data
+>4     byte            >-1             (version %i.
+>5     byte            >-1             $BS%i.
+>6     byte            >-1             $BS%i)
+>7     long            >0              $BS, original size: %i bytes
+>15    long            >30             $BS, block size: %i bytes
index 9d5fe19..f31aee5 100644 (file)
 0       string  root\0  ROOT file
 >4      belong  x       Version %d
 >33     belong  x       (Compression: %d)
+
+# XXX: Weak magic.
+# Alex Ott <ott@jet.msk.su>
+## Paradox file formats
+#2       leshort       0x0800  Paradox 
+#>0x39   byte          3       v. 3.0 
+#>0x39   byte          4       v. 3.5 
+#>0x39   byte          9       v. 4.x 
+#>0x39   byte          10      v. 5.x 
+#>0x39   byte          11      v. 5.x 
+#>0x39   byte          12      v. 7.x 
+#>>0x04          byte          0       indexed .DB data file 
+#>>0x04          byte          1       primary index .PX file 
+#>>0x04          byte          2       non-indexed .DB data file 
+#>>0x04          byte          3       non-incrementing secondary index .Xnn file 
+#>>0x04          byte          4       secondary index .Ynn file 
+#>>0x04          byte          5       incrementing secondary index .Xnn file 
+#>>0x04          byte          6       non-incrementing secondary index .XGn file 
+#>>0x04          byte          7       secondary index .YGn file 
+#>>>0x04         byte          8       incrementing secondary index .XGn file 
+## XBase database files
+#0      byte       0x02        
+#>8     leshort          >0
+#>>12   leshort    0   FoxBase 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0x03        
+#>8     leshort          >0
+#>>12   leshort    0   FoxBase+, FoxPro, dBaseIII+, dBaseIV, no memo 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0x04        
+#>8     leshort          >0
+#>>12   leshort    0   dBASE IV no memo file 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0x05        
+#>8     leshort          >0
+#>>12   leshort    0   dBASE V no memo file 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0x30
+#>8     leshort          >0
+#>>12   leshort    0   Visual FoxPro 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0x43
+#>8     leshort          >0
+#>>12   leshort    0   FlagShip with memo var size 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0x7b
+#>8     leshort          >0
+#>>12   leshort    0   dBASEIV with memo 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0x83        
+#>8     leshort          >0
+#>>12   leshort    0   FoxBase+, dBaseIII+ with memo 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0x8b
+#>8     leshort          >0
+#>>12   leshort    0   dBaseIV with memo 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0x8e        
+#>8     leshort          >0
+#>>12   leshort    0   dBaseIV with SQL Table 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0xb3
+#>8     leshort          >0
+#>>12   leshort    0   FlagShip with .dbt memo 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0      byte       0xf5
+#>8     leshort          >0
+#>>12   leshort    0   FoxPro with memo 
+#>>>0x04       lelong          0               (no records)
+#>>>0x04       lelong          >0              (%ld records)
+#
+#0     leshort         0x0006          DBase 3 index file
+
+# MS Access database
+4        string        Standard\ Jet\ DB       Microsoft Access Database
+
+# TDB database from Samba et al - Martin Pool <mbp@samba.org>
+0      string  TDB\ file               TDB database
+>32    lelong  0x2601196D              version 6, little-endian
+>>36   lelong  x                       hash size %d bytes
+
+# SE Linux policy database
+0       lelong  0xf97cff8c      SE Linux policy
+>16     lelong  x               v%d
+>20     lelong  1      MLS
+>24     lelong  x       %d symbols
+>28     lelong  x       %d ocons
+
+# ICE authority file data (Wolfram Kleff)
+2      string          ICE             ICE authority data
+
+# X11 Xauthority file (Wolfram Kleff)
+10     string          MIT-MAGIC-COOKIE-1      X11 Xauthority data
+11     string          MIT-MAGIC-COOKIE-1      X11 Xauthority data
+12     string          MIT-MAGIC-COOKIE-1      X11 Xauthority data
+13     string          MIT-MAGIC-COOKIE-1      X11 Xauthority data
+14     string          MIT-MAGIC-COOKIE-1      X11 Xauthority data
+15     string          MIT-MAGIC-COOKIE-1      X11 Xauthority data
+16     string          MIT-MAGIC-COOKIE-1      X11 Xauthority data
+17     string          MIT-MAGIC-COOKIE-1      X11 Xauthority data
+18     string          MIT-MAGIC-COOKIE-1      X11 Xauthority data
index 98c90c7..10aac06 100644 (file)
 >4     byte            0               invalid class
 >4     byte            1               32-bit
 # only for MIPS - in the future, the ABI field of e_flags should be used.
+>>18   leshort         8
+>>>36  lelong          &0x20           N32
+>>18   leshort         10
+>>>36  lelong          &0x20           N32
 >>18   beshort         8
+>>>36  belong          &0x20           N32
 >>18   beshort         10
->>>36   belong          &0x20           N32
+>>>36  belong          &0x20           N32
 >4     byte            2               64-bit
 >5     byte            0               invalid byte order
 >5     byte            1               LSB
 >>18   leshort         17              Fujitsu VPP500,
 >>18   leshort         18              SPARC32PLUS,
 >>18   leshort         20              PowerPC,
+>>18   leshort         22              IBM S/390,
 >>18   leshort         36              NEC V800,
 >>18   leshort         37              Fujitsu FR20,
 >>18   leshort         38              TRW RH-32,
 >>18   leshort         39              Motorola RCE,
 >>18   leshort         40              ARM,
 >>18   leshort         41              Alpha,
+>>18   leshort         0xa390          IBM S/390 (obsolete),
 >>18   leshort         42              Hitachi SH,
 >>18   leshort         43              SPARC V9 - invalid byte order,
 >>18   leshort         44              Siemens Tricore Embedded Processor,
@@ -91,7 +98,7 @@
 >>18   leshort         47              Hitachi H8/300H,
 >>18   leshort         48              Hitachi H8S,
 >>18   leshort         49              Hitachi H8/500,
->>18   leshort         50              IA-64,
+>>18   leshort         50              IA-64 (Intel 64 bit architecture)
 >>18   leshort         51              Stanford MIPS-X,
 >>18   leshort         52              Motorola Coldfire,
 >>18   leshort         53              Motorola M68HC12,
 >>>36  belong&0xffff00 &0x000800       Sun UltraSPARC3 Extensions Required,
 >>18   beshort         20              PowerPC or cisco 4500,
 >>18   beshort         21              cisco 7500,
+>>18   beshort         22              IBM S/390,
 >>18   beshort         24              cisco SVIP,
 >>18   beshort         25              cisco 7200,
 >>18   beshort         36              NEC V800 or cisco 12000,
 >>18   beshort         47              Hitachi H8/300H,
 >>18   beshort         48              Hitachi H8S,
 >>18   beshort         49              Hitachi H8/500,
->>18   beshort         50              IA-64,
+>>18   beshort         50              Intel Merced Processor,
 >>18   beshort         51              Stanford MIPS-X,
 >>18   beshort         52              Motorola Coldfire,
 >>18   beshort         53              Motorola M68HC12,
 >>18   beshort         75              Digital VAX,
 >>18   beshort         97              NatSemi 32k,
 >>18   beshort         0x9026          Alpha (unofficial),
+>>18   beshort         0xa390          IBM S/390 (obsolete),
 >>20   belong          0               invalid version
 >>20   belong          1               version 1
 >>36   belong          1               MathCoPro/FPU/MAU Required
->8     string          >\0             (%s)
+# Up to now only 0, 1 and 2 are defined; I've seen a file with 0x83, it seemed
+# like proper ELF, but extracting the string had bad results.
+>4      byte            <0x80
+>>8    string          >\0             (%s)
 >8     string          \0
 >>7    byte            0               (SYSV)
 >>7    byte            1               (HP-UX)
diff --git a/file/magic/Magdir/fcs b/file/magic/Magdir/fcs
new file mode 100644 (file)
index 0000000..ac4b02c
--- /dev/null
@@ -0,0 +1,8 @@
+
+#------------------------------------------------------------------------------
+# fcs: file(1) magic for FCS (Flow Cytometry Standard) data files
+# From Roger Leigh <roger@whinlatter.uklinux.net>
+0       string          FCS1.0          Flow Cytometry Standard (FCS) data, version 1.0
+0       string          FCS2.0          Flow Cytometry Standard (FCS) data, version 2.0
+0       string          FCS3.0          Flow Cytometry Standard (FCS) data, version 3.0
+
index f34c823..c798525 100644 (file)
 
 # SGI XFS filesystem - Nathan Scott <nathans@debian.org>
 0      belong          0x58465342      SGI XFS filesystem data
->0x4   belong          x               (blksz=3D%d,
->0x68  beshort         x               inosz=3D%d,
+>0x4   belong          x               (blksz %d,
+>0x68  beshort         x               inosz %d,
 >0x64  beshort         ^0x2004         v1 dirs)
 >0x64  beshort         &0x2004         v2 dirs)
 
 
 # CDROM Filesystems
 32769    string    CD001     ISO 9660 CD-ROM filesystem data
+# "application id" which appears to be used as a volume label
+>32808  string    >\0       '%s'
+>34816  string    \000CD001\001EL\ TORITO\ SPECIFICATION    (bootable)
 37633    string    CD001     ISO 9660 CD-ROM filesystem data (raw 2352 byte sectors)
 32776    string    CDROM     High Sierra CD-ROM filesystem data
+
+# cramfs filesystem - russell@coker.com.au
+0       lelong    0x28cd3d45      Linux Compressed ROM File System data, little endian
+>4      lelong  x size %d
+>8      lelong  &1 version #2
+>8      lelong  &2 sorted_dirs
+>8      lelong  &4 hole_support
+>32     lelong  x CRC 0x%x,
+>36     lelong  x edition %d,
+>40     lelong  x %d blocks,
+>44     lelong  x %d files
+
+0       belong    0x28cd3d45      Linux Compressed ROM File System data, big endian
+>4      belong  x size %d
+>8      belong  &1 version #2
+>8      belong  &2 sorted_dirs
+>8      belong  &4 hole_support
+>32     belong  x CRC 0x%x,
+>36     belong  x edition %d,
+>40     belong  x %d blocks,
+>44     belong  x %d files
+
+# reiserfs - russell@coker.com.au
+0x10034                string  ReIsErFs        ReiserFS V3.5
+0x10034                string  ReIsEr2Fs       ReiserFS V3.6
+>0x1002c       leshort x               block size %d
+>0x10032       leshort &2              (mounted or unclean)
+>0x10000       lelong  x               num blocks %d
+>0x10040       lelong  1               tea hash
+>0x10040       lelong  2               yura hash
+>0x10040       lelong  3               r5 hash
+
+# JFFS - russell@coker.com.au
+0      lelong  0x34383931      Linux Journalled Flash File system, little endian
+0      belong  0x34383931      Linux Journalled Flash File system, big endian
+
+# EST flat binary format (which isn't, but anyway)
+# From: Mark Brown <broonie@sirena.org.uk>
+0      string  ESTFBINR        EST flat binary
+
+# Aculab VoIP firmware
+# From: Mark Brown <broonie@sirena.org.uk>
+0      string  VoIP\ Startup\ and      Aculab VoIP firmware
+>35    string  x       format %s
+
+# PPCBoot image file
+# From: Mark Brown <broonie@sirena.org.uk>
+0      belong  0x27051956      PPCBoot image
+>4     string  PPCBoot
+>>12   string  x               version %s
+
+# JFFS2 file system
+0       leshort         0x1984                  Linux old jffs2 filesystem data little endian
+0       lelong          0xe0011985              Linux jffs2 filesystem data little endian
index 0db9bfe..2f343d8 100644 (file)
@@ -8,6 +8,8 @@
 #
 0      string          FWS             Macromedia Flash data,
 >3     byte            x               version %d
+0      string          CWS             Macromedia Flash data (compressed),
+>3     byte            x               version %d
 #
 # From Dave Wilson
 0      string AGD4\xbe\xb8\xbb\xcb\x00 Macromedia Freehand 9 Document
index d0dc225..6a1ad34 100644 (file)
@@ -7,9 +7,9 @@
 0      short           017001          byte-swapped Berkeley vfont data
 
 # PostScript fonts (must precede "printer" entries), quinlan@yggdrasil.com
-0      string          %!PS-AdobeFont-1.0      PostScript Type 1 font text
+0      string          %!PS-AdobeFont-1.       PostScript Type 1 font text
 >20    string          >\0                     (%s)
-6      string          %!PS-AdobeFont-1.0      PostScript Type 1 font program data
+6      string          %!PS-AdobeFont-1.       PostScript Type 1 font program data
 
 # X11 font files in SNF (Server Natural Format) format
 0      belong          00000004                X11 SNF font data, MSB first
 # downloadable fonts for browser (prints type) anthon@mnt.org
 0      string          PFR1            PFR1 font
 >102   string          >0              \b: %s
+
+# True Type fonts
+0      string  \000\001\000\000\000    TrueType font data
+
+0      string          \007\001\001\000Copyright\ (c)\ 199     Adobe Multiple Master font
+0      string          \012\001\001\000Copyright\ (c)\ 199     Adobe Multiple Master font
+
+# Opentype font data from Avi Bercovich
+0      string          OTTO            OpenType font data 
+
diff --git a/file/magic/Magdir/games b/file/magic/Magdir/games
new file mode 100644 (file)
index 0000000..2dc17da
--- /dev/null
@@ -0,0 +1,157 @@
+#------------------------------------------------------------------------------
+# games:  file(1) for games
+
+# Thomas M. Ott (ThMO)
+1      string  =WAD            DOOM data,
+>0     string  =I              main wad
+>0     string  =P              patch wad
+>0     byte    x               unknown junk
+
+# Fabio Bonelli <fabiobonelli@libero.it>
+# Quake II - III data files
+0       string  IDP2           Quake II 3D Model file,
+>20     long    x               %lu skin(s),
+>8      long    x               (%lu x
+>12     long    x              %lu),
+>40     long    x               %lu frame(s),
+>16     long    x               Frame size %lu bytes,
+>24     long   x               %lu vertices/frame,
+>28     long    x              %lu texture coordinates,
+>32     long    x               %lu triangles/frame
+
+0       string  IBSP            Quake
+>4      long    0x26            II Map file (BSP)
+>4      long    0x2E           III Map file (BSP)
+
+0       string  IDS2            Quake II SP2 sprite file
+
+#---------------------------------------------------------------------------
+# Doom and Quake
+# submitted by Nicolas Patrois
+
+# DOOM
+
+0       string  IWAD    DOOM or DOOM ][ world
+0       string  PWAD    DOOM or DOOM ][ extension world
+
+0       string  \xcb\x1dBoom\xe6\xff\x03\x01    Boom or linuxdoom demo
+# some doom lmp files don't match, I've got one beginning with \x6d\x02\x01\x01
+
+24      string  LxD\ 203        Linuxdoom save
+>0      string  x       , name=%s
+>44     string  x       , world=%s
+
+# Quake
+
+0       string  PACK    Quake I or II world or extension
+
+#0       string  -1\x0a  Quake I demo
+#>30     string  x        version %.4s
+#>61     string  x        level %s       
+
+#0       string  5\x0a   Quake I save
+
+# The levels
+
+# Quake 1
+
+0      string  5\x0aIntroduction             Quake I save: start Introduction
+0      string  5\x0athe_Slipgate_Complex     Quake I save: e1m1 The slipgate complex
+0      string  5\x0aCastle_of_the_Damned     Quake I save: e1m2 Castle of the damned
+0      string  5\x0athe_Necropolis           Quake I save: e1m3 The necropolis
+0      string  5\x0athe_Grisly_Grotto        Quake I save: e1m4 The grisly grotto
+0      string  5\x0aZiggurat_Vertigo         Quake I save: e1m8 Ziggurat vertigo (secret)
+0      string  5\x0aGloom_Keep               Quake I save: e1m5 Gloom keep
+0      string  5\x0aThe_Door_To_Chthon       Quake I save: e1m6 The door to Chthon
+0      string  5\x0aThe_House_of_Chthon      Quake I save: e1m7 The house of Chthon
+0      string  5\x0athe_Installation         Quake I save: e2m1 The installation
+0      string  5\x0athe_Ogre_Citadel         Quake I save: e2m2 The ogre citadel
+0      string  5\x0athe_Crypt_of_Decay       Quake I save: e2m3 The crypt of decay (dopefish lives!)
+0      string  5\x0aUnderearth               Quake I save: e2m7 Underearth (secret)
+0      string  5\x0athe_Ebon_Fortress        Quake I save: e2m4 The ebon fortress
+0      string  5\x0athe_Wizard's_Manse       Quake I save: e2m5 The wizard's manse
+0      string  5\x0athe_Dismal_Oubliette     Quake I save: e2m6 The dismal oubliette
+0      string  5\x0aTermination_Central      Quake I save: e3m1 Termination central
+0      string  5\x0aVaults_of_Zin            Quake I save: e3m2 Vaults of Zin
+0      string  5\x0athe_Tomb_of_Terror       Quake I save: e3m3 The tomb of terror
+0      string  5\x0aSatan's_Dark_Delight     Quake I save: e3m4 Satan's dark delight
+0      string  5\x0athe_Haunted_Halls        Quake I save: e3m7 The haunted halls (secret)
+0      string  5\x0aWind_Tunnels             Quake I save: e3m5 Wind tunnels
+0      string  5\x0aChambers_of_Torment      Quake I save: e3m6 Chambers of torment
+0      string  5\x0athe_Sewage_System        Quake I save: e4m1 The sewage system
+0      string  5\x0aThe_Tower_of_Despair     Quake I save: e4m2 The tower of despair
+0      string  5\x0aThe_Elder_God_Shrine     Quake I save: e4m3 The elder god shrine
+0      string  5\x0athe_Palace_of_Hate       Quake I save: e4m4 The palace of hate
+0      string  5\x0aHell's_Atrium            Quake I save: e4m5 Hell's atrium
+0      string  5\x0athe_Nameless_City        Quake I save: e4m8 The nameless city (secret)
+0      string  5\x0aThe_Pain_Maze            Quake I save: e4m6 The pain maze
+0      string  5\x0aAzure_Agony              Quake I save: e4m7 Azure agony
+0      string  5\x0aShub-Niggurath's_Pit     Quake I save: end Shub-Niggurath's pit
+
+# Quake DeathMatch levels
+
+0      string  5\x0aPlace_of_Two_Deaths         Quake I save: dm1 Place of two deaths
+0      string  5\x0aClaustrophobopolis          Quake I save: dm2 Claustrophobopolis
+0      string  5\x0aThe_Abandoned_Base          Quake I save: dm3 The abandoned base
+0      string  5\x0aThe_Bad_Place               Quake I save: dm4 The bad place
+0      string  5\x0aThe_Cistern                 Quake I save: dm5 The cistern
+0      string  5\x0aThe_Dark_Zone               Quake I save: dm6 The dark zone
+
+# Scourge of Armagon
+
+0      string  5\x0aCommand_HQ               Quake I save: start Command HQ
+0      string  5\x0aThe_Pumping_Station      Quake I save: hip1m1 The pumping station
+0      string  5\x0aStorage_Facility         Quake I save: hip1m2 Storage facility
+0      string  5\x0aMilitary_Complex         Quake I save: hip1m5 Military complex (secret)
+0      string  5\x0athe_Lost_Mine            Quake I save: hip1m3 The lost mine
+0      string  5\x0aResearch_Facility        Quake I save: hip1m4 Research facility
+0      string  5\x0aAncient_Realms           Quake I save: hip2m1 Ancient realms
+0      string  5\x0aThe_Gremlin's_Domain     Quake I save: hip2m6 The gremlin's domain (secret)
+0      string  5\x0aThe_Black_Cathedral      Quake I save: hip2m2 The black cathedral
+0      string  5\x0aThe_Catacombs            Quake I save: hip2m3 The catacombs
+0      string  5\x0athe_Crypt__              Quake I save: hip2m4 The crypt
+0      string  5\x0aMortum's_Keep            Quake I save: hip2m5 Mortum's keep
+0      string  5\x0aTur_Torment              Quake I save: hip3m1 Tur torment
+0      string  5\x0aPandemonium              Quake I save: hip3m2 Pandemonium
+0      string  5\x0aLimbo                    Quake I save: hip3m3 Limbo
+0      string  5\x0athe_Edge_of_Oblivion     Quake I save: hipdm1 The edge of oblivion (secret)
+0      string  5\x0aThe_Gauntlet             Quake I save: hip3m4 The gauntlet
+0      string  5\x0aArmagon's_Lair           Quake I save: hipend Armagon's lair
+
+# Malice
+
+0      string  5\x0aThe_Academy      Quake I save: start The academy
+0      string  5\x0aThe_Lab          Quake I save: d1 The lab
+0      string  5\x0aArea_33          Quake I save: d1b Area 33
+0      string  5\x0aSECRET_MISSIONS  Quake I save: d3b Secret missions
+0      string  5\x0aThe_Hospital     Quake I save: d10 The hospital (secret)
+0      string  5\x0aThe_Genetics_Lab Quake I save: d11 The genetics lab (secret)
+0      string  5\x0aBACK_2_MALICE    Quake I save: d4b Back to Malice
+0      string  5\x0aArea44           Quake I save: d1c Area 44
+0      string  5\x0aTakahiro_Towers  Quake I save: d2 Takahiro towers
+0      string  5\x0aA_Rat's_Life     Quake I save: d3 A rat's life
+0      string  5\x0aInto_The_Flood   Quake I save: d4 Into the flood
+0      string  5\x0aThe_Flood        Quake I save: d5 The flood
+0      string  5\x0aNuclear_Plant    Quake I save: d6 Nuclear plant
+0      string  5\x0aThe_Incinerator_Plant    Quake I save: d7 The incinerator plant
+0      string  5\x0aThe_Foundry              Quake I save: d7b The foundry
+0      string  5\x0aThe_Underwater_Base      Quake I save: d8 The underwater base
+0      string  5\x0aTakahiro_Base            Quake I save: d9 Takahiro base
+0      string  5\x0aTakahiro_Laboratories    Quake I save: d12 Takahiro laboratories
+0      string  5\x0aStayin'_Alive    Quake I save: d13 Stayin' alive
+0      string  5\x0aB.O.S.S._HQ      Quake I save: d14 B.O.S.S. HQ
+0      string  5\x0aSHOWDOWN!        Quake I save: d15 Showdown!
+
+# Malice DeathMatch levels
+
+0      string  5\x0aThe_Seventh_Precinct        Quake I save: ddm1 The seventh precinct
+0      string  5\x0aSub_Station                 Quake I save: ddm2 Sub station
+0      string  5\x0aCrazy_Eights!               Quake I save: ddm3 Crazy eights!
+0      string  5\x0aEast_Side_Invertationa      Quake I save: ddm4 East side invertationa
+0      string  5\x0aSlaughterhouse              Quake I save: ddm5 Slaughterhouse
+0      string  5\x0aDOMINO                      Quake I save: ddm6 Domino
+0      string  5\x0aSANDRA'S_LADDER             Quake I save: ddm7 Sandra's ladder
+
+
+0      string  MComprHD        MAME CHD compressed hard disk image,
+>12    belong  x               version %lu
diff --git a/file/magic/Magdir/gcc b/file/magic/Magdir/gcc
new file mode 100644 (file)
index 0000000..ee726f3
--- /dev/null
@@ -0,0 +1,16 @@
+
+#------------------------------------------------------------------------------
+# gcc:  file(1) magic for GCC special files
+#
+0      string          gpch            GCC precompiled header
+
+# The version field is annoying.  It's 3 characters, not zero-terminated.
+>5     byte            x                       (version %c
+>6     byte            x                       \b%c
+>7     byte            x                       \b%c)
+
+# 67 = 'C', 111 = 'o', 43 = '+', 79 = 'O'
+>4     byte            67                      for C
+>4     byte            111                     for Objective C
+>4     byte            43                      for C++
+>4     byte            79                      for Objective C++
diff --git a/file/magic/Magdir/geos b/file/magic/Magdir/geos
new file mode 100644 (file)
index 0000000..af1df7b
--- /dev/null
@@ -0,0 +1,19 @@
+
+#------------------------------------------------------------------------------
+# GEOS files (Vidar Madsen, vidar@gimp.org)
+# semi-commonly used in embedded and handheld systems.
+0      belong  0xc745c153      GEOS
+>40    byte    1       executable
+>40    byte    2       VMFile
+>40    byte    3       binary
+>40    byte    4       directory label
+>40    byte    <1      unknown
+>40    byte    >4      unknown
+>4     string  >\0     \b, name "%s"
+#>44   short   x       \b, version %d
+#>46   short   x       \b.%d
+#>48   short   x       \b, rev %d
+#>50   short   x       \b.%d
+#>52   short   x       \b, proto %d
+#>54   short   x       \br%d
+#>168  string  >\0     \b, copyright "%s"
index a385fc9..e84695a 100644 (file)
 # message catalogs, from Mitchum DSouza <m.dsouza@mrc-apu.cam.ac.uk>
 0      string          *nazgul*        Nazgul style compiled message catalog
 >8     lelong          >0              \b, version %ld
+# GnuPG
+# The format is very similar to pgp
+0      string          \001gpg                 GPG key trust database
+>4     byte            x                       version %d
+0       beshort         0x9901                  GPG key public ring
+# This magic is not particularly good, as the keyrings don't have true
+# magic. Nevertheless, it covers many keyrings.
+
+# Gnumeric spreadsheet
+# This entry is only semi-helpful, as Gnumeric compresses its files, so
+# they will ordinarily reported as "compressed", but at least -z helps
+39      string          =<gmr:Workbook           Gnumeric spreadsheet
+
+#------------------------------------------------------------------------------
+# gcc:  file(1) magic for GCC special files
+#
+0       string          gpch            GCC precompiled header
+
+# The version field is annoying.  It's 3 characters, not zero-terminated.
+>5      byte            x                       (version %c
+>6      byte            x                       \b%c
+>7      byte            x                       \b%c)
+
+# 67 = 'C', 111 = 'o', 43 = '+', 79 = 'O'
+>4      byte            67                      for C
+>4      byte            111                     for Objective C
+>4      byte            43                      for C++
+>4      byte            79                      for Objective C++
+
+
index 0ac82a7..d8070f7 100644 (file)
@@ -1,25 +1,25 @@
 
 #------------------------------------------------------------------------------
 # human68k:  file(1) magic for Human68k (X680x0 DOS) binary formats
-
-             string  HU              Human68k
->68            string  LZX             LZX compressed
->>72           string  >\0             (version %s)
->(8.L+74)      string  LZX             LZX compressed
->>(8.L+78)     string  >\0             (version %s)
->60            belong  >0              binded
->(8.L+66)      string  #HUPAIR         hupair
->0             string  HU              X executable
->(8.L+74)      string  #LIBCV1         - linked PD LIBC ver 1
->4             belong  >0              - base address 0x%x
->28            belong  >0              not stripped
->32            belong  >0              with debug information
-             beshort 0x601a          Human68k Z executable
-             beshort 0x6000          Human68k object file
-             belong  0xd1000000      Human68k ar binary archive
-             belong  0xd1010000      Human68k ar ascii archive
-             beshort 0x0068          Human68k lib archive
-             string  LZX             Human68k LZX compressed
->8             string  >\0             (version %s)
->4             string  LZX             R executable
-             string  #HUPAIR         Human68k hupair R executable
+# Magic too short!
+#0             string  HU              Human68k
+#>68           string  LZX             LZX compressed
+#>>72          string  >\0             (version %s)
+#>(8.L+74)     string  LZX             LZX compressed
+#>>(8.L+78)    string  >\0             (version %s)
+#>60           belong  >0              binded
+#>(8.L+66)     string  #HUPAIR         hupair
+#>0            string  HU              X executable
+#>(8.L+74)     string  #LIBCV1         - linked PD LIBC ver 1
+#>4            belong  >0              - base address 0x%x
+#>28           belong  >0              not stripped
+#>32           belong  >0              with debug information
+#0             beshort 0x601a          Human68k Z executable
+#0             beshort 0x6000          Human68k object file
+#0             belong  0xd1000000      Human68k ar binary archive
+#0             belong  0xd1010000      Human68k ar ascii archive
+#0             beshort 0x0068          Human68k lib archive
+#4             string  LZX             Human68k LZX compressed
+#>8            string  >\0             (version %s)
+#>4            string  LZX             R executable
+#2             string  #HUPAIR         Human68k hupair R executable
index 8e1077b..6870c31 100644 (file)
@@ -15,3 +15,5 @@
 0      string          0xabcdef        AIX message catalog
 0      belong          0x000001f9      AIX compiled message catalog
 0      string          \<aiaff>        archive
+0      string          \<bigaf>        archive (big format)
+
index 68d1b79..319e716 100644 (file)
@@ -16,6 +16,8 @@
 >8     string          AIFC            \b, AIFF-C compressed audio
 >8     string          8SVX            \b, 8SVX 8-bit sampled sound voice
 >8     string          SAMP            \b, SAMP sampled audio
+>8     string          DTYP            \b, DTYP datatype description
+>8     string          PTCH            \b, PTCH binary patch
 # image formats
 >8     string          ILBMBMHD        \b, ILBM interleaved image
 >>20   beshort         x               \b, %d x
index 1913073..0ed435d 100644 (file)
 # `tgatoppm' recognizes a superset (Index may be anything)
 1      belong&0xfff7ffff       0x01010000      Targa image data - Map
 >2     byte&8                  8               - RLE
+>12    leshort                 >0              %hd x
+>14    leshort                 >0              %hd
 1      belong&0xfff7ffff       0x00020000      Targa image data - RGB
 >2     byte&8                  8               - RLE
+>12    leshort                 >0              %hd x
+>14    leshort                 >0              %hd
 1      belong&0xfff7ffff       0x00030000      Targa image data - Mono
 >2     byte&8                  8               - RLE
+>12    leshort                 >0              %hd x
+>14    leshort                 >0              %hd
 
 # PBMPLUS images
 # The next byte following the magic is always whitespace.
 >>18   lelong          x               \b, %d x
 >>22   lelong          x               %d x
 >>28   leshort         x               %d
-0      string          IC              PC icon data
-0      string          PI              PC pointer image data
-0      string          CI              PC color icon data
-0      string          CP              PC color pointer image data
+# Too simple - MPi
+#0     string          IC              PC icon data
+#0     string          PI              PC pointer image data
+#0     string          CI              PC color icon data
+#0     string          CP              PC color pointer image data
 # Conflicts with other entries [BABYL]
 #0     string          BA              PC bitmap array data
 
 # DICOM medical imaging data
 128    string  DICM                    DICOM medical imaging data
 
-# XWD - X-Windows Dump file.
+# XWD - X Window Dump file.
 #   As described in /usr/X11R6/include/X11/XWDFile.h
 #   used by the xwd program.
 #   Bradford Castalia, idaeim, 1/01
-4      belong  7                       XWD X-Windows Dump image data
+4      belong  7                       XWD X Window Dump image data
 >100   string  >\0                     \b, "%s"
 >16    belong  x                       \b, %dx
 >20    belong  x                       \b%dx
 
 # Adobe Photoshop
 0      string          8BPS Adobe Photoshop Image
+
+# XV thumbnail indicator (ThMO)
+0      string          P7\ 332         XV thumbnail image data
+
+# NITF is defined by United States MIL-STD-2500A
+0      string  NITF    National Imagery Transmission Format
+>25    string  >\0     dated %.14s
+
+# GEM Image: Version 1, Headerlen 8 (Wolfram Kleff)
+0      belong          0x00010008      GEM Image data
+>12    beshort         x               %d x
+>14    beshort         x               %d,
+>4     beshort         x               %d planes,
+>8     beshort         x               %d x
+>10    beshort         x               %d pixelsize
+
+# GEM Metafile (Wolfram Kleff)
+0      lelong          0x0018FFFF      GEM Metafile data
+>4     leshort         x               version %d
+
+#
+# SMJPEG. A custom Motion JPEG format used by Loki Entertainment
+# Software Torbjorn Andersson <d91tan@Update.UU.SE>.
+#
+0      string  \0\nSMJPEG      SMJPEG
+>8     belong  x               %d.x data
+# According to the specification you could find any number of _TXT
+# headers here, but I can't think of any way of handling that. None of
+# the SMJPEG files I tried it on used this feature. Even if such a
+# file is encountered the output should still be reasonable.
+>16    string  _SND            \b,
+>>24   beshort >0              %d Hz
+>>26   byte    8               8-bit
+>>26   byte    16              16-bit
+>>28   string  NONE            uncompressed
+# >>28 string  APCM            ADPCM compressed
+>>27   byte    1               mono
+>>28   byte    2               stereo
+# Help! Isn't there any way to avoid writing this part twice?
+>>32   string  _VID            \b,
+# >>>48        string  JFIF            JPEG
+>>>40  belong  >0              %d frames
+>>>44  beshort >0              (%d x
+>>>46  beshort >0              %d)
+>16    string  _VID            \b,
+# >>32 string  JFIF            JPEG
+>>24   belong  >0              %d frames
+>>28   beshort >0              (%d x
+>>30   beshort >0              %d)
+
+0      string  Paint\ Shop\ Pro\ Image\ File   Paint Shop Pro Image File
+
+# "thumbnail file" (icon)
+# descended from "xv", but in use by other applications as well (Wolfram Kleff)
+0       string          P7\ 332         XV "thumbnail file" (icon) data
+
+# taken from fkiss: (<yav@mte.biglobe.ne.jp> ?)
+0       string          KiSS            KISS/GS
+>4      byte            16              color
+>>5     byte            x               %d bit
+>>8     leshort         x               %d colors
+>>10    leshort         x               %d groups
+>4      byte            32              cell
+>>5     byte            x               %d bit
+>>8     leshort         x               %d x
+>>10    leshort         x               %d
+>>12    leshort         x               +%d
+>>14    leshort         x               +%d
+
+# Webshots (www.webshots.com), by John Harrison
+0       string          C\253\221g\230\0\0\0 Webshots Desktop .wbz file
+
+# Hercules DASD image files
+# From Jan Jaeger <jj@septa.nl>
+0       string  CKD_P370        Hercules CKD DASD image file
+>8      long    x               \b, %d heads per cylinder
+>12     long    x               \b, track size %d bytes
+>16     byte    x               \b, device type 33%2.2X
+
+0       string  CKD_C370        Hercules compressed CKD DASD image file
+>8      long    x               \b, %d heads per cylinder
+>12     long    x               \b, track size %d bytes
+>16     byte    x               \b, device type 33%2.2X
+
+0       string  CKD_S370        Hercules CKD DASD shadow file
+>8      long    x               \b, %d heads per cylinder
+>12     long    x               \b, track size %d bytes
+>16     byte    x               \b, device type 33%2.2X
+
+# Squeak images and - etoffi@softhome.net
+0 string \146\031\0\0  Squeak image data
+0 string 'From\040Squeak  Squeak program text
+
+# partimage: file(1) magic for PartImage files (experimental, incomplete)
+# Author: Hans-Joachim Baader <hjb@pro-linux.de>
+0              string  PaRtImAgE-VoLuMe        PartImage
+>0x0020                string  0.6.1           file version %s
+>>0x0060       lelong  >-1             volume %ld
+#>>0x0064 8 byte identifier
+#>>0x007c reserved
+>>0x0200       string  >\0             type %s
+>>0x1400       string  >\0             device %s,
+>>0x1600       string  >\0             original filename %s,
+# Some fields omitted
+>>0x2744       lelong  0               not compressed
+>>0x2744       lelong  1               gzip compressed
+>>0x2744       lelong  2               bzip2 compressed
+>>0x2744       lelong  >2              compressed with unknown algorithm
+>0x0020                string  >0.6.1          file version %s
+>0x0020                string  <0.6.1          file version %s
+
+# DCX is multi-page PCX, using a simple header of up to 1024
+# offsets for the respective PCX components.
+# From: Joerg Wunsch <joerg_wunsch@uriah.heep.sax.de>
+0      lelong  987654321       DCX multi-page PCX image data
+
+# Simon Walton <simonw@matteworld.com>
+# Kodak Cineon format for scanned negatives
+# http://www.kodak.com/US/en/motion/support/dlad/
+0      lelong  0xd75f2a80      Cineon image data
+>200   belong  >0              \b, %ld x
+>204   belong  >0              %ld
+
+
+# Bio-Rad .PIC is an image format used by microscope control systems
+# and related image processing software used by biologists.
+# From: Vebjorn Ljosa <vebjorn@ljosa.com>
+54     leshort 12345           Bio-Rad .PIC Image File
+>0     leshort >0              %hd x
+>2     leshort >0              %hd,
+>4     leshort =1              1 image in file
+>4     leshort >1              %hd images in file
+
+# From Jan "Yenya" Kasprzak <kas@fi.muni.cz>
+# The description of *.mrw format can be found at
+# http://www.dalibor.cz/minolta/raw_file_format.htm
+0      string  \000MRM                 Minolta Dimage camera raw image data
+
+# From: stephane.loeuillet@tiscali.f
+# http://www.djvuzone.org/
+0      string  AT&TFORM                DjVu Image file
+
+# From: Jason Bacon <bacon@smithers.neuro.mcw.edu>
+0      beshort 0x3020                  character Computer Graphics Metafile
+
diff --git a/file/magic/Magdir/impulse b/file/magic/Magdir/impulse
deleted file mode 100644 (file)
index 64c14c3..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#------------------------------------------------------------------------------
-# impulse tracker:  file(1) magic for Impulse Tracker data files
-#
-# From <collver1@attbi.com>
-# These are the /etc/magic entries to decode modules, instruments, and
-# samples in Impulse Tracker's native format.
-
-0      string          IMPS            Impulse Tracker Sample
->18    byte            &2              16 bit
->18    byte            ^2              8 bit
->18    byte            &4              stereo
->18    byte            ^4              mono
-0      string          IMPI            Impulse Tracker Instrument
->28    leshort         !0              ITv%x
->30    byte            !0              %d samples
-0      string          IMPM            Impulse Tracker Module
->40    leshort         !0              compatible w/ITv%x
->42    leshort         !0              created w/ITv%x
index d450e26..00942c2 100644 (file)
 0      leshort         =0514           80386 COFF executable
 >12    lelong          >0              not stripped
 >22    leshort         >0              - version %ld
+
+# rom: file(1) magic for BIOS ROM Extensions found in intel machines
+#      mapped into memory between 0xC0000 and 0xFFFFF
+# From Gürkan Sengün <gurkan@linuks.mine.nu>, www.linuks.mine.nu
+0        beshort         0x55AA       BIOS (ia32) ROM Ext.
+>5       string          USB          USB
+>7       string          LDR          UNDI image
+>30      string          IBM          IBM comp. Video
+>26      string          Adaptec      Adaptec
+>28      string          Adaptec      Adaptec
+>42      string          PROMISE      Promise
+>2       byte            x            (%d*512)
index bedc6c9..e118846 100644 (file)
@@ -19,9 +19,9 @@
 >11    byte            x               \b %d.
 >12    byte            x               \b%02d
 # Next, the resolution or aspect ratio of the image:
->13    byte            0               \b, aspect ratio
->13    byte            1               \b, resolution (DPI)
->13    byte            2               \b, resolution (DPCM)
+#>13   byte            0               \b, aspect ratio
+#>13   byte            1               \b, resolution (DPI)
+#>13   byte            2               \b, resolution (DPCM)
 #>4    beshort         x               \b, segment length %d
 # Next, show thumbnail info, if it exists:
 >18    byte            !0              \b, thumbnail %dx
@@ -54,8 +54,8 @@
 # I've commented-out quantisation table reporting.  I doubt anyone cares yet.
 #>(4.S+5)      byte            0xDB            \b, quantisation table
 #>>(4.S+6)     beshort         x               \b length=%d
->14    beshort         x               \b, %d x
->16    beshort         x               \b %d
+#>14   beshort         x               \b, %d x
+#>16   beshort         x               \b %d
 
 # HSI is Handmade Software's proprietary JPEG encoding scheme
 0      string          hsi1            JPEG image data, HSI proprietary
index 4db4958..1b8961c 100644 (file)
 # this can be overridden by the DOS executable (COM) entry
 2      string          LILO            Linux/i386 LILO boot/chain loader
 #
-# Debian Packages, from Peter Tobias <tobias@server.et-inf.fho-emden.de>
-0      string          0.9
->8     byte            0x0a            old Debian Binary Package
->>3    byte            >0              \b, created by dpkg 0.9%c
->>4    byte            >0              pl%c
 # PSF fonts, from H. Peter Anvin <hpa@yggdrasil.com>
 0      leshort         0x0436          Linux/i386 PC Screen Font data,
 >2     byte            0               256 characters, no directory,
@@ -60,6 +55,8 @@
 4086   string          SWAP-SPACE      Linux/i386 swap file
 # according to man page of mkswap (8) March 1999
 4086   string          SWAPSPACE2      Linux/i386 swap file (new style)
+>0x400 long            x               %d (4K pages)
+>0x404 long            x               size %d pages
 # ECOFF magic for OSF/1 and Linux (only tested under Linux though)
 #
 #      from Erik Troan (ewt@redhat.com) examining od dumps, so this
 # and others such as Axel Kohlmeyer <akohlmey@rincewind.chemie.uni-ulm.de>
 # and Nicolás Lichtmaier <nick@debian.org>
 # All known start with: b8 c0 07 8e d8 b8 00 90 8e c0 b9 00 01 29 f6 29
-514            string  HdrS            Linux kernel
->518           leshort >0
->>529          byte    0               zImage data,
->>529          byte    1               bzImage data,
->0x048c                byte    0x31
->>0x048c       string  x               version %s
->0x0493                byte    0x31
->>0x0493       string  x               version %s
->0x048c                byte    0x32
->>0x048c       string  x               version %s
->0x0493                byte    0x32
->>0x0493       string  x               version %s
->0x04df                byte    0x32
->>0x04df       string  x               version %s
->0x04fb                byte    0x32
->>0x04fb       string  x               version %s
+# Linux kernel boot images (i386 arch) (Wolfram Kleff)
+514    string          HdrS            Linux kernel
+>510   leshort         0xAA55          x86 boot executable
+>>518  leshort         >=3D0x200
+>>529  byte            0               zImage,
+>>>529 byte            1               bzImage,
+>>>(526.s+0x200) string        >\0             version %s,
+>>498  leshort         1               RO-rootFS,
+>>498  leshort         0               RW-rootFS,
+>>508  leshort         >0              root_dev 0x%X,
+>>502  leshort         >0              swap_dev 0x%X,
+>>504  leshort         >0              RAMdisksize %u KB,
+>>506  leshort         0xFFFF          Normal VGA
+>>506  leshort         0xFFFE          Extended VGA
+>>506  leshort         0xFFFD          Prompt for Videomode
+>>506  leshort         >0              Video mode %d
 # This also matches new kernels, which were caught above by "HdrS".
 0              belong  0xb8c0078e      Linux kernel
 >0x1e3         string  Loading         version 1.3.79 or older
 >0x1e9         string  Loading         from prehistoric times
-# LSM entries - Nicolás Lichtmaier <nick@feedback.net.ar>
+
+# System.map files - Nicolás Lichtmaier <nick@debian.org>
+8      string  \ A\ _text      Linux kernel symbol map text
+
+# LSM entries - Nicolás Lichtmaier <nick@debian.org>
 0      string  Begin3  Linux Software Map entry text
+0      string  Begin4  Linux Software Map entry text (new format)
+
+# From Matt Zimmerman
+0       belong  0x4f4f4f4d      User-mode Linux COW file
+>4      belong  x               \b, version %d
+>8      string  >\0             \b, backing file %s
 
 ############################################################################
 # Linux kernel versions
index e0f4808..d3fd470 100644 (file)
 >12    belong          3               shared library
 >12    belong          4               core
 >12    belong          5               preload executable
->12    belong          >5
+>12    belong          6               dynamically linked shared library
+>12    belong          7               dynamic linker
+>12    belong          8               bundle
+>12    belong          >8
 >>12   belong          x               filetype=%ld
 >4     belong          <0
 >>4    belong          x               architecture=%ld
@@ -38,6 +41,6 @@
 >4     belong          15              i860-big
 >4     belong          16              i860
 >4     belong          17              rs6000
->4     belong          18              powerPC
+>4     belong          18              ppc
 >4     belong          >18
 >>4    belong          x               architecture=%ld
index 277cb6b..91364a0 100644 (file)
@@ -88,7 +88,8 @@
 # that the first one be 0x80, 0x81, 0x82, or 0x83, and that the second
 # be 0x81.  This works for the files I have, but maybe not for everyone's.
 
-122    beshort&0xFCFF  0x8081          Macintosh MacBinary data
+# Unfortunately, this magic is quite weak - MPi
+#122   beshort&0xFCFF  0x8081          Macintosh MacBinary data
 
 # MacBinary I doesn't have the version number field at all, but MacBinary II
 # has been in use since 1987 so I hope there aren't many really old files
 # >73  byte&0x10       0x40            \b, invisible
 # >73  byte&0x10       0x80            \b, locked
 
->65    string          x               \b, type "%4.4s"
+#>65   string          x               \b, type "%4.4s"
 
->65    string          8BIM            (PhotoShop)
->65    string          ALB3            (PageMaker 3)
->65    string          ALB4            (PageMaker 4)
->65    string          ALT3            (PageMaker 3)
->65    string          APPL            (application)
->65    string          AWWP            (AppleWorks word processor)
->65    string          CIRC            (simulated circuit)
->65    string          DRWG            (MacDraw)
->65    string          EPSF            (Encapsulated PostScript)
->65    string          FFIL            (font suitcase)
->65    string          FKEY            (function key)
->65    string          FNDR            (Macintosh Finder)
->65    string          GIFf            (GIF image)
->65    string          Gzip            (GNU gzip)
->65    string          INIT            (system extension)
->65    string          LIB\            (library)
->65    string          LWFN            (PostScript font)
->65    string          MSBC            (Microsoft BASIC)
->65    string          PACT            (Compact Pro archive)
->65    string          PDF\            (Portable Document Format)
->65    string          PICT            (picture)
->65    string          PNTG            (MacPaint picture)
->65    string          PREF            (preferences)
->65    string          PROJ            (Think C project)
->65    string          QPRJ            (Think Pascal project)
->65    string          SCFL            (Defender scores)
->65    string          SCRN            (startup screen)
->65    string          SITD            (StuffIt Deluxe)
->65    string          SPn3            (SuperPaint)
->65    string          STAK            (HyperCard stack)
->65    string          Seg\            (StuffIt segment)
->65    string          TARF            (Unix tar archive)
->65    string          TEXT            (ASCII)
->65    string          TIFF            (TIFF image)
->65    string          TOVF            (Eudora table of contents)
->65    string          WDBN            (Microsoft Word word processor)
->65    string          WORD            (MacWrite word processor)
->65    string          XLS\            (Microsoft Excel)
->65    string          ZIVM            (compress (.Z))
->65    string          ZSYS            (Pre-System 7 system file)
->65    string          acf3            (Aldus FreeHand)
->65    string          cdev            (control panel)
->65    string          dfil            (Desk Acessory suitcase)
->65    string          libr            (library)
->65    string          nX^d            (WriteNow word processor)
->65    string          nX^w            (WriteNow dictionary)
->65    string          rsrc            (resource)
->65    string          scbk            (Scrapbook)
->65    string          shlb            (shared library)
->65    string          ttro            (SimpleText read-only)
->65    string          zsys            (system file)
+#>65   string          8BIM            (PhotoShop)
+#>65   string          ALB3            (PageMaker 3)
+#>65   string          ALB4            (PageMaker 4)
+#>65   string          ALT3            (PageMaker 3)
+#>65   string          APPL            (application)
+#>65   string          AWWP            (AppleWorks word processor)
+#>65   string          CIRC            (simulated circuit)
+#>65   string          DRWG            (MacDraw)
+#>65   string          EPSF            (Encapsulated PostScript)
+#>65   string          FFIL            (font suitcase)
+#>65   string          FKEY            (function key)
+#>65   string          FNDR            (Macintosh Finder)
+#>65   string          GIFf            (GIF image)
+#>65   string          Gzip            (GNU gzip)
+#>65   string          INIT            (system extension)
+#>65   string          LIB\            (library)
+#>65   string          LWFN            (PostScript font)
+#>65   string          MSBC            (Microsoft BASIC)
+#>65   string          PACT            (Compact Pro archive)
+#>65   string          PDF\            (Portable Document Format)
+#>65   string          PICT            (picture)
+#>65   string          PNTG            (MacPaint picture)
+#>65   string          PREF            (preferences)
+#>65   string          PROJ            (Think C project)
+#>65   string          QPRJ            (Think Pascal project)
+#>65   string          SCFL            (Defender scores)
+#>65   string          SCRN            (startup screen)
+#>65   string          SITD            (StuffIt Deluxe)
+#>65   string          SPn3            (SuperPaint)
+#>65   string          STAK            (HyperCard stack)
+#>65   string          Seg\            (StuffIt segment)
+#>65   string          TARF            (Unix tar archive)
+#>65   string          TEXT            (ASCII)
+#>65   string          TIFF            (TIFF image)
+#>65   string          TOVF            (Eudora table of contents)
+#>65   string          WDBN            (Microsoft Word word processor)
+#>65   string          WORD            (MacWrite word processor)
+#>65   string          XLS\            (Microsoft Excel)
+#>65   string          ZIVM            (compress (.Z))
+#>65   string          ZSYS            (Pre-System 7 system file)
+#>65   string          acf3            (Aldus FreeHand)
+#>65   string          cdev            (control panel)
+#>65   string          dfil            (Desk Acessory suitcase)
+#>65   string          libr            (library)
+#>65   string          nX^d            (WriteNow word processor)
+#>65   string          nX^w            (WriteNow dictionary)
+#>65   string          rsrc            (resource)
+#>65   string          scbk            (Scrapbook)
+#>65   string          shlb            (shared library)
+#>65   string          ttro            (SimpleText read-only)
+#>65   string          zsys            (system file)
 
->69    string          x               \b, creator "%4.4s"
+#>69   string          x               \b, creator "%4.4s"
 
 # Somewhere, Apple has a repository of registered Creator IDs.  These are
 # just the ones that I happened to have files from and was able to identify.
 
->69    string          8BIM            (Adobe Photoshop)
->69    string          ALD3            (PageMaker 3)
->69    string          ALD4            (PageMaker 4)
->69    string          ALFA            (Alpha editor)
->69    string          APLS            (Apple Scanner)
->69    string          APSC            (Apple Scanner)
->69    string          BRKL            (Brickles)
->69    string          BTFT            (BitFont)
->69    string          CCL2            (Common Lisp 2)
->69    string          CCL\            (Common Lisp)
->69    string          CDmo            (The Talking Moose)
->69    string          CPCT            (Compact Pro)
->69    string          CSOm            (Eudora)
->69    string          DMOV            (Font/DA Mover)
->69    string          DSIM            (DigSim)
->69    string          EDIT            (Macintosh Edit)
->69    string          ERIK            (Macintosh Finder)
->69    string          EXTR            (self-extracting archive)
->69    string          Gzip            (GNU gzip)
->69    string          KAHL            (Think C)
->69    string          LWFU            (LaserWriter Utility)
->69    string          LZIV            (compress)
->69    string          MACA            (MacWrite)
->69    string          MACS            (Macintosh operating system)
->69    string          MAcK            (MacKnowledge terminal emulator)
->69    string          MLND            (Defender)
->69    string          MPNT            (MacPaint)
->69    string          MSBB            (Microsoft BASIC (binary))
->69    string          MSWD            (Microsoft Word)
->69    string          NCSA            (NCSA Telnet)
->69    string          PJMM            (Think Pascal)
->69    string          PSAL            (Hunt the Wumpus)
->69    string          PSI2            (Apple File Exchange)
->69    string          R*ch            (BBEdit)
->69    string          RMKR            (Resource Maker)
->69    string          RSED            (Resource Editor)
->69    string          Rich            (BBEdit)
->69    string          SIT!            (StuffIt)
->69    string          SPNT            (SuperPaint)
->69    string          Unix            (NeXT Mac filesystem)
->69    string          VIM!            (Vim editor)
->69    string          WILD            (HyperCard)
->69    string          XCEL            (Microsoft Excel)
->69    string          aCa2            (Fontographer)
->69    string          aca3            (Aldus FreeHand)
->69    string          dosa            (Macintosh MS-DOS file system)
->69    string          movr            (Font/DA Mover)
->69    string          nX^n            (WriteNow)
->69    string          pdos            (Apple ProDOS file system)
->69    string          scbk            (Scrapbook)
->69    string          ttxt            (SimpleText)
->69    string          ufox            (Foreign File Access)
+#>69   string          8BIM            (Adobe Photoshop)
+#>69   string          ALD3            (PageMaker 3)
+#>69   string          ALD4            (PageMaker 4)
+#>69   string          ALFA            (Alpha editor)
+#>69   string          APLS            (Apple Scanner)
+#>69   string          APSC            (Apple Scanner)
+#>69   string          BRKL            (Brickles)
+#>69   string          BTFT            (BitFont)
+#>69   string          CCL2            (Common Lisp 2)
+#>69   string          CCL\            (Common Lisp)
+#>69   string          CDmo            (The Talking Moose)
+#>69   string          CPCT            (Compact Pro)
+#>69   string          CSOm            (Eudora)
+#>69   string          DMOV            (Font/DA Mover)
+#>69   string          DSIM            (DigSim)
+#>69   string          EDIT            (Macintosh Edit)
+#>69   string          ERIK            (Macintosh Finder)
+#>69   string          EXTR            (self-extracting archive)
+#>69   string          Gzip            (GNU gzip)
+#>69   string          KAHL            (Think C)
+#>69   string          LWFU            (LaserWriter Utility)
+#>69   string          LZIV            (compress)
+#>69   string          MACA            (MacWrite)
+#>69   string          MACS            (Macintosh operating system)
+#>69   string          MAcK            (MacKnowledge terminal emulator)
+#>69   string          MLND            (Defender)
+#>69   string          MPNT            (MacPaint)
+#>69   string          MSBB            (Microsoft BASIC (binary))
+#>69   string          MSWD            (Microsoft Word)
+#>69   string          NCSA            (NCSA Telnet)
+#>69   string          PJMM            (Think Pascal)
+#>69   string          PSAL            (Hunt the Wumpus)
+#>69   string          PSI2            (Apple File Exchange)
+#>69   string          R*ch            (BBEdit)
+#>69   string          RMKR            (Resource Maker)
+#>69   string          RSED            (Resource Editor)
+#>69   string          Rich            (BBEdit)
+#>69   string          SIT!            (StuffIt)
+#>69   string          SPNT            (SuperPaint)
+#>69   string          Unix            (NeXT Mac filesystem)
+#>69   string          VIM!            (Vim editor)
+#>69   string          WILD            (HyperCard)
+#>69   string          XCEL            (Microsoft Excel)
+#>69   string          aCa2            (Fontographer)
+#>69   string          aca3            (Aldus FreeHand)
+#>69   string          dosa            (Macintosh MS-DOS file system)
+#>69   string          movr            (Font/DA Mover)
+#>69   string          nX^n            (WriteNow)
+#>69   string          pdos            (Apple ProDOS file system)
+#>69   string          scbk            (Scrapbook)
+#>69   string          ttxt            (SimpleText)
+#>69   string          ufox            (Foreign File Access)
 
 # Just in case...
 
 >24    string          CATALOG         catalog
 >24    string          INDEX           data file index
 >24    string          VIEW            data view
+# sas 7+ magic from Reinhold Koch (reinhold.koch@roche.com)
+#
+0x54    string          SAS             SAS 7+
+>0x9C   string          DATA            data file
+>0x9C   string          CATALOG         catalog
+>0x9C   string          INDEX           data file index
+>0x9C   string          VIEW            data view
+
 # spss magic for SPSS system and portable files, 
 #       from Bruce Foster (bef@nwu.edu).
 
 
 # Macintosh filesystem data
 # From "Tom N Harris" <telliamed@mac.com>
+# Fixed HFS+ and Partition map magic: Ethan Benson <erbenson@alaska.net>
 # The MacOS epoch begins on 1 Jan 1904 instead of 1 Jan 1970, so these
 # entries depend on the data arithmetic added after v.35
 # There's also some Pascal strings in here, ditto...
 >0x412 beshort                 x               number of blocks: %d,
 >0x424 pstring                 x               volume name: %s
 
-0x400  beshort                 0x4244          Macintosh HFS data
->0     beshort                 0x4C4B          (bootable)
->0x40a beshort                 &0x8000         (locked)
->0x40a beshort                 ^0x0100         (mounted)
->0x40a beshort                 &0x0800         (unclean)
->0x402 beldate-0x7C25B080      x               created: %s,
->0x406 beldate-0x7C25B080      x               last modified: %s,
->0x440 beldate-0x7C25B080      >0              last backup: %s,
->0x414 belong                  x               block size: %d,
->0x412 beshort                 x               number of blocks: %d,
->0x424 pstring                 x               volume name: %s
-#>0x480        beshort                 =0x482B         Embedded HFS+ Volume:
-#>>((0x482*(0x414))+(0x41c*512))       x       \b
-# Well, this is (theoretically) how we could do this. But it occurs to
-# me that we likely don't read in a large enough chunk. I don't have any
-# HFS+ volumes to see what a typical offset would be.
+# "BD" is has many false positives
+#0x400 beshort                 0x4244          Macintosh HFS data
+#>0    beshort                 0x4C4B          (bootable)
+#>0x40a        beshort                 &0x8000         (locked)
+#>0x40a        beshort                 ^0x0100         (mounted)
+#>0x40a        beshort                 &0x0200         (spared blocks)
+#>0x40a        beshort                 &0x0800         (unclean)
+#>0x47C        beshort                 0x482B          (Embedded HFS+ Volume)
+#>0x402        beldate-0x7C25B080      x               created: %s,
+#>0x406        beldate-0x7C25B080      x               last modified: %s,
+#>0x440        beldate-0x7C25B080      >0              last backup: %s,
+#>0x414        belong                  x               block size: %d,
+#>0x412        beshort                 x               number of blocks: %d,
+#>0x424        pstring                 x               volume name: %s
 
 0x400  beshort                 0x482B          Macintosh HFS Extended
->&2    beshort                 x               version %d data
+>&0    beshort                 x               version %d data
 >0     beshort                 0x4C4B          (bootable)
->&4    belong                  ^0x00000100     (mounted)
->&4    belong                  &0x00000800     (unclean)
->&4    belong                  &0x00008000     (locked)
->&8    string                  x               last mounted by: '%.4s',
+>0x404 belong                  ^0x00000100     (mounted)
+>&2    belong                  &0x00000200     (spared blocks)
+>&2    belong                  &0x00000800     (unclean)
+>&2    belong                  &0x00008000     (locked)
+>&6    string                  x               last mounted by: '%.4s',
 # really, that should be treated as a belong and we print a string
 # based on the value. TN1150 only mentions '8.10' for "MacOS 8.1"
->&16   beldate-0x7C25B080      x               created: %s,
->&20   beldate-0x7C25B080      x               last modified: %s,
->&24   beldate-0x7C25B080      >0              last backup: %s,
->&28   beldate-0x7C25B080      >0              last checked: %s,
->&40   belong                  x               block size: %d,
->&44   belong                  x               number of blocks: %d,
->&48   belong                  x               free blocks: %d
+>&14   beldate-0x7C25B080      x               created: %s,
+# only the creation date is local time, all other timestamps in HFS+ are UTC.
+>&18   bedate-0x7C25B080       x               last modified: %s,
+>&22   bedate-0x7C25B080       >0              last backup: %s,
+>&26   bedate-0x7C25B080       >0              last checked: %s,
+>&38   belong                  x               block size: %d,
+>&42   belong                  x               number of blocks: %d,
+>&46   belong                  x               free blocks: %d
 
 # I don't think this is really necessary since it doesn't do much and 
 # anything with a valid driver descriptor will also have a valid
 # cstring. Of course, partitions can contain more than four entries, but 
 # what're you gonna do?
 0x200          beshort         0x504D          Apple Partition data
->&2            beshort         x               block size: %d
->&48           string          x               first type: %s,
->&12           belong          x               number of blocks: %d,
->(&0x2.S)      beshort         0x504D          
->>&48          string          x               second type: %s
->>&12          belong          x               number of blocks: %d,
->>(&0x2.S)     beshort         0x504D          
->>>&48         string          x               third type: %s
->>>&12         belong          x               number of blocks: %d,
->>>(&0x2.S)    beshort         0x504D          
->>>>&48                string          x               fourth type: %s
->>>>&12                belong          x               number of blocks: %d,
+>0x2           beshort         x               block size: %d,
+>0x230         string          x               first type: %s,
+>0x210         string          x               name: %s,
+>0x254         belong          x               number of blocks: %d,
+>0x400         beshort         0x504D          
+>>0x430                string          x               second type: %s,
+>>0x410                string          x               name: %s,
+>>0x454                belong          x               number of blocks: %d,
+>>0x800                beshort         0x504D          
+>>>0x830       string          x               third type: %s,
+>>>0x810       string          x               name: %s,
+>>>0x854       belong          x               number of blocks: %d,
+>>>0xa00       beshort         0x504D          
+>>>>0xa30      string          x               fourth type: %s,
+>>>>0xa10      string          x               name: %s,
+>>>>0xa54      belong          x               number of blocks: %d
 # AFAIK, only the signature is different
 0x200          beshort         0x5453          Apple Old Partition data
->&2            beshort         x               block size: %d
->&48           string          x               first type: %s,
->&12           belong          x               number of blocks: %d,
->(&0x2.S)      beshort         0x504D          
->>&48          string          x               second type: %s
->>&12          belong          x               number of blocks: %d,
->>(&0x2.S)     beshort         0x504D          
->>>&48         string          x               third type: %s
->>>&12         belong          x               number of blocks: %d,
->>>(&0x2.S)    beshort         0x504D          
->>>>&48                string          x               fourth type: %s
->>>>&12                belong          x               number of blocks: %d,
+>0x2           beshort         x               block size: %d,
+>0x230         string          x               first type: %s,
+>0x210         string          x               name: %s,
+>0x254         belong          x               number of blocks: %d,
+>0x400         beshort         0x504D          
+>>0x430                string          x               second type: %s,
+>>0x410                string          x               name: %s,
+>>0x454                belong          x               number of blocks: %d,
+>>0x800                beshort         0x504D          
+>>>0x830       string          x               third type: %s,
+>>>0x810       string          x               name: %s,
+>>>0x854       belong          x               number of blocks: %d,
+>>>0xa00       beshort         0x504D          
+>>>>0xa30      string          x               fourth type: %s,
+>>>>0xa10      string          x               name: %s,
+>>>>0xa54      belong          x               number of blocks: %d
+
+# From: Remi Mommsen <mommsen@slac.stanford.edu>
+0              string          BOMStore        Mac OS X bill of materials (BOM) fil
index 2288ad4..2cace95 100644 (file)
 
 # From: Simon Matter <simon.matter@invoca.ch>
 0      string          \241\002\213\015skiplist\ file\0\0\0    Cyrus skiplist DB
+
+# JAM(mbp) Fidonet message area databases
+# JHR file
+0      string  JAM\0                   JAM message area header file
+>12    leshort >0                      (%d messages)
+
+# Squish Fidonet message area databases
+# SQD file (requires at least one message in the area)
+256    leshort 0xAFAE4453              Squish message area data file
+>4     leshort >0                      (%d messages)
index f39c62d..eea4794 100644 (file)
@@ -20,9 +20,9 @@
 0      string  \<PACKAGE=      Maple help file
 0      string  \<HELP\ NAME=   Maple help file
 0      string  \n\<HELP\ NAME= Maple help file with extra carriage return at start (yuck)
-     string  #\ Newton       Maple help file, old style
+#0     string  #\ Newton       Maple help file, old style
 0      string  #\ daub Maple help file, old style
-     string  #===========    Maple help file, old style
+#0     string  #===========    Maple help file, old style
 
 # .mws
 0      string  \000\000\001\044\000\221        Maple worksheet
index 136c253..b9d3405 100644 (file)
 0      string  (***********************        Mathematica 3.0 notebook
 
 # other (* matches it is a comment start in these langs
-0      string  (*      Mathematica, or Pascal,  Modula-2 or 3 code
+0      string  (*      Mathematica, or Pascal,  Modula-2 or 3 code text
+
+#########################
+# MatLab v5
+0       string  MATLAB  Matlab v5 mat-file
+>126    short   0x494d  (big endian)
+>>124   beshort x       version 0x%04x
+>126    short   0x4d49  (little endian)
+>>124   leshort x       version 0x%04x
+
diff --git a/file/magic/Magdir/misctools b/file/magic/Magdir/misctools
new file mode 100644 (file)
index 0000000..c32d52c
--- /dev/null
@@ -0,0 +1,5 @@
+#-----------------------------------------------------------------------------
+# misctools:  file(1) magic for miscelanous UNIX tools.
+#
+0      string          %%!!            X-Post-It-Note text
+0      string          BEGIN:VCALENDAR         vCalendar calendar file
index 1a3174c..bfe7ea0 100644 (file)
 >6     belong                  x               dat=%ld,
 >10    belong                  x               bss=%ld,
 >14    belong                  x               sym=%ld)
+
+# Atari ST/TT... program format (sent by Wolfram Kleff <kleff@cs.uni-bonn.de>)
+0       beshort         0x601A          Atari 68xxx executable,
+>2      belong          x               text len %lu,
+>6      belong          x               data len %lu,
+>10     belong          x               BSS len %lu,
+>14     belong          x               symboltab len %lu,
+>18     belong          0
+>22     belong          &0x01           fastload flag,
+>22     belong          &0x02           may be loaded to alternate RAM,
+>22     belong          &0x04           malloc may be from alternate RAM,
+>22     belong          x               flags: 0x%lX,
+>26     beshort         0               no relocation tab
+>26     beshort         !0              + relocation tab
+>30     string          SFX             [Self-Extracting LZH SFX archive]
+>38     string          SFX             [Self-Extracting LZH SFX archive]
+>44     string          ZIP!            [Self-Extracting ZIP SFX archive]
+
+0       beshort         0x0064          Atari 68xxx CPX file
+>8      beshort         x               (version %04lx)
index 99f1109..987dcf1 100644 (file)
@@ -4,7 +4,7 @@
 #
 
 # .BAT files (Daniel Quinlan, quinlan@yggdrasil.com)
-0      string  @echo\ off      MS-DOS batch file text
+0      string/c        @echo\ off      MS-DOS batch file text
 
 # XXX - according to Microsoft's spec, at an offset of 0x3c in a
 # PE-format executable is the offset in the file of the PE header;
 #
 
 #
-# Windows NT Registry files.
+# Windows Registry files.
 #
-0      string          regf            Windows NT Registry file
+0      string          regf            Windows NT registry file
+0      string          CREG            Windows 95 registry file
 
 # Popular applications
 2080   string  Microsoft\ Word\ 6.0\ Document  %s
 0       string  PO^Q`                          Microsoft Word 6.0 Document
 #
 0      string  \376\067\0\043                  Microsoft Office Document
-0      string  \320\317\021\340\241\261        Microsoft Office Document
+0      string  \320\317\021\340\241\261\032\341        Microsoft Office Document
 0      string  \333\245-\0\0\0                 Microsoft Office Document
 #
 2080   string  Microsoft\ Excel\ 5.0\ Worksheet        %s
 # Help files
 0      string  ?_\3\0          MS Windows Help Data
 
-# Microsoft CAB distribution format  Dale Worley <root@dworley.ny.mediaone.net>
-0      string          MSCF\000\000\000\000    Microsoft CAB file
-
 #  DeIsL1.isu what this is I don't know
 0      string  \161\250\000\000\001\002        DeIsL1.isu whatever that is
 
 >>8    byte    >0                      \b, %d-colors
 
 
-# True Type fonts currently misidentified as raw G3 data
-
-0      string  \000\001\000\000\000 MS-Windows true type font .ttf
-
-
 # .chr files
 0      string  PK\010\010BGI   Borland font 
 >4     string  >\0     %s
 # Acroread or something  files wrongly identified as G3  .pfm
 # these have the form \000 \001 any? \002 \000 \000
 # or \000 \001 any? \022 \000 \000
-     string  \000\001 pfm?
->3     string  \022\000\000Copyright\  yes
->3     string  \002\000\000Copyright\  yes
+#0     string  \000\001 pfm?
+#>3    string  \022\000\000Copyright\  yes
+#>3    string  \002\000\000Copyright\  yes
 #>3    string  >\0     oops, not a font file. Cancel that.
 #it clashes with ttf files so put it lower down.
 
 0      string          DCU1            Borland Delphi .DCU file
 0      string          !<spell>        MKS Spell hash list (old format)
 0      string          !<spell2>       MKS Spell hash list
-0      string          AH              Halo(TM) bitmapped font file
+# Too simple - MPi
+#0     string          AH              Halo(TM) bitmapped font file
 0      lelong          0x08086b70      TurboC BGI file
 0      lelong          0x08084b50      TurboC Font file
 
 
 # TNEF magic From "Joomy" <joomy@se-ed.net> 
 0      leshort         0x223e9f78      TNEF
+
+# HtmlHelp files (.chm)
+0      string  ITSF\003\000\000\000\x60\000\000\000\001\000\000\000    MS Windows HtmlHelp Data
+
+# GFA-BASIC (Wolfram Kleff)
+2      string          GFA-BASIC3      GFA-BASIC 3 data
+
+# DJGPP compiled files
+# v >2, uses DPMI & small(2k) stub (Robert vd Boon, rjvdboon@europe.com)
+0x200  string          go32stub        DOS-executable compiled w/DJGPP
+>0x20c string          >0              (stub v%.4s)
+>>0x8b2        string          djp             [compressed w/%s
+>>>&1  string          >\0             %.4s]
+>>0x8ad        string          UPX             [compressed w/%s
+>>>&1  string          >\0             %.4s]
+>>0x1c string          pmodedj         stubbed with %s
+
+# QDOS
+4      belong          0x4AFB          QDOS executable
+>9     pstring         x               '%s'
+0      beshort         0xFB01          QDOS object
+>2     pstring         x               '%s'
+
+#------------------------------------------------------------------------------
+# From Stuart Caie <kyzer@4u.net> (developer of cabextract)
+# Microsoft Cabinet files
+0      string          MSCF\0\0\0\0    Microsoft Cabinet file
+>8     lelong          x               \b, %u bytes
+>28    leshort         1               \b, 1 file
+>28    leshort         >1              \b, %u files
+
+# InstallShield Cabinet files
+0      string          ISc(            InstallShield Cabinet file
+>5     byte&0xf0       =0x60           version 6,
+>5     byte&0xf0       !0x60           version 4/5,
+>(12.l+40)     lelong  x               %u files
+
+# Windows CE package files
+0      string          MSCE\0\0\0\0    Microsoft WinCE install header
+>20    lelong          0               \b, architecture-independent
+>20    lelong          103             \b, Hitachi SH3
+>20    lelong          104             \b, Hitachi SH4
+>20    lelong          0xA11           \b, StrongARM
+>20    lelong          4000            \b, MIPS R4000
+>20    lelong          10003           \b, Hitachi SH3
+>20    lelong          10004           \b, Hitachi SH3E
+>20    lelong          10005           \b, Hitachi SH4
+>20    lelong          70001           \b, ARM 7TDMI
+>52    leshort         1               \b, 1 file
+>52    leshort         >1              \b, %u files
+>56    leshort         1               \b, 1 registry entry
+>56    leshort         >1              \b, %u registry entries
+
+# Outlook Personal Folders
+0      lelong  0x4E444221      Microsoft Outlook binary email folder
+
+# From: Dirk Jagdmann <doj@cubic.org>
+0      lelong  0x00035f3f      Windows 3.x help file
+
index eb4361c..f14227d 100644 (file)
@@ -8,6 +8,9 @@
 # Netscape Address book  .nab
 0      string \000\017\102\104\000\000\000\000\000\000\001\000\000\000\000\002\000\000\000\002\000\000\004\000 Netscape Address book
 
+# Netscape Communicator address book
+0   string   \000\017\102\111 Netscape Communicator address book
+
 # .snm Caches
 0      string          #\ Netscape\ folder\ cache      Netscape folder cache
 0      string  \000\036\204\220\000    Netscape folder cache
diff --git a/file/magic/Magdir/ocaml b/file/magic/Magdir/ocaml
new file mode 100644 (file)
index 0000000..f8ba976
--- /dev/null
@@ -0,0 +1,13 @@
+
+#------------------------------------------------------------------------------
+# ocaml: file(1) magic for Objective Caml files.
+0      string  Caml1999        Objective caml
+>8     string  X               exec file
+>8     string  I               interface file (.cmi)
+>8     string  O               object file (.cmo)
+>8     string  A               library file (.cma)
+>8     string  Y               native object file (.cmx)
+>8     string  Z               native library file (.cmxa)
+>8     string  M               abstract syntax tree implementation file
+>8     string  N               abstract syntax tree interface file
+>9     string  >\0             (Version %3.3s).
index 7ae67c7..e492031 100644 (file)
 # OS/2 URL objects
 # Provided 1998/08/22 by
 # David Mediavilla <davidme.news@REMOVEIFNOTSPAMusa.net>
-     string  http:                   OS/2 URL object text
->5     string  >\                      (WWW) <http:%s>
-     string  mailto:                 OS/2 URL object text
->7     string  >\                      (email) <%s>
-     string  news:                   OS/2 URL object text
->5     string  >\                      (Usenet) <%s>
-     string  ftp:                    OS/2 URL object text
->4     string  >\                      (FTP) <ftp:%s>
-     string  file:                   OS/2 URL object text
->5     string  >\                      (Local file) <%s>
+#0     string  http:                   OS/2 URL object text
+#>5    string  >\                      (WWW) <http:%s>
+#0     string  mailto:                 OS/2 URL object text
+#>7    string  >\                      (email) <%s>
+#0     string  news:                   OS/2 URL object text
+#>5    string  >\                      (Usenet) <%s>
+#0     string  ftp:                    OS/2 URL object text
+#>4    string  >\                      (FTP) <ftp:%s>
+#0     string  file:                   OS/2 URL object text
+#>5    string  >\                      (Local file) <%s>
 
 # >>>>> OS/2 INF/HLP <<<<<  (source: Daniel Dissett ddissett@netcom.com)
 # Carl Hauser (chauser.parc@xerox.com) and 
index 46bc632..79af1f0 100644 (file)
 # HACK
 60      belong                  0x4841434b      HackMaster hack
 >0      string                  >\0             "%s"
+
+# Variety of PalmOS document types
+# Michael-John Turner <mj@debian.org>
+# Thanks to Hasan Umit Ezerce <humit@tr-net.net.tr> for his DocType
+60     string                  BVokBDIC        BDicty PalmOS document
+>0     string                  >\0             "%s"
+60     string                  DB99DBOS        DB PalmOS document
+>0     string                  >\0             "%s"
+60     string                  vIMGView        FireViewer/ImageViewer PalmOS document
+>0     string                  >\0             "%s"
+60     string                  PmDBPmDB        HanDBase PalmOS document
+>0     string                  >\0             "%s"
+60     string                  InfoINDB        InfoView PalmOS document
+>0     string                  >\0             "%s"
+60     string                  ToGoToGo        iSilo PalmOS document
+>0     string                  >\0             "%s"
+60     string                  JfDbJBas        JFile PalmOS document
+>0     string                  >\0             "%s"
+60     string                  JfDbJFil        JFile Pro PalmOS document
+>0     string                  >\0             "%s"
+60     string                  DATALSdb        List PalmOS document
+>0     string                  >\0             "%s"
+60     string                  Mdb1Mdb1        MobileDB PalmOS document
+>0     string                  >\0             "%s"
+60     string                  PNRdPPrs        PeanutPress PalmOS document
+>0     string                  >\0             "%s"
+60     string                  DataPlkr        Plucker PalmOS document
+>0     string                  >\0             "%s"
+60     string                  DataSprd        QuickSheet PalmOS document
+>0     string                  >\0             "%s"
+60     string                  SM01SMem        SuperMemo PalmOS document
+>0     string                  >\0             "%s"
+60     string                  DataTlPt        TealDoc PalmOS document
+>0     string                  >\0             "%s"
+60     string                  InfoTlIf        TealInfo PalmOS document
+>0     string                  >\0             "%s"
+60     string                  DataTlMl        TealMeal PalmOS document
+>0     string                  >\0             "%s"
+60     string                  DataTlPt        TealPaint PalmOS document
+>0     string                  >\0             "%s"
+60     string                  dataTDBP        ThinkDB PalmOS document
+>0     string                  >\0             "%s"
+60     string                  TdatTide        Tides PalmOS document
+>0     string                  >\0             "%s"
+60     string                  ToRaTRPW        TomeRaider PalmOS document
+>0     string                  >\0             "%s"
+
+# A GutenPalm zTXT etext for use on Palm Pilots (http://gutenpalm.sf.net)
+# For version 1.xx zTXTs, outputs version and numbers of bookmarks and
+#   annotations.
+# For other versions, just outputs version.
+#
+60             string          zTXT            A GutenPalm zTXT e-book
+>0             string          >\0             "%s"
+>(0x4E.L)      byte            0
+>>(0x4E.L+1)   byte            x               (v0.%02d)
+>(0x4E.L)      byte            1
+>>(0x4E.L+1)   byte            x               (v1.%02d)
+>>>(0x4E.L+10) beshort         >0
+>>>>(0x4E.L+10) beshort                <2              - 1 bookmark
+>>>>(0x4E.L+10) beshort                >1              - %d bookmarks
+>>>(0x4E.L+14) beshort         >0
+>>>>(0x4E.L+14) beshort                <2              - 1 annotation
+>>>>(0x4E.L+14) beshort                >1              - %d annotations
+>(0x4E.L)      byte            >1              (v%d.
+>>(0x4E.L+1)   byte            x               %02d)
+
+# Palm OS .prc file types
+60             string          libr            Palm OS dynamic library data
+>0             string          >\0             "%s"
+60             string          ptch            Palm OS operating system patch data
+>0             string          >\0             "%s"
+
+# Mobipocket (www.mobipocket.com), donated by Carl Witty
+60     string                  BOOKMOBI        Mobipocket E-book
+>0     string                  >\0             "%s"
index 28b6086..f70b8dc 100644 (file)
@@ -11,6 +11,7 @@
 0      string          eval\ "exec\ /usr/bin/perl      perl script text
 0      string/b        #!\ /usr/local/bin/perl         perl script text
 0      string          eval\ "exec\ /usr/local/bin/perl        perl script text executable
+0      string          eval\ '(exit\ $?0)'\ &&\ eval\ 'exec    perl script text
 
 # a couple more, by me
 # XXX: christos matches
diff --git a/file/magic/Magdir/plan9 b/file/magic/Magdir/plan9
new file mode 100644 (file)
index 0000000..b564fc8
--- /dev/null
@@ -0,0 +1,4 @@
+#------------------------------------------------------------------------------
+# plan9:  file(1) magic for AT&T Bell Labs' Plan 9 executables
+#
+0      belong          0x000001EB      Plan 9 executable
index dfbd5b9..c51a9cc 100644 (file)
 # From <mike@flyn.org>
 # These are the /etc/magic entries to decode data sent to an Epson printer.
 0       string          \x1B\x40\x1B\x28\x52\x08\x00\x00REMOTE1P        Epson Stylus Color 460 data
+
+
+#------------------------------------------------------------------------------
+# zenographics:  file(1) magic for Zenographics ZjStream printer data
+# Rick Richardson  rickr@mn.rr.com
+0      string          JZJZ
+>0x12  string          ZZ              Zenographics ZjStream printer data (big-endian)
+0      string          ZJZJ
+>0x12  string          ZZ              Zenographics ZjStream printer data (little-endian)
+
+
+#------------------------------------------------------------------------------
+# Oak Technologies printer stream
+# Rick Richardson <rickr@mn.rr.com>
+0       string          OAK
+>0x07  byte            0
+>0x0b  byte            0       Oak Technologies printer stream
+
+# This would otherwise be recognized as PostScript - nick@debian.org
+0      string          %!VMF           SunClock's Vector Map Format data
+
+#------------------------------------------------------------------------------
+# HP LaserJet 1000 series downloadable firmware file
+0      string  \xbe\xefABCDEFGH        HP LaserJet 1000 series downloadable firmware   
diff --git a/file/magic/Magdir/psion b/file/magic/Magdir/psion
new file mode 100644 (file)
index 0000000..5e6ab1a
--- /dev/null
@@ -0,0 +1,43 @@
+
+#------------------------------------------------------------------------------
+# psion:  file(1) magic for Psion handhelds data
+# from: Peter Breitenlohner <peb@mppmu.mpg.de>
+#
+0      lelong          0x10000037      Psion Series 5
+>4     lelong          0x10000039      font file
+>4     lelong          0x1000003A      printer driver
+>4     lelong          0x1000003B      clipboard
+>4     lelong          0x10000042      multi-bitmap image
+>4     lelong          0x1000006A      application infomation file
+>4     lelong          0x1000006D
+>>8    lelong          0x1000007D      sketch image
+>>8    lelong          0x1000007E      voice note
+>>8    lelong          0x1000007F      word file
+>>8    lelong          0x10000085      OPL program
+>>8    lelong          0x10000088      sheet file
+>>8    lelong          0x100001C4      EasyFax initialisation file
+>4     lelong          0x10000073      OPO module
+>4     lelong          0x10000074      OPL application
+>4     lelong          0x1000008A      exported multi-bitmap image
+
+0      lelong          0x10000041      Psion Series 5 ROM multi-bitmap image
+
+0      lelong          0x10000050      Psion Series 5
+>4     lelong          0x1000006D      database
+>4     lelong          0x100000E4      ini file
+
+0      lelong          0x10000079      Psion Series 5 binary:
+>4     lelong          0x00000000      DLL
+>4     lelong          0x10000049      comms hardware library
+>4     lelong          0x1000004A      comms protocol library
+>4     lelong          0x1000005D      OPX
+>4     lelong          0x1000006C      application
+>4     lelong          0x1000008D      DLL
+>4     lelong          0x100000AC      logical device driver
+>4     lelong          0x100000AD      physical device driver
+>4     lelong          0x100000E5      file transfer protocol
+>4     lelong          0x100000E5      file transfer protocol
+>4     lelong          0x10000140      printer defintion
+>4     lelong          0x10000141      printer defintion
+
+0      lelong          0x1000007A      Psion Series 5 executable
index 1932fd2..ec4c121 100644 (file)
@@ -11,4 +11,4 @@
 0      belong          0x87c60d0a      python 2.0 byte-compiled
 0      belong          0x2aeb0d0a      python 2.1 byte-compiled
 0      belong          0x2ded0d0a      python 2.2 byte-compiled
-#0     belong          0x31f20d0a      python 2.3 byte-compiled
+0      belong          0x3bf20d0a      python 2.3 byte-compiled
similarity index 80%
rename from file/magic/Magdir/cvs
rename to file/magic/Magdir/revision
index 2ce9a1a..36a829b 100644 (file)
@@ -1,6 +1,5 @@
+
 #------------------------------------------------------------------------------
-# file(1) magic for cvs(1) files
+# file(1) magic for revision control files
 # From Hendrik Scholz <hendrik@scholz.net>
-
 0   string /1\ :pserver:    cvs password text file
-
index fc8f0e6..a79dd66 100644 (file)
@@ -5,13 +5,7 @@
 #
 #      http://www.seanet.com/users/matts/riffmci/riffmci.htm
 #
-# and
-#
-#      http://www.ora.com/centers/gff/formats/micriff/index.htm
-#
-# and
-#
-#      http://www.jtauber.com/music/encoding/niff/spec/
+# AVI section extended by Patrik RÃ¥dman <patrik+file-magic@iki.fi>
 #
 0      string          RIFF            RIFF (little-endian) data
 # RIFF Palette format
@@ -40,8 +34,8 @@
 >>20   leshort         1               \b, Microsoft PCM
 >>>34  leshort         >0              \b, %d bit
 >>20   leshort         2               \b, Microsoft ADPCM
->>20   leshort         6               \b, ITU G.711 a-law
->>20   leshort         7               \b, ITU G.711 u-law
+>>20   leshort         6               \b, ITU G.711 A-law
+>>20   leshort         7               \b, ITU G.711 mu-law
 >>20   leshort         17              \b, IMA ADPCM
 >>20   leshort         20              \b, ITU G.723 ADPCM (Yamaha)
 >>20   leshort         49              \b, GSM 6.10
 >>22   leshort         =2              \b, stereo
 >>22   leshort         >2              \b, %d channels
 >>24   lelong          >0              %d Hz
+# Corel Draw Picture
+>8     string          CDRA            \b, Corel Draw Picture
 # AVI == Audio Video Interleave
->8      string          AVI\            \b, AVI
+>8     string          AVI\040         \b, AVI
+>>12    string          LIST
+>>>20   string          hdrlavih
+>>>>&36 lelong          x               \b, %lu x
+>>>>&40 lelong          x               %lu,
+>>>>&4  lelong          >1000000        <1 fps,
+>>>>&4  lelong          1000000         1.00 fps,
+>>>>&4  lelong          500000          2.00 fps,
+>>>>&4  lelong          333333          3.00 fps,
+>>>>&4  lelong          250000          4.00 fps,
+>>>>&4  lelong          200000          5.00 fps,
+>>>>&4  lelong          166667          6.00 fps,
+>>>>&4  lelong          142857          7.00 fps,
+>>>>&4  lelong          125000          8.00 fps,
+>>>>&4  lelong          111111          9.00 fps,
+>>>>&4  lelong          100000          10.00 fps,
+# ]9.9,10.1[
+>>>>&4  lelong          <101010
+>>>>>&-4        lelong  >99010
+>>>>>>&-4       lelong  !100000         ~10 fps,
+>>>>&4  lelong          83333           12.00 fps,
+# ]11.9,12.1[
+>>>>&4  lelong          <84034
+>>>>>&-4        lelong  >82645
+>>>>>>&-4       lelong  !83333          ~12 fps,
+>>>>&4  lelong          66667           15.00 fps,
+# ]14.9,15.1[
+>>>>&4  lelong          <67114
+>>>>>&-4        lelong  >66225
+>>>>>>&-4       lelong  !66667          ~15 fps,
+>>>>&4  lelong          50000           20.00 fps,
+>>>>&4  lelong          41708           23.98 fps,
+>>>>&4  lelong          41667           24.00 fps,
+# ]23.9,24.1[
+>>>>&4  lelong          <41841
+>>>>>&-4        lelong  >41494
+>>>>>>&-4       lelong  !41708
+>>>>>>>&-4      lelong  !41667          ~24 fps,
+>>>>&4  lelong          40000           25.00 fps,
+# ]24.9,25.1[
+>>>>&4  lelong          <40161
+>>>>>&-4        lelong  >39841
+>>>>>>&-4       lelong  !40000          ~25 fps,
+>>>>&4  lelong          33367           29.97 fps,
+>>>>&4  lelong          33333           30.00 fps,
+# ]29.9,30.1[
+>>>>&4  lelong          <33445
+>>>>>&-4        lelong  >33223
+>>>>>>&-4       lelong  !33367
+>>>>>>>&-4      lelong  !33333          ~30 fps,
+>>>>&4  lelong          <32224          >30 fps,
+##>>>>&4  lelong          x               (%lu)
+##>>>>&20 lelong          x               %lu frames,
+# Note: The tests below assume that the AVI has 1 or 2 streams,
+#       "vids" optionally followed by "auds".
+#       (Should cover 99.9% of all AVIs.)
+# assuming avih length = 56
+>>>88   string  LIST
+>>>>96  string  strlstrh
+>>>>>108        string  vids    video:
+>>>>>>&0        lelong  0               uncompressed
+# skip past vids strh
+>>>>>>(104.l+108)       string  strf
+>>>>>>>(104.l+132)      lelong          1       RLE 8bpp
+>>>>>>>(104.l+132)      string/c        cvid    Cinepak
+>>>>>>>(104.l+132)      string/c        i263    Intel I.263
+>>>>>>>(104.l+132)      string/c        iv32    Indeo 3.2
+>>>>>>>(104.l+132)      string/c        iv41    Indeo 4.1
+>>>>>>>(104.l+132)      string/c        iv50    Indeo 5.0
+>>>>>>>(104.l+132)      string/c        mp42    Microsoft MPEG-4 v2
+>>>>>>>(104.l+132)      string/c        mp43    Microsoft MPEG-4 v3
+>>>>>>>(104.l+132)      string/c        mjpg    Motion JPEG
+>>>>>>>(104.l+132)      string/c        div3    DivX 3
+>>>>>>>>112             string/c        div3    Low-Motion
+>>>>>>>>112             string/c        div4    Fast-Motion
+>>>>>>>(104.l+132)      string/c        divx    DivX 4
+>>>>>>>(104.l+132)      string/c        dx50    DivX 5
+>>>>>>>(104.l+132)      string/c        xvid    XviD
+>>>>>>>(104.l+132)      lelong  0
+##>>>>>>>(104.l+132)      string  x       (%.4s)
+# skip past first (video) LIST
+>>>>(92.l+96)   string  LIST
+>>>>>(92.l+104) string  strlstrh
+>>>>>>(92.l+116)        string          auds    \b, audio:
+# auds strh length = 56:
+>>>>>>>(92.l+172)       string          strf
+>>>>>>>>(92.l+180)      leshort 0x0001  uncompressed PCM
+>>>>>>>>(92.l+180)      leshort 0x0002  ADPCM
+>>>>>>>>(92.l+180)      leshort 0x0055  MPEG-1 Layer 3
+>>>>>>>>(92.l+180)      leshort 0x2000  Dolby AC3
+>>>>>>>>(92.l+180)      leshort 0x0161  DivX
+##>>>>>>>>(92.l+180)      leshort x       (0x%.4x)
+>>>>>>>>(92.l+182)      leshort 1       (mono,
+>>>>>>>>(92.l+182)      leshort 2       (stereo,
+>>>>>>>>(92.l+182)      leshort >2      (%d channels,
+>>>>>>>>(92.l+184)      lelong  x       %d Hz)
+# auds strh length = 64:
+>>>>>>>(92.l+180)       string          strf
+>>>>>>>>(92.l+188)      leshort 0x0001  uncompressed PCM
+>>>>>>>>(92.l+188)      leshort 0x0002  ADPCM
+>>>>>>>>(92.l+188)      leshort 0x0055  MPEG-1 Layer 3
+>>>>>>>>(92.l+188)      leshort 0x2000  Dolby AC3
+>>>>>>>>(92.l+188)      leshort 0x0161  DivX
+##>>>>>>>>(92.l+188)      leshort x       (0x%.4x)
+>>>>>>>>(92.l+190)      leshort 1       (mono,
+>>>>>>>>(92.l+190)      leshort 2       (stereo,
+>>>>>>>>(92.l+190)      leshort >2      (%d channels,
+>>>>>>>>(92.l+192)      lelong  x       %d Hz)
 # Animated Cursor format
 >8     string          ACON            \b, animated cursor
-# Corel Draw Picture
->8     string          CDRA            \b, Corel Draw Picture
+# SoundFont 2 <mpruett@sgi.com>
+>8     string          sfbk            SoundFont/Bank
+# MPEG-1 wrapped in a RIFF, apparently
+>8      string          CDXA            \b, wrapped MPEG-1 (CDXA)
+>8     string          4XMV            \b, 4X Movie file 
 
 #
 # XXX - some of the below may only appear in little-endian form.
 >>22   beshort         =2              \b, stereo
 >>22   beshort         >2              \b, %d channels
 >>24   belong          >0              %d Hz
+# Corel Draw Picture
+>8     string          CDRA            \b, Corel Draw Picture
 # AVI == Audio Video Interleave
->8      string          AVI\            \b, AVI
+>8     string          AVI\040         \b, AVI
 # Animated Cursor format
 >8     string          ACON            \b, animated cursor
 # Notation Interchange File Format (big-endian only)
 >8     string          NIFF            \b, Notation Interchange File Format
-# Corel Draw Picture
->8     string          CDRA            \b, Corel Draw Picture
-
 # SoundFont 2 <mpruett@sgi.com>
->8     string          sfbk            SoundFont 2
+>8     string          sfbk            SoundFont/Bank
index 14ad6db..09ee51b 100644 (file)
@@ -2,7 +2,7 @@
 #
 # RPM: file(1) magic for Red Hat Packages   Erik Troan (ewt@redhat.com)
 #
-0      beshort         0xedab          
+0      beshort         0xedab
 >2     beshort         0xeedb          RPM
 >>4    byte            x               v%d
 >>6    beshort         0               bin
 >>8    beshort         4               MIPS
 >>8    beshort         5               PowerPC
 >>8    beshort         6               68000
->>8     beshort         7               SGI
+>>8    beshort         7       SGI
+>>8    beshort         8               RS6000
+>>8    beshort         9               IA64
+>>8    beshort         10              Sparc64
+>>8    beshort         11              MIPSel
+>>8    beshort         12              ARM
 >>10   string          x               %s
diff --git a/file/magic/Magdir/sgi b/file/magic/Magdir/sgi
new file mode 100644 (file)
index 0000000..452683a
--- /dev/null
@@ -0,0 +1,59 @@
+
+#------------------------------------------------------------------------------
+# sgi:  file(1) magic for Silicon Graphics applications
+
+#
+#
+# Performance Co-Pilot file types
+0      string  PmNs                            PCP compiled namespace (V.0)
+0      string  PmN                             PCP compiled namespace
+>3     lelong  x                               (V.%1.1s)
+3      lelong  0x84500526                      PCP archive
+>7     byte    x                               (V.%d)
+>20    lelong  -2                              temporal index
+>20    lelong  -1                              metadata
+>20    lelong  0                               log volume #0
+>20    lelong  >0                              log volume #%ld
+>24    lelong  x                               host: %s
+0      string  PCPFolio                        PCP 
+>9     string  Version:                        Archive Folio
+>18    lelong  x                               (V.%s)
+0      string  #pmchart                        PCP pmchart view
+>9     string  Version
+>17    lelong  x                               (V%-3.3s)
+0      string  pmview                          PCP pmview config
+>7     string  Version
+>15    lelong  x                               (V%-3.3s)
+0      string  #pmlogger                       PCP pmlogger config
+>10    string  Version
+>18    lelong  x                               (V%1.1s)
+0      string  PcPh                            PCP Help 
+>4     string  1                               Index
+>4     string  2                               Text
+>5     lelong  x                               (V.%1.1s)
+0      string  #pmieconf-rules                 PCP pmieconf rules
+>16    lelong  x                               (V.%1.1s)
+3      string  pmieconf-pmie                   PCP pmie config
+>17    lelong  x                               (V.%1.1s)
+
+# SpeedShop data files
+0      lelong  0x13130303                      SpeedShop data file
+
+# mdbm files
+0      lelong  0x01023962                      mdbm file, version 0 (obsolete)
+0      string  mdbm                            mdbm file,
+>5     byte    x                               version %d,
+>6     byte    x                               2^%d pages,
+>7     byte    x                               pagesize 2^%d,
+>17    byte    x                               hash %d,
+>11    byte    x                               dataformat %d
+
+# Alias|Wavefront Maya files
+0      string  //Maya ASCII    Alias|Wavefront Maya Ascii File,
+>13    lelong  x       version %s
+8      string  MAYAFOR4        Alias|Wavefront Maya Binary File,
+>32    lelong  x       version %s scene
+8      string  MayaFOR4        Alias|Wavefront Maya Binary File,
+>32    lelong  x       version %s scene
+8      string  CIMG            Alias|Wavefront Maya Image File
+8      string  DEEP            Alias|Wavefront Maya Image File
index 55b8301..9f33529 100644 (file)
@@ -4,14 +4,21 @@
 # HyperText Markup Language (HTML) is an SGML document type,
 # from Daniel Quinlan (quinlan@yggdrasil.com)
 # adapted to string extenstions by Anthon van der Neut <anthon@mnt.org)
-0   string/cB  \<!doctype\ html        HTML document text
+0   string/cB  \<!DOCTYPE\ html        HTML document text
 0   string/cb  \<head                  HTML document text
 0   string/cb  \<title                 HTML document text
 0   string/cb  \<html                  HTML document text
 
 # Extensible markup language (XML), a subset of SGML
 # from Marc Prud'hommeaux (marc@apocalypse.org)
-0   string/cb  \<?xml                  XML document text
+0      string/cb       \<?xml                  XML document text
+0      string          \<?xml\ version "       XML
+0      string          \<?xml\ version="       XML
+>15    string          >\0                     %.3s document text
+>>23   string          \<xsl:stylesheet        (XSL stylesheet)
+>>24   string          \<xsl:stylesheet        (XSL stylesheet)
+0      string/b        \<?xml                  XML document text
+0      string/cb       \<?xml                  broken XML document text
 
 
 # SGML, mostly from rph@sq
diff --git a/file/magic/Magdir/sinclair b/file/magic/Magdir/sinclair
new file mode 100644 (file)
index 0000000..702875e
--- /dev/null
@@ -0,0 +1,126 @@
+
+#------------------------------------------------------------------------------
+# sinclair:  file(1) sinclair QL
+
+# additions to /etc/magic by Thomas M. Ott (ThMO)
+
+# Sinclair QL floppy disk formats (ThMO)
+0      string  =QL5            QL disk dump data,
+>3     string  =A              720 KB,
+>3     string  =B              1.44 MB,
+>3     string  =C              3.2 MB,
+>4     string  >\0             label:%.10s
+
+# Sinclair QL OS dump (ThMO)
+# (NOTE: if `file' would be able to use indirect references in a endian format
+#       differing from the natural host format, this could be written more
+#       reliably and faster...)
+#
+# we *can't* lookup QL OS code dumps, because `file' is UNABLE to read more
+# than the first 8K of a file... #-(
+#
+#0             belong  =0x30000
+#>49124                belong  <47104
+#>>49128               belong  <47104
+#>>>49132      belong  <47104
+#>>>>49136     belong  <47104  QL OS dump data,
+#>>>>>49148    string  >\0     type %.3s,
+#>>>>>49142    string  >\0     version %.4s
+
+# Sinclair QL firmware executables (ThMO)
+0      string  NqNqNq`\004     QL firmware executable (BCPL)
+
+# Sinclair QL libraries (ThMO)
+0      beshort =0xFB01         QL library archive data
+
+# Sinclair QL executbables (ThMO)
+6      beshort =0x4AFB         QL executable,
+>10    string  =\0             un-named
+>8     beshort =1
+>>10   string  >\0             named: %.1s
+>8     beshort =2
+>>10   string  >\0             named: %.2s
+>8     beshort =3
+>>10   string  >\0             named: %.3s
+>8     beshort =4
+>>10   string  >\0             named: %.4s
+>8     beshort =5
+>>10   string  >\0             named: %.5s
+>8     beshort =6
+>>10   string  >\0             named: %.6s
+>8     beshort =7
+>>10   string  >\0             named: %.7s
+>8     beshort =8
+>>10   string  >\0             named: %.8s
+>8     beshort =9
+>>10   string  >\0             named: %.9s
+>8     beshort =10
+>>10   string  >\0             named: %.10s
+>8     beshort =11
+>>10   string  >\0             named: %.11s
+>8     beshort =12
+>>10   string  >\0             named: %.12s
+>8     beshort =13
+>>10   string  >\0             named: %.13s
+>8     beshort =14
+>>10   string  >\0             named: %.14s
+>8     beshort =15
+>>10   string  >\0             named: %.15s
+>8     beshort =16
+>>10   string  >\0             named: %.16s
+>8     beshort =17
+>>10   string  >\0             named: %.17s
+>8     beshort =18
+>>10   string  >\0             named: %.18s
+>8     beshort =19
+>>10   string  >\0             named: %.19s
+>8     beshort =20
+>>10   string  >\0             named: %.20s
+>8     beshort >20
+>>10   string  >\0             (truncated) named: %.20s
+
+# Sinclair QL rom (ThMO)
+0      belong  =0x4AFB0001     QL plugin-ROM data,
+>10    string  =\0             un-named
+>8     beshort =1
+>>10   string  >\0             named: %.1s
+>8     beshort =2
+>>10   string  >\0             named: %.2s
+>8     beshort =3
+>>10   string  >\0             named: %.3s
+>8     beshort =4
+>>10   string  >\0             named: %.4s
+>8     beshort =5
+>>10   string  >\0             named: %.5s
+>8     beshort =6
+>>10   string  >\0             named: %.6s
+>8     beshort =7
+>>10   string  >\0             named: %.7s
+>8     beshort =8
+>>10   string  >\0             named: %.8s
+>8     beshort =9
+>>10   string  >\0             named: %.9s
+>8     beshort =10
+>>10   string  >\0             named: %.10s
+>8     beshort =11
+>>10   string  >\0             named: %.11s
+>8     beshort =12
+>>10   string  >\0             named: %.12s
+>8     beshort =13
+>>10   string  >\0             named: %.13s
+>8     beshort =14
+>>10   string  >\0             named: %.14s
+>8     beshort =15
+>>10   string  >\0             named: %.15s
+>8     beshort =16
+>>10   string  >\0             named: %.16s
+>8     beshort =17
+>>10   string  >\0             named: %.17s
+>8     beshort =18
+>>10   string  >\0             named: %.18s
+>8     beshort =19
+>>10   string  >\0             named: %.19s
+>8     beshort =20
+>>10   string  >\0             named: %.20s
+>8     beshort >20
+>>10   string  >\0             (truncated) named: %.20s
index 626439e..b45b63e 100644 (file)
@@ -9,23 +9,25 @@
 # Microsoft Network Monitor 1.x capture files.
 #
 0      string          RTSS            NetMon capture file
->4     byte            x               - version %d
->5     byte            x               \b.%d
+>5     byte            x               - version %d
+>4     byte            x               \b.%d
 >6     leshort         0               (Unknown)
 >6     leshort         1               (Ethernet)
 >6     leshort         2               (Token Ring)
 >6     leshort         3               (FDDI)
+>6     leshort         4               (ATM)
 
 #
 # Microsoft Network Monitor 2.x capture files.
 #
 0      string          GMBU            NetMon capture file
->4     byte            x               - version %d
->5     byte            x               \b.%d
+>5     byte            x               - version %d
+>4     byte            x               \b.%d
 >6     leshort         0               (Unknown)
 >6     leshort         1               (Ethernet)
 >6     leshort         2               (Token Ring)
 >6     leshort         3               (FDDI)
+>6     leshort         4               (ATM)
 
 #
 # Network General Sniffer capture files.
@@ -58,6 +60,9 @@
 >44    leshort         0               (Ethernet)
 >44    leshort         1               (Token Ring)
 >44    leshort         2               (FDDI)
+>44    leshort         3               (WAN)
+>44    leshort         8               (ATM)
+>44    leshort         9               (802.11)
 
 #
 # "libpcap" capture files.
@@ -75,7 +80,7 @@
 >20    belong          4               (ProNET
 >20    belong          5               (CHAOS
 >20    belong          6               (Token Ring
->20    belong          7               (ARCNET
+>20    belong          7               (BSD ARCNET
 >20    belong          8               (SLIP
 >20    belong          9               (PPP
 >20    belong          10              (FDDI
 >20    belong          104             (BSD/OS Cisco HDLC
 >20    belong          105             (802.11
 >20    belong          106             (Linux Classical IP over ATM
+>20    belong          107             (Frame Relay
 >20    belong          108             (OpenBSD loopback
->20    belong          109             (OpenBSD IPSEC encrypted
+>20    belong          109             (OpenBSD IPsec encrypted
+>20    belong          112             (Cisco HDLC
 >20    belong          113             (Linux "cooked"
 >20    belong          114             (LocalTalk
+>20    belong          117             (OpenBSD PFLOG
+>20    belong          119             (802.11 with Prism header
+>20    belong          123             (SunATM
+>20    belong          127             (802.11 with radiotap header
+>20    belong          129             (Linux ARCNET
+>20    belong          140             (MTP2
+>20    belong          141             (MTP3
+>20    belong          143             (DOCSIS
+>20    belong          144             (IrDA
 >16    belong          x               \b, capture length %d)
 0      ulelong         0xa1b2c3d4      tcpdump capture file (little-endian)
 >4     leshort         x               - version %d
 >20    lelong          104             (BSD/OS Cisco HDLC
 >20    lelong          105             (802.11
 >20    lelong          106             (Linux Classical IP over ATM
+>20    lelong          107             (Frame Relay
 >20    lelong          108             (OpenBSD loopback
 >20    lelong          109             (OpenBSD IPSEC encrypted
+>20    lelong          112             (Cisco HDLC
 >20    lelong          113             (Linux "cooked"
 >20    lelong          114             (LocalTalk
+>20    lelong          117             (OpenBSD PFLOG
+>20    lelong          119             (802.11 with Prism header
+>20    lelong          123             (SunATM
+>20    lelong          127             (802.11 with radiotap header
+>20    lelong          129             (Linux ARCNET
+>20    lelong          140             (MTP2
+>20    lelong          141             (MTP3
+>20    lelong          143             (DOCSIS
+>20    lelong          144             (IrDA
 >16    lelong          x               \b, capture length %d)
 
 #
 #
 # AIX "iptrace" capture files.
 #
+0      string          iptrace\ 1.0    "iptrace" capture file
 0      string          iptrace\ 2.0    "iptrace" capture file
 
 #
index e7a5549..ab9fd04 100644 (file)
 >3      byte            2               - character array
 >3      byte            3               - memory block
 >>14    belong          0x001B0040      (screen)
+
+# The following three blocks are from pak21-spectrum@srcf.ucam.org
+# TZX tape images
+0      string          ZXTape!\x1a     Spectrum .TZX data
+>8     byte            x               version %d
+>9     byte            x               .%d
+
+# RZX input recording files
+0      string          RZX!            Spectrum .RZX data
+>4     byte            x               version %d
+>5     byte            x               .%d
+
+# And three sorts of disk image
+0      string          MV\ -\ CPCEMU\ Disk-Fil Amstrad/Spectrum .DSK data
+0      string          MV\ -\ CPC\ format\ Dis Amstrad/Spectrum DU54 .DSK data
+0      string          EXTENDED\ CPC\ DSK\ Fil Amstrad/Spectrum Extended .DSK data
index 10f30b4..4c43b27 100644 (file)
 >12    belong          7               (IBM channel-to-channel adapter)
 >12    belong          8               (FDDI)
 >12    belong          9               (Unknown)
+
+# Microsoft ICM color profile
+36     string          acspMSFT        Microsoft ICM Color Profile
 # Sun KCMS
 36     string          acsp            Kodak Color Management System, ICC Profile
 
+#---------------------------------------------------------------------------
+# The following entries have been tested by Duncan Laurie <duncan@sun.com> (a
+# lead Sun/Cobalt developer) who agrees that they are good and worthy of
+# inclusion.
+
+# Boot ROM images for Sun/Cobalt Linux server appliances
+0       string  Cobalt\ Networks\ Inc.\nFirmware\ v     Paged COBALT boot rom
+>38     string x        V%.4s
+
+# New format for Sun/Cobalt boot ROMs is annoying, it stores the version code
+# at the very end where file(1) can't get it.
+0       string CRfs     COBALT boot rom data (Flat boot rom or file system)
+
 
index 9a3fe2e..e2a4bd8 100644 (file)
@@ -4,13 +4,63 @@
 # 
 0      byte                    0xF0            SysEx File -
 
+# North American Group
+>1     byte                    0x01            Sequential
+>1     byte                    0x02            IDP
+>1     byte                    0x03            OctavePlateau
+>1     byte                    0x04            Moog
+>1     byte                    0x05            Passport
+>1     byte                    0x06            Lexicon
+>1     byte                    0x07            Kurzweil
+>1     byte                    0x08            Fender
+>1     byte                    0x09            Gulbransen
+>1     byte                    0x0a            AKG
+>1     byte                    0x0b            Voyce
+>1     byte                    0x0c            Waveframe
+>1     byte                    0x0d            ADA
+>1     byte                    0x0e            Garfield
+>1     byte                    0x0f            Ensoniq
+>1     byte                    0x10            Oberheim
+>1     byte                    0x11            Apple
+>1     byte                    0x12            GreyMatter
+>1     byte                    0x14            PalmTree
+>1     byte                    0x15            JLCooper
+>1     byte                    0x16            Lowrey
+>1     byte                    0x17            AdamsSmith
+>1     byte                    0x18            E-mu
+>1     byte                    0x19            Harmony
+>1     byte                    0x1a            ART
+>1     byte                    0x1b            Baldwin
+>1     byte                    0x1c            Eventide
+>1     byte                    0x1d            Inventronics
+>1     byte                    0x1f            Clarity
+
+# European Group
+>1     byte                    0x21            SIEL
+>1     byte                    0x22            Synthaxe
+>1     byte                    0x24            Hohner
+>1     byte                    0x25            Twister
+>1     byte                    0x26            Solton
+>1     byte                    0x27            Jellinghaus
+>1     byte                    0x28            Southworth
+>1     byte                    0x29            PPG
+>1     byte                    0x2a            JEN
+>1     byte                    0x2b            SSL
+>1     byte                    0x2c            AudioVertrieb
+
 >1     byte                    0x2f            ELKA
 >>3    byte                    0x09            EK-44
 
+>1     byte                    0x30            Dynacord
+>1     byte                    0x33            Clavia
+>1     byte                    0x39            Soundcraft
+
 >1     byte                    0x3e            Waldorf
 >>3    byte                    0x7f            Microwave I
 
+# Japanese Group
 >1     byte                    0x40            Kawai
+>>3    byte                    0x20            K1
 >>3    byte                    0x22            K4
 
 >1     byte                    0x41            Roland
@@ -26,6 +76,7 @@
 >1     byte                    0x46            Kamiya
 >1     byte                    0x47            Akai
 >1     byte                    0x48            Victor
+>1     byte                    0x49            Mesosha
 >1     byte                    0x4b            Fujitsu
 >1     byte                    0x4c            Sony
 >1     byte                    0x4e            Teac
index d740060..89e2204 100644 (file)
 # ------------------------------------------------------------------------
-# ti-8x: file(1) magic for the TI-8x and TI-92 Graphing Calculators.
+# ti-8x: file(1) magic for the TI-8x and TI-9x Graphing Calculators.
 #
 # From: Ryan McGuire (rmcguire@freenet.columbus.oh.us).
 #
+# Update: Romain Lievin (roms@lpg.ticalc.org).
+#
 # NOTE: This list is not complete.
+# Files for the TI-80 and TI-81 are pretty rare. I'm not going to put the
+# program/group magic numbers in here because I cannot find any.
+0              string          **TI80**        TI-80 Graphing Calculator File.
+0              string          **TI81**        TI-81 Graphing Calculator File.
+#
+# Magic Numbers for the TI-73
 #
+0              string          **TI73**        TI-73 Graphing Calculator
+>0x00003B      byte            0x00            (real number)
+>0x00003B      byte            0x01            (list)
+>0x00003B      byte            0x02            (matrix)
+>0x00003B      byte            0x03            (equation)
+>0x00003B      byte            0x04            (string)
+>0x00003B      byte            0x05            (program)
+>0x00003B      byte            0x06            (assembly program)
+>0x00003B      byte            0x07            (picture)
+>0x00003B      byte            0x08            (gdb)
+>0x00003B      byte            0x0C            (complex number)
+>0x00003B      byte            0x0F            (window settings)
+>0x00003B      byte            0x10            (zoom)
+>0x00003B      byte            0x11            (table setup)
+>0x00003B      byte            0x13            (backup)
+
 # Magic Numbers for the TI-82
 #
-0               string          **TI82**        TI-82 Graphing Calculator
->0x000037       byte            0x0B            TI-BASIC Group/Program File.
+0              string          **TI82**        TI-82 Graphing Calculator
+>0x00003B      byte            0x00            (real)
+>0x00003B      byte            0x01            (list)
+>0x00003B      byte            0x02            (matrix)
+>0x00003B      byte            0x03            (Y-variable)
+>0x00003B      byte            0x05            (program)
+>0x00003B      byte            0x06            (protected prgm)
+>0x00003B      byte            0x07            (picture)
+>0x00003B      byte            0x08            (gdb)
+>0x00003B      byte            0x0B            (window settings)
+>0x00003B      byte            0x0C            (window settings)
+>0x00003B      byte            0x0D            (table setup)
+>0x00003B      byte            0x0E            (screenshot)
+>0x00003B      byte            0x0F            (backup)
 #
 # Magic Numbers for the TI-83
 #
-0               string          **TI83**        TI-83 Graphing Calculator
->0x000037       byte            0x0B            TI-BASIC Group/Program File.
+0              string          **TI83**        TI-83 Graphing Calculator
+>0x00003B      byte            0x00            (real)
+>0x00003B      byte            0x01            (list)
+>0x00003B      byte            0x02            (matrix)
+>0x00003B      byte            0x03            (Y-variable)
+>0x00003B      byte            0x04            (string)
+>0x00003B      byte            0x05            (program)
+>0x00003B      byte            0x06            (protected prgm)
+>0x00003B      byte            0x07            (picture)
+>0x00003B      byte            0x08            (gdb)
+>0x00003B      byte            0x0B            (window settings)
+>0x00003B      byte            0x0C            (window settings)
+>0x00003B      byte            0x0D            (table setup)
+>0x00003B      byte            0x0E            (screenshot)
+>0x00003B      byte            0x13            (backup)
+#
+# Magic Numbers for the TI-83+
+#
+0              string          **TI83F*        TI-83+ Graphing Calculator
+>0x00003B      byte            0x00            (real number)
+>0x00003B      byte            0x01            (list)
+>0x00003B      byte            0x02            (matrix)
+>0x00003B      byte            0x03            (equation)
+>0x00003B      byte            0x04            (string)
+>0x00003B      byte            0x05            (program)
+>0x00003B      byte            0x06            (assembly program)
+>0x00003B      byte            0x07            (picture)
+>0x00003B      byte            0x08            (gdb)
+>0x00003B      byte            0x0C            (complex number)
+>0x00003B      byte            0x0F            (window settings)
+>0x00003B      byte            0x10            (zoom)
+>0x00003B      byte            0x11            (table setup)
+>0x00003B      byte            0x13            (backup)
+>0x00003B      byte            0x15            (application variable)
+>0x00003B      byte            0x17            (group of variable)
+
 #
 # Magic Numbers for the TI-85
 #
-0               string          **TI85**        TI-85 Graphing Calculator
->11             string          Backup          Backup File.
->0x000032       string          ZS4             - ZShell Version 4 File.
->0x000032       string          ZS3             - ZShell Version 3 File.
->0x00000B       string          GDatabase       Graphics Database.
->0x00003B       byte            0x12            TI-BASIC Group/Program File.
+0              string          **TI85**        TI-85 Graphing Calculator
+>0x00003B      byte            0x00            (real number)
+>0x00003B      byte            0x01            (complex number)
+>0x00003B      byte            0x02            (real vector)
+>0x00003B      byte            0x03            (complex vector)
+>0x00003B      byte            0x04            (real list)
+>0x00003B      byte            0x05            (complex list)
+>0x00003B      byte            0x06            (real matrix)
+>0x00003B      byte            0x07            (complex matrix)
+>0x00003B      byte            0x08            (real constant)
+>0x00003B      byte            0x09            (complex constant)
+>0x00003B      byte            0x0A            (equation)
+>0x00003B      byte            0x0C            (string)
+>0x00003B      byte            0x0D            (function GDB)
+>0x00003B      byte            0x0E            (polar GDB)
+>0x00003B      byte            0x0F            (parametric GDB)
+>0x00003B      byte            0x10            (diffeq GDB)
+>0x00003B      byte            0x11            (picture)
+>0x00003B      byte            0x12            (program)
+>0x00003B      byte            0x13            (range)
+>0x00003B      byte            0x17            (window settings)
+>0x00003B      byte            0x18            (window settings)
+>0x00003B      byte            0x19            (window settings)
+>0x00003B      byte            0x1A            (window settings)
+>0x00003B      byte            0x1B            (zoom)
+>0x00003B      byte            0x1D            (backup)
+>0x00003B      byte            0x1E            (unknown)
+>0x00003B      byte            0x2A            (equation)
+>0x000032      string          ZS4             - ZShell Version 4 File.
+>0x000032      string          ZS3             - ZShell Version 3 File.
+#
+# Magic Numbers for the TI-86
+#
+0              string          **TI86**        TI-86 Graphing Calculator
+>0x00003B      byte            0x00            (real number)
+>0x00003B      byte            0x01            (complex number)
+>0x00003B      byte            0x02            (real vector)
+>0x00003B      byte            0x03            (complex vector)
+>0x00003B      byte            0x04            (real list)
+>0x00003B      byte            0x05            (complex list)
+>0x00003B      byte            0x06            (real matrix)
+>0x00003B      byte            0x07            (complex matrix)
+>0x00003B      byte            0x08            (real constant)
+>0x00003B      byte            0x09            (complex constant)
+>0x00003B      byte            0x0A            (equation)
+>0x00003B      byte            0x0C            (string)
+>0x00003B      byte            0x0D            (function GDB)
+>0x00003B      byte            0x0E            (polar GDB)
+>0x00003B      byte            0x0F            (parametric GDB)
+>0x00003B      byte            0x10            (diffeq GDB)
+>0x00003B      byte            0x11            (picture)
+>0x00003B      byte            0x12            (program)
+>0x00003B      byte            0x13            (range)
+>0x00003B      byte            0x17            (window settings)
+>0x00003B      byte            0x18            (window settings)
+>0x00003B      byte            0x19            (window settings)
+>0x00003B      byte            0x1A            (window settings)
+>0x00003B      byte            0x1B            (zoom)
+>0x00003B      byte            0x1D            (backup)
+>0x00003B      byte            0x1E            (unknown)
+>0x00003B      byte            0x2A            (equation)
+#
+# Magic Numbers for the TI-89
+#
+0              string          **TI89**        TI-89 Graphing Calculator
+>0x000048      byte            0x00            (expression)
+>0x000048      byte            0x04            (list)
+>0x000048      byte            0x06            (matrix)
+>0x000048      byte            0x0A            (data)
+>0x000048      byte            0x0B            (text)
+>0x000048      byte            0x0C            (string)
+>0x000048      byte            0x0D            (graphic data base)
+>0x000048      byte            0x0E            (figure)
+>0x000048      byte            0x10            (picture)
+>0x000048      byte            0x12            (program)
+>0x000048      byte            0x13            (function)
+>0x000048      byte            0x14            (macro)
+>0x000048      byte            0x1C            (zipped)
+>0x000048      byte            0x21            (assembler)
 #
 # Magic Numbers for the TI-92
 #
-0               string          **TI92**        TI-92 Graphing Calculator
->0x000058       byte            0x12            TI-BASIC Group File.
->0x000012       string          Function        Function.
->0x000048       byte            0x12            TI-BASIC Program.
-# Files for the TI-80 and TI-81 are pretty rare. I'm not going to put the
-# program/group magic numbers in here because I cannot find any.
-0               string          **TI80**        TI-80 Graphing Calculator File.
-0               string          **TI81**        TI-81 Graphing Calculator File.
+0              string          **TI92**        TI-92 Graphing Calculator
+>0x000048      byte            0x00            (expression)
+>0x000048      byte            0x04            (list)
+>0x000048      byte            0x06            (matrix)
+>0x000048      byte            0x0A            (data)
+>0x000048      byte            0x0B            (text)
+>0x000048      byte            0x0C            (string)
+>0x000048      byte            0x0D            (graphic data base)
+>0x000048      byte            0x0E            (figure)
+>0x000048      byte            0x10            (picture)
+>0x000048      byte            0x12            (program)
+>0x000048      byte            0x13            (function)
+>0x000048      byte            0x14            (macro)
+>0x000048      byte            0x1D            (backup)
+#
+# Magic Numbers for the TI-92+/V200
+#
+0              string          **TI92P*        TI-92+/V200 Graphing Calculator
+>0x000048      byte            0x00            (expression)
+>0x000048      byte            0x04            (list)
+>0x000048      byte            0x06            (matrix)
+>0x000048      byte            0x0A            (data)
+>0x000048      byte            0x0B            (text)
+>0x000048      byte            0x0C            (string)
+>0x000048      byte            0x0D            (graphic data base)
+>0x000048      byte            0x0E            (figure)
+>0x000048      byte            0x10            (picture)
+>0x000048      byte            0x12            (program)
+>0x000048      byte            0x13            (function)
+>0x000048      byte            0x14            (macro)
+>0x000048      byte            0x1C            (zipped)
+>0x000048      byte            0x21            (assembler)
+#
+# Magic Numbers for the TI-73/83+/89/92+/V200 FLASH upgrades
+#
+0x0000016      string          Advanced        TI-XX Graphing Calculator (FLASH)
+0              string          **TIFL**        TI-XX Graphing Calculator (FLASH)
+>8             byte            >0              - Revision %d
+>>9            byte            x               \b.%d,
+>12            byte            >0              Revision date %02x
+>>13           byte            x               \b/%02x
+>>14           beshort         x               \b/%04x,
+>17            string          >/0             name: '%s',
+>48            byte            0x74            device: TI-73,
+>48            byte            0x73            device: TI-83+,
+>48            byte            0x98            device: TI-89,
+>48            byte            0x88            device: TI-92+,
+>49            byte            0x23            type: OS upgrade,
+>49            byte            0x24            type: application,
+>49            byte            0x25            type: certificate,
+>49            byte            0x3e            type: license,
+>74            lelong          >0              size: %ld bytes
+
+# VTi & TiEmu skins (TI Graphing Calculators).
+# From: Romain Lievin (roms@lpg.ticalc.org).
+# Magic Numbers for the VTi skins
+0               string          VTI            Virtual TI skin
+>3             string          v               - Version
+>>4            byte            >0              \b %c
+>>6            byte            x               \b.%c
+# Magic Numbers for the TiEmu skins
+0              string          TiEmu           TiEmu skin
+>6              string          v               - Version
+>>7             byte            >0              \b %c
+>>9             byte            x               \b.%c
+>>10           byte            x               \b%c
index 76322dd..537c5af 100644 (file)
@@ -28,5 +28,8 @@
 >4     long            x               - version %ld
 # From: Dave Pearson <davep@davep.org>
 # Harbour <URL:http://www.harbour-project.org/> HRB files.
-0     string \xc0HRB   Harbour HRB file
->4    short  x         version %d
+0      string          \xc0HRB         Harbour HRB file
+>4     short           x               version %d
+
+# From: "Stefan A. Haubenthal" <polluks@web.de>
+0      belong          0x000001EB      Plan 9 executable
diff --git a/file/magic/Magdir/varied.script b/file/magic/Magdir/varied.script
new file mode 100644 (file)
index 0000000..a3e0972
--- /dev/null
@@ -0,0 +1,12 @@
+#------------------------------------------------------------------------------
+# varied.script:  file(1) magic for various interpreter scripts
+
+0      string          #!\ /                   a
+>3     string          >\0                     %s script text executable
+0      string          #!\     /               a
+>3     string          >\0                     %s script text executable
+0      string          #!/                     a
+>2     string          >\0                     %s script text executable
+0      string          #!\                     script text executable
+>3     string          >\0                     for %s
+
index 857a4a9..6af543c 100644 (file)
@@ -3,10 +3,10 @@
 # VMware specific files (deducted from version 1.1 and log file entries)
 # Anthon van der Neut (anthon@mnt.org)
 0      belong  0x4d52564e      VMware nvram 
-0      belong  0x434f5744      
->8     byte    3               VMware virtual disk 
+0      belong  0x434f5744      VMware
+>4     byte    3               virtual disk 
 >>32   lelong  x               (%d/
 >>36   lelong  x               \b%d/
 >>40   lelong  x               \b%d)
->8     byte    2               VMware undoable disk
+>4     byte    2               undoable disk
 >>32   string  >\0             (%s)
index 8977845..e2596cb 100644 (file)
@@ -17,6 +17,9 @@
 ##>4           byte            0               revision 0
 >4             byte            0
 ##>>14         lelong          x               (Serial %lX)
+# non-Vorbis content: FLAC (Free Loss-lessy Audio Codec,
+# http://flac.sourceforge.net)
+>>28           string          fLaC            \b, FLAC audio
 # --- First vorbis packet - general header ---
 >>28           string          \x01vorbis      \b, Vorbis audio,
 >>>35          lelong          !0              UNKNOWN VERSION %lu,
 # Minimal, nominal and maximal bitrates specified when encoding
 >>>>48         string          <\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff       \b,
 # The above tests if at least one of these is specified:
->>>>>44                lelong          !-1
+>>>>>52                lelong          !-1
 # Vorbis RC2 has a bug which puts -1000 in the min/max bitrate fields
 # instead of -1.
 # Vorbis 1.0 uses 0 instead of -1.
->>>>>>44       lelong          !-1000
->>>>>>>44      lelong          !0
->>>>>>>>44     lelong          x               >%lu
->>>>>48                lelong          !-1
->>>>>>48       lelong          x               ~%lu
->>>>>52                lelong          !-1
 >>>>>>52       lelong          !0
 >>>>>>>52      lelong          !-1000
 >>>>>>>>52     lelong          x               <%lu
+>>>>>48                lelong          !-1
+>>>>>>48       lelong          x               ~%lu
+>>>>>44                lelong          !-1
+>>>>>>44       lelong          !-1000
+>>>>>>>44      lelong          !0
+>>>>>>>>44     lelong          x               >%lu
 >>>>>48                string          <\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff       bps
 # -- Second vorbis header packet - the comments
 # A kludge to read the vendor string.  It's a counted string, not a
@@ -52,7 +55,7 @@
 # in a different place, so we must use an indirect offset.
 >>>(84.b+85)           string          \x03vorbis
 >>>>(84.b+96)          string/c        Xiphophorus\ libVorbis\ I       \b, created by: Xiphophorus libVorbis I
->>>>>(84.b+120)                string          >00000000       %.8s
+>>>>>(84.b+120)                string          >00000000       
 # Map to beta version numbers:
 >>>>>>(84.b+120)       string          <20000508       (<beta1 - prepublic)
 >>>>>>(84.b+120)       string          20000508        (beta1/2)
@@ -74,6 +77,7 @@
 >>>>>>(84.b+120)       string          >20011231       (pre-1.0 CVS)
 # For the 1.0 release, Xiphophorus is replaced by Xiph.Org
 >>>>(84.b+96)          string/c        Xiph.Org\ libVorbis\ I  \b, created by: Xiph.Org libVorbis I
->>>>>(84.b+117)                string          >00000000       %.8s
+>>>>>(84.b+117)                string          >00000000       
 >>>>>>(84.b+117)       string          <20020717       (pre-1.0 CVS)
 >>>>>>(84.b+117)       string          20020717        (1.0)
+>>>>>>(84.b+117)       string          >20020717       (post-1.0 CVS)
similarity index 84%
rename from file/magic/Magdir/wordperfect
rename to file/magic/Magdir/wordprocessors
index c77ac8d..9b122c1 100644 (file)
@@ -1,3 +1,16 @@
+
+#------------------------------------------------------------------------------
+# wordprocessors:  file(1) magic fo word processors.
+#
+####### PWP file format used on Smith Corona Personal Word Processors:
+2      string  \040\040\040\040\040\040\040\040\040\040\040ML4D\040\'92        Smith Corona PWP
+>24    byte    2       \b, single spaced
+>24    byte    3       \b, 1.5 spaced
+>24    byte    4       \b, double spaced
+>25    byte    0x42    \b, letter
+>25    byte    0x54    \b, legal
+>26    byte    0x46    \b, A4
+
 #WordPerfect type files Version 1.6 - PLEASE DO NOT REMOVE THIS LINE
 0      string  \377WPC\020\000\000\000\022\012\001\001\000\000\000\000 (WP) loadable text
 >15    byte    0       Optimized for Intel
 >8     long    18219264        WordPerfect graphic image (1.0)
 >8     long    18219520        WordPerfect graphic image (2.0)
 #end of WordPerfect type files Version 1.6 - PLEASE DO NOT REMOVE THIS LINE
+
+# Hangul (Korean) Word Processor File
+0      string  HWP\ Document\ File     Hangul (Korean) Word Processor File
+
+# CosmicBook, from Benoît Rouits
+0       string  CSBK    Ted Neslson's CosmicBook hypertext file
+
diff --git a/file/magic/Magdir/xwindows b/file/magic/Magdir/xwindows
new file mode 100644 (file)
index 0000000..1805d45
--- /dev/null
@@ -0,0 +1,25 @@
+
+#------------------------------------------------------------------------------
+# xwindows:  file(1) magic for various X/Window system file formats.
+
+# Compiled X Keymap 
+# XKM (compiled X keymap) files (including version and byte ordering)
+1      string  mkx                             Compiled XKB Keymap: lsb,
+>0     byte    >0                              version %d
+>0     byte    =0                              obsolete
+0      string  xkm                             Compiled XKB Keymap: msb,
+>3     byte    >0                              version %d
+>0     byte    =0                              obsolete
+
+# xfsdump archive
+0      string  xFSdump0                        xfsdump archive
+>8     long    x       (version %d)
+
+# Jaleo XFS files
+0      long    395726                          Jaleo XFS file
+>4     long    x                               - version %ld
+>8     long    x                               - [%ld -
+>20    long    x                               \b%ldx
+>24    long    x                               \b%ldx
+>28    long    1008                            \bYUV422]
+>28    long    1000                            \bRGB24]
index 67735e8..8e4213c 100644 (file)
@@ -1,6 +1,4 @@
-#pkgdata_DATA = magic magic.mime magic.mgc magic.mime.mgc
-pkglibdir =  @prefix@/lib/rpm
-pkglib_DATA = magic magic.mime magic.mgc magic.mime.mgc
+pkgdata_DATA = magic magic.mime magic.mgc magic.mime.mgc
 
 EXTRA_DIST = magic2mime Localstuff Header magic.mime $(magic_FRAGMENTS)
 
@@ -18,10 +16,10 @@ magic: Header Localstuff $(magic_FRAGMENTS)
        done >> $@
 
 magic.mgc: magic
-       $(top_builddir)/src/file -C -m $(srcdir)/magic
+       $(top_builddir)/src/file -C -m magic
 
 magic.mime.mgc: magic.mime
-       $(top_builddir)/src/file -C -m $(srcdir)/magic.mime
+       $(top_builddir)/src/file -C -m magic.mime
 
 magic_FRAGMENTS = \
 Magdir/acorn \
@@ -45,7 +43,9 @@ Magdir/blender \
 Magdir/blit \
 Magdir/bout \
 Magdir/bsdi \
+Magdir/cad \
 Magdir/c-lang \
+Magdir/c64 \
 Magdir/cddb \
 Magdir/chi \
 Magdir/chord \
@@ -54,11 +54,12 @@ Magdir/citrus \
 Magdir/claris \
 Magdir/clipper \
 Magdir/commands \
+Magdir/communications \
 Magdir/compress \
 Magdir/console \
 Magdir/convex \
 Magdir/ctags \
-Magdir/cvs \
+Magdir/dact \
 Magdir/database \
 Magdir/diamond \
 Magdir/diff \
@@ -70,12 +71,16 @@ Magdir/editors \
 Magdir/elf \
 Magdir/encore \
 Magdir/epoc \
+Magdir/fcs \
 Magdir/filesystems \
 Magdir/flash \
 Magdir/fonts \
 Magdir/frame \
 Magdir/freebsd \
 Magdir/fsav \
+Magdir/games \
+Magdir/geos \
+Magdir/gcc \
 Magdir/gimp \
 Magdir/gnu \
 Magdir/grace \
@@ -110,6 +115,7 @@ Magdir/mcrypt \
 Magdir/mime \
 Magdir/mips \
 Magdir/mirage \
+Magdir/misctools \
 Magdir/mkid \
 Magdir/mlssa \
 Magdir/mmdf \
@@ -123,6 +129,7 @@ Magdir/netbsd \
 Magdir/netscape \
 Magdir/news \
 Magdir/nitpicker \
+Magdir/ocaml \
 Magdir/octave \
 Magdir/olf \
 Magdir/os2 \
@@ -136,13 +143,16 @@ Magdir/pdp \
 Magdir/perl \
 Magdir/pgp \
 Magdir/pkgadd \
+Magdir/plan9 \
 Magdir/plus5 \
 Magdir/printer \
 Magdir/project \
 Magdir/psdbms \
+Magdir/psion \
 Magdir/pulsar \
 Magdir/pyramid \
 Magdir/python \
+Magdir/revision \
 Magdir/riff \
 Magdir/rpm \
 Magdir/rtf \
@@ -150,8 +160,10 @@ Magdir/sc \
 Magdir/sccs \
 Magdir/sendmail \
 Magdir/sequent \
+Magdir/sgi \
 Magdir/sgml \
 Magdir/sharc \
+Magdir/sinclair \
 Magdir/sketch \
 Magdir/smalltalk \
 Magdir/sniffer \
@@ -172,6 +184,7 @@ Magdir/typeset \
 Magdir/unknown \
 Magdir/uuencode \
 Magdir/varied.out \
+Magdir/varied.script \
 Magdir/vax \
 Magdir/vicar \
 Magdir/visx \
@@ -179,8 +192,9 @@ Magdir/vms \
 Magdir/vmware \
 Magdir/vorbis \
 Magdir/vxl \
-Magdir/wordperfect \
+Magdir/wordprocessors \
 Magdir/xdelta \
 Magdir/xenix \
+Magdir/xwindows \
 Magdir/zilog \
 Magdir/zyxel
diff --git a/file/magic/Makefile.in b/file/magic/Makefile.in
new file mode 100644 (file)
index 0000000..7dfc92a
--- /dev/null
@@ -0,0 +1,497 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# 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@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+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 = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+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@
+FSECT5_FALSE = @FSECT5_FALSE@
+FSECT5_TRUE = @FSECT5_TRUE@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+fsect = @fsect@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+pkgdata_DATA = magic magic.mime magic.mgc magic.mime.mgc
+
+EXTRA_DIST = magic2mime Localstuff Header magic.mime $(magic_FRAGMENTS)
+
+CLEANFILES = magic magic.mgc magic.mime.mgc
+
+magic_FRAGMENTS = \
+Magdir/acorn \
+Magdir/adi \
+Magdir/adventure \
+Magdir/allegro \
+Magdir/alliant \
+Magdir/alpha \
+Magdir/amanda \
+Magdir/amigaos \
+Magdir/animation \
+Magdir/apl \
+Magdir/apple \
+Magdir/applix \
+Magdir/archive \
+Magdir/asterix \
+Magdir/att3b \
+Magdir/audio \
+Magdir/bFLT \
+Magdir/blender \
+Magdir/blit \
+Magdir/bout \
+Magdir/bsdi \
+Magdir/cad \
+Magdir/c-lang \
+Magdir/c64 \
+Magdir/cddb \
+Magdir/chi \
+Magdir/chord \
+Magdir/cisco \
+Magdir/citrus \
+Magdir/claris \
+Magdir/clipper \
+Magdir/commands \
+Magdir/communications \
+Magdir/compress \
+Magdir/console \
+Magdir/convex \
+Magdir/ctags \
+Magdir/dact \
+Magdir/database \
+Magdir/diamond \
+Magdir/diff \
+Magdir/digital \
+Magdir/dolby \
+Magdir/dump \
+Magdir/dyadic \
+Magdir/editors \
+Magdir/elf \
+Magdir/encore \
+Magdir/epoc \
+Magdir/fcs \
+Magdir/filesystems \
+Magdir/flash \
+Magdir/fonts \
+Magdir/frame \
+Magdir/freebsd \
+Magdir/fsav \
+Magdir/games \
+Magdir/geos \
+Magdir/gcc \
+Magdir/gimp \
+Magdir/gnu \
+Magdir/grace \
+Magdir/gringotts \
+Magdir/hdf \
+Magdir/hitachi-sh \
+Magdir/hp \
+Magdir/human68k \
+Magdir/ibm370 \
+Magdir/ibm6000 \
+Magdir/iff \
+Magdir/images \
+Magdir/intel \
+Magdir/interleaf \
+Magdir/island \
+Magdir/ispell \
+Magdir/java \
+Magdir/jpeg \
+Magdir/karma \
+Magdir/lecter \
+Magdir/lex \
+Magdir/lif \
+Magdir/linux \
+Magdir/lisp \
+Magdir/mach \
+Magdir/macintosh \
+Magdir/magic \
+Magdir/mail.news \
+Magdir/maple \
+Magdir/mathematica \
+Magdir/mcrypt \
+Magdir/mime \
+Magdir/mips \
+Magdir/mirage \
+Magdir/misctools \
+Magdir/mkid \
+Magdir/mlssa \
+Magdir/mmdf \
+Magdir/modem \
+Magdir/motorola \
+Magdir/msdos \
+Magdir/msvc \
+Magdir/natinst \
+Magdir/ncr \
+Magdir/netbsd \
+Magdir/netscape \
+Magdir/news \
+Magdir/nitpicker \
+Magdir/ocaml \
+Magdir/octave \
+Magdir/olf \
+Magdir/os2 \
+Magdir/os9 \
+Magdir/osf1 \
+Magdir/palm \
+Magdir/parix \
+Magdir/pbm \
+Magdir/pdf \
+Magdir/pdp \
+Magdir/perl \
+Magdir/pgp \
+Magdir/pkgadd \
+Magdir/plan9 \
+Magdir/plus5 \
+Magdir/printer \
+Magdir/project \
+Magdir/psdbms \
+Magdir/psion \
+Magdir/pulsar \
+Magdir/pyramid \
+Magdir/python \
+Magdir/revision \
+Magdir/riff \
+Magdir/rpm \
+Magdir/rtf \
+Magdir/sc \
+Magdir/sccs \
+Magdir/sendmail \
+Magdir/sequent \
+Magdir/sgi \
+Magdir/sgml \
+Magdir/sharc \
+Magdir/sinclair \
+Magdir/sketch \
+Magdir/smalltalk \
+Magdir/sniffer \
+Magdir/softquad \
+Magdir/spectrum \
+Magdir/sql \
+Magdir/sun \
+Magdir/sysex \
+Magdir/teapot \
+Magdir/terminfo \
+Magdir/tex \
+Magdir/tgif \
+Magdir/ti-8x \
+Magdir/timezone \
+Magdir/troff \
+Magdir/tuxedo \
+Magdir/typeset \
+Magdir/unknown \
+Magdir/uuencode \
+Magdir/varied.out \
+Magdir/varied.script \
+Magdir/vax \
+Magdir/vicar \
+Magdir/visx \
+Magdir/vms \
+Magdir/vmware \
+Magdir/vorbis \
+Magdir/vxl \
+Magdir/wordprocessors \
+Magdir/xdelta \
+Magdir/xenix \
+Magdir/xwindows \
+Magdir/zilog \
+Magdir/zyxel
+
+subdir = magic
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+DIST_SOURCES =
+DATA = $(pkgdata_DATA)
+
+DIST_COMMON = $(srcdir)/Makefile.in Makefile.am
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  magic/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+pkgdataDATA_INSTALL = $(INSTALL_DATA)
+install-pkgdataDATA: $(pkgdata_DATA)
+       @$(NORMAL_INSTALL)
+       $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)
+       @list='$(pkgdata_DATA)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         echo " $(pkgdataDATA_INSTALL) $$d$$p $(DESTDIR)$(pkgdatadir)/$$f"; \
+         $(pkgdataDATA_INSTALL) $$d$$p $(DESTDIR)$(pkgdatadir)/$$f; \
+       done
+
+uninstall-pkgdataDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(pkgdata_DATA)'; for p in $$list; do \
+         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         echo " rm -f $(DESTDIR)$(pkgdatadir)/$$f"; \
+         rm -f $(DESTDIR)$(pkgdatadir)/$$f; \
+       done
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+       $(mkinstalldirs) $(distdir)/Magdir
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkinstalldirs) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$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: check-am
+all-am: Makefile $(DATA)
+
+installdirs:
+       $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+       -rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-pkgdataDATA
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-pkgdataDATA
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+       distclean distclean-generic distclean-libtool distdir dvi \
+       dvi-am info info-am install install-am install-data \
+       install-data-am install-exec install-exec-am install-info \
+       install-info-am install-man install-pkgdataDATA install-strip \
+       installcheck installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+       uninstall-info-am uninstall-pkgdataDATA
+
+
+magic: Header Localstuff $(magic_FRAGMENTS)
+       cat $(srcdir)/Header $(srcdir)/Localstuff > $@
+       for frag in $(magic_FRAGMENTS); do \
+         if test -f $(srcdir)/$$frag; then \
+           f=$(srcdir)/$$frag; \
+         else \
+           f=$$frag; \
+         fi; \
+          cat $$f; \
+       done >> $@
+
+magic.mgc: magic
+       $(top_builddir)/src/file -C -m magic
+
+magic.mime.mgc: magic.mime
+       $(top_builddir)/src/file -C -m magic.mime
+# 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:
index 7bec3fd..3aa33cf 100644 (file)
 # Microsoft WAVE format (*.wav)
 # [GRR 950115:  probably all of the shorts and longs should be leshort/lelong]
 #                                      Microsoft RIFF
-0      string          RIFF            audio/unknown   
+0      string          RIFF
 #                                      - WAVE format
->8     string          WAVE            audio/x-wav     
+>8     string          WAVE            audio/x-wav
 >8     string          AVI             video/x-msvideo
 #
 0      belong          0x2e7261fd      application/x-realaudio
+>8     string          CDRA            image/x-coreldraw
+
 
 # MPEG Layer 3 sound files
 0       beshort                &0xffe0         audio/mpeg
 #MP3 with ID3 tag
 0      string          ID3             audio/mpeg
 # Ogg/Vorbis
-0      string          OggS            audio/x-ogg
+0      string          OggS            audio/ogg
 
 #------------------------------------------------------------------------------
 # c-lang:  file(1) magic for C programs or various scripts
 
 #
 # zsh/ash/ae/nawk/gawk magic from cameron@cs.unsw.oz.au (Cameron Simpson)
+0       string          #!/bin/zsh             application/x-shellscript
+0       string          #!/usr/bin/zsh         application/x-shellscript
 0       string          #!/usr/local/bin/zsh    application/x-shellscript
 0       string          #!\ /usr/local/bin/zsh  application/x-shellscript
 0       string          #!/usr/local/bin/ash    application/x-shellscript
 
 0              string                  PK\003\004              application/x-zip
 
+# RAR archiver (Greg Roelofs, newt@uchicago.edu)
+0      string          Rar!            application/x-rar
+
 # According to gzip.h, this is the correct byte order for packed data.
 0      string          \037\036        application/octet-stream
 #
 0      lelong&0x8080ffff       0x0000041a      application/x-arc       squeezed
 0      lelong&0x8080ffff       0x0000061a      application/x-arc       crunched
 
-0      leshort 0xea60  application/octet-stream        x-arj
+0      leshort 0xea60  application/x-arj
 
 # LHARC/LHA archiver (Greg Roelofs, newt@uchicago.edu)
 2      string  -lh0-   application/x-lharc     lh0
 0      string          \<!doctype\ HTML        text/html
 0      string          \<!DOCTYPE\ HTML        text/html
 0      string          \<!doctype\ html        text/html
+0      string          \<!doctype\ HTML        text/html
 
 #------------------------------------------------------------------------------
 # images:  file(1) magic for image formats (see also "c-lang" for XPM bitmaps)
 0      string          Forward\ to     message/rfc822  7bit
 0      string          Pipe\ to        message/rfc822  7bit
 0      string          Return-Path:    message/rfc822  7bit
+0      string          Received:       message/rfc822
 0      string          Path:           message/news    8bit
 0      string          Xref:           message/news    8bit
 0      string          From:           message/rfc822  7bit
 #>34   string          >\0             (%s)
 
 # Texinfo and GNU Info, from Daniel Quinlan (quinlan@yggdrasil.com)
-#0     string          \\input\ texinfo        Texinfo source text
-#0     string          This\ is\ Info\ file    GNU Info text
+0      string          \\input\ texinfo                text/x-texinfo
+0      string          This\ is\ Info\ file    text/x-info
 
 # correct TeX magic for Linux (and maybe more)
 # from Peter Tobias (tobias@server.et-inf.fho-emden.de)
 0      string          MOVI                            video/sgi
 4      string          moov                            video/quicktime moov
 4      string          mdat                            video/quicktime mdat
-# MNG
-0      string          \x8aMNG                         video/x-mng
 # The contributor claims:
 #   I couldn't find a real magic number for these, however, this
 #   -appears- to work.  Note that it might catch other files, too,
 
 # MNG Video Format, <URL:http://www.libpng.org/pub/mng/spec/>
 0      string          \x8aMNG                 video/x-mng
+0      string          \x8aJNG                 video/x-jng
+
+#------------------------------------------------------------------------------
+# Hierarchical Data Format, used to facilitate scientific data exchange
+# specifications at http://hdf.ncsa.uiuc.edu/
+0      belong          0x0e031301      Hierarchical Data Format (version 4) data
+0      string          \211HDF\r\n\032 Hierarchical Data Format (version 5) data
+
+# Adobe Photoshop
+0      string          8BPS                    image/x-photoshop
+
+# Felix von Leitner <felix-file@fefe.de>
+0      string          d8:announce             application/x-bittorrent
+
+
+# lotus 1-2-3 document
+0      belong  0x00001a00      application/x-123
+0      belong  0x00000200      application/x-123
+
+# MS Access database
+4      string  Standard\ Jet\ DB       application/msaccess
+
+## magic for XBase files
+#0      byte       0x02        
+#>8     leshort          >0
+#>>12   leshort    0   application/x-dbf
+#
+#0      byte       0x03        
+#>8     leshort          >0
+#>>12   leshort    0   application/x-dbf
+#
+#0      byte       0x04        
+#>8     leshort          >0
+#>>12   leshort    0   application/x-dbf
+#
+#0      byte       0x05        
+#>8     leshort          >0
+#>>12   leshort    0   application/x-dbf
+#
+#0      byte       0x30
+#>8     leshort          >0
+#>>12   leshort    0   application/x-dbf
+#
+#0      byte       0x43
+#>8     leshort          >0
+#>>12   leshort    0   application/x-dbf
+#
+#0      byte       0x7b
+#>8     leshort          >0
+#>>12   leshort    0   application/x-dbf
+#
+#0      byte       0x83        
+#>8     leshort          >0
+#>>12   leshort    0   application/x-dbf
+#
+#0      byte       0x8b
+#>8     leshort          >0
+#>>12   leshort    0   application/x-dbf
+#
+#0      byte       0x8e        
+#>8     leshort          >0
+#>>12   leshort    0   application/x-dbf
+#
+#0      byte       0xb3
+#>8     leshort          >0
+#>>12   leshort    0   application/x-dbf
+#
+#0      byte       0xf5
+#>8     leshort          >0
+#>>12   leshort    0   application/x-dbf
+#
+#0     leshort         0x0006          application/x-dbt
+
+# Debian has entries for the old PGP formats:
+# pgp:  file(1) magic for Pretty Good Privacy
+# see http://lists.gnupg.org/pipermail/gnupg-devel/1999-September/016052.html
+0       beshort         0x9900                  text/PGP key public ring
+0       beshort         0x9501                  text/PGP key security ring
+0       beshort         0x9500                  text/PGP key security ring
+0       beshort         0xa600                  text/PGP encrypted data
+0       string          -----BEGIN\040PGP       text/PGP armored data 
+>15     string          PUBLIC\040KEY\040BLOCK- public key block
+>15     string          MESSAGE-                message
+>15     string          SIGNED\040MESSAGE-      signed message
+>15     string          PGP\040SIGNATURE-       signature
+0       beshort         0x8501                  data
+#
+# GnuPG Magic:
+# 
+0       beshort         0x9901                  text/GnuPG key public ring
+0       beshort         0x8501                  text/OpenPGP data
+
+# flash:        file(1) magic for Macromedia Flash file format
+#
+# See
+#
+#       http://www.macromedia.com/software/flash/open/
+#
+0      string          FWS             
+>3     byte            x                       application/x-shockwave-flash
+
+# The following paramaters are created for Namazu.
+# <http://www.namazu.org/>
+#
+# 1999/08/13
+#0     string          \<!--\ MHonArc          text/html; x-type=mhonarc
+0      string          BZh                     application/x-bzip2
+
+# 1999/09/09
+# VRML (suggested by Masao Takaku)
+0      string          #VRML\ V1.0\ ascii      model/vrml
+0      string          #VRML\ V2.0\ utf8       model/vrml
+
+#------------------------------------------------------------------------------
+# ichitaro456: file(1) magic for Just System Word Processor Ichitaro
+#
+# Contributor kenzo-:
+# Reversed-engineered JS Ichitaro magic numbers
+#
+
+0      string          DOC
+>43    byte            0x14            application/ichitaro4
+>144   string  JDASH           application/ichitaro4
+
+0      string          DOC
+>43    byte            0x15            application/ichitaro5
+
+0      string          DOC
+>43    byte            0x16            application/ichitaro6
+
+#------------------------------------------------------------------------------
+# office97: file(1) magic for MicroSoft Office files
+#
+# Contributor kenzo-:
+# Reversed-engineered MS Office magic numbers
+#
+
+#0       string          \320\317\021\340\241\261\032\341
+#>48     byte            0x1B            application/excel
+
+2080   string  Microsoft\ Excel\ 5.0\ Worksheet        application/excel
+2114   string  Biff5                                   application/excel
+
+0       string \224\246\056            application/msword
+
+0      belong  0x31be0000              application/msword
+
+0      string  PO^Q`                   application/msword
+
+0      string  \320\317\021\340\241\261\032\341
+>546   string  bjbj                    application/msword
+>546   string  jbjb                    application/msword
+
+512    string  R\0o\0o\0t\0\ \0E\0n\0t\0r\0y   application/msword
+
+2080   string  Microsoft\ Word\ 6.0\ Document  application/msword
+2080   string  Documento\ Microsoft\ Word\ 6   application/msword
+2112   string  MSWordDoc                       application/msword
+
+#0     string  \320\317\021\340\241\261\032\341        application/powerpoint
+0      string  \320\317\021\340\241\261\032\341        application/msword
+
+0       string  #\ PaCkAgE\ DaTaStReAm  application/x-svr4-package
+
+
+# WinNT/WinCE PE files (Warner Losh, imp@village.org)
+#
+128            string  PE\000\000      application/octet-stream
+0              string  PE\000\000      application/octet-stream
+
+# miscellaneous formats
+0              string  LZ              application/octet-stream
+
+
+# .EXE formats (Greg Roelofs, newt@uchicago.edu)
+#
+0              string  MZ
+>24            string  @               application/octet-stream
+
+0              string  MZ
+>30            string  Copyright\ 1989-1990\ PKWARE\ Inc.      application/x-zip
+
+0              string  MZ
+>30            string  PKLITE\ Copr.   application/x-zip
+
+0              string  MZ
+>36            string  LHa's\ SFX      application/x-lha
+
+0              string  MZ              application/octet-stream
+
+# LHA archiver
+2              string  -lh
+>6             string  -               application/x-lha
+
+
+# Zoo archiver
+20             lelong  0xfdc4a7dc      application/x-zoo
+
+# ARC archiver
+0              lelong&0x8080ffff       0x0000081a      application/x-arc
+0              lelong&0x8080ffff       0x0000091a      application/x-arc
+0              lelong&0x8080ffff       0x0000021a      application/x-arc
+0              lelong&0x8080ffff       0x0000031a      application/x-arc
+0              lelong&0x8080ffff       0x0000041a      application/x-arc
+0              lelong&0x8080ffff       0x0000061a      application/x-arc
+
+# Microsoft Outlook's Transport Neutral Encapsulation Format (TNEF)
+0              lelong  0x223e9f78      application/ms-tnef
+
+
+#
+# QuickTime format
+# Contributer: Peter Breton
+#
+
+0      string          MOVI            video/quicktime
+4      string          moov            video/quicktime
+4      string          mdat            video/quicktime
+
+# Video Formate
+0       string          RIFF
+# AVI == Audio Video Interleave
+>8      string          AVI\            
+#>0xbc   string         >\0             video/x-%s
+
+>>0xbc  string          DIV3            video/x-DivX-3
+>>0xbc  string          div3            video/x-divX-3
+>>0xbc  string          DIV4            video/x-DivX-4
+>>0x70  string          DX50            video/x-DIVX-5
+>>0x70  string          MP4             video/x-MPEG-4
+>>0xbc  string          DIVX            video/x-DivX
+>8      string          WAVE            audio/x-wav
+
+# From: stephane.loeuillet@tiscali.f
+# http://www.djvuzone.org/
+0      string          AT&TFORM        image/x.djvu
index 45796bb..c83ee59 100755 (executable)
@@ -1,6 +1,6 @@
 #! /usr/local/bin/perl
 # -*- PERL -*-
-# Id: magic2mime,v 1.1 1998/02/15 23:18:53 christos Exp 
+# $Id: magic2mime,v 1.2 2003/03/23 04:17:27 christos Exp $
 # Copyright (c) 1996, 1997 vax@linkdead.paranoia.com (VaX#n8)
 #
 # Usage: echo 'your-file-output-here' | file_to_ctype.pl
index 1fdcd90..922a27e 100644 (file)
@@ -4,7 +4,7 @@
 # Created: 1993-05-16
 # Public domain
 
-# Id: mkinstalldirs,v 1.2 2000/11/13 00:30:49 christos Exp 
+# $Id: mkinstalldirs,v 1.2 2000/11/13 00:30:49 christos Exp $
 
 errstatus=0
 
diff --git a/file/python/README b/file/python/README
new file mode 100644 (file)
index 0000000..ba22eb0
--- /dev/null
@@ -0,0 +1,26 @@
+
+This directory contains Python bindings to allow you to access the
+libmagic api. At the moment their status is "experimental" and
+they are not built by default. You may need to edit include and library
+search paths in setup.py so that python's distutils build process can 
+find the magic header and lib files.
+
+In order to be able to compile magic-python you need to have python
+and the python-dev packages installed.
+
+Python libraries are always built for a particular version of Python
+(2.2, 2.3, etc), and libraries built for one version will not be seen
+by another.
+
+To build:
+
+$ python setup.py build
+
+Now, you can install the modules:
+
+$ cp build/lib.*/magic.so /usr/lib/python2.3/lib-dynload/
+
+(the directory /usr/lib/python2.3 may vary, depending on your installation)
+
+magic-python should work now!
+
diff --git a/file/python/example.py b/file/python/example.py
new file mode 100644 (file)
index 0000000..fc41a86
--- /dev/null
@@ -0,0 +1,16 @@
+import magic
+
+ms = magic.open(magic.MAGIC_NONE)
+ms.load()
+type =  ms.file("/path/to/some/file")
+print type
+
+f = file("/path/to/some/file", "r")
+buffer = f.read(4096)
+f.close()
+
+type = ms.buffer(buffer)
+print type
+
+ms.close()
+
diff --git a/file/python/py_magic.c b/file/python/py_magic.c
new file mode 100644 (file)
index 0000000..46562e6
--- /dev/null
@@ -0,0 +1,351 @@
+/*
+   Python wrappers for magic functions.
+
+   Copyright (C) Brett Funderburg, Deepfile Corp. Austin, TX, US 2003
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions
+   are met:
+   1. Redistributions of source code must retain the above copyright
+      notice immediately at the beginning of the file, without modification,
+      this list of conditions, and the following disclaimer.
+   2. Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+   3. The name of the author may not be used to endorse or promote products
+      derived from this software without specific prior written permission.
+    
+   THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+   ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+   ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+   OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+   HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+   LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+   OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+   SUCH DAMAGE.
+*/
+
+#include <Python.h>
+#include <magic.h>
+#include "py_magic.h"
+
+/* Exceptions raised by this module */
+
+PyObject* magic_error_obj;
+
+/* Create a new magic_cookie_hnd object */
+PyObject* new_magic_cookie_handle(magic_t cookie)
+{
+    magic_cookie_hnd* mch;
+
+    mch = PyObject_New(magic_cookie_hnd, &magic_cookie_type);
+
+    mch->cookie = cookie;
+
+    return (PyObject*)mch;
+}
+
+static char _magic_open__doc__[] =
+"Returns a magic cookie on success and None on failure.\n";
+static PyObject* py_magic_open(PyObject* self, PyObject* args)
+{
+    int flags = 0;
+    magic_t cookie;
+
+    if(!PyArg_ParseTuple(args, "i", &flags))
+        return NULL;
+
+    if(!(cookie = magic_open(flags))) {
+        PyErr_SetString(magic_error_obj, "failure initializing magic cookie");
+        return NULL;
+    }
+
+    return new_magic_cookie_handle(cookie);
+}
+
+static char _magic_close__doc__[] =
+"Closes the magic database and deallocates any resources used.\n";
+static PyObject* py_magic_close(PyObject* self, PyObject* args)
+{
+    magic_cookie_hnd* hnd = (magic_cookie_hnd*)self;
+
+    magic_close(hnd->cookie);
+
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+
+static char _magic_error__doc__[] =
+"Returns a textual explanation of the last error or None \
+ if there was no error.\n";
+static PyObject* py_magic_error(PyObject* self, PyObject* args)
+{
+    magic_cookie_hnd* hnd = (magic_cookie_hnd*)self;
+    const char* message = NULL;
+    PyObject* result = Py_None;
+
+    message = magic_error(hnd->cookie);
+
+    if(message != NULL)
+        result = PyString_FromString(message);
+    else
+        Py_INCREF(Py_None);
+
+    return result;
+}
+
+static char _magic_errno__doc__[] =
+"Returns a numeric error code. If return value is 0, an internal \
+ magic error occurred. If return value is non-zero, the value is \
+ an OS error code. Use the errno module or os.strerror() can be used \
+ to provide detailed error information.\n";
+static PyObject* py_magic_errno(PyObject* self, PyObject* args)
+{
+    magic_cookie_hnd* hnd = (magic_cookie_hnd*)self;
+    return PyInt_FromLong(magic_errno(hnd->cookie));
+}
+
+static char _magic_file__doc__[] =
+"Returns a textual description of the contents of the argument passed \
+ as a filename or None if an error occurred and the MAGIC_ERROR flag \
+ is set. A call to errno() will return the numeric error code.\n";
+static PyObject* py_magic_file(PyObject* self, PyObject* args)
+{
+    magic_cookie_hnd* hnd = (magic_cookie_hnd*)self;
+    char* filename = NULL;
+    const char* message = NULL;
+    PyObject* result = Py_None;
+
+    if(!(PyArg_ParseTuple(args, "s", &filename)))
+        return NULL;
+
+    message = magic_file(hnd->cookie, filename);
+
+    if(message != NULL)
+        result = PyString_FromString(message);
+    else
+        Py_INCREF(Py_None);
+
+    return result;
+}
+
+static char _magic_buffer__doc__[] =
+"Returns a textual description of the contents of the argument passed \
+ as a buffer or None if an error occurred and the MAGIC_ERROR flag \
+ is set. A call to errno() will return the numeric error code.\n";
+static PyObject* py_magic_buffer(PyObject* self, PyObject* args)
+{
+    magic_cookie_hnd* hnd = (magic_cookie_hnd*)self;
+    void* buffer = NULL;
+    int buffer_length = 0;
+    const char* message = NULL;
+    PyObject* result = Py_None;
+
+    if(!(PyArg_ParseTuple(args, "s#", (char**)&buffer, &buffer_length)))
+        return NULL;
+
+    message = magic_buffer(hnd->cookie, buffer, buffer_length);
+
+    if(message != NULL)
+        result = PyString_FromString(message);
+    else
+        Py_INCREF(Py_None);
+
+    return result;
+}
+
+static char _magic_setflags__doc__[] =
+"Set flags on the cookie object.\n \
+ Returns -1 on systems that don't support utime(2) or utimes(2) \
+ when MAGIC_PRESERVE_ATIME is set.\n";
+static PyObject* py_magic_setflags(PyObject* self, PyObject* args)
+{
+    magic_cookie_hnd* hnd = (magic_cookie_hnd*)self;
+    int flags;
+    int result;
+
+    if(!(PyArg_ParseTuple(args, "i", &flags)))
+        return NULL;
+
+    result = magic_setflags(hnd->cookie, flags);
+
+    return PyInt_FromLong(result);
+}
+
+static char _magic_check__doc__[] =
+"Check the validity of entries in the colon separated list of \
+ database files passed as argument or the default database file \
+ if no argument.\n Returns 0 on success and -1 on failure.\n";
+static PyObject* py_magic_check(PyObject* self, PyObject* args)
+{
+    magic_cookie_hnd* hnd = (magic_cookie_hnd*)self;
+    char* filename = NULL;
+    int result;
+
+    if(!(PyArg_ParseTuple(args, "|s", &filename)))
+        return NULL;
+
+    result = magic_check(hnd->cookie, filename);
+
+    return PyInt_FromLong(result);
+}
+
+static char _magic_compile__doc__[] =
+"Compile entries in the colon separated list of database files \
+ passed as argument or the default database file if no argument.\n \
+ Returns 0 on success and -1 on failure.\n \
+ The compiled files created are named from the basename(1) of each file \
+ argument with \".mgc\" appended to it.\n";
+static PyObject* py_magic_compile(PyObject* self, PyObject* args)
+{
+    magic_cookie_hnd* hnd = (magic_cookie_hnd*)self;
+    char* filename = NULL;
+    int result;
+
+    if(!(PyArg_ParseTuple(args, "|s", &filename)))
+        return NULL;
+
+    result = magic_compile(hnd->cookie, filename);
+
+    return PyInt_FromLong(result);
+}
+
+static char _magic_load__doc__[] =
+"Must be called to load entries in the colon separated list of database files \
+ passed as argument or the default database file if no argument before \
+ any magic queries can be performed.\n \
+ Returns 0 on success and -1 on failure.\n";
+static PyObject* py_magic_load(PyObject* self, PyObject* args)
+{
+    magic_cookie_hnd* hnd = (magic_cookie_hnd*)self;
+    char* filename = NULL;
+    int result;
+
+    if(!(PyArg_ParseTuple(args, "|s", &filename)))
+        return NULL;
+
+    result = magic_load(hnd->cookie, filename);
+
+    return PyInt_FromLong(result);
+}
+
+/* object methods */
+
+static PyMethodDef magic_cookie_hnd_methods[] = {
+    { "close", (PyCFunction)py_magic_close,
+      METH_NOARGS, _magic_close__doc__ },
+    { "error", (PyCFunction)py_magic_error,
+      METH_NOARGS, _magic_error__doc__ },
+    { "file", (PyCFunction)py_magic_file,
+      METH_VARARGS, _magic_file__doc__ },
+    { "buffer", (PyCFunction)py_magic_buffer,
+      METH_VARARGS, _magic_buffer__doc__ },
+    { "setflags", (PyCFunction)py_magic_setflags,
+      METH_VARARGS, _magic_setflags__doc__ },
+    { "check", (PyCFunction)py_magic_check,
+      METH_VARARGS, _magic_check__doc__ },
+    { "compile", (PyCFunction)py_magic_compile,
+      METH_VARARGS, _magic_compile__doc__ },
+    { "load", (PyCFunction)py_magic_load,
+      METH_VARARGS, _magic_load__doc__ },
+    { "errno", (PyCFunction)py_magic_errno,
+      METH_NOARGS, _magic_errno__doc__ },
+    { NULL, NULL }
+};
+
+/* module level methods */
+
+static PyMethodDef magic_methods[] = {
+    { "open", (PyCFunction)py_magic_open,
+      METH_VARARGS, _magic_open__doc__ },
+    { NULL, NULL }
+};
+
+static void py_magic_dealloc(PyObject* self)
+{
+    PyObject_Del(self);
+}
+
+static PyObject* py_magic_getattr(PyObject* self, char* attrname)
+{
+    return Py_FindMethod(magic_cookie_hnd_methods, self, attrname);
+}
+
+PyTypeObject magic_cookie_type = {
+    PyObject_HEAD_INIT(NULL)
+    0,
+    "Magic cookie",
+    sizeof(magic_cookie_hnd),
+    0,
+    py_magic_dealloc, /* tp_dealloc */
+    0,                /* tp_print */
+    py_magic_getattr, /* tp_getattr */
+    0,                /* tp_setattr */
+    0,                /* tp_compare */
+    0,                /* tp_repr */
+    0,                /* tp_as_number */
+    0,                /* tp_as_sequence */
+    0,                /* tp_as_mapping */
+    0,                /* tp_hash */
+};
+
+/* Initialize constants */
+
+static struct const_vals {
+    const char* const name;
+    unsigned int value;
+} module_const_vals[] = {
+    { "MAGIC_NONE", MAGIC_NONE },
+    { "MAGIC_DEBUG", MAGIC_DEBUG },
+    { "MAGIC_SYMLINK", MAGIC_SYMLINK },
+    { "MAGIC_COMPRESS", MAGIC_COMPRESS },
+    { "MAGIC_DEVICES", MAGIC_DEVICES },
+    { "MAGIC_MIME", MAGIC_MIME },
+    { "MAGIC_CONTINUE", MAGIC_CONTINUE },
+    { "MAGIC_CHECK", MAGIC_CHECK },
+    { "MAGIC_PRESERVE_ATIME", MAGIC_PRESERVE_ATIME },
+    { "MAGIC_ERROR", MAGIC_ERROR},
+    { NULL }
+};
+
+static void const_init(PyObject* dict)
+{
+    struct const_vals* tmp;
+    PyObject *obj;
+
+    for(tmp = module_const_vals; tmp->name; ++tmp) {
+        obj = PyInt_FromLong(tmp->value);
+        PyDict_SetItemString(dict, tmp->name, obj);
+        Py_DECREF(obj);
+    }
+}
+
+/*
+ * Module initialization
+ */
+
+void initmagic(void)
+{
+    PyObject* module;
+    PyObject* dict;
+
+    /* Initialize module */
+
+    module = Py_InitModule("magic", magic_methods);
+    dict = PyModule_GetDict(module);
+
+    magic_error_obj = PyErr_NewException("magic.error", NULL, NULL);
+    PyDict_SetItemString(dict, "error", magic_error_obj);
+
+    magic_cookie_type.ob_type = &PyType_Type;
+
+    /* Initialize constants */
+
+    const_init(dict);
+
+    if(PyErr_Occurred())
+        Py_FatalError("can't initialize module magic");
+}
diff --git a/file/python/py_magic.h b/file/python/py_magic.h
new file mode 100644 (file)
index 0000000..a11a900
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+   Python wrappers for magic functions.
+
+   Copyright (C) Brett Funderburg, Deepfile Corp. Austin, TX, US 2003
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions
+   are met:
+   1. Redistributions of source code must retain the above copyright
+      notice immediately at the beginning of the file, without modification,
+      this list of conditions, and the following disclaimer.
+   2. Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+   3. The name of the author may not be used to endorse or promote products
+      derived from this software without specific prior written permission.
+    
+   THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+   ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+   ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+   OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+   HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+   LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+   OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+   SUCH DAMAGE.
+*/
+
+#ifndef _PY_MAGIC_H
+#define _PY_MAGIC_H
+
+typedef struct {
+    PyObject_HEAD
+    magic_t cookie;
+} magic_cookie_hnd;
+
+extern PyTypeObject magic_cookie_type;
+
+#endif /* _PY_MAGIC_H */
diff --git a/file/python/setup.py b/file/python/setup.py
new file mode 100644 (file)
index 0000000..7c86194
--- /dev/null
@@ -0,0 +1,16 @@
+# Python distutils build script for magic extension
+from distutils.core import setup, Extension
+
+magic_module = Extension('magic',
+    libraries = ['magic'],
+    library_dirs = ['./','../','../src','/usr/lib/'],
+    include_dirs = ['./','../','../src','/usr/include/'],
+    sources = ['py_magic.c'])
+
+setup (name = 'Magic file extensions',
+    version = '0.1',
+    author = 'Brett Funderburg',
+    author_email = 'brettf@deepfile.com',
+    license = 'BSD',
+    description = 'libmagic python bindings',
+    ext_modules = [magic_module])
diff --git a/file/src/.cvsignore b/file/src/.cvsignore
deleted file mode 100644 (file)
index 142ea47..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-*.lo
-*.la
-.deps
-.depend
-.depend-done
-.libs
-Makefile
-Makefile.in
-listobjs
-file
-file-*.tar.gz
diff --git a/file/src/.splintrc b/file/src/.splintrc
deleted file mode 100644 (file)
index 3374db1..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
--I. -I.. -I../../zlib -DHAVE_CONFIG_H -DSTDC -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGFILE_SOURCE -D__STDC__=1 -DHAVE_STRUCT_STAT_ST_RDEV -DSIZEOF_UINT64_T=8
-
-#+partial
-+forcehints
-
-
--warnunixlib
--warnposix
-
-+unixlib
-
--unrecogcomments       # XXX ignore doxygen markings
-
-+strict                        # lclint level
-
-# --- in progress
-+bounds
-
--fielduse
--exportfcn
--exportheader          # 50
--exporttype
-
-# --- not-yet at strict level
--bitwisesigned         # 86
--elseifcomplete                # 2
--forblock              # 6
--ifblock               # 231
--incondefs             # 64
--namechecks            # tedious ANSI compliance checks
--ptrarith              # tedious
-
--mustdefine            # 25
--shiftimplementation   # 148 ctype.h
-
--strictops             # 37
--whileblock            # 16
-
-# --- not-yet at checks level
--mustfree              # 26
--usedef                        # 31
-
-# --- not-yet at standard level
-+boolint               # 38
-+charint               # 147
-+ignorequals           # 49
-+matchanyintegral      # 77
index 940c4e6..4b92388 100644 (file)
@@ -1,40 +1,15 @@
-LINT = splint
+MAGIC   = $(pkgdatadir)/magic
+lib_LTLIBRARIES = libmagic.la
+include_HEADERS = magic.h
 
-BUILT_SOURCES = listobjs $(man_MANS)
+bin_PROGRAMS = file
 
-#pkgincdir =   @includedir@/fmagic
-#pkginc_HEADERS = file.h
-noinst_HEADERS = debug.h names.h patchlevel.h readelf.h system.h tar.h \
-               file.h
+AM_CPPFLAGS = -DMAGIC='"$(MAGIC)"'
 
-#usrlibdir = $(libdir)@MARK64@
-#usrlib_LTLIBRARIES = libfmagic.la
-
-noinst_LTLIBRARIES = libfmagic.la
-
-libfmagic_la_SOURCES = \
-       apprentice.c ascmagic.c fsmagic.c compress.c \
-       print.c readelf.c softmagic.c
-
-#bin_PROGRAMS =        file
-noinst_PROGRAMS =      file
-
-file_SOURCES = file.c
-file_LDFLAGS = -all-static
-file_LDADD =   libfmagic.la
-
-pkglibdir =  @prefix@/lib/rpm
-MAGIC   = $(pkglibdir)/magic
-CPPFLAGS = -DMAGIC='"$(MAGIC)"'
-
-listobjs:
-       @echo $(libfmagic_la_SOURCES:.c=.lo) > $@
-
-.PHONY: lint
-lint:
-       $(LINT)  $(DEFS) $(INCLUDES) $(file_SOURCES) $(libfmagic_la_SOURCES) $(pkginc_HEADERS) $(noinst_HEADERS)
-
-.PHONY: sources
-sources:
-       @echo $(libfmagic_la_SOURCES:%=file/src/%)
+libmagic_la_SOURCES = magic.c apprentice.c softmagic.c ascmagic.c \
+       compress.c is_tar.c readelf.c print.c fsmagic.c \
+       funcs.c file.h names.h patchlevel.h readelf.h tar.h apptype.c
+libmagic_la_LDFLAGS = -version-info 1:0:0
 
+file_SOURCES = file.c
+file_LDADD = libmagic.la
diff --git a/file/src/Makefile.in b/file/src/Makefile.in
new file mode 100644 (file)
index 0000000..c004a35
--- /dev/null
@@ -0,0 +1,519 @@
+# Makefile.in generated by automake 1.7.9 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# 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@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+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 = :
+host_triplet = @host@
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+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@
+FSECT5_FALSE = @FSECT5_FALSE@
+FSECT5_TRUE = @FSECT5_TRUE@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+fsect = @fsect@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+MAGIC = $(pkgdatadir)/magic
+lib_LTLIBRARIES = libmagic.la
+include_HEADERS = magic.h
+
+bin_PROGRAMS = file
+
+AM_CPPFLAGS = -DMAGIC='"$(MAGIC)"'
+
+libmagic_la_SOURCES = magic.c apprentice.c softmagic.c ascmagic.c \
+       compress.c is_tar.c readelf.c print.c fsmagic.c \
+       funcs.c file.h names.h patchlevel.h readelf.h tar.h apptype.c
+
+libmagic_la_LDFLAGS = -version-info 1:0:0
+
+file_SOURCES = file.c
+file_LDADD = libmagic.la
+subdir = src
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+LTLIBRARIES = $(lib_LTLIBRARIES)
+
+libmagic_la_LIBADD =
+am_libmagic_la_OBJECTS = magic.lo apprentice.lo softmagic.lo ascmagic.lo \
+       compress.lo is_tar.lo readelf.lo print.lo fsmagic.lo funcs.lo \
+       apptype.lo
+libmagic_la_OBJECTS = $(am_libmagic_la_OBJECTS)
+bin_PROGRAMS = file$(EXEEXT)
+PROGRAMS = $(bin_PROGRAMS)
+
+am_file_OBJECTS = file.$(OBJEXT)
+file_OBJECTS = $(am_file_OBJECTS)
+file_DEPENDENCIES = libmagic.la
+file_LDFLAGS =
+
+DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/apprentice.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/apptype.Plo ./$(DEPDIR)/ascmagic.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/compress.Plo ./$(DEPDIR)/file.Po \
+@AMDEP_TRUE@   ./$(DEPDIR)/fsmagic.Plo ./$(DEPDIR)/funcs.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/is_tar.Plo ./$(DEPDIR)/magic.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/print.Plo ./$(DEPDIR)/readelf.Plo \
+@AMDEP_TRUE@   ./$(DEPDIR)/softmagic.Plo
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+       $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(libmagic_la_SOURCES) $(file_SOURCES)
+HEADERS = $(include_HEADERS)
+
+DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.in Makefile.am
+SOURCES = $(libmagic_la_SOURCES) $(file_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --gnu  src/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
+       cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+libLTLIBRARIES_INSTALL = $(INSTALL)
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+       @$(NORMAL_INSTALL)
+       $(mkinstalldirs) $(DESTDIR)$(libdir)
+       @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+         if test -f $$p; then \
+           f="`echo $$p | sed -e 's|^.*/||'`"; \
+           echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f"; \
+           $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f; \
+         else :; fi; \
+       done
+
+uninstall-libLTLIBRARIES:
+       @$(NORMAL_UNINSTALL)
+       @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+           p="`echo $$p | sed -e 's|^.*/||'`"; \
+         echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \
+         $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \
+       done
+
+clean-libLTLIBRARIES:
+       -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+       @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+         test "$$dir" = "$$p" && dir=.; \
+         echo "rm -f \"$${dir}/so_locations\""; \
+         rm -f "$${dir}/so_locations"; \
+       done
+libmagic.la: $(libmagic_la_OBJECTS) $(libmagic_la_DEPENDENCIES) 
+       $(LINK) -rpath $(libdir) $(libmagic_la_LDFLAGS) $(libmagic_la_OBJECTS) $(libmagic_la_LIBADD) $(LIBS)
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+install-binPROGRAMS: $(bin_PROGRAMS)
+       @$(NORMAL_INSTALL)
+       $(mkinstalldirs) $(DESTDIR)$(bindir)
+       @list='$(bin_PROGRAMS)'; for p in $$list; do \
+         p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+         if test -f $$p \
+            || test -f $$p1 \
+         ; then \
+           f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+          echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \
+          $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \
+         else :; fi; \
+       done
+
+uninstall-binPROGRAMS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(bin_PROGRAMS)'; for p in $$list; do \
+         f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+         echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
+         rm -f $(DESTDIR)$(bindir)/$$f; \
+       done
+
+clean-binPROGRAMS:
+       @list='$(bin_PROGRAMS)'; for p in $$list; do \
+         f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+         echo " rm -f $$p $$f"; \
+         rm -f $$p $$f ; \
+       done
+file$(EXEEXT): $(file_OBJECTS) $(file_DEPENDENCIES) 
+       @rm -f file$(EXEEXT)
+       $(LINK) $(file_LDFLAGS) $(file_OBJECTS) $(file_LDADD) $(LIBS)
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/apprentice.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/apptype.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ascmagic.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/compress.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsmagic.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/funcs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/is_tar.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/magic.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/print.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readelf.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/softmagic.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCC_TRUE@     -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+@am__fastdepCC_TRUE@   else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCC_TRUE@   fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+@am__fastdepCC_TRUE@   if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCC_TRUE@     -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
+@am__fastdepCC_TRUE@   else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCC_TRUE@   fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+
+.c.lo:
+@am__fastdepCC_TRUE@   if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
+@am__fastdepCC_TRUE@     -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
+@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
+@am__fastdepCC_TRUE@   else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
+@am__fastdepCC_TRUE@   fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+distclean-libtool:
+       -rm -f libtool
+uninstall-info-am:
+includeHEADERS_INSTALL = $(INSTALL_HEADER)
+install-includeHEADERS: $(include_HEADERS)
+       @$(NORMAL_INSTALL)
+       $(mkinstalldirs) $(DESTDIR)$(includedir)
+       @list='$(include_HEADERS)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         echo " $(includeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(includedir)/$$f"; \
+         $(includeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(includedir)/$$f; \
+       done
+
+uninstall-includeHEADERS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(include_HEADERS)'; for p in $$list; do \
+         f="`echo $$p | sed -e 's|^.*/||'`"; \
+         echo " rm -f $(DESTDIR)$(includedir)/$$f"; \
+         rm -f $(DESTDIR)$(includedir)/$$f; \
+       done
+
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       mkid -fID $$unique
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(ETAGS_ARGS)$$tags$$unique" \
+         || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+            $$tags $$unique
+
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       here=`pwd`; \
+       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+       unique=`for i in $$list; do \
+           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+         done | \
+         $(AWK) '    { files[$$0] = 1; } \
+              END { for (i in files) print i; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && cd $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+       list='$(DISTFILES)'; for file in $$list; do \
+         case $$file in \
+           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+         esac; \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+           dir="/$$dir"; \
+           $(mkinstalldirs) "$(distdir)$$dir"; \
+         else \
+           dir=''; \
+         fi; \
+         if test -d $$d/$$file; then \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$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: check-am
+all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS)
+install-binPROGRAMS: install-libLTLIBRARIES
+
+
+installdirs:
+       $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(bindir) $(DESTDIR)$(includedir)
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \
+       clean-libtool mostlyclean-am
+
+distclean: distclean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-includeHEADERS
+
+install-exec-am: install-binPROGRAMS install-libLTLIBRARIES
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+       mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-includeHEADERS \
+       uninstall-info-am uninstall-libLTLIBRARIES
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+       clean-generic clean-libLTLIBRARIES clean-libtool ctags \
+       distclean distclean-compile distclean-generic distclean-libtool \
+       distclean-tags distdir dvi dvi-am info info-am install \
+       install-am install-binPROGRAMS install-data install-data-am \
+       install-exec install-exec-am install-includeHEADERS \
+       install-info install-info-am install-libLTLIBRARIES install-man \
+       install-strip installcheck installcheck-am installdirs \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \
+       pdf-am ps ps-am tags uninstall uninstall-am \
+       uninstall-binPROGRAMS uninstall-includeHEADERS \
+       uninstall-info-am uninstall-libLTLIBRARIES
+
+# 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/file/src/acconfig.h b/file/src/acconfig.h
new file mode 100644 (file)
index 0000000..e6293da
--- /dev/null
@@ -0,0 +1,60 @@
+/* Autoheader needs me */
+#undef PACKAGE
+
+/* Autoheader needs me */
+#undef VERSION
+
+/* Define if builtin ELF support is enabled.  */
+#undef BUILTIN_ELF
+
+/* Define if ELF core file support is enabled.  */
+#undef ELFCORE
+
+/* Define if the `long long' type works.  */
+#undef HAVE_LONG_LONG
+
+/* Define if we have "tm_zone" in "struct tm".  */
+#undef HAVE_TM_ZONE
+
+/* Define if we have a global "char * []" "tzname" variable.  */
+#undef HAVE_TZNAME
+
+/* Define if we have "tm_isdst" in "struct tm".  */
+#undef HAVE_TM_ISDST
+
+/* Define if we have a global "int" variable "daylight".  */
+#undef HAVE_DAYLIGHT
+
+/* Define if we have a mkstemp */
+#undef HAVE_MKSTEMP
+
+/* Define to `unsigned char' if standard headers don't define.  */
+#undef uint8_t
+
+/* Define to `unsigned short' if standard headers don't define.  */
+#undef uint16_t
+
+/* Define to `unsigned int' if standard headers don't define.  */
+#undef uint32_t
+
+/* Define to `unsigned long long', if available, or `unsigned long', if
+   standard headers don't define.  */
+#undef uint64_t
+
+/* Define to `int' if standard headers don't define.  */
+#undef int32_t
+
+/* FIXME: These have to be added manually because autoheader doesn't know
+   about AC_CHECK_SIZEOF_INCLUDES.  */
+
+/* The number of bytes in a uint8_t.  */
+#define SIZEOF_UINT8_T 0
+
+/* The number of bytes in a uint16_t.  */
+#define SIZEOF_UINT16_T 0
+
+/* The number of bytes in a uint32_t.  */
+#define SIZEOF_UINT32_T 0
+
+/* The number of bytes in a uint64_t.  */
+#define SIZEOF_UINT64_T 0
diff --git a/file/src/acinclude.m4 b/file/src/acinclude.m4
deleted file mode 100644 (file)
index bd52776..0000000
+++ /dev/null
@@ -1,253 +0,0 @@
-dnl cloned from autoconf 2.13 acspecific.m4
-AC_DEFUN([AC_C_LONG_LONG],
-[AC_CACHE_CHECK(for long long, ac_cv_c_long_long,
-[if test "$GCC" = yes; then
-  ac_cv_c_long_long=yes
-else
-AC_TRY_RUN([int main() {
-long long foo = 0;
-exit(sizeof(long long) < sizeof(long)); }],
-ac_cv_c_long_long=yes, ac_cv_c_long_long=no)
-fi])
-if test $ac_cv_c_long_long = yes; then
-  AC_DEFINE(HAVE_LONG_LONG,1,[Define if the `long long' type works.])
-fi
-])
-
-dnl from autoconf 2.13 acspecific.m4, with changes to check for daylight
-
-AC_DEFUN([AC_STRUCT_TIMEZONE_DAYLIGHT],
-[AC_REQUIRE([AC_STRUCT_TM])dnl
-AC_CACHE_CHECK([for tm_zone in struct tm], ac_cv_struct_tm_zone,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#include <$ac_cv_struct_tm>], [struct tm tm; tm.tm_zone;],
-  ac_cv_struct_tm_zone=yes, ac_cv_struct_tm_zone=no)])
-if test "$ac_cv_struct_tm_zone" = yes; then
-  AC_DEFINE(HAVE_TM_ZONE,1,[HAVE_TM_ZONE])
-fi
-AC_CACHE_CHECK(for tzname, ac_cv_var_tzname,
-[AC_TRY_LINK(
-changequote(<<, >>)dnl
-<<#include <time.h>
-#ifndef tzname /* For SGI.  */
-extern char *tzname[]; /* RS6000 and others reject char **tzname.  */
-#endif>>,
-changequote([, ])dnl
-[atoi(*tzname);], ac_cv_var_tzname=yes, ac_cv_var_tzname=no)])
-  if test $ac_cv_var_tzname = yes; then
-    AC_DEFINE(HAVE_TZNAME,1,[HAVE_TZNAME])
-  fi
-
-AC_CACHE_CHECK([for tm_isdst in struct tm], ac_cv_struct_tm_isdst,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#include <$ac_cv_struct_tm>], [struct tm tm; tm.tm_isdst;],
-  ac_cv_struct_tm_isdst=yes, ac_cv_struct_tm_isdst=no)])
-if test "$ac_cv_struct_tm_isdst" = yes; then
-  AC_DEFINE(HAVE_TM_ISDST,1,[Define if we have "tm_isdst" in "struct tm".])
-fi
-AC_CACHE_CHECK(for daylight, ac_cv_var_daylight,
-[AC_TRY_LINK(
-changequote(<<, >>)dnl
-<<#include <time.h>
-#ifndef daylight /* In case IRIX #defines this, too  */
-extern int daylight;
-#endif>>,
-changequote([, ])dnl
-[atoi(daylight);], ac_cv_var_daylight=yes, ac_cv_var_daylight=no)])
-  if test $ac_cv_var_daylight = yes; then
-    AC_DEFINE(HAVE_DAYLIGHT,1,[Define if we have a global "int" variable "daylight".])
-  fi
-])
-
-dnl from autoconf 2.13 acgeneral.m4, with patch:
-dnl Date: Fri, 15 Jan 1999 05:52:41 -0800
-dnl Message-ID: <199901151352.FAA18237@shade.twinsun.com>
-dnl From: eggert@twinsun.com (Paul Eggert)
-dnl Subject: autoconf 2.13 AC_CHECK_TYPE doesn't allow shell vars
-dnl Newsgroups: gnu.utils.bug
-dnl
-dnl now include <stdint.h> if available
-
-dnl AC_CHECK_TYPE2_STDC(TYPE, DEFAULT)
-AC_DEFUN([AC_CHECK_TYPE2_STDC],
-[AC_REQUIRE([AC_HEADER_STDC])dnl
-AC_REQUIRE([AC_HEADER_STDINT])dnl
-AC_MSG_CHECKING(for $1)
-AC_CACHE_VAL(ac_cv_type_$1,
-[AC_EGREP_CPP(dnl
-[(^|[^a-zA-Z_0-9])$1[^a-zA-Z_0-9]],
-[#if HAVE_STDINT_H
-#include <stdint.h>
-#endif
-#include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif], eval "ac_cv_type_$1=yes", eval "ac_cv_type_$1=no")])dnl
-if eval "test \"`echo '$ac_cv_type_'$1`\" = yes"; then
-  AC_MSG_RESULT(yes)
-else
-  AC_MSG_RESULT(no)
-  AC_DEFINE_UNQUOTED($1, $2, $1)
-fi
-])
-
-dnl from autoconf 2.13 acgeneral.m4, with additional third argument
-dnl AC_CHECK_SIZEOF_INCLUDES(TYPE [, CROSS-SIZE [, INCLUDES]])
-AC_DEFUN([AC_CHECK_SIZEOF_INCLUDES],
-[dnl The name to #define.
-define([AC_TYPE_NAME], translit(sizeof_$1, [[[a-z *]]], [[[A-Z_P]]]))dnl
-dnl The cache variable name.
-define([AC_CV_NAME], translit(ac_cv_sizeof_$1, [[[ *]]], [[[_p]]]))dnl
-AC_MSG_CHECKING(size of $1)
-AC_CACHE_VAL(AC_CV_NAME,
-[AC_TRY_RUN([$3
-#include <stdio.h>
-main()
-{
-  FILE *f=fopen("conftestval", "w");
-  if (!f) exit(1);
-  fprintf(f, "%d\n", sizeof($1));
-  exit(0);
-}], AC_CV_NAME=`cat conftestval`, AC_CV_NAME=0, ifelse([$2], , , AC_CV_NAME=$2))])dnl
-AC_MSG_RESULT($AC_CV_NAME)
-AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, AC_TYPE_NAME)
-undefine([AC_TYPE_NAME])dnl
-undefine([AC_CV_NAME])dnl
-])
-
-dnl AC_CHECK_SIZEOF_STDC_HEADERS(TYPE [, CROSS_SIZE])
-AC_DEFUN([AC_CHECK_SIZEOF_STDC_HEADERS],
-[AC_REQUIRE([AC_HEADER_STDC])dnl
-AC_REQUIRE([AC_HEADER_STDINT])dnl
-AC_CHECK_SIZEOF_INCLUDES($1, $2,
-[#if HAVE_STDINT_H
-#include <stdint.h>
-#endif
-#include <sys/types.h>
-#ifdef STDC_HEADERS
-#include <stdlib.h>
-#endif
-])
-])
-
-
-dnl AC_CHECK_TYPE_STDC(TYPE, DEFAULT)
-AC_DEFUN([AC_CHECK_TYPE_STDC],
-[AC_REQUIRE([AC_HEADER_STDC])dnl
-AC_REQUIRE([AC_HEADER_STDINT])dnl
-AC_MSG_CHECKING(for $1)
-AC_CACHE_VAL(ac_cv_type_$1,
-[AC_EGREP_CPP(dnl
-[(^|[^a-zA-Z_0-9])$1[^a-zA-Z_0-9]],
-[#if HAVE_STDINT_H
-#include <stdint.h>
-#endif
-#include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif], ac_cv_type_$1=yes, ac_cv_type_$1=no)])dnl
-AC_MSG_RESULT($ac_cv_type_$1)
-if test $ac_cv_type_$1 = no; then
-  AC_DEFINE($1, $2, $1)
-fi
-])
-
-dnl AC_HEADER_STDINT
-AC_DEFUN([AC_HEADER_STDINT], [AC_CHECK_HEADERS(stdint.h)])
-
-#serial 19
-
-dnl By default, many hosts won't let programs access large files;
-dnl one must use special compiler options to get large-file access to work.
-dnl For more details about this brain damage please see:
-dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html
-
-dnl Written by Paul Eggert <eggert@twinsun.com>.
-
-dnl Internal subroutine of AC_SYS_LARGEFILE.
-dnl AC_SYS_LARGEFILE_TEST_INCLUDES
-AC_DEFUN([AC_SYS_LARGEFILE_TEST_INCLUDES],
-  [[#include <sys/types.h>
-    /* Check that off_t can represent 2**63 - 1 correctly.
-       We can't simply "#define LARGE_OFF_T 9223372036854775807",
-       since some C++ compilers masquerading as C compilers
-       incorrectly reject 9223372036854775807.  */
-#   define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-    int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-                       && LARGE_OFF_T % 2147483647 == 1)
-                      ? 1 : -1];
-  ]])
-
-dnl Internal subroutine of AC_SYS_LARGEFILE.
-dnl AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, CACHE-VAR, COMMENT, INCLU=
-DES, FUNCTION-BODY)
-AC_DEFUN([AC_SYS_LARGEFILE_MACRO_VALUE],
-  [AC_CACHE_CHECK([for $1 value needed for large files], $3,
-     [$3=no
-      AC_TRY_COMPILE([$5],
-       [$6],
-       ,
-       [AC_TRY_COMPILE([#define $1 $2]
-[$5]
-          ,
-          [$6],
-          [$3=$2])])])
-   if test "[$]$3" != no; then
-     AC_DEFINE_UNQUOTED([$1], [$]$3, [$4])
-   fi])
-
-AC_DEFUN([AC_SYS_LARGEFILE],
-  [AC_REQUIRE([AC_PROG_CC])
-   AC_ARG_ENABLE(largefile,
-     [  --disable-largefile     omit support for large files])
-   if test "$enable_largefile" != no; then
-
-     AC_CACHE_CHECK([for special C compiler options needed for large files],
-       ac_cv_sys_largefile_CC,
-       [ac_cv_sys_largefile_CC=no
-        if test "$GCC" != yes; then
-         # IRIX 6.2 and later do not support large files by default,
-         # so use the C compiler's -n32 option if that helps.
-         AC_TRY_COMPILE(AC_SYS_LARGEFILE_TEST_INCLUDES, , ,
-           [ac_save_CC="$CC"
-            CC="$CC -n32"
-            AC_TRY_COMPILE(AC_SYS_LARGEFILE_TEST_INCLUDES, ,
-              ac_cv_sys_largefile_CC=' -n32')
-            CC="$ac_save_CC"])
-        fi])
-     if test "$ac_cv_sys_largefile_CC" != no; then
-       CC="$CC$ac_cv_sys_largefile_CC"
-     fi
-
-     AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64,
-       ac_cv_sys_file_offset_bits,
-       [Number of bits in a file offset, on hosts where this is settable.],
-       AC_SYS_LARGEFILE_TEST_INCLUDES)
-     AC_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, 1,
-       ac_cv_sys_large_files,
-       [Define for large files, on AIX-style hosts.],
-       AC_SYS_LARGEFILE_TEST_INCLUDES)
-   fi
-  ])
-
-AC_DEFUN([AC_FUNC_FSEEKO],
-  [AC_SYS_LARGEFILE_MACRO_VALUE(_LARGEFILE_SOURCE, 1,
-     ac_cv_sys_largefile_source,
-     [Define to make fseeko visible on some hosts (e.g. glibc 2.2).],
-     [#include <stdio.h>], [return !fseeko;])
-   # We used to try defining _XOPEN_SOURCE=500 too, to work around a bug
-   # in glibc 2.1.3, but that breaks too many other things.
-   # If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
-
-   AC_CACHE_CHECK([for fseeko], ac_cv_func_fseeko,
-     [ac_cv_func_fseeko=no
-      AC_TRY_LINK([#include <stdio.h>],
-        [return fseeko && fseeko (stdin, 0, 0);],
-       [ac_cv_func_fseeko=yes])])
-   if test $ac_cv_func_fseeko != no; then
-     AC_DEFINE(HAVE_FSEEKO, 1,
-       [Define if fseeko (and presumably ftello) exists and is declared.])
-   fi])
-
index af1b1ef..f8f4bd9 100644 (file)
  * apprentice - make one pass through /etc/magic, learning its secrets.
  */
 
-#include "system.h"
 #include "file.h"
-#include "debug.h"
-
-FILE_RCSID("@(#)Id: apprentice.c,v 1.57 2003/03/28 21:02:03 christos Exp ")
+#include "magic.h"
+#include <stdlib.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <string.h>
+#include <ctype.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/param.h>
+#ifdef QUICK
+#include <sys/mman.h>
+#endif
 
-/*@access fmagic @*/
+#ifndef        lint
+FILE_RCSID("@(#)$Id: apprentice.c,v 1.75 2004/03/22 18:48:56 christos Exp $")
+#endif /* lint */
 
 #define        EATAB {while (isascii((unsigned char) *l) && \
                      isspace((unsigned char) *l))  ++l;}
@@ -64,28 +75,268 @@ FILE_RCSID("@(#)Id: apprentice.c,v 1.57 2003/03/28 21:02:03 christos Exp ")
 #define MAP_FILE 0
 #endif
 
-/*@unchecked@*/
-#ifdef __EMX__
-  static char PATHSEP=';';
-#else
-  static char PATHSEP=':';
+#ifndef MAXPATHLEN
+#define MAXPATHLEN     1024
 #endif
 
-/*@unchecked@*/
-static int maxmagic = 0;
+private int getvalue(struct magic_set *ms, struct magic *, char **);
+private int hextoint(int);
+private char *getstr(struct magic_set *, char *, char *, int, int *);
+private int parse(struct magic_set *, struct magic **, uint32_t *, char *, int);
+private void eatsize(char **);
+private int apprentice_1(struct magic_set *, const char *, int, struct mlist *);
+private int apprentice_file(struct magic_set *, struct magic **, uint32_t *,
+    const char *, int);
+private void byteswap(struct magic *, uint32_t);
+private void bs1(struct magic *);
+private uint16_t swap2(uint16_t);
+private uint32_t swap4(uint32_t);
+private char *mkdbname(const char *, char *, size_t);
+private int apprentice_map(struct magic_set *, struct magic **, uint32_t *,
+    const char *);
+private int apprentice_compile(struct magic_set *, struct magic **, uint32_t *,
+    const char *);
+
+private size_t maxmagic = 0;
+private size_t magicsize = sizeof(struct magic);
 
-#ifndef MAGIC
-# define MAGIC "/etc/magic"
-#endif
+#ifdef COMPILE_ONLY
+const char *magicfile;
+char *progname;
+int lineno;
+
+int main(int, char *[]);
+
+int
+main(int argc, char *argv[])
+{
+       int ret;
+
+       if ((progname = strrchr(argv[0], '/')) != NULL)
+               progname++;
+       else
+               progname = argv[0];
+
+       if (argc != 2) {
+               (void)fprintf(stderr, "usage: %s file\n", progname);
+               exit(1);
+       }
+       magicfile = argv[1];
+
+       exit(file_apprentice(magicfile, COMPILE, MAGIC_CHECK) == -1 ? 1 : 0);
+}
+#endif /* COMPILE_ONLY */
+
+
+/*
+ * Handle one file.
+ */
+private int
+apprentice_1(struct magic_set *ms, const char *fn, int action,
+    struct mlist *mlist)
+{
+       struct magic *magic = NULL;
+       uint32_t nmagic = 0;
+       struct mlist *ml;
+       int rv = -1;
+       int mapped;
+
+       if (magicsize != FILE_MAGICSIZE) {
+               file_error(ms, 0, "magic element size %lu != %lu",
+                   (unsigned long)sizeof(*magic),
+                   (unsigned long)FILE_MAGICSIZE);
+               return -1;
+       }
+
+       if (action == FILE_COMPILE) {
+               rv = apprentice_file(ms, &magic, &nmagic, fn, action);
+               if (rv != 0)
+                       return -1;
+               rv = apprentice_compile(ms, &magic, &nmagic, fn);
+               free(magic);
+               return rv;
+       }
+#ifndef COMPILE_ONLY
+       if ((rv = apprentice_map(ms, &magic, &nmagic, fn)) == -1) {
+               if (ms->flags & MAGIC_CHECK)
+                       file_magwarn("using regular magic file `%s'", fn);
+               rv = apprentice_file(ms, &magic, &nmagic, fn, action);
+               if (rv != 0)
+                       return -1;
+               mapped = 0;
+       }
+
+       if (rv == -1)
+               return rv;
+       mapped = rv;
+            
+       if (magic == NULL || nmagic == 0) {
+               file_delmagic(magic, mapped, nmagic);
+               return -1;
+       }
+
+       if ((ml = malloc(sizeof(*ml))) == NULL) {
+               file_delmagic(magic, mapped, nmagic);
+               file_oomem(ms);
+               return -1;
+       }
+
+       ml->magic = magic;
+       ml->nmagic = nmagic;
+       ml->mapped = mapped;
+
+       mlist->prev->next = ml;
+       ml->prev = mlist->prev;
+       ml->next = mlist;
+       mlist->prev = ml;
+
+       return 0;
+#endif /* COMPILE_ONLY */
+}
+
+protected void
+file_delmagic(struct magic *p, int type, size_t entries)
+{
+       if (p == NULL)
+               return;
+       switch (type) {
+       case 2:
+               p--;
+               (void)munmap((void *)p, sizeof(*p) * (entries + 1));
+               break;
+       case 1:
+               p--;
+       case 0:
+               free(p);
+               break;
+       default:
+               abort();
+       }
+}
+
+
+/* const char *fn: list of magic files */
+protected struct mlist *
+file_apprentice(struct magic_set *ms, const char *fn, int action)
+{
+       char *p, *mfn, *afn = NULL;
+       int file_err, errs = -1;
+       struct mlist *mlist;
 
-/*@unchecked@*/ /*@observer@*/
-const char *default_magicfile = MAGIC;
+       if (fn == NULL)
+               fn = getenv("MAGIC");
+       if (fn == NULL)
+               fn = MAGIC;
+
+       if ((fn = mfn = strdup(fn)) == NULL) {
+               file_oomem(ms);
+               return NULL;
+       }
+
+       if ((mlist = malloc(sizeof(*mlist))) == NULL) {
+               free(mfn);
+               file_oomem(ms);
+               return NULL;
+       }
+       mlist->next = mlist->prev = mlist;
+
+       while (fn) {
+               p = strchr(fn, PATHSEP);
+               if (p)
+                       *p++ = '\0';
+               if (*fn == '\0')
+                       break;
+               if (ms->flags & MAGIC_MIME) {
+                       if ((afn = malloc(strlen(fn) + 5 + 1)) == NULL) {
+                               free(mfn);
+                               free(mlist);
+                               file_oomem(ms);
+                               return NULL;
+                       }
+                       (void)strcpy(afn, fn);
+                       (void)strcat(afn, ".mime");
+                       fn = afn;
+               }
+               file_err = apprentice_1(ms, fn, action, mlist);
+               if (file_err > errs)
+                       errs = file_err;
+               if (afn) {
+                       free(afn);
+                       afn = NULL;
+               }
+               fn = p;
+       }
+       if (errs == -1) {
+               free(mfn);
+               free(mlist);
+               mlist = NULL;
+               file_error(ms, 0, "could not find any magic files!");
+               return NULL;
+       }
+       free(mfn);
+       return mlist;
+}
+
+/*
+ * parse from a file
+ * const char *fn: name of magic file
+ */
+private int
+apprentice_file(struct magic_set *ms, struct magic **magicp, uint32_t *nmagicp,
+    const char *fn, int action)
+{
+       private const char hdr[] =
+               "cont\toffset\ttype\topcode\tmask\tvalue\tdesc";
+       FILE *f;
+       char line[BUFSIZ+1];
+       int lineno;
+       int errs = 0;
+
+       f = fopen(fn, "r");
+       if (f == NULL) {
+               if (errno != ENOENT)
+                       file_error(ms, errno, "cannot read magic file `%s'",
+                           fn);
+               return -1;
+       }
+
+        maxmagic = MAXMAGIS;
+       *magicp = (struct magic *) calloc(maxmagic, sizeof(struct magic));
+       if (*magicp == NULL) {
+               (void)fclose(f);
+               file_oomem(ms);
+               return -1;
+       }
+
+       /* print silly verbose header for USG compat. */
+       if (action == FILE_CHECK)
+               (void)fprintf(stderr, "%s\n", hdr);
+
+       /* parse it */
+       for (lineno = 1; fgets(line, BUFSIZ, f) != NULL; lineno++) {
+               if (line[0]=='#')       /* comment, do not parse */
+                       continue;
+               if (strlen(line) <= (unsigned)1) /* null line, garbage, etc */
+                       continue;
+               line[strlen(line)-1] = '\0'; /* delete newline */
+               if (parse(ms, magicp, nmagicp, line, action) != 0)
+                       errs = 1;
+       }
+
+       (void)fclose(f);
+       if (errs) {
+               free(*magicp);
+               *magicp = NULL;
+               *nmagicp = 0;
+       }
+       return errs;
+}
 
 /*
  * extend the sign bit if the comparison is to be signed
  */
-uint32_t
-file_signextend(struct magic *m, uint32_t v)
+protected uint32_t
+file_signextend(struct magic_set *ms, struct magic *m, uint32_t v)
 {
        if (!(m->flag & UNSIGNED))
                switch(m->type) {
@@ -119,216 +370,42 @@ file_signextend(struct magic *m, uint32_t v)
                case FILE_REGEX:
                        break;
                default:
-                       file_magwarn("can't happen: m->type=%d\n", m->type);
+                       if (ms->flags & MAGIC_CHECK)
+                           file_magwarn("cannot happen: m->type=%d\n",
+                                   m->type);
                        return ~0U;
                }
        return v;
 }
 
 /*
- * eatsize(): Eat the size spec from a number [eg. 10UL]
- */
-/*@-bounds@*/
-static void
-eatsize(/*@out@*/ char **p)
-       /*@modifies *p @*/
-{
-       char *l = *p;
-
-       if (LOWCASE(*l) == 'u') 
-               l++;
-
-       switch (LOWCASE(*l)) {
-       case 'l':    /* long */
-       case 's':    /* short */
-       case 'h':    /* short */
-       case 'b':    /* char/byte */
-       case 'c':    /* char/byte */
-               l++;
-               /*@fallthrough@*/
-       default:
-               break;
-       }
-
-       *p = l;
-}
-/*@=bounds@*/
-
-/* Single hex char to int; -1 if not a hex char. */
-static int
-hextoint(int c)
-       /*@*/
-{
-       if (!isascii((unsigned char) c))
-               return -1;
-       if (isdigit((unsigned char) c))
-               return c - '0';
-       if ((c >= 'a')&&(c <= 'f'))
-               return c + 10 - 'a';
-       if (( c>= 'A')&&(c <= 'F'))
-               return c + 10 - 'A';
-       return -1;
-}
-
-/*
- * Convert a string containing C character escapes.  Stop at an unescaped
- * space or tab.
- * Copy the converted version to "p", returning its length in *slen.
- * Return updated scan pointer as function result.
- */
-/*@-shiftimplementation@*/
-/*@-bounds@*/
-static char *
-getstr(/*@returned@*/ char *s, char *p, int plen, /*@out@*/ int *slen)
-       /*@globals fileSystem @*/
-       /*@modifies *p, *slen, fileSystem @*/
-{
-       char    *origs = s, *origp = p;
-       char    *pmax = p + plen - 1;
-       int     c;
-       int     val;
-
-       while ((c = *s++) != '\0') {
-               if (isspace((unsigned char) c))
-                       break;
-               if (p >= pmax) {
-                       fprintf(stderr, "String too long: %s\n", origs);
-                       break;
-               }
-               if(c == '\\') {
-                       switch(c = *s++) {
-
-                       case '\0':
-                               goto out;
-
-                       default:
-                               *p++ = (char) c;
-                               /*@switchbreak@*/ break;
-
-                       case 'n':
-                               *p++ = '\n';
-                               /*@switchbreak@*/ break;
-
-                       case 'r':
-                               *p++ = '\r';
-                               /*@switchbreak@*/ break;
-
-                       case 'b':
-                               *p++ = '\b';
-                               /*@switchbreak@*/ break;
-
-                       case 't':
-                               *p++ = '\t';
-                               /*@switchbreak@*/ break;
-
-                       case 'f':
-                               *p++ = '\f';
-                               /*@switchbreak@*/ break;
-
-                       case 'v':
-                               *p++ = '\v';
-                               /*@switchbreak@*/ break;
-
-                       /* \ and up to 3 octal digits */
-                       case '0':
-                       case '1':
-                       case '2':
-                       case '3':
-                       case '4':
-                       case '5':
-                       case '6':
-                       case '7':
-                               val = c - '0';
-                               c = *s++;  /* try for 2 */
-                               if(c >= '0' && c <= '7') {
-                                       val = (val<<3) | (c - '0');
-                                       c = *s++;  /* try for 3 */
-                                       if(c >= '0' && c <= '7')
-                                               val = (val<<3) | (c-'0');
-                                       else
-                                               --s;
-                               }
-                               else
-                                       --s;
-                               *p++ = (char)val;
-                               /*@switchbreak@*/ break;
-
-                       /* \x and up to 2 hex digits */
-                       case 'x':
-                               val = 'x';      /* Default if no digits */
-                               c = hextoint(*s++);     /* Get next char */
-                               if (c >= 0) {
-                                       val = c;
-                                       c = hextoint(*s++);
-                                       if (c >= 0)
-                                               val = (val << 4) + c;
-                                       else
-                                               --s;
-                               } else
-                                       --s;
-                               *p++ = (char)val;
-                               /*@switchbreak@*/ break;
-                       }
-               } else
-                       *p++ = (char)c;
-       }
-out:
-       *p = '\0';
-       *slen = p - origp;
-       return s;
-}
-/*@=bounds@*/
-/*@=shiftimplementation@*/
-
-/* 
- * Read a numeric value from a pointer, into the value union of a magic 
- * pointer, according to the magic type.  Update the string pointer to point 
- * just after the number read.  Return 0 for success, non-zero for failure.
- */
-/*@-bounds@*/
-static int
-getvalue(struct magic *m, /*@out@*/ char **p)
-       /*@globals fileSystem @*/
-       /*@modifies m, *p, fileSystem @*/
-{
-       int slen;
-
-       if (m->type == FILE_STRING || m->type == FILE_PSTRING || m->type == FILE_REGEX) {
-               *p = getstr(*p, m->value.s, sizeof(m->value.s), &slen);
-               m->vallen = slen;
-       } else
-               if (m->reln != 'x') {
-                       m->value.l = file_signextend(m, strtoul(*p, p, 0));
-                       eatsize(p);
-               }
-       return 0;
-}
-/*@=bounds@*/
-
-/*
  * parse one line from magic file, put into magic[index++] if valid
  */
-/*@-bounds@*/
-static int
-parse(/*@out@*/ struct magic **magicp, /*@out@*/ uint32_t *nmagicp,
-               char *l, int action)
-       /*@globals maxmagic, fileSystem @*/
-       /*@modifies *magicp, *nmagicp, maxmagic, fileSystem @*/
+private int
+parse(struct magic_set *ms, struct magic **magicp, uint32_t *nmagicp, char *l,
+    int action)
 {
        int i = 0;
        struct magic *m;
        char *t;
+       private const char *fops = FILE_OPS;
+       uint32_t val;
 
 #define ALLOC_INCR     200
        if (*nmagicp + 1 >= maxmagic){
                maxmagic += ALLOC_INCR;
-/*@-unqualifiedtrans @*/
-               *magicp = xrealloc(*magicp, sizeof(**magicp) * maxmagic);
-/*@=unqualifiedtrans @*/
-               m = &(*magicp)[*nmagicp];
-               memset(m, 0, sizeof(**magicp) * ALLOC_INCR);
-       } else
-               m = &(*magicp)[*nmagicp];
+               if ((m = (struct magic *) realloc(*magicp,
+                   sizeof(struct magic) * maxmagic)) == NULL) {
+                       file_oomem(ms);
+                       if (*magicp)
+                               free(*magicp);
+                       return -1;
+               }
+               *magicp = m;
+               memset(&(*magicp)[*nmagicp], 0, sizeof(struct magic)
+                   * ALLOC_INCR);
+       }
+       m = &(*magicp)[*nmagicp];
        m->flag = 0;
        m->cont_level = 0;
 
@@ -347,9 +424,10 @@ parse(/*@out@*/ struct magic **magicp, /*@out@*/ uint32_t *nmagicp,
         }
 
        /* get offset, then skip over it */
-       m->offset = (int) strtoul(l,&t,0);
+       m->offset = (uint32_t)strtoul(l, &t, 0);
         if (l == t)
-               file_magwarn("offset %s invalid", l);
+               if (ms->flags & MAGIC_CHECK)
+                       file_magwarn("offset %s invalid", l);
         l = t;
 
        if (m->flag & INDIR) {
@@ -382,7 +460,10 @@ parse(/*@out@*/ struct magic **magicp, /*@out@*/ uint32_t *nmagicp,
                                m->in_type = FILE_BYTE;
                                break;
                        default:
-                               file_magwarn("indirect offset type %c invalid", *l);
+                               if (ms->flags & MAGIC_CHECK)
+                                       file_magwarn(
+                                           "indirect offset type %c invalid",
+                                           *l);
                                break;
                        }
                        l++;
@@ -426,11 +507,12 @@ parse(/*@out@*/ struct magic **magicp, /*@out@*/ uint32_t *nmagicp,
                        break;
                }
                if (isdigit((unsigned char)*l)) 
-                       m->in_offset = strtoul(l, &t, 0);
+                       m->in_offset = (uint32_t)strtoul(l, &t, 0);
                else
                        t = l;
                if (*t++ != ')') 
-                       file_magwarn("missing ')' in indirect offset");
+                       if (ms->flags & MAGIC_CHECK)
+                               file_magwarn("missing ')' in indirect offset");
                l = t;
        }
 
@@ -514,90 +596,54 @@ parse(/*@out@*/ struct magic **magicp, /*@out@*/ uint32_t *nmagicp,
                m->type = FILE_REGEX;
                l += sizeof("regex");
        } else {
-               file_magwarn("type %s invalid", l);
+               if (ms->flags & MAGIC_CHECK)
+                       file_magwarn("type %s invalid", l);
                return -1;
        }
        /* New-style anding: "0 byte&0x80 =0x80 dynamically linked" */
        /* New and improved: ~ & | ^ + - * / % -- exciting, isn't it? */
        if (*l == '~') {
-               if (m->type != FILE_STRING && m->type != FILE_PSTRING)
+               if (FILE_STRING != m->type && FILE_PSTRING != m->type)
                        m->mask_op = FILE_OPINVERSE;
                ++l;
        }
-       switch (*l) {
-       case '&':
-               m->mask_op |= FILE_OPAND;
-               ++l;
-               m->mask = file_signextend(m, strtoul(l, &l, 0));
-               eatsize(&l);
-               break;
-       case '|':
-               m->mask_op |= FILE_OPOR;
-               ++l;
-               m->mask = file_signextend(m, strtoul(l, &l, 0));
-               eatsize(&l);
-               break;
-       case '^':
-               m->mask_op |= FILE_OPXOR;
-               ++l;
-               m->mask = file_signextend(m, strtoul(l, &l, 0));
-               eatsize(&l);
-               break;
-       case '+':
-               m->mask_op |= FILE_OPADD;
-               ++l;
-               m->mask = file_signextend(m, strtoul(l, &l, 0));
-               eatsize(&l);
-               break;
-       case '-':
-               m->mask_op |= FILE_OPMINUS;
-               ++l;
-               m->mask = file_signextend(m, strtoul(l, &l, 0));
-               eatsize(&l);
-               break;
-       case '*':
-               m->mask_op |= FILE_OPMULTIPLY;
-               ++l;
-               m->mask = file_signextend(m, strtoul(l, &l, 0));
-               eatsize(&l);
-               break;
-       case '%':
-               m->mask_op |= FILE_OPMODULO;
-               ++l;
-               m->mask = file_signextend(m, strtoul(l, &l, 0));
-               eatsize(&l);
-               break;
-       case '/':
-               if (m->type != FILE_STRING && m->type != FILE_PSTRING) {
-                       m->mask_op |= FILE_OPDIVIDE;
+       if ((t = strchr(fops,  *l)) != NULL) {
+               uint32_t op = (uint32_t)(t - fops);
+               if (op != FILE_OPDIVIDE ||
+                   (FILE_STRING != m->type && FILE_PSTRING != m->type)) {
                        ++l;
-                       m->mask = file_signextend(m, strtoul(l, &l, 0));
+                       m->mask_op |= op;
+                       val = (uint32_t)strtoul(l, &l, 0);
+                       m->mask = file_signextend(ms, m, val);
                        eatsize(&l);
                } else {
                        m->mask = 0L;
-                       while (!isspace(*++l)) {
+                       while (!isspace((unsigned char)*++l)) {
                                switch (*l) {
                                case CHAR_IGNORE_LOWERCASE:
                                        m->mask |= STRING_IGNORE_LOWERCASE;
-                                       /*@switchbreak@*/ break;
+                                       break;
                                case CHAR_COMPACT_BLANK:
                                        m->mask |= STRING_COMPACT_BLANK;
-                                       /*@switchbreak@*/ break;
+                                       break;
                                case CHAR_COMPACT_OPTIONAL_BLANK:
                                        m->mask |=
                                            STRING_COMPACT_OPTIONAL_BLANK;
-                                       /*@switchbreak@*/ break;
+                                       break;
                                default:
-                                       file_magwarn("string extension %c invalid",
-                                           *l);
+                                       if (ms->flags & MAGIC_CHECK)
+                                               file_magwarn(
+                                               "string extension %c invalid",
+                                               *l);
                                        return -1;
                                }
                        }
                }
-               break;
        }
-       /* We used to set mask to all 1's here, instead let's just not do anything 
-          if mask = 0 (unless you have a better idea) */
+       /*
+        * We used to set mask to all 1's here, instead let's just not do
+        * anything if mask = 0 (unless you have a better idea)
+        */
        EATAB;
   
        switch (*l) {
@@ -620,7 +666,7 @@ parse(/*@out@*/ struct magic **magicp, /*@out@*/ uint32_t *nmagicp,
                        ++l;
                        break;
                }
-               /*@fallthrough@*/
+               /*FALLTHROUGH*/
        default:
                if (*l == 'x' && isascii((unsigned char)l[1]) && 
                    isspace((unsigned char)l[1])) {
@@ -633,52 +679,205 @@ parse(/*@out@*/ struct magic **magicp, /*@out@*/ uint32_t *nmagicp,
        }
        EATAB;
   
-       if (getvalue(m, &l))
+       if (getvalue(ms, m, &l))
                return -1;
        /*
         * TODO finish this macro and start using it!
         * #define offsetcheck {if (offset > HOWMANY-1) 
-        *      file_magwarn("offset too big"); }
+        *      magwarn("offset too big"); }
+        */
+
+       /*
+        * now get last part - the description
         */
+GetDesc:
+       EATAB;
+       if (l[0] == '\b') {
+               ++l;
+               m->nospflag = 1;
+       } else if ((l[0] == '\\') && (l[1] == 'b')) {
+               ++l;
+               ++l;
+               m->nospflag = 1;
+       } else
+               m->nospflag = 0;
+       while ((m->desc[i++] = *l++) != '\0' && i < MAXDESC)
+               /* NULLBODY */;
+
+#ifndef COMPILE_ONLY
+       if (action == FILE_CHECK) {
+               file_mdump(m);
+       }
+#endif
+       ++(*nmagicp);           /* make room for next */
+       return 0;
+}
+
+/* 
+ * Read a numeric value from a pointer, into the value union of a magic 
+ * pointer, according to the magic type.  Update the string pointer to point 
+ * just after the number read.  Return 0 for success, non-zero for failure.
+ */
+private int
+getvalue(struct magic_set *ms, struct magic *m, char **p)
+{
+       int slen;
+
+       switch (m->type) {
+       case FILE_STRING:
+       case FILE_PSTRING:
+       case FILE_REGEX:
+               *p = getstr(ms, *p, m->value.s, sizeof(m->value.s), &slen);
+               if (*p == NULL) {
+                       if (ms->flags & MAGIC_CHECK)
+                               file_magwarn("cannot get string from `%s'",
+                                   m->value.s);
+                       return -1;
+               }
+               m->vallen = slen;
+               return 0;
+       default:
+               if (m->reln != 'x') {
+                       m->value.l = file_signextend(ms, m,
+                           (uint32_t)strtoul(*p, p, 0));
+                       eatsize(p);
+               }
+               return 0;
+       }
+}
+
+/*
+ * Convert a string containing C character escapes.  Stop at an unescaped
+ * space or tab.
+ * Copy the converted version to "p", returning its length in *slen.
+ * Return updated scan pointer as function result.
+ */
+private char *
+getstr(struct magic_set *ms, char *s, char *p, int plen, int *slen)
+{
+       char    *origs = s, *origp = p;
+       char    *pmax = p + plen - 1;
+       int     c;
+       int     val;
+
+       while ((c = *s++) != '\0') {
+               if (isspace((unsigned char) c))
+                       break;
+               if (p >= pmax) {
+                       file_error(ms, 0, "string too long: `%s'", origs);
+                       return NULL;
+               }
+               if(c == '\\') {
+                       switch(c = *s++) {
+
+                       case '\0':
+                               goto out;
+
+                       default:
+                               *p++ = (char) c;
+                               break;
+
+                       case 'n':
+                               *p++ = '\n';
+                               break;
+
+                       case 'r':
+                               *p++ = '\r';
+                               break;
+
+                       case 'b':
+                               *p++ = '\b';
+                               break;
+
+                       case 't':
+                               *p++ = '\t';
+                               break;
+
+                       case 'f':
+                               *p++ = '\f';
+                               break;
+
+                       case 'v':
+                               *p++ = '\v';
+                               break;
+
+                       /* \ and up to 3 octal digits */
+                       case '0':
+                       case '1':
+                       case '2':
+                       case '3':
+                       case '4':
+                       case '5':
+                       case '6':
+                       case '7':
+                               val = c - '0';
+                               c = *s++;  /* try for 2 */
+                               if(c >= '0' && c <= '7') {
+                                       val = (val<<3) | (c - '0');
+                                       c = *s++;  /* try for 3 */
+                                       if(c >= '0' && c <= '7')
+                                               val = (val<<3) | (c-'0');
+                                       else
+                                               --s;
+                               }
+                               else
+                                       --s;
+                               *p++ = (char)val;
+                               break;
+
+                       /* \x and up to 2 hex digits */
+                       case 'x':
+                               val = 'x';      /* Default if no digits */
+                               c = hextoint(*s++);     /* Get next char */
+                               if (c >= 0) {
+                                       val = c;
+                                       c = hextoint(*s++);
+                                       if (c >= 0)
+                                               val = (val << 4) + c;
+                                       else
+                                               --s;
+                               } else
+                                       --s;
+                               *p++ = (char)val;
+                               break;
+                       }
+               } else
+                       *p++ = (char)c;
+       }
+out:
+       *p = '\0';
+       *slen = p - origp;
+       return s;
+}
 
-       /*
-        * now get last part - the description
-        */
-GetDesc:
-       EATAB;
-       if (l[0] == '\b') {
-               ++l;
-               m->nospflag = 1;
-       } else if ((l[0] == '\\') && (l[1] == 'b')) {
-               ++l;
-               ++l;
-               m->nospflag = 1;
-       } else
-               m->nospflag = 0;
-       while ((m->desc[i++] = *l++) != '\0' && i<MAXDESC)
-               {};
 
-#ifndef COMPILE_ONLY
-       if (action == FILE_CHECK) {
-               file_mdump(m);
-       }
-#endif
-       ++(*nmagicp);           /* make room for next */
-       return 0;
+/* Single hex char to int; -1 if not a hex char. */
+private int
+hextoint(int c)
+{
+       if (!isascii((unsigned char) c))
+               return -1;
+       if (isdigit((unsigned char) c))
+               return c - '0';
+       if ((c >= 'a')&&(c <= 'f'))
+               return c + 10 - 'a';
+       if (( c>= 'A')&&(c <= 'F'))
+               return c + 10 - 'A';
+       return -1;
 }
-/*@=bounds@*/
+
 
 /*
  * Print a string containing C character escapes.
  */
-void
+protected void
 file_showstr(FILE *fp, const char *s, size_t len)
 {
        char    c;
 
        for (;;) {
                c = *s++;
-               if (len == -1) {
+               if (len == ~0U) {
                        if (c == '\0')
                                break;
                }
@@ -694,284 +893,119 @@ file_showstr(FILE *fp, const char *s, size_t len)
                        
                        case '\n':
                                (void) fputc('n', fp);
-                               /*@switchbreak@*/ break;
+                               break;
 
                        case '\r':
                                (void) fputc('r', fp);
-                               /*@switchbreak@*/ break;
+                               break;
 
                        case '\b':
                                (void) fputc('b', fp);
-                               /*@switchbreak@*/ break;
+                               break;
 
                        case '\t':
                                (void) fputc('t', fp);
-                               /*@switchbreak@*/ break;
+                               break;
 
                        case '\f':
                                (void) fputc('f', fp);
-                               /*@switchbreak@*/ break;
+                               break;
 
                        case '\v':
                                (void) fputc('v', fp);
-                               /*@switchbreak@*/ break;
+                               break;
 
                        default:
                                (void) fprintf(fp, "%.3o", c & 0377);
-                               /*@switchbreak@*/ break;
+                               break;
                        }
                }
        }
 }
 
 /*
- * swap a short
- */
-/*@-bounds@*/
-static uint16_t
-swap2(uint16_t sv)
-       /*@*/
-{
-       uint16_t rv;
-       uint8_t *s = (uint8_t *) &sv; 
-       uint8_t *d = (uint8_t *) &rv; 
-       d[0] = s[1];
-       d[1] = s[0];
-       return rv;
-}
-/*@=bounds@*/
-
-/*
- * swap an int
- */
-/*@-bounds@*/
-static uint32_t
-swap4(uint32_t sv)
-       /*@*/
-{
-       uint32_t rv;
-       uint8_t *s = (uint8_t *) &sv; 
-       uint8_t *d = (uint8_t *) &rv; 
-       d[0] = s[3];
-       d[1] = s[2];
-       d[2] = s[1];
-       d[3] = s[0];
-       return rv;
-}
-/*@=bounds@*/
-
-/*
- * byteswap a single magic entry
- */
-static
-void bs1(struct magic *m)
-       /*@modifies m @*/
-{
-       m->cont_level = swap2(m->cont_level);
-       m->offset = swap4(m->offset);
-       m->in_offset = swap4(m->in_offset);
-       if (m->type != FILE_STRING)
-               m->value.l = swap4(m->value.l);
-       m->mask = swap4(m->mask);
-}
-
-/*
- * Byteswap an mmap'ed file if needed
- */
-/*@-bounds@*/
-static void
-byteswap(/*@null@*/ struct magic *m, uint32_t nmagic)
-       /*@modifies m @*/
-{
-       uint32_t i;
-       if (m != NULL)
-       for (i = 0; i < nmagic; i++)
-               bs1(&m[i]);
-}
-/*@=bounds@*/
-
-/*
- * make a dbname
- */
-/*@only@*/
-static char *
-mkdbname(const char *fn)
-       /*@*/
-{
-       char * buf = xmalloc(strlen(fn) + sizeof(".mgc"));
-       (void) stpcpy( stpcpy(buf, fn), ".mgc");
-       return buf;
-}
-
-/*
- * parse from a file
- * const char *fn: name of magic file
- */
-/*@-bounds@*/
-static int
-apprentice_file(fmagic fm, /*@out@*/ struct magic **magicp,
-               /*@out@*/ uint32_t *nmagicp, const char *fn, int action)
-       /*@globals maxmagic, fileSystem @*/
-       /*@modifies fm, *magicp, *nmagicp, maxmagic, fileSystem @*/
-{
-       /*@observer@*/
-       static const char hdr[] =
-               "cont\toffset\ttype\topcode\tmask\tvalue\tdesc";
-       FILE *f;
-       char line[BUFSIZ+1];
-       int errs = 0;
-
-       f = fopen(fn, "r");
-       if (f == NULL) {
-               if (errno != ENOENT)
-                       (void) fprintf(stderr,
-                           "%s: can't read magic file %s (%s)\n", 
-                           __progname, fn, strerror(errno));
-               return -1;
-       }
-
-        maxmagic = MAXMAGIS;
-       *magicp = (struct magic *) xcalloc(sizeof(**magicp), maxmagic);
-
-       /* parse it */
-       if (action == FILE_CHECK)       /* print silly verbose header for USG compat. */
-               (void) printf("%s\n", hdr);
-
-       for (fm->lineno = 1; fgets(line, BUFSIZ, f) != NULL; fm->lineno++) {
-               if (line[0]=='#')       /* comment, do not parse */
-                       continue;
-               if (strlen(line) <= (unsigned)1) /* null line, garbage, etc */
-                       continue;
-               line[strlen(line)-1] = '\0'; /* delete newline */
-               if (parse(magicp, nmagicp, line, action) != 0)
-                       errs = 1;
-       }
-
-       (void) fclose(f);
-       if (errs) {
-               free(*magicp);
-               *magicp = NULL;
-               *nmagicp = 0;
-       }
-       return errs;
-}
-/*@=bounds@*/
-
-/*
- * handle an mmaped file.
+ * eatsize(): Eat the size spec from a number [eg. 10UL]
  */
-/*@-bounds@*/
-static int
-apprentice_compile(/*@unused@*/ const fmagic fm,
-               /*@out@*/ struct magic **magicp, /*@out@*/ uint32_t *nmagicp,
-               const char *fn, /*@unused@*/ int action)
-       /*@globals fileSystem, internalState @*/
-       /*@modifies fileSystem, internalState @*/
+private void
+eatsize(char **p)
 {
-       int fd;
-       char *dbname = mkdbname(fn);
-       /*@observer@*/
-       static const uint32_t ar[] = {
-           MAGICNO, VERSIONNO
-       };
-       int rc = -1;    /* assume failure */
-
-       if (dbname == NULL) 
-               return -1;
-
-       if ((fd = open(dbname, O_WRONLY|O_CREAT|O_TRUNC, 0644)) == -1) {
-               (void)fprintf(stderr, "%s: Cannot open `%s' (%s)\n",
-                   __progname, dbname, strerror(errno));
-               goto exit;
-       }
-
-       if (write(fd, ar, sizeof(ar)) != sizeof(ar)) {
-               (void)fprintf(stderr, "%s: error writing `%s' (%s)\n",
-                   __progname, dbname, strerror(errno));
-               goto exit;
-       }
+       char *l = *p;
 
-       if (lseek(fd, sizeof(**magicp), SEEK_SET) != sizeof(**magicp)) {
-               (void)fprintf(stderr, "%s: error seeking `%s' (%s)\n",
-                   __progname, dbname, strerror(errno));
-               goto exit;
-       }
+       if (LOWCASE(*l) == 'u') 
+               l++;
 
-       if (write(fd, *magicp,  sizeof(**magicp) * *nmagicp) 
-           != sizeof(**magicp) * *nmagicp) {
-               (void)fprintf(stderr, "%s: error writing `%s' (%s)\n",
-                   __progname, dbname, strerror(errno));
-               goto exit;
+       switch (LOWCASE(*l)) {
+       case 'l':    /* long */
+       case 's':    /* short */
+       case 'h':    /* short */
+       case 'b':    /* char/byte */
+       case 'c':    /* char/byte */
+               l++;
+               /*FALLTHROUGH*/
+       default:
+               break;
        }
-       rc = 0;
 
-exit:
-       if (fd >= 0)
-               (void)close(fd);
-       free(dbname);
-       return rc;
+       *p = l;
 }
-/*@=bounds@*/
 
 /*
  * handle a compiled file.
  */
-/*@-bounds@*/
-static int
-apprentice_map(/*@unused@*/ const fmagic fm,
-               /*@out@*/ struct magic **magicp, /*@out@*/ uint32_t *nmagicp,
-               const char *fn, /*@unused@*/ int action)
-       /*@globals fileSystem, internalState @*/
-       /*@modifies *magicp, *nmagicp, fileSystem, internalState @*/
+private int
+apprentice_map(struct magic_set *ms, struct magic **magicp, uint32_t *nmagicp,
+    const char *fn)
 {
        int fd;
        struct stat st;
        uint32_t *ptr;
        uint32_t version;
        int needsbyteswap;
-       char *dbname = mkdbname(fn);
+       char buf[MAXPATHLEN];
+       char *dbname = mkdbname(fn, buf, sizeof(buf));
        void *mm = NULL;
 
        if (dbname == NULL)
                return -1;
 
-       if ((fd = open(dbname, O_RDONLY)) == -1) {
-               free(dbname);
+       if ((fd = open(dbname, O_RDONLY)) == -1)
                return -1;
-       }
 
        if (fstat(fd, &st) == -1) {
-               (void)fprintf(stderr, "%s: Cannot stat `%s' (%s)\n",
-                   __progname, dbname, strerror(errno));
-               goto errxit;
+               file_error(ms, errno, "cannot stat `%s'", dbname);
+               goto error;
+       }
+       if (st.st_size < 16) {
+               file_error(ms, 0, "file `%s' is too small", dbname);
+               goto error;
        }
 
-#ifdef HAVE_MMAP
+#ifdef QUICK
        if ((mm = mmap(0, (size_t)st.st_size, PROT_READ|PROT_WRITE,
            MAP_PRIVATE|MAP_FILE, fd, (off_t)0)) == MAP_FAILED) {
-               (void)fprintf(stderr, "%s: Cannot map `%s' (%s)\n",
-                   __progname, dbname, strerror(errno));
-               goto errxit;
+               file_error(ms, errno, "cannot map `%s'", dbname);
+               goto error;
        }
+#define RET    2
 #else
-       mm = xmalloc((size_t)st.st_size);
+       if ((mm = malloc((size_t)st.st_size)) == NULL) {
+               file_oomem(ms);
+               goto error;
+       }
        if (read(fd, mm, (size_t)st.st_size) != (size_t)st.st_size) {
-               (void) fprintf(stderr, "%s: Read failed (%s).\n", __progname,
-                   strerror(errno));
-               goto errxit;
+               file_badread(ms);
+               goto error;
        }
+#define RET    1
 #endif
        *magicp = mm;
        (void)close(fd);
        fd = -1;
-       ptr = (uint32_t *) *magicp;
-       if (ptr == NULL)        /* XXX can't happen */
-               goto errxit;
+       ptr = (uint32_t *)(void *)*magicp;
        if (*ptr != MAGICNO) {
                if (swap4(*ptr) != MAGICNO) {
-                       (void)fprintf(stderr, "%s: Bad magic in `%s'\n",
-                           __progname, dbname);
-                       goto errxit;
+                       file_error(ms, 0, "bad magic in `%s'");
+                       goto error;
                }
                needsbyteswap = 1;
        } else
@@ -981,28 +1015,22 @@ apprentice_map(/*@unused@*/ const fmagic fm,
        else
                version = ptr[1];
        if (version != VERSIONNO) {
-               (void)fprintf(stderr, 
-                   "%s: version mismatch (%d != %d) in `%s'\n",
-                   __progname, version, VERSIONNO, dbname);
-               goto errxit;
+               file_error(ms, 0, "version mismatch (%d != %d) in `%s'",
+                   version, VERSIONNO, dbname);
+               goto error;
        }
-       *nmagicp = (st.st_size / sizeof(**magicp)) - 1;
+       *nmagicp = (uint32_t)(st.st_size / sizeof(struct magic)) - 1;
        (*magicp)++;
        if (needsbyteswap)
                byteswap(*magicp, *nmagicp);
-       free(dbname);
-       return 0;
+       return RET;
 
-errxit:
-/*@-usereleased@*/
-       free(dbname);
-/*@=usereleased@*/
+error:
        if (fd != -1)
                (void)close(fd);
-/*@-branchstate@*/
-       if (mm != NULL) {
-#ifdef HAVE_MMAP
-               (void)munmap(mm, (size_t)st.st_size);
+       if (mm) {
+#ifdef QUICK
+               (void)munmap((void *)mm, (size_t)st.st_size);
 #else
                free(mm);
 #endif
@@ -1010,125 +1038,119 @@ errxit:
                *magicp = NULL;
                *nmagicp = 0;
        }
-/*@=branchstate@*/
        return -1;
 }
-/*@=bounds@*/
 
+private const uint32_t ar[] = {
+    MAGICNO, VERSIONNO
+};
 /*
- * Handle one file.
+ * handle an mmaped file.
  */
-static int
-apprentice_1(fmagic fm, const char *fn, int action)
-       /*@globals fileSystem, internalState @*/
-       /*@modifies fm, fileSystem, internalState @*/
+private int
+apprentice_compile(struct magic_set *ms, struct magic **magicp,
+    uint32_t *nmagicp, const char *fn)
 {
-/*@-shadow@*/
-       struct magic *magic = NULL;
-       uint32_t nmagic = 0;
-/*@=shadow@*/
-       struct mlist *ml;
-       int rv = -1;
+       int fd;
+       char buf[MAXPATHLEN];
+       char *dbname = mkdbname(fn, buf, sizeof(buf));
 
-       if (action == FILE_COMPILE) {
-               rv = apprentice_file(fm, &magic, &nmagic, fn, action);
-               if (rv)
-                       return rv;
-               return apprentice_compile(fm, &magic, &nmagic, fn, action);
+       if (dbname == NULL) 
+               return -1;
+
+       if ((fd = open(dbname, O_WRONLY|O_CREAT|O_TRUNC, 0644)) == -1) {
+               file_error(ms, errno, "cannot open `%s'", dbname);
+               return -1;
        }
-#ifndef COMPILE_ONLY
-       if ((rv = apprentice_map(fm, &magic, &nmagic, fn, action)) != 0)
-               (void)fprintf(stderr, "%s: Using regular magic file `%s'\n",
-                   __progname, fn);
-               
-       if (rv != 0)
-               rv = apprentice_file(fm, &magic, &nmagic, fn, action);
-
-       if (rv != 0)
-               return rv;
-            
-       if (magic == NULL || nmagic == 0)
-               return rv;
 
-       ml = xmalloc(sizeof(*ml));
+       if (write(fd, ar, sizeof(ar)) != (ssize_t)sizeof(ar)) {
+               file_error(ms, errno, "error writing `%s'", dbname);
+               return -1;
+       }
 
-       ml->magic = magic;
-       ml->nmagic = nmagic;
+       if (lseek(fd, (off_t)sizeof(struct magic), SEEK_SET)
+           != sizeof(struct magic)) {
+               file_error(ms, errno, "error seeking `%s'", dbname);
+               return -1;
+       }
 
-       fm->mlist->prev->next = ml;
-       ml->prev = fm->mlist->prev;
-/*@-immediatetrans@*/
-       ml->next = fm->mlist;
-/*@=immediatetrans@*/
-/*@-kepttrans@*/
-       fm->mlist->prev = ml;
-/*@=kepttrans@*/
+       if (write(fd, *magicp, (sizeof(struct magic) * *nmagicp)) 
+           != (ssize_t)(sizeof(struct magic) * *nmagicp)) {
+               file_error(ms, errno, "error writing `%s'", dbname);
+               return -1;
+       }
 
-/*@-compdef -compmempass @*/
-       return rv;
-/*@=compdef =compmempass @*/
-#endif /* COMPILE_ONLY */
+       (void)close(fd);
+       return 0;
 }
 
-/* const char *fn: list of magic files */
-int
-fmagicSetup(fmagic fm, const char *fn, int action)
+private const char ext[] = ".mgc";
+/*
+ * make a dbname
+ */
+private char *
+mkdbname(const char *fn, char *buf, size_t bufsiz)
 {
-       char *p, *mfn;
-       int file_err, errs = -1;
-
-       if (fm->mlist == NULL) {
-               static struct mlist mlist;
-/*@-immediatetrans@*/
-               mlist.next = &mlist;
-               mlist.prev = &mlist;
-               fm->mlist = &mlist;
-/*@=immediatetrans@*/
-       }
-
-       mfn = xstrdup(fn);
-       fn = mfn;
-  
-/*@-branchstate@*/
-       while (fn != NULL) {
-               p = strchr(fn, PATHSEP);
-               if (p != NULL)
-                       *p++ = '\0';
-               file_err = apprentice_1(fm, fn, action);
-               if (file_err > errs)
-                       errs = file_err;
-               fn = p;
-       }
-/*@=branchstate@*/
-       if (errs == -1)
-               (void) fprintf(stderr, "%s: couldn't find any magic files!\n",
-                   __progname);
-       if (action == FILE_CHECK && errs)
-               exit(EXIT_FAILURE);
-
-       free(mfn);
-/*@-compdef -compmempass@*/
-       return errs;
-/*@=compdef =compmempass@*/
+#ifdef notdef
+       const char *p;
+       if ((p = strrchr(fn, '/')) != NULL)
+               fn = ++p;
+#endif
+       (void)snprintf(buf, bufsiz, "%s%s", fn, ext);
+       return buf;
 }
 
-#ifdef COMPILE_ONLY
-int
-main(int argc, char *argv[])
-       /*@*/
+/*
+ * Byteswap an mmap'ed file if needed
+ */
+private void
+byteswap(struct magic *magic, uint32_t nmagic)
 {
-       static struct fmagic_s myfmagic;
-       fmagic fm = &myfmagic;
-       int ret;
+       uint32_t i;
+       for (i = 0; i < nmagic; i++)
+               bs1(&magic[i]);
+}
 
-       setprogname(argv[0]);       /* Retrofit glibc __progname */
+/*
+ * swap a short
+ */
+private uint16_t
+swap2(uint16_t sv)
+{
+       uint16_t rv;
+       uint8_t *s = (uint8_t *)(void *)&sv; 
+       uint8_t *d = (uint8_t *)(void *)&rv; 
+       d[0] = s[1];
+       d[1] = s[0];
+       return rv;
+}
 
-       if (argc != 2) {
-               (void)fprintf(stderr, "usage: %s file\n", __progname);
-               exit(1);
-       }
-       fm->magicfile = argv[1];
+/*
+ * swap an int
+ */
+private uint32_t
+swap4(uint32_t sv)
+{
+       uint32_t rv;
+       uint8_t *s = (uint8_t *)(void *)&sv; 
+       uint8_t *d = (uint8_t *)(void *)&rv; 
+       d[0] = s[3];
+       d[1] = s[2];
+       d[2] = s[1];
+       d[3] = s[0];
+       return rv;
+}
 
-       exit(apprentice(fm, fm->magicfile, COMPILE));
+/*
+ * byteswap a single magic entry
+ */
+private void
+bs1(struct magic *m)
+{
+       m->cont_level = swap2(m->cont_level);
+       m->offset = swap4((uint32_t)m->offset);
+       m->in_offset = swap4((uint32_t)m->in_offset);
+       if (m->type != FILE_STRING)
+               m->value.l = swap4(m->value.l);
+       m->mask = swap4(m->mask);
 }
-#endif /* COMPILE_ONLY */
diff --git a/file/src/apptype.c b/file/src/apptype.c
new file mode 100644 (file)
index 0000000..73b0687
--- /dev/null
@@ -0,0 +1,170 @@
+/*
+ * Adapted from: apptype.c, Written by Eberhard Mattes and put into the
+ * public domain
+ * 
+ * Notes: 1. Qualify the filename so that DosQueryAppType does not do extraneous
+ * searches.
+ * 
+ * 2. DosQueryAppType will return FAPPTYP_DOS on a file ending with ".com"
+ * (other than an OS/2 exe or Win exe with this name). Eberhard Mattes
+ * remarks Tue, 6 Apr 93: Moreover, it reports the type of the (new and very
+ * bug ridden) Win Emacs as "OS/2 executable".
+ * 
+ * 3. apptype() uses the filename if given, otherwise a tmp file is created with
+ * the contents of buf. If buf is not the complete file, apptype can
+ * incorrectly identify the exe type. The "-z" option of "file" is the reason
+ * for this ugly code.
+ */
+
+/*
+ * amai: Darrel Hankerson did the changes described here.
+ * 
+ * It remains to check the validity of comments (2.) since it's referred to an
+ * "old" OS/2 version.
+ * 
+ */
+
+#include "file.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+#ifndef        lint
+FILE_RCSID("@(#)$Id: apptype.c,v 1.6 2003/11/11 20:01:45 christos Exp $")
+#endif /* lint */
+
+#ifdef __EMX__
+#include <io.h>
+#define INCL_DOSSESMGR
+#define INCL_DOSERRORS
+#define INCL_DOSFILEMGR
+#include <os2.h>
+typedef ULONG   APPTYPE;
+
+protected int
+file_os2_apptype(struct magic_set *ms, const char *fn, const void *buf,
+    size_t nb)
+{
+       APPTYPE         rc, type;
+       char            path[_MAX_PATH], drive[_MAX_DRIVE], dir[_MAX_DIR],
+                       fname[_MAX_FNAME], ext[_MAX_EXT];
+       char           *filename;
+       FILE           *fp;
+
+       if (fn)
+               filename = strdup(fn);
+       else if ((filename = tempnam("./", "tmp")) == NULL) {
+               file_error(ms, errno, "cannot create tempnam");
+               return -1;
+       }
+       /* qualify the filename to prevent extraneous searches */
+       _splitpath(filename, drive, dir, fname, ext);
+       (void)sprintf(path, "%s%s%s%s", drive,
+               (*dir == '\0') ? "./" : dir,
+               fname,
+               (*ext == '\0') ? "." : ext);
+
+       if (fn == NULL) {
+               if ((fp = fopen(path, "wb")) == NULL) {
+                       file_error(ms, errno, "cannot open tmp file `%s'", path);
+                       return -1;
+               }
+               if (fwrite(buf, 1, nb, fp) != nb) {
+                       file_error(ms, errno, "cannot write tmp file `%s'",
+                           path);
+                       return -1;
+               }
+               (void)fclose(fp);
+       }
+       rc = DosQueryAppType(path, &type);
+
+       if (fn == NULL) {
+               unlink(path);
+               free(filename);
+       }
+#if 0
+       if (rc == ERROR_INVALID_EXE_SIGNATURE)
+               printf("%s: not an executable file\n", fname);
+       else if (rc == ERROR_FILE_NOT_FOUND)
+               printf("%s: not found\n", fname);
+       else if (rc == ERROR_ACCESS_DENIED)
+               printf("%s: access denied\n", fname);
+       else if (rc != 0)
+               printf("%s: error code = %lu\n", fname, rc);
+       else
+#else
+
+       /*
+        * for our purpose here it's sufficient to just ignore the error and
+        * return w/o success (=0)
+        */
+
+       if (rc)
+               return (0);
+
+#endif
+
+       if (type & FAPPTYP_32BIT)
+               if (file_printf(ms, "32-bit ") == -1)
+                       return -1;
+       if (type & FAPPTYP_PHYSDRV) {
+               if (file_printf(ms, "physical device driver") == -1)
+                       return -1;
+       } else if (type & FAPPTYP_VIRTDRV) {
+               if (file_printf(ms, "virtual device driver") == -1)
+                       return -1;
+       } else if (type & FAPPTYP_DLL) {
+               if (type & FAPPTYP_PROTDLL)
+                       if (file_printf(ms, "protected ") == -1)
+                               return -1;
+               if (file_printf(ms, "DLL") == -1)
+                       return -1;
+       } else if (type & (FAPPTYP_WINDOWSREAL | FAPPTYP_WINDOWSPROT)) {
+               if (file_printf(ms, "Windows executable") == -1)
+                       return -1;
+       } else if (type & FAPPTYP_DOS) {
+               /*
+                * The API routine is partially broken on filenames ending
+                * ".com".
+                */
+               if (stricmp(ext, ".com") == 0)
+                       if (strncmp((const char *)buf, "MZ", 2))
+                               return (0);
+               if (file_printf(ms, "DOS executable") == -1)
+                       return -1;
+               /* ---------------------------------------- */
+               /* Might learn more from the magic(4) entry */
+               if (file_printf(ms, ", magic(4)-> ") == -1)
+                       return -1;
+               return (0);
+               /* ---------------------------------------- */
+       } else if (type & FAPPTYP_BOUND) {
+               if (file_printf(ms, "bound executable") == -1)
+                       return -1;
+       } else if ((type & 7) == FAPPTYP_WINDOWAPI) {
+               if (file_printf(ms, "PM executable") == -1)
+                       return -1;
+       } else if (file_printf(ms, "OS/2 executable") == -1)
+               return -1;
+
+       switch (type & (FAPPTYP_NOTWINDOWCOMPAT |
+                       FAPPTYP_WINDOWCOMPAT |
+                       FAPPTYP_WINDOWAPI)) {
+       case FAPPTYP_NOTWINDOWCOMPAT:
+               if (file_printf(ms, " [NOTWINDOWCOMPAT]") == -1)
+                       return -1;
+               break;
+       case FAPPTYP_WINDOWCOMPAT:
+               if (file_printf(ms, " [WINDOWCOMPAT]") == -1)
+                       return -1;
+               break;
+       case FAPPTYP_WINDOWAPI:
+               if (file_printf(ms, " [WINDOWAPI]") == -1)
+                       return -1;
+               break;
+       }
+       return 1;
+}
+#endif
index c8ae7e7..3df6aaa 100644 (file)
@@ -1,10 +1,39 @@
 /*
+ * Copyright (c) Ian F. Darwin 1986-1995.
+ * Software written by Ian F. Darwin and others;
+ * maintained 1995-present by Christos Zoulas and others.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice immediately at the beginning of the file, without modification,
+ *    this list of conditions, and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    This product includes software developed by Ian F. Darwin and others.
+ * 4. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *  
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+/*
  * ASCII magic -- file types that we know based on keywords
  * that can appear anywhere in the file.
  *
- * Copyright (c) Ian F. Darwin, 1987.
- * Written by Ian F. Darwin.
- *
  * Extensively modified by Eric Fischer <enf@pobox.com> in July, 2000,
  * to handle character codes other than ASCII on a unified basis.
  *
  * international characters, now subsumed into this file.
  */
 
-/*
- * This software is not subject to any license of the American Telephone
- * and Telegraph Company or of the Regents of the University of California.
- *
- * Permission is granted to anyone to use this software for any purpose on
- * any computer system, and to alter it and redistribute it freely, subject
- * to the following restrictions:
- *
- * 1. The author is not responsible for the consequences of use of this
- *    software, no matter how awful, even if they arise from flaws in it.
- *
- * 2. The origin of this software must not be misrepresented, either by
- *    explicit claim or by omission.  Since few users ever read sources,
- *    credits must appear in the documentation.
- *
- * 3. Altered versions must be plainly marked as such, and must not be
- *    misrepresented as being the original software.  Since few users
- *    ever read sources, credits must appear in the documentation.
- *
- * 4. This notice may not be removed or altered.
- */
-
-#include "system.h"
 #include "file.h"
+#include "magic.h"
+#include <stdio.h>
+#include <string.h>
+#include <memory.h>
+#include <ctype.h>
+#include <stdlib.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
 #include "names.h"
-#include "tar.h"
-#include "debug.h"
 
-FILE_RCSID("@(#)Id: ascmagic.c,v 1.32 2002/07/03 18:26:37 christos Exp ")
+#ifndef        lint
+FILE_RCSID("@(#)$Id: ascmagic.c,v 1.40 2003/11/20 00:25:39 christos Exp $")
+#endif /* lint */
 
-/*@access fmagic @*/
+typedef unsigned long unichar;
 
-/*
- * Stolen (by the author!) from the public domain tar program:
- * Public Domain version written 26 Aug 1985 John Gilmore (ihnp4!hoptoad!gnu).
- */
-#define        isodigit(c)     ( ((c) >= '0') && ((c) <= '7') )
+#define MAXLINELEN 300 /* longest sane line length */
+#define ISSPC(x) ((x) == ' ' || (x) == '\t' || (x) == '\r' || (x) == '\n' \
+                 || (x) == 0x85 || (x) == '\f')
 
-/*
- * Quick and dirty octal conversion.
- *
- * Result is -1 if the field is invalid (all blank, or nonoctal).
- */
-/*@-bounds@*/
-static int
-from_oct(int digs, char *where)
-       /*@*/
+private int looks_ascii(const unsigned char *, size_t, unichar *, size_t *);
+private int looks_utf8(const unsigned char *, size_t, unichar *, size_t *);
+private int looks_unicode(const unsigned char *, size_t, unichar *, size_t *);
+private int looks_latin1(const unsigned char *, size_t, unichar *, size_t *);
+private int looks_extended(const unsigned char *, size_t, unichar *, size_t *);
+private void from_ebcdic(const unsigned char *, size_t, unsigned char *);
+private int ascmatch(const unsigned char *, const unichar *, size_t);
+
+
+protected int
+file_ascmagic(struct magic_set *ms, const unsigned char *buf, size_t nbytes)
 {
-       int     value;
+       size_t i;
+       unsigned char nbuf[HOWMANY+1];  /* one extra for terminating '\0' */
+       unichar ubuf[HOWMANY+1];        /* one extra for terminating '\0' */
+       size_t ulen;
+       struct names *p;
+
+       const char *code = NULL;
+       const char *code_mime = NULL;
+       const char *type = NULL;
+       const char *subtype = NULL;
+       const char *subtype_mime = NULL;
+
+       int has_escapes = 0;
+       int has_backspace = 0;
+
+       int n_crlf = 0;
+       int n_lf = 0;
+       int n_cr = 0;
+       int n_nel = 0;
+
+       int last_line_end = -1;
+       int has_long_lines = 0;
+
+       /*
+        * Undo the NUL-termination kindly provided by process()
+        * but leave at least one byte to look at
+        */
+
+       while (nbytes > 1 && buf[nbytes - 1] == '\0')
+               nbytes--;
+
+       /* nbuf and ubuf relies on this */
+       if (nbytes > HOWMANY)
+               nbytes = HOWMANY;
+
+       /*
+        * Then try to determine whether it's any character code we can
+        * identify.  Each of these tests, if it succeeds, will leave
+        * the text converted into one-unichar-per-character Unicode in
+        * ubuf, and the number of characters converted in ulen.
+        */
+       if (looks_ascii(buf, nbytes, ubuf, &ulen)) {
+               code = "ASCII";
+               code_mime = "us-ascii";
+               type = "text";
+       } else if (looks_utf8(buf, nbytes, ubuf, &ulen)) {
+               code = "UTF-8 Unicode";
+               code_mime = "utf-8";
+               type = "text";
+       } else if ((i = looks_unicode(buf, nbytes, ubuf, &ulen)) != 0) {
+               if (i == 1)
+                       code = "Little-endian UTF-16 Unicode";
+               else
+                       code = "Big-endian UTF-16 Unicode";
 
-       while (isspace((unsigned char)*where)) {        /* Skip spaces */
-               where++;
-               if (--digs <= 0)
-                       return -1;              /* All blank field */
+               type = "character data";
+               code_mime = "utf-16";    /* is this defined? */
+       } else if (looks_latin1(buf, nbytes, ubuf, &ulen)) {
+               code = "ISO-8859";
+               type = "text";
+               code_mime = "iso-8859-1"; 
+       } else if (looks_extended(buf, nbytes, ubuf, &ulen)) {
+               code = "Non-ISO extended-ASCII";
+               type = "text";
+               code_mime = "unknown";
+       } else {
+               from_ebcdic(buf, nbytes, nbuf);
+
+               if (looks_ascii(nbuf, nbytes, ubuf, &ulen)) {
+                       code = "EBCDIC";
+                       type = "character data";
+                       code_mime = "ebcdic";
+               } else if (looks_latin1(nbuf, nbytes, ubuf, &ulen)) {
+                       code = "International EBCDIC";
+                       type = "character data";
+                       code_mime = "ebcdic";
+               } else {
+                       return 0;  /* doesn't look like text at all */
+               }
        }
-       value = 0;
-/*@-shiftimplementation@*/
-       while (digs > 0 && isodigit(*where)) {  /* Scan til nonoctal */
-               value = (value << 3) | (*where++ - '0');
-               --digs;
+
+       /*
+        * for troff, look for . + letter + letter or .\";
+        * this must be done to disambiguate tar archives' ./file
+        * and other trash from real troff input.
+        *
+        * I believe Plan 9 troff allows non-ASCII characters in the names
+        * of macros, so this test might possibly fail on such a file.
+        */
+       if (*ubuf == '.') {
+               unichar *tp = ubuf + 1;
+
+               while (ISSPC(*tp))
+                       ++tp;   /* skip leading whitespace */
+               if ((tp[0] == '\\' && tp[1] == '\"') ||
+                   (isascii((unsigned char)tp[0]) &&
+                    isalnum((unsigned char)tp[0]) &&
+                    isascii((unsigned char)tp[1]) &&
+                    isalnum((unsigned char)tp[1]) &&
+                    ISSPC(tp[2]))) {
+                       subtype_mime = "text/troff";
+                       subtype = "troff or preprocessor input";
+                       goto subtype_identified;
+               }
        }
-/*@=shiftimplementation@*/
 
-       if (digs > 0 && *where && !isspace((unsigned char)*where))
-               return -1;                      /* Ended on non-space/nul */
+       if ((*buf == 'c' || *buf == 'C') && ISSPC(buf[1])) {
+               subtype_mime = "text/fortran";
+               subtype = "fortran program";
+               goto subtype_identified;
+       }
 
-       return value;
-}
-/*@=bounds@*/
+       /* look for tokens from names.h - this is expensive! */
 
-/*
- * Return 
- *     0 if the checksum is bad (i.e., probably not a tar archive), 
- *     1 for old UNIX tar file,
- *     2 for Unix Std (POSIX) tar file.
- */
-static int
-is_tar(const fmagic fm)
-       /*@*/
-{
-       int nb = fm->nb;
-       union record *header = (union record *)fm->buf;
-       int     i;
-       int     sum, recsum;
-       char    *p;
+       i = 0;
+       while (i < ulen) {
+               size_t end;
 
-       if (nb < sizeof(*header))
-               return 0;
+               /*
+                * skip past any leading space
+                */
+               while (i < ulen && ISSPC(ubuf[i]))
+                       i++;
+               if (i >= ulen)
+                       break;
 
-       recsum = from_oct(8,  header->header.chksum);
+               /*
+                * find the next whitespace
+                */
+               for (end = i + 1; end < nbytes; end++)
+                       if (ISSPC(ubuf[end]))
+                               break;
 
-       sum = 0;
-       p = header->charptr;
-/*@-sizeoftype@*/
-       for (i = sizeof(union record); --i >= 0;)
-/*@=sizeoftype@*/
-       {
                /*
-                * We can't use unsigned char here because of old compilers,
-                * e.g. V7.
+                * compare the word thus isolated against the token list
                 */
-               sum += 0xFF & *p++;
+               for (p = names; p < names + NNAMES; p++) {
+                       if (ascmatch((const unsigned char *)p->name, ubuf + i,
+                           end - i)) {
+                               subtype = types[p->type].human;
+                               subtype_mime = types[p->type].mime;
+                               goto subtype_identified;
+                       }
+               }
+
+               i = end;
+       }
+
+subtype_identified:
+
+       /*
+        * Now try to discover other details about the file.
+        */
+       for (i = 0; i < ulen; i++) {
+               if (i > last_line_end + MAXLINELEN)
+                       has_long_lines = 1;
+
+               if (ubuf[i] == '\033')
+                       has_escapes = 1;
+               if (ubuf[i] == '\b')
+                       has_backspace = 1;
+
+               if (ubuf[i] == '\r' && (i + 1 <  ulen && ubuf[i + 1] == '\n')) {
+                       n_crlf++;
+                       last_line_end = i;
+               }
+               if (ubuf[i] == '\r' && (i + 1 >= ulen || ubuf[i + 1] != '\n')) {
+                       n_cr++;
+                       last_line_end = i;
+               }
+               if (ubuf[i] == '\n' && ((int)i - 1 < 0 || ubuf[i - 1] != '\r')){
+                       n_lf++;
+                       last_line_end = i;
+               }
+               if (ubuf[i] == 0x85) { /* X3.64/ECMA-43 "next line" character */
+                       n_nel++;
+                       last_line_end = i;
+               }
        }
 
-       /* Adjust checksum to count the "chksum" field as blanks. */
-       for (i = sizeof(header->header.chksum); --i >= 0;)
-               sum -= 0xFF & header->header.chksum[i];
-       sum += ' ' * sizeof header->header.chksum;      
+       if ((ms->flags & MAGIC_MIME)) {
+               if (subtype_mime) {
+                       if (file_printf(ms, subtype_mime) == -1)
+                               return -1;
+               } else {
+                       if (file_printf(ms, "text/plain") == -1)
+                               return -1;
+               }
+
+               if (code_mime) {
+                       if (file_printf(ms, "; charset=") == -1)
+                               return -1;
+                       if (file_printf(ms, code_mime) == -1)
+                               return -1;
+               }
+       } else {
+               if (file_printf(ms, code) == -1)
+                       return -1;
+
+               if (subtype) {
+                       if (file_printf(ms, " ") == -1)
+                               return -1;
+                       if (file_printf(ms, subtype) == -1)
+                               return -1;
+               }
+
+               if (file_printf(ms, " ") == -1)
+                       return -1;
+               if (file_printf(ms, type) == -1)
+                       return -1;
+
+               if (has_long_lines)
+                       if (file_printf(ms, ", with very long lines") == -1)
+                               return -1;
+
+               /*
+                * Only report line terminators if we find one other than LF,
+                * or if we find none at all.
+                */
+               if ((n_crlf == 0 && n_cr == 0 && n_nel == 0 && n_lf == 0) ||
+                   (n_crlf != 0 || n_cr != 0 || n_nel != 0)) {
+                       if (file_printf(ms, ", with") == -1)
+                               return -1;
+
+                       if (n_crlf == 0 && n_cr == 0 && n_nel == 0 && n_lf == 0)                        {
+                               if (file_printf(ms, " no") == -1)
+                                       return -1;
+                       } else {
+                               if (n_crlf) {
+                                       if (file_printf(ms, " CRLF") == -1)
+                                               return -1;
+                                       if (n_cr || n_lf || n_nel)
+                                               if (file_printf(ms, ",") == -1)
+                                                       return -1;
+                               }
+                               if (n_cr) {
+                                       if (file_printf(ms, " CR") == -1)
+                                               return -1;
+                                       if (n_lf || n_nel)
+                                               if (file_printf(ms, ",") == -1)
+                                                       return -1;
+                               }
+                               if (n_lf) {
+                                       if (file_printf(ms, " LF") == -1)
+                                               return -1;
+                                       if (n_nel)
+                                               if (file_printf(ms, ",") == -1)
+                                                       return -1;
+                               }
+                               if (n_nel)
+                                       if (file_printf(ms, " NEL") == -1)
+                                               return -1;
+                       }
+
+                       if (file_printf(ms, " line terminators") == -1)
+                               return -1;
+               }
 
-       if (sum != recsum)
-               return 0;       /* Not a tar archive */
-       
-       if (!strcmp(header->header.magic, TARMAGIC)) 
-               return 2;               /* Unix Standard tar archive */
+               if (has_escapes)
+                       if (file_printf(ms, ", with escape sequences") == -1)
+                               return -1;
+               if (has_backspace)
+                       if (file_printf(ms, ", with overstriking") == -1)
+                               return -1;
+       }
 
-       return 1;                       /* Old fashioned tar archive */
+       return 1;
 }
-typedef unsigned long unichar;
 
-#define MAXLINELEN 300 /* longest sane line length */
-#define ISSPC(x) ((x) == ' ' || (x) == '\t' || (x) == '\r' || (x) == '\n' \
-                 || (x) == 0x85 || (x) == '\f')
+private int
+ascmatch(const unsigned char *s, const unichar *us, size_t ulen)
+{
+       size_t i;
+
+       for (i = 0; i < ulen; i++) {
+               if (s[i] != us[i])
+                       return 0;
+       }
+
+       if (s[i])
+               return 0;
+       else
+               return 1;
+}
 
 /*
  * This table reflects a particular philosophy about what constitutes
@@ -192,8 +417,7 @@ typedef unsigned long unichar;
 #define I 2   /* character appears in ISO-8859 text */
 #define X 3   /* character appears in non-ISO extended ASCII (Mac, IBM PC) */
 
-/*@unchecked@*/ /*@observer@*/
-static char text_chars[256] = {
+private char text_chars[256] = {
        /*                  BEL BS HT LF    FF CR    */
        F, F, F, F, F, F, F, T, T, T, T, F, T, T, F, F,  /* 0x0X */
         /*                              ESC          */
@@ -215,17 +439,15 @@ static char text_chars[256] = {
        I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I   /* 0xfX */
 };
 
-/*@-bounds@*/
-static int
-looks_ascii(const unsigned char *buf, int nb,
-               /*@out@*/ unichar *ubuf, /*@out@*/ int *ulen)
-       /*@modifies *ubuf, *ulen @*/
+private int
+looks_ascii(const unsigned char *buf, size_t nbytes, unichar *ubuf,
+    size_t *ulen)
 {
        int i;
 
        *ulen = 0;
 
-       for (i = 0; i < nb; i++) {
+       for (i = 0; i < nbytes; i++) {
                int t = text_chars[buf[i]];
 
                if (t != T)
@@ -236,19 +458,15 @@ looks_ascii(const unsigned char *buf, int nb,
 
        return 1;
 }
-/*@=bounds@*/
 
-/*@-bounds@*/
-static int
-looks_latin1(const unsigned char *buf, int nb,
-               /*@out@*/ unichar *ubuf, /*@out@*/ int *ulen)
-       /*@modifies *ubuf, *ulen @*/
+private int
+looks_latin1(const unsigned char *buf, size_t nbytes, unichar *ubuf, size_t *ulen)
 {
        int i;
 
        *ulen = 0;
 
-       for (i = 0; i < nb; i++) {
+       for (i = 0; i < nbytes; i++) {
                int t = text_chars[buf[i]];
 
                if (t != T && t != I)
@@ -259,19 +477,16 @@ looks_latin1(const unsigned char *buf, int nb,
 
        return 1;
 }
-/*@=bounds@*/
 
-/*@-bounds@*/
-static int
-looks_extended(const unsigned char *buf, int nb,
-               /*@out@*/ unichar *ubuf, /*@out@*/ int *ulen)
-       /*@modifies *ubuf, *ulen @*/
+private int
+looks_extended(const unsigned char *buf, size_t nbytes, unichar *ubuf,
+    size_t *ulen)
 {
        int i;
 
        *ulen = 0;
 
-       for (i = 0; i < nb; i++) {
+       for (i = 0; i < nbytes; i++) {
                int t = text_chars[buf[i]];
 
                if (t != T && t != I && t != X)
@@ -282,13 +497,9 @@ looks_extended(const unsigned char *buf, int nb,
 
        return 1;
 }
-/*@=bounds@*/
 
-/*@-bounds@*/
-static int
-looks_utf8(const unsigned char *buf, int nb,
-               /*@out@*/ unichar *ubuf, /*@out@*/ int *ulen)
-       /*@modifies *ubuf, *ulen @*/
+private int
+looks_utf8(const unsigned char *buf, size_t nbytes, unichar *ubuf, size_t *ulen)
 {
        int i, n;
        unichar c;
@@ -296,7 +507,7 @@ looks_utf8(const unsigned char *buf, int nb,
 
        *ulen = 0;
 
-       for (i = 0; i < nb; i++) {
+       for (i = 0; i < nbytes; i++) {
                if ((buf[i] & 0x80) == 0) {        /* 0xxxxxxx is plain ASCII */
                        /*
                         * Even if the whole file is valid UTF-8 sequences,
@@ -332,7 +543,7 @@ looks_utf8(const unsigned char *buf, int nb,
 
                        for (n = 0; n < following; n++) {
                                i++;
-                               if (i >= nb)
+                               if (i >= nbytes)
                                        goto done;
 
                                if ((buf[i] & 0x80) == 0 || (buf[i] & 0x40))
@@ -348,18 +559,15 @@ looks_utf8(const unsigned char *buf, int nb,
 done:
        return gotone;   /* don't claim it's UTF-8 if it's all 7-bit */
 }
-/*@=bounds@*/
 
-/*@-bounds@*/
-static int
-looks_unicode(const unsigned char *buf, int nb,
-               /*@out@*/ unichar *ubuf, /*@out@*/ int *ulen)
-       /*@modifies *ubuf, *ulen @*/
+private int
+looks_unicode(const unsigned char *buf, size_t nbytes, unichar *ubuf,
+    size_t *ulen)
 {
        int bigend;
        int i;
 
-       if (nb < 2)
+       if (nbytes < 2)
                return 0;
 
        if (buf[0] == 0xff && buf[1] == 0xfe)
@@ -371,7 +579,7 @@ looks_unicode(const unsigned char *buf, int nb,
 
        *ulen = 0;
 
-       for (i = 2; i + 1 < nb; i += 2) {
+       for (i = 2; i + 1 < nbytes; i += 2) {
                /* XXX fix to properly handle chars > 65536 */
 
                if (bigend)
@@ -381,13 +589,13 @@ looks_unicode(const unsigned char *buf, int nb,
 
                if (ubuf[*ulen - 1] == 0xfffe)
                        return 0;
-               if (ubuf[*ulen - 1] < 128 && text_chars[ubuf[*ulen - 1]] != T)
+               if (ubuf[*ulen - 1] < 128 &&
+                   text_chars[(size_t)ubuf[*ulen - 1]] != T)
                        return 0;
        }
 
-       return 1;
+       return 1 + bigend;
 }
-/*@=bounds@*/
 
 #undef F
 #undef T
@@ -416,8 +624,7 @@ looks_unicode(const unsigned char *buf, int nb,
  * between old-style and internationalized examples of text.
  */
 
-/*@unchecked@*/ /*@observer@*/
-static unsigned char ebcdic_to_ascii[] = {
+private unsigned char ebcdic_to_ascii[] = {
   0,   1,   2,   3, 156,   9, 134, 127, 151, 141, 142,  11,  12,  13,  14,  15,
  16,  17,  18,  19, 157, 133,   8, 135,  24,  25, 146, 143,  28,  29,  30,  31,
 128, 129, 130, 131, 132,  10,  23,  27, 136, 137, 138, 139, 140,   5,   6,   7,
@@ -436,6 +643,7 @@ static unsigned char ebcdic_to_ascii[] = {
 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 250, 251, 252, 253, 254, 255
 };
 
+#ifdef notdef
 /*
  * The following EBCDIC-to-ASCII table may relate more closely to reality,
  * or at least to modern reality.  It comes from
@@ -450,9 +658,7 @@ static unsigned char ebcdic_to_ascii[] = {
  * cases for the NEL character can be taken out of the code.
  */
 
-#ifdef UNUSED
-/*@unchecked@*/ /*@unused@*/ /*@observer@*/
-static unsigned char ebcdic_1047_to_8859[] = {
+private unsigned char ebcdic_1047_to_8859[] = {
 0x00,0x01,0x02,0x03,0x9C,0x09,0x86,0x7F,0x97,0x8D,0x8E,0x0B,0x0C,0x0D,0x0E,0x0F,
 0x10,0x11,0x12,0x13,0x9D,0x0A,0x08,0x87,0x18,0x19,0x92,0x8F,0x1C,0x1D,0x1E,0x1F,
 0x80,0x81,0x82,0x83,0x84,0x85,0x17,0x1B,0x88,0x89,0x8A,0x8B,0x8C,0x05,0x06,0x07,
@@ -473,303 +679,14 @@ static unsigned char ebcdic_1047_to_8859[] = {
 #endif
 
 /*
- * Copy buf[0 ... nb-1] into out[], translating EBCDIC to ASCII.
+ * Copy buf[0 ... nbytes-1] into out[], translating EBCDIC to ASCII.
  */
-/*@-bounds@*/
-static void
-from_ebcdic(const unsigned char *buf, int nb, /*@out@*/ unsigned char *otp)
-       /*@modifies *otp @*/
-{
-       int i;
-
-       for (i = 0; i < nb; i++) {
-               otp[i] = ebcdic_to_ascii[buf[i]];
-       }
-}
-/*@=bounds@*/
-
-/*@-bounds@*/
-static int
-fmagicAMatch(const unsigned char *s, const unichar *us, int ulen)
-       /*@*/
+private void
+from_ebcdic(const unsigned char *buf, size_t nbytes, unsigned char *out)
 {
-       size_t i;
-
-       for (i = 0; i < ulen; i++) {
-               if (s[i] != us[i])
-                       return 0;
-       }
-
-       if (s[i])
-               return 0;
-       else
-               return 1;
-}
-/*@=bounds@*/
-
-/* int nb: size actually read */
-/*@-bounds@*/
-int
-fmagicA(fmagic fm)
-{
-       unsigned char * buf = fm->buf;
-       int nb = fm->nb;
-
-       char nbuf[HOWMANY+1];           /* one extra for terminating '\0' */
-       unichar ubuf[HOWMANY+1];        /* one extra for terminating '\0' */
-       int ulen;
-       struct names *p;
        int i;
 
-       const char *code = NULL;
-       const char *code_mime = NULL;
-       const char *type = NULL;
-       const char *subtype = NULL;
-       const char *subtype_mime = NULL;
-
-       int has_escapes = 0;
-       int has_backspace = 0;
-
-       int n_crlf = 0;
-       int n_lf = 0;
-       int n_cr = 0;
-       int n_nel = 0;
-
-       int last_line_end = -1;
-       int has_long_lines = 0;
-
-       /*
-        * Do the tar test first, because if the first file in the tar
-        * archive starts with a dot, we can confuse it with an nroff file.
-        */
-       switch (is_tar(fm)) {
-       case 1:
-               file_printf(fm, ((fm->flags & FMAGIC_FLAGS_MIME)
-                       ? "application/x-tar" : "tar archive"));
-               return 1;
-       case 2:
-               file_printf(fm, ((fm->flags & FMAGIC_FLAGS_MIME)
-                       ? "application/x-tar, POSIX" : "POSIX tar archive"));
-               return 1;
-       }
-
-       /*
-        * Undo the NUL-termination kindly provided by fmagicProcess()
-        * but leave at least one byte to look at
-        */
-
-       while (nb > 1 && buf[nb - 1] == '\0')
-               nb--;
-
-       /*
-        * Then try to determine whether it's any character code we can
-        * identify.  Each of these tests, if it succeeds, will leave
-        * the text converted into one-unichar-per-character Unicode in
-        * ubuf, and the number of characters converted in ulen.
-        */
-       if (looks_ascii(buf, nb, ubuf, &ulen)) {
-               code = "ASCII";
-               code_mime = "us-ascii";
-               type = "text";
-       } else if (looks_utf8(buf, nb, ubuf, &ulen)) {
-               code = "UTF-8 Unicode";
-               code_mime = "utf-8";
-               type = "text";
-       } else if ((i = looks_unicode(buf, nb, ubuf, &ulen))) {
-               if (i == 1)
-                       code = "Little-endian UTF-16 Unicode";
-               else
-                       code = "Big-endian UTF-16 Unicode";
-
-               type = "character data";
-               code_mime = "utf-16";    /* is this defined? */
-       } else if (looks_latin1(buf, nb, ubuf, &ulen)) {
-               code = "ISO-8859";
-               type = "text";
-               code_mime = "iso-8859-1"; 
-       } else if (looks_extended(buf, nb, ubuf, &ulen)) {
-               code = "Non-ISO extended-ASCII";
-               type = "text";
-               code_mime = "unknown";
-       } else {
-               from_ebcdic(buf, nb, nbuf);
-
-               if (looks_ascii(nbuf, nb, ubuf, &ulen)) {
-                       code = "EBCDIC";
-                       type = "character data";
-                       code_mime = "ebcdic";
-               } else if (looks_latin1(nbuf, nb, ubuf, &ulen)) {
-                       code = "International EBCDIC";
-                       type = "character data";
-                       code_mime = "ebcdic";
-               } else {
-                       return 0;  /* doesn't look like text at all */
-               }
+       for (i = 0; i < nbytes; i++) {
+               out[i] = ebcdic_to_ascii[buf[i]];
        }
-
-       /*
-        * for troff, look for . + letter + letter or .\";
-        * this must be done to disambiguate tar archives' ./file
-        * and other trash from real troff input.
-        *
-        * I believe Plan 9 troff allows non-ASCII characters in the names
-        * of macros, so this test might possibly fail on such a file.
-        */
-       if (*ubuf == '.') {
-               unichar *tp = ubuf + 1;
-
-               while (ISSPC(*tp))
-                       ++tp;   /* skip leading whitespace */
-               if ((tp[0] == '\\' && tp[1] == '\"') ||
-                   (isascii(tp[0]) && isalnum(tp[0]) &&
-                    isascii(tp[1]) && isalnum(tp[1]) &&
-                    ISSPC(tp[2]))) {
-                       subtype_mime = "text/troff";
-                       subtype = "troff or preprocessor input";
-                       goto subtype_identified;
-               }
-       }
-
-       if ((*buf == 'c' || *buf == 'C') && ISSPC(buf[1])) {
-               subtype_mime = "text/fortran";
-               subtype = "fortran program";
-               goto subtype_identified;
-       }
-
-       /* look for tokens from names.h - this is expensive! */
-
-       i = 0;
-       while (i < ulen) {
-               int end;
-
-               /*
-                * skip past any leading space
-                */
-               while (i < ulen && ISSPC(ubuf[i]))
-                       i++;
-               if (i >= ulen)
-                       break;
-
-               /*
-                * find the next whitespace
-                */
-               for (end = i + 1; end < nb; end++)
-                       if (ISSPC(ubuf[end]))
-                               /*@innerbreak@*/ break;
-
-               /*
-                * compare the word thus isolated against the token list
-                */
-/*@-sizeoftype@*/
-               for (p = names; p < names + NNAMES; p++)
-/*@=sizeoftype@*/
-               {
-                       if (p->name == NULL)
-                               /*@innerbreak@*/ break;
-                       if (fmagicAMatch(p->name, ubuf + i, end - i)) {
-                               subtype = types[p->type].human;
-                               subtype_mime = types[p->type].mime;
-                               goto subtype_identified;
-                       }
-               }
-
-               i = end;
-       }
-
-subtype_identified:
-
-       /*
-        * Now try to discover other details about the file.
-        */
-       for (i = 0; i < ulen; i++) {
-               if (i > last_line_end + MAXLINELEN)
-                       has_long_lines = 1;
-
-               if (ubuf[i] == '\033')
-                       has_escapes = 1;
-               if (ubuf[i] == '\b')
-                       has_backspace = 1;
-
-               if (ubuf[i] == '\r' && (i + 1 <  ulen && ubuf[i + 1] == '\n')) {
-                       n_crlf++;
-                       last_line_end = i;
-               }
-               if (ubuf[i] == '\r' && (i + 1 >= ulen || ubuf[i + 1] != '\n')) {
-                       n_cr++;
-                       last_line_end = i;
-               }
-               if (ubuf[i] == '\n' && (i - 1 <  0    || ubuf[i - 1] != '\r')) {
-                       n_lf++;
-                       last_line_end = i;
-               }
-               if (ubuf[i] == 0x85) { /* X3.64/ECMA-43 "next line" character */
-                       n_nel++;
-                       last_line_end = i;
-               }
-       }
-
-       if ((fm->flags & FMAGIC_FLAGS_MIME)) {
-               if (subtype_mime != NULL)
-                       file_printf(fm, subtype_mime);
-               else
-                       file_printf(fm, "text/plain");
-
-               if (code_mime != NULL) {
-                       file_printf(fm, "; charset=");
-                       file_printf(fm, code_mime);
-               }
-       } else {
-               file_printf(fm, code);
-
-               if (subtype != NULL) {
-                       file_printf(fm, " ");
-                       file_printf(fm, subtype);
-               }
-               file_printf(fm, " ");
-               file_printf(fm, type);
-
-               if (has_long_lines)
-                       file_printf(fm, ", with very long lines");
-
-               /*
-                * Only report line terminators if we find one other than LF,
-                * or if we find none at all.
-                */
-               if ((n_crlf == 0 && n_cr == 0 && n_nel == 0 && n_lf == 0) ||
-                   (n_crlf != 0 || n_cr != 0 || n_nel != 0)) {
-                       file_printf(fm, ", with");
-
-                       if (n_crlf == 0 && n_cr == 0 && n_nel == 0 && n_lf == 0)
-                               file_printf(fm, " no");
-                       else {
-                               if (n_crlf) {
-                                       file_printf(fm, " CRLF");
-                                       if (n_cr || n_lf || n_nel)
-                                               file_printf(fm, ",");
-                               }
-                               if (n_cr) {
-                                       file_printf(fm, " CR");
-                                       if (n_lf || n_nel)
-                                               file_printf(fm, ",");
-                               }
-                               if (n_lf) {
-                                       file_printf(fm, " LF");
-                                       if (n_nel)
-                                               file_printf(fm, ",");
-                               }
-                               if (n_nel)
-                                       file_printf(fm, " NEL");
-                       }
-
-                       file_printf(fm, " line terminators");
-               }
-
-               if (has_escapes)
-                       file_printf(fm, ", with escape sequences");
-               if (has_backspace)
-                       file_printf(fm, ", with overstriking");
-       }
-
-       return 1;
 }
-/*@=bounds@*/
diff --git a/file/src/autogen.sh b/file/src/autogen.sh
deleted file mode 100755 (executable)
index b35834f..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/sh
-
-export CFLAGS
-export LDFLAGS
-
-LTV="libtoolize (GNU libtool) 1.4.3"
-ACV="autoconf (GNU Autoconf) 2.57"
-AMV="automake (GNU automake) 1.7.3"
-USAGE="
-This script documents the versions of the tools I'm using to build rpm:
-       libtool-1.4.3
-       autoconf-2.57
-       automake-1.7.3
-Simply edit this script to change the libtool/autoconf/automake versions
-checked if you need to, as rpm should build (and has built) with all
-recent versions of libtool/autoconf/automake.
-"
-
-[ "`libtoolize --version`" != "$LTV" ] && echo "$USAGE" && exit 1
-[ "`autoconf --version | head -1`" != "$ACV" ] && echo "$USAGE" && exit 1
-[ "`automake --version | head -1 | sed -e 's/1\.4[a-z]/1.4/'`" != "$AMV" ] && echo "$USAGE" && exit 1
-
-libtoolize --copy --force
-aclocal
-autoheader
-automake -a -c
-autoconf
-
-if [ "$1" = "--noconfigure" ]; then 
-    exit 0;
-fi
-
-if [ X"$@" = X  -a "X`uname -s`" = "XLinux" ]; then
-    if [ -d /usr/share/man ]; then
-       mandir=/usr/share/man
-       infodir=/usr/share/info
-    else
-       mandir=/usr/man
-       infodir=/usr/info
-    fi
-    ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --infodir=${infodir} --mandir=${mandir} --enable-static "$@"
-else
-    ./configure "$@"
-fi
index b8ede4c..6a695f5 100644 (file)
@@ -1,21 +1,70 @@
-
-#include "system.h"
+/*
+ * Copyright (c) Ian F. Darwin 1986-1995.
+ * Software written by Ian F. Darwin and others;
+ * maintained 1995-present by Christos Zoulas and others.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice immediately at the beginning of the file, without modification,
+ *    this list of conditions, and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    This product includes software developed by Ian F. Darwin and others.
+ * 4. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *  
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+/*
+ * compress routines:
+ *     zmagic() - returns 0 if not recognized, uncompresses and prints
+ *                information if recognized
+ *     uncompress(method, old, n, newch) - uncompress old into new, 
+ *                                         using method, return sizeof new
+ */
 #include "file.h"
-#include "debug.h"
+#include "magic.h"
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <string.h>
+#include <errno.h>
+#include <sys/types.h>
+#ifdef HAVE_SYS_WAIT_H
+#include <sys/wait.h>
+#endif
+#undef HAVE_LIBZ
+#ifdef HAVE_LIBZ
+#include <zlib.h>
+#endif
 
-FILE_RCSID("@(#)Id: compress.c,v 1.25 2002/07/03 18:26:37 christos Exp ")
+#ifndef lint
+FILE_RCSID("@(#)$Id: compress.c,v 1.36 2004/03/22 19:11:54 christos Exp $")
+#endif
 
-/*@access fmagic @*/
 
-/*@-nullassign@*/
-/*@unchecked@*/
-static struct {
-/*@observer@*/
+private struct {
        const char *magic;
-       int   maglen;
-/*@observer@*/
+       size_t maglen;
        const char *const argv[3];
-       int      silent;
+       int silent;
 } compr[] = {
        { "\037\235", 2, { "gzip", "-cdq", NULL }, 1 },         /* compressed */
        /* Uncompress can get stuck; so use gzip first if we have it
@@ -28,22 +77,65 @@ static struct {
        { "\037\036", 2, { "gzip", "-cdq", NULL }, 0 },         /* packed */
        { "BZh",      3, { "bzip2", "-cd", NULL }, 1 },         /* bzip2-ed */
 };
-/*@=nullassign@*/
 
-/*@unchecked@*/
-static int ncompr = sizeof(compr) / sizeof(compr[0]);
+private int ncompr = sizeof(compr) / sizeof(compr[0]);
+
+
+private ssize_t swrite(int, const void *, size_t);
+private ssize_t sread(int, void *, size_t);
+private size_t uncompressbuf(struct magic_set *, size_t, const unsigned char *,
+    unsigned char **, size_t);
+#ifdef HAVE_LIBZ
+private size_t uncompressgzipped(struct magic_set *, const unsigned char *,
+    unsigned char **, size_t);
+#endif
+
+protected int
+file_zmagic(struct magic_set *ms, const unsigned char *buf, size_t nbytes)
+{
+       unsigned char *newbuf = NULL;
+       size_t i, nsz;
+       int rv = 0;
+
+       if ((ms->flags & MAGIC_COMPRESS) == 0)
+               return 0;
+
+       for (i = 0; i < ncompr; i++) {
+               if (nbytes < compr[i].maglen)
+                       continue;
+               if (memcmp(buf, compr[i].magic, compr[i].maglen) == 0 &&
+                   (nsz = uncompressbuf(ms, i, buf, &newbuf, nbytes)) != 0) {
+                       ms->flags &= ~MAGIC_COMPRESS;
+                       rv = -1;
+                       if (file_buffer(ms, newbuf, nsz) == -1)
+                               goto error;
+                       if (file_printf(ms, " (") == -1)
+                               goto error;
+                       if (file_buffer(ms, buf, nbytes) == -1)
+                               goto error;
+                       if (file_printf(ms, ")") == -1)
+                               goto error;
+                       rv = 1;
+                       break;
+               }
+       }
+error:
+       if (newbuf)
+               free(newbuf);
+       ms->flags |= MAGIC_COMPRESS;
+       return rv;
+}
 
 /*
  * `safe' write for sockets and pipes.
  */
-static int
+private ssize_t
 swrite(int fd, const void *buf, size_t n)
-       /*@*/
 {
        int rv;
        size_t rn = n;
 
-       do {
+       do
                switch (rv = write(fd, buf, n)) {
                case -1:
                        if (errno == EINTR)
@@ -52,9 +144,9 @@ swrite(int fd, const void *buf, size_t n)
                default:
                        n -= rv;
                        buf = ((const char *)buf) + rv;
-                       /*@switchbreak@*/ break;
+                       break;
                }
-       while (n > 0);
+       while (n > 0);
        return rn;
 }
 
@@ -62,14 +154,13 @@ swrite(int fd, const void *buf, size_t n)
 /*
  * `safe' read for sockets and pipes.
  */
-static int
-sread(int fd, /*@out@*/ void *buf, size_t n)
-       /*@modifies *buf @*/
+private ssize_t
+sread(int fd, void *buf, size_t n)
 {
        int rv;
        size_t rn = n;
 
-       do {
+       do
                switch (rv = read(fd, buf, n)) {
                case -1:
                        if (errno == EINTR)
@@ -80,14 +171,15 @@ sread(int fd, /*@out@*/ void *buf, size_t n)
                default:
                        n -= rv;
                        buf = ((char *)buf) + rv;
-                       /*@switchbreak@*/ break;
+                       break;
                }
-       while (n > 0);
+       while (n > 0);
        return rn;
 }
 
-int
-file_pipe2file(int fd, const void *startbuf, size_t nbytes)
+protected int
+file_pipe2file(struct magic_set *ms, int fd, const void *startbuf,
+    size_t nbytes)
 {
        char buf[4096];
        int r, tfd;
@@ -108,30 +200,28 @@ file_pipe2file(int fd, const void *startbuf, size_t nbytes)
        errno = r;
 #endif
        if (tfd == -1) {
-               error(EXIT_FAILURE, 0, "Can't create temporary file for pipe copy (%s)\n",
-                   strerror(errno));
-               /*@notreached@*/
+               file_error(ms, errno,
+                   "cannot create temporary file for pipe copy");
+               return -1;
        }
 
-       if (swrite(tfd, startbuf, nbytes) != nbytes)
+       if (swrite(tfd, startbuf, nbytes) != (ssize_t)nbytes)
                r = 1;
        else {
                while ((r = sread(fd, buf, sizeof(buf))) > 0)
-                       if (swrite(tfd, buf, r) != r)
+                       if (swrite(tfd, buf, (size_t)r) != r)
                                break;
        }
 
        switch (r) {
        case -1:
-               error(EXIT_FAILURE, 0, "Error copying from pipe to temp file (%s)\n",
-                   strerror(errno));
-               /*@notreached@*/break;
+               file_error(ms, errno, "error copying from pipe to temp file");
+               return -1;
        case 0:
                break;
        default:
-               error(EXIT_FAILURE, 0, "Error while writing to temp file (%s)\n",
-                   strerror(errno));
-               /*@notreached@*/
+               file_error(ms, errno, "error while writing to temp file");
+               return -1;
        }
 
        /*
@@ -140,14 +230,13 @@ file_pipe2file(int fd, const void *startbuf, size_t nbytes)
         * can still access the phantom inode.
         */
        if ((fd = dup2(tfd, fd)) == -1) {
-               error(EXIT_FAILURE, 0, "Couldn't dup destcriptor for temp file(%s)\n",
-                   strerror(errno));
-               /*@notreached@*/
+               file_error(ms, errno, "could not dup descriptor for temp file");
+               return -1;
        }
        (void)close(tfd);
        if (lseek(fd, (off_t)0, SEEK_SET) == (off_t)-1) {
-               error(EXIT_FAILURE, 0, "Couldn't seek on temp file (%s)\n", strerror(errno));
-               /*@notreached@*/
+               file_badseek(ms);
+               return -1;
        }
        return fd;
 }
@@ -159,97 +248,91 @@ file_pipe2file(int fd, const void *startbuf, size_t nbytes)
 #define FNAME          (1 << 3)
 #define FCOMMENT       (1 << 4)
 
-/*@-bounds@*/
-static int
-uncompressgzipped(const unsigned char *old,
-               /*@out@*/ unsigned char **newch, int n)
-       /*@globals fileSystem @*/
-       /*@modifies *newch, fileSystem @*/
+private size_t
+uncompressgzipped(struct magic_set *ms, const unsigned char *old,
+    unsigned char **newch, size_t n)
 {
        unsigned char flg = old[3];
-       int data_start = 10;
+       size_t data_start = 10;
        z_stream z;
        int rc;
 
-       if (flg & FEXTRA)
+       if (flg & FEXTRA) {
+               if (data_start+1 >= n)
+                       return 0;
                data_start += 2 + old[data_start] + old[data_start + 1] * 256;
+       }
        if (flg & FNAME) {
-               while(old[data_start])
+               while(data_start < n && old[data_start])
                        data_start++;
                data_start++;
        }
        if(flg & FCOMMENT) {
-               while(old[data_start])
+               while(data_start < n && old[data_start])
                        data_start++;
                data_start++;
        }
        if(flg & FHCRC)
                data_start += 2;
 
-       *newch = (unsigned char *) xmalloc(HOWMANY + 1);
+       if (data_start >= n)
+               return 0;
+       if ((*newch = (unsigned char *)malloc(HOWMANY + 1)) == NULL) {
+               return 0;
+       }
        
-       z.next_in = (Bytef *)(old + data_start);
+       /* XXX: const castaway, via strchr */
+       z.next_in = (Bytef *)strchr((const char *)old + data_start,
+           old[data_start]);
        z.avail_in = n - data_start;
        z.next_out = *newch;
        z.avail_out = HOWMANY;
-       z.zalloc = NULL;
-       z.zfree = NULL;
-       z.opaque = NULL;
+       z.zalloc = Z_NULL;
+       z.zfree = Z_NULL;
+       z.opaque = Z_NULL;
 
-/*@-sizeoftype@*/
-/*@-type@*/
        rc = inflateInit2(&z, -15);
-/*@=type@*/
-/*@=sizeoftype@*/
        if (rc != Z_OK) {
-               fprintf(stderr,"%s: zlib: %s\n", __progname,
-                       (z.msg != NULL ? z.msg : ""));
+               file_error(ms, 0, "zlib: %s", z.msg);
                return 0;
        }
 
-/*@-type@*/
        rc = inflate(&z, Z_SYNC_FLUSH);
-/*@=type@*/
        if (rc != Z_OK && rc != Z_STREAM_END) {
-               fprintf(stderr,"%s: zlib: %s\n", __progname,
-                       (z.msg != NULL ? z.msg : ""));
+               file_error(ms, 0, "zlib: %s", z.msg);
                return 0;
        }
 
-       n = z.total_out;
-/*@-type@*/
-       (void) inflateEnd(&z);
-/*@=type@*/
+       n = (size_t)z.total_out;
+       inflateEnd(&z);
        
        /* let's keep the nul-terminate tradition */
        (*newch)[n++] = '\0';
 
        return n;
 }
-/*@=bounds@*/
 #endif
 
-/*@-bounds@*/
-static int
-uncompressbuf(int method, const unsigned char *old,
-               /*@out@*/ unsigned char **newch, int n)
-       /*@globals fileSystem, internalState @*/
-       /*@modifies *newch, fileSystem, internalState @*/
+private size_t
+uncompressbuf(struct magic_set *ms, size_t method, const unsigned char *old,
+    unsigned char **newch, size_t n)
 {
        int fdin[2], fdout[2];
-       pid_t pid;
+       int r;
 
+       /* The buffer is NUL terminated, and we don't need that. */
+       n--;
+        
 #ifdef HAVE_LIBZ
        if (method == 2)
-               return uncompressgzipped(old,newch,n);
+               return uncompressgzipped(ms, old, newch, n);
 #endif
 
        if (pipe(fdin) == -1 || pipe(fdout) == -1) {
-               error(EXIT_FAILURE, 0, "cannot create pipe (%s).\n", strerror(errno));  
-               /*@notreached@*/
+               file_error(ms, errno, "cannot create pipe");    
+               return 0;
        }
-
-       switch ((pid = fork())) {
+       switch (fork()) {
        case 0: /* child */
                (void) close(0);
                (void) dup(fdin[0]);
@@ -263,83 +346,59 @@ uncompressbuf(int method, const unsigned char *old,
                if (compr[method].silent)
                        (void) close(2);
 
-               (void) execvp(compr[method].argv[0],
+               execvp(compr[method].argv[0],
                       (char *const *)compr[method].argv);
-               exit(EXIT_FAILURE);
-               /*@notreached@*/ break;
+               exit(1);
+               /*NOTREACHED*/
        case -1:
-               error(EXIT_FAILURE, 0, "could not fork (%s).\n", strerror(errno));
-               /*@notreached@*/break;
+               file_error(ms, errno, "could not fork");
+               return 0;
 
        default: /* parent */
                (void) close(fdin[0]);
                (void) close(fdout[1]);
+               /* fork again, to avoid blocking because both pipes filled */
+               switch (fork()) {
+               case 0: /* child */
+                       (void)close(fdout[0]);
+                       if (swrite(fdin[1], old, n) != n)
+                               exit(1);
+                       exit(0);
+                       /*NOTREACHED*/
 
-               n--; /* The buffer is NUL terminated, and we don't need that. */
-               if (swrite(fdin[1], old, n) != n) {
-                       n = 0;
-                       goto errxit;
+               case -1:
+                       exit(1);
+                       /*NOTREACHED*/
+
+               default:  /* parent */
+                       break;
                }
                (void) close(fdin[1]);
                fdin[1] = -1;
-               *newch = (unsigned char *) xmalloc(HOWMANY + 1);
-               if ((n = sread(fdout[0], *newch, HOWMANY)) <= 0) {
+               if ((*newch = (unsigned char *) malloc(HOWMANY + 1)) == NULL) {
+                       n = 0;
+                       goto err;
+               }
+               if ((r = sread(fdout[0], *newch, HOWMANY)) <= 0) {
                        free(*newch);
                        n = 0;
-                       goto errxit;
+                       newch[0] = '\0';
+                       goto err;
+               } else {
+                       n = r;
                }
                /* NUL terminate, as every buffer is handled here. */
                (*newch)[n++] = '\0';
-errxit:
+err:
                if (fdin[1] != -1)
                        (void) close(fdin[1]);
                (void) close(fdout[0]);
-               pid = waitpid(pid, NULL, 0);
-               return n;
-       }
-       /*@notreached@*/
-       return 0;
-}
-/*@=bounds@*/
-
-/*
- * compress routines:
- *     fmagicZ() - returns 0 if not recognized, uncompresses and prints
- *                information if recognized
- */
-int
-fmagicZ(fmagic fm)
-{
-       unsigned char * buf = fm->buf;
-       int nb = fm->nb;
-       unsigned char * newbuf;
-       int newsize;
-       int i;
-
-       for (i = 0; i < ncompr; i++) {
-/*@-boundsread@*/
-               if (nb < compr[i].maglen)
+#ifdef WNOHANG
+               while (waitpid(-1, NULL, WNOHANG) != -1)
                        continue;
-/*@=boundsread@*/
-               if (memcmp(buf, compr[i].magic, compr[i].maglen) == 0 &&
-                   (newsize = uncompressbuf(i, buf, &newbuf, nb)) != 0) {
-                       fm->buf = newbuf;
-                       fm->nb = newsize;
-                       (void) fmagicF(fm, 1);
-                       fm->buf = buf;
-                       fm->nb = nb;
-/*@-kepttrans@*/
-                       free(newbuf);
-/*@=kepttrans@*/
-                       printf(" (");
-                       (void) fmagicF(fm, 0);
-                       printf(")");
-                       return 1;
-               }
+#else
+               (void)wait(NULL);
+#endif
+               return n;
        }
-
-       if (i == ncompr)
-               return 0;
-
-       return 1;
 }
diff --git a/file/src/debug.h b/file/src/debug.h
deleted file mode 100644 (file)
index 19376c0..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * To be included after all other includes.
- */
-#ifndef        H_DEBUG
-#define        H_DEBUG
-
-#include <assert.h>
-
-#ifdef DMALLOC
-#include <dmalloc.h>
-#endif
-
-#endif /* H_DEBUG */
index 22259f3..9e48e95 100644 (file)
 /*
+ * Copyright (c) Ian F. Darwin 1986-1995.
+ * Software written by Ian F. Darwin and others;
+ * maintained 1995-present by Christos Zoulas and others.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice immediately at the beginning of the file, without modification,
+ *    this list of conditions, and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    This product includes software developed by Ian F. Darwin and others.
+ * 4. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *  
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+/*
  * file - find type of a file or files - main program.
- *
- * Copyright (c) Ian F. Darwin, 1987.
- * Written by Ian F. Darwin.
- *
- * This software is not subject to any license of the American Telephone
- * and Telegraph Company or of the Regents of the University of California.
- *
- * Permission is granted to anyone to use this software for any purpose on
- * any computer system, and to alter it and redistribute it freely, subject
- * to the following restrictions:
- *
- * 1. The author is not responsible for the consequences of use of this
- *    software, no matter how awful, even if they arise from flaws in it.
- *
- * 2. The origin of this software must not be misrepresented, either by
- *    explicit claim or by omission.  Since few users ever read sources,
- *    credits must appear in the documentation.
- *
- * 3. Altered versions must be plainly marked as such, and must not be
- *    misrepresented as being the original software.  Since few users
- *    ever read sources, credits must appear in the documentation.
- *
- * 4. This notice may not be removed or altered.
  */
 
-#include "system.h"
 #include "file.h"
+#include "magic.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/param.h> /* for MAXPATHLEN */
+#include <sys/stat.h>
+#include <fcntl.h>     /* for open() */
+#ifdef RESTORE_TIME
+# if (__COHERENT__ >= 0x420)
+#  include <sys/utime.h>
+# else
+#  ifdef USE_UTIMES
+#   include <sys/time.h>
+#  else
+#   include <utime.h>
+#  endif
+# endif
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>    /* for read() */
+#endif
+#ifdef HAVE_LOCALE_H
+#include <locale.h>
+#endif
+#ifdef HAVE_WCHAR_H
+#include <wchar.h>
+#endif
+
+#ifdef HAVE_GETOPT_H
+#include <getopt.h>    /* for long options (is this portable?)*/
+#else
+#undef HAVE_GETOPT_LONG
+#endif
+
+#include <netinet/in.h>                /* for byte swapping */
+
 #include "patchlevel.h"
-#include "debug.h"
 
-FILE_RCSID("@(#)Id: file.c,v 1.66 2002/07/03 19:00:41 christos Exp ")
+#ifndef        lint
+FILE_RCSID("@(#)$Id: file.c,v 1.92 2004/03/22 21:34:39 christos Exp $")
+#endif /* lint */
 
-/*@access fmagic @*/
 
 #ifdef S_IFLNK
-# define USAGE  "Usage: %s [-bciknsvzL] [-f namefile] [-m magicfiles] file...\n"
+#define SYMLINKFLAG "L"
 #else
-# define USAGE  "Usage: %s [-bciknsvz] [-f namefile] [-m magicfiles] file...\n"
+#define SYMLINKFLAG ""
 #endif
 
-#ifdef __EMX__
-static char *apptypeName = NULL;
-int os2_apptype (const char *fn, char *buf, int nb);
-#endif /* __EMX__ */
+# define USAGE  "Usage: %s [-bcik" SYMLINKFLAG "nNsvz] [-f namefile] [-F separator] [-m magicfiles] file...\n       %s -C -m magicfiles\n"
 
 #ifndef MAXPATHLEN
 #define        MAXPATHLEN      512
 #endif
 
-                       /* Global command-line options          */
-/*@unchecked@*/
-static int     nobuffer = 0;   /* Don't buffer stdout */
-
-/*@unchecked@*/ /*@observer@*/
-static const char * default_separator = ":";
-
-/*
- * unwrap -- read a file of filenames, do each one.
- */
-/*@-bounds@*/
-static void
-unwrap(fmagic fm, char *fn)
-       /*@globals fileSystem, internalState @*/
-       /*@modifies fm, fileSystem, internalState @*/
-{
-       char buf[MAXPATHLEN];
-       FILE *f;
-       int wid = 0, cwid;
-       int xx;
-
-       if (strcmp("-", fn) == 0) {
-               f = stdin;
-               wid = 1;
-       } else {
-               if ((f = fopen(fn, "r")) == NULL) {
-                       error(EXIT_FAILURE, 0, "Cannot open `%s' (%s).\n", fn, strerror(errno));
-                       /*@notreached@*/
-               }
-
-               while (fgets(buf, sizeof(buf), f) != NULL) {
-                       cwid = strlen(buf) - 1;
-                       if (cwid > wid)
-                               wid = cwid;
-               }
+private int            /* Global command-line options          */
+       bflag = 0,      /* brief output format                  */
+       nopad = 0,      /* Don't pad output                     */
+       nobuffer = 0;   /* Do not buffer stdout                 */
 
-               rewind(f);
-       }
+private const char *magicfile = 0;     /* where the magic is   */
+private const char *default_magicfile = MAGIC;
+private char *separator = ":"; /* Default field separator      */
 
-/*@-nullpass@*/        /* LCL: buf is null??? */
-       while (fgets(buf, sizeof(buf), f) != NULL)
-/*@=nullpass@*/
-       {
-               buf[strlen(buf)-1] = '\0';
-               fm->obp = fm->obuf;
-               *fm->obp = '\0';
-               fm->nob = sizeof(fm->obuf);
-               xx = fmagicProcess(fm, buf, wid);
-               fprintf(stdout, "%s\n", fm->obuf);
-               if (nobuffer)
-                       (void) fflush(stdout);
-       }
+private char *progname;                /* used throughout              */
 
-       (void) fclose(f);
-}
-/*@=bounds@*/
+private struct magic_set *magic;
 
-/*@exits@*/
-static void
-usage(void)
-       /*@globals fileSystem @*/
-       /*@modifies fileSystem @*/
-{
-       (void)fprintf(stderr, USAGE, __progname);
-       (void)fprintf(stderr, "Usage: %s -C [-m magic]\n", __progname);
-#ifdef HAVE_GETOPT_H
-       (void)fputs("Try `file --help' for more information.\n", stderr);
+private void unwrap(char *);
+private void usage(void);
+#ifdef HAVE_GETOPT_LONG
+private void help(void);
 #endif
-       exit(EXIT_FAILURE);
-}
-
-#ifdef HAVE_GETOPT_H
-/*@exits@*/
-static void
-help(void)
-       /*@globals fileSystem @*/
-       /*@modifies fileSystem @*/
-{
-       (void) puts(
-"Usage: file [OPTION]... [FILE]...\n"
-"Determine file type of FILEs.\n"
-"\n"
-"  -m, --magic-file LIST      use LIST as a colon-separated list of magic\n"
-"                               number files\n"
-"  -z, --uncompress           try to look inside compressed files\n"
-"  -b, --brief                do not prepend filenames to output lines\n"
-"  -c, --checking-printout    print the parsed form of the magic file, use in\n"
-"                               conjunction with -m to debug a new magic file\n"
-"                               before installing it\n"
-"  -f, --files-from FILE      read the filenames to be examined from FILE\n"
-"  -F, --separator string     use string as separator instead of `:'\n"
-"  -i, --mime                 output mime type strings\n"
-"  -k, --keep-going           don't stop at the first match\n"
-"  -L, --dereference          causes symlinks to be followed\n"
-"  -n, --no-buffer            do not buffer output\n"
-"  -N, --no-pad               do not pad output\n"
-"  -s, --special-files        treat special (block/char devices) files as\n"
-"                             ordinary ones\n"
-"      --help                 display this help and exit\n"
-"      --version              output version information and exit\n"
-);
-       exit(0);
-}
+#if 0
+private int byteconv4(int, int, int);
+private short byteconv2(int, int, int);
 #endif
 
+int main(int, char *[]);
+private void process(const char *, int);
+private void load(const char *, int);
+
+
 /*
  * main - parse arguments and handle options
  */
-/*@-bounds@*/
 int
-main(int argc, char **argv)
-       /*@globals global_fmagic, nobuffer,
-               default_magicfile, default_separator, optind,
-               fileSystem, internalState @*/
-       /*@modifies global_fmagic, nobuffer,
-               default_magicfile, default_separator, optind,
-               fileSystem, internalState @*/
+main(int argc, char *argv[])
 {
-       int xx;
        int c;
-       int action = 0, didsomefiles = 0, errflg = 0, ret = 0, app = 0;
-       char *mime, *home, *usermagic;
-       fmagic fm = global_fmagic;
+       int action = 0, didsomefiles = 0, errflg = 0;
+       int flags = 0;
+       char *home, *usermagic;
        struct stat sb;
-#define OPTSTRING      "bcdf:ikm:nsvzCL"
-#ifdef HAVE_GETOPT_H
-       int longindex = 0;
-/*@-nullassign -readonlytrans@*/
-       static struct option long_options[] =
+#define OPTSTRING      "bcCdf:F:ikLm:nNprsvz"
+#ifdef HAVE_GETOPT_LONG
+       int longindex;
+       private struct option long_options[] =
        {
                {"version", 0, 0, 'v'},
                {"help", 0, 0, 0},
@@ -192,20 +150,17 @@ main(int argc, char **argv)
                {"dereference", 0, 0, 'L'},
 #endif
                {"magic-file", 1, 0, 'm'},
+#if defined(HAVE_UTIME) || defined(HAVE_UTIMES)
+               {"preserve-date", 0, 0, 'p'},
+#endif
                {"uncompress", 0, 0, 'z'},
+               {"raw", 0, 0, 'r'},
                {"no-buffer", 0, 0, 'n'},
                {"no-pad", 0, 0, 'N'},
                {"special-files", 0, 0, 's'},
                {"compile", 0, 0, 'C'},
                {0, 0, 0, 0},
        };
-/*@=nullassign =readonlytrans@*/
-#endif
-
-#if HAVE_MCHECK_H && HAVE_MTRACE
-       /*@-noeffect@*/
-       mtrace(); /* Trace malloc only if MALLOC_TRACE=mtrace-output-file. */
-       /*@=noeffect@*/
 #endif
 
 #ifdef LC_CTYPE
@@ -217,152 +172,357 @@ main(int argc, char **argv)
        _wildcard(&argc, &argv);
 #endif
 
-/*@-assignexpose@*/
-       fm->magicfile = default_magicfile;
-       fm->separator = default_separator;
-/*@=assignexpose@*/
+       if ((progname = strrchr(argv[0], '/')) != NULL)
+               progname++;
+       else
+               progname = argv[0];
+
+       magicfile = default_magicfile;
        if ((usermagic = getenv("MAGIC")) != NULL)
-               fm->magicfile = usermagic;
-       else {
+               magicfile = usermagic;
+       else
                if ((home = getenv("HOME")) != NULL) {
-                       size_t nb = strlen(home) + 8;
-                       usermagic = xmalloc(nb);
-                       (void)strcpy(usermagic, home);
-                       (void)strcat(usermagic, "/.magic");
-                       if (stat(usermagic, &sb)<0) 
-                               free(usermagic);
-                       else
-                               fm->magicfile = usermagic;
+                       if ((usermagic = malloc(strlen(home) + 8)) != NULL) {
+                               (void)strcpy(usermagic, home);
+                               (void)strcat(usermagic, "/.magic");
+                               if (stat(usermagic, &sb)<0) 
+                                       free(usermagic);
+                               else
+                                       magicfile = usermagic;
+                       }
                }
-       }
 
-#ifndef HAVE_GETOPT_H
+#ifndef HAVE_GETOPT_LONG
        while ((c = getopt(argc, argv, OPTSTRING)) != -1)
 #else
        while ((c = getopt_long(argc, argv, OPTSTRING, long_options,
            &longindex)) != -1)
 #endif
-       {
                switch (c) {
-#ifdef HAVE_GETOPT_H
+#ifdef HAVE_GETOPT_LONG
                case 0 :
                        if (longindex == 1)
                                help();
-                       /*@switchbreak@*/ break;
+                       break;
 #endif
                case 'b':
-                       fm->flags |= FMAGIC_FLAGS_BRIEF;
-                       /*@switchbreak@*/ break;
+                       ++bflag;
+                       break;
                case 'c':
                        action = FILE_CHECK;
-                       /*@switchbreak@*/ break;
+                       break;
                case 'C':
                        action = FILE_COMPILE;
-                       /*@switchbreak@*/ break;
+                       break;
                case 'd':
-                       fm->flags |= FMAGIC_FLAGS_DEBUG;
-                       /*@switchbreak@*/ break;
+                       flags |= MAGIC_DEBUG|MAGIC_CHECK;
+                       break;
                case 'f':
-                       if (!app) {
-                               ret = fmagicSetup(fm, fm->magicfile, action);
-                               if (action)
-                                       exit(ret);
-                               app = 1;
-                       }
-                       unwrap(fm, optarg);
+                       if(action)
+                               usage();
+                       load(magicfile, flags);
+                       unwrap(optarg);
                        ++didsomefiles;
-                       /*@switchbreak@*/ break;
+                       break;
                case 'F':
-/*@-assignexpose@*/
-                       fm->separator = optarg;
-/*@=assignexpose@*/
-                       /*@switchbreak@*/ break;
+                       separator = optarg;
+                       break;
                case 'i':
-                       fm->flags |= FMAGIC_FLAGS_MIME;
-                       mime = malloc(strlen(fm->magicfile) + sizeof(".mime"));
-                       if (mime != NULL) {
-                               (void)strcpy(mime, fm->magicfile);
-                               (void)strcat(mime, ".mime");
-                       }
-                       fm->magicfile = mime;
-                       /*@switchbreak@*/ break;
+                       flags |= MAGIC_MIME;
+                       break;
                case 'k':
-                       fm->flags |= FMAGIC_FLAGS_CONTINUE;
-                       /*@switchbreak@*/ break;
+                       flags |= MAGIC_CONTINUE;
+                       break;
                case 'm':
-/*@-assignexpose@*/
-                       fm->magicfile = optarg;
-/*@=assignexpose@*/
-                       /*@switchbreak@*/ break;
+                       magicfile = optarg;
+                       break;
                case 'n':
                        ++nobuffer;
-                       /*@switchbreak@*/ break;
+                       break;
                case 'N':
-                       fm->flags |= FMAGIC_FLAGS_NOPAD;
-                       /*@switchbreak@*/ break;
+                       ++nopad;
+                       break;
+#if defined(HAVE_UTIME) || defined(HAVE_UTIMES)
+               case 'p':
+                       flags |= MAGIC_PRESERVE_ATIME;
+                       break;
+#endif
+               case 'r':
+                       flags |= MAGIC_RAW;
+                       break;
                case 's':
-                       fm->flags |= FMAGIC_FLAGS_SPECIAL;
-                       /*@switchbreak@*/ break;
+                       flags |= MAGIC_DEVICES;
+                       break;
                case 'v':
-                       (void) fprintf(stdout, "%s-%d.%d\n", __progname,
+                       (void) fprintf(stdout, "%s-%d.%.2d\n", progname,
                                       FILE_VERSION_MAJOR, patchlevel);
                        (void) fprintf(stdout, "magic file from %s\n",
-                                      fm->magicfile);
+                                      magicfile);
                        return 1;
                case 'z':
-                       fm->flags |= FMAGIC_FLAGS_UNCOMPRESS;
-                       /*@switchbreak@*/ break;
+                       flags |= MAGIC_COMPRESS;
+                       break;
 #ifdef S_IFLNK
                case 'L':
-                       fm->flags |= FMAGIC_FLAGS_FOLLOW;
-                       /*@switchbreak@*/ break;
+                       flags |= MAGIC_SYMLINK;
+                       break;
 #endif
                case '?':
                default:
                        errflg++;
-                       /*@switchbreak@*/ break;
+                       break;
                }
-       }
 
-       if (errflg)
+       if (errflg) {
                usage();
+       }
 
-       if (!app) {
-/*@-nullpass@*/ /* FIX: fm->magicfile may be null */
-               ret = fmagicSetup(fm, fm->magicfile, action);
-/*@=nullpass@*/
-               if (action)
-                       exit(ret);
-               app = 1;
+       switch(action) {
+       case FILE_CHECK:
+       case FILE_COMPILE:
+               magic = magic_open(flags|MAGIC_CHECK);
+               if (magic == NULL) {
+                       (void)fprintf(stderr, "%s: %s\n", progname,
+                           strerror(errno));
+                       return 1;
+               }
+               c = action == FILE_CHECK ? magic_check(magic, magicfile) :
+                   magic_compile(magic, magicfile);
+               if (c == -1) {
+                       (void)fprintf(stderr, "%s: %s\n", progname,
+                           magic_error(magic));
+                       return -1;
+               }
+               return 0;
+       default:
+               load(magicfile, flags);
+               break;
        }
 
        if (optind == argc) {
-               if (!didsomefiles)
+               if (!didsomefiles) {
                        usage();
-       } else {
+               }
+       }
+       else {
                int i, wid, nw;
                for (wid = 0, i = optind; i < argc; i++) {
-                       nw = strlen(argv[i]);
+                       nw = file_mbswidth(argv[i]);
                        if (nw > wid)
                                wid = nw;
                }
-               for (; optind < argc; optind++) {
-                       fm->obp = fm->obuf;
-                       *fm->obp = '\0';
-                       fm->nob = sizeof(fm->obuf);
-                       xx = fmagicProcess(fm, argv[optind], wid);
-                       fprintf(stdout, "%s\n", fm->obuf);
-                       if (nobuffer)
-                               (void) fflush(stdout);
+               for (; optind < argc; optind++)
+                       process(argv[optind], wid);
+       }
+
+       return 0;
+}
+
+
+private void
+load(const char *m, int flags)
+{
+       if (magic)
+               return;
+       magic = magic_open(flags);
+       if (magic == NULL) {
+               (void)fprintf(stderr, "%s: %s\n", progname, strerror(errno));
+               exit(1);
+       }
+       if (magic_load(magic, magicfile) == -1) {
+               (void)fprintf(stderr, "%s: %s\n",
+                   progname, magic_error(magic));
+               exit(1);
+       }
+}
+
+/*
+ * unwrap -- read a file of filenames, do each one.
+ */
+private void
+unwrap(char *fn)
+{
+       char buf[MAXPATHLEN];
+       FILE *f;
+       int wid = 0, cwid;
+
+       if (strcmp("-", fn) == 0) {
+               f = stdin;
+               wid = 1;
+       } else {
+               if ((f = fopen(fn, "r")) == NULL) {
+                       (void)fprintf(stderr, "%s: Cannot open `%s' (%s).\n",
+                           progname, fn, strerror(errno));
+                       exit(1);
+               }
+
+               while (fgets(buf, MAXPATHLEN, f) != NULL) {
+                       cwid = file_mbswidth(buf) - 1;
+                       if (cwid > wid)
+                               wid = cwid;
+               }
+
+               rewind(f);
+       }
+
+       while (fgets(buf, MAXPATHLEN, f) != NULL) {
+               buf[file_mbswidth(buf)-1] = '\0';
+               process(buf, wid);
+               if(nobuffer)
+                       (void) fflush(stdout);
+       }
+
+       (void) fclose(f);
+}
+
+private void
+process(const char *inname, int wid)
+{
+       const char *type;
+       int std_in = strcmp(inname, "-") == 0;
+
+       if (wid > 0 && !bflag)
+               (void) printf("%s%s%*s ", std_in ? "/dev/stdin" : inname,
+                   separator, (int) (nopad ? 0 : (wid - file_mbswidth(inname))), "");
+
+       type = magic_file(magic, std_in ? NULL : inname);
+       if (type == NULL)
+               printf("ERROR: %s\n", magic_error(magic));
+       else
+               printf("%s\n", type);
+}
+
+
+#if 0
+/*
+ * byteconv4
+ * Input:
+ *     from            4 byte quantity to convert
+ *     same            whether to perform byte swapping
+ *     big_endian      whether we are a big endian host
+ */
+private int
+byteconv4(int from, int same, int big_endian)
+{
+       if (same)
+               return from;
+       else if (big_endian) {          /* lsb -> msb conversion on msb */
+               union {
+                       int i;
+                       char c[4];
+               } retval, tmpval;
+
+               tmpval.i = from;
+               retval.c[0] = tmpval.c[3];
+               retval.c[1] = tmpval.c[2];
+               retval.c[2] = tmpval.c[1];
+               retval.c[3] = tmpval.c[0];
+
+               return retval.i;
+       }
+       else
+               return ntohl(from);     /* msb -> lsb conversion on lsb */
+}
+
+/*
+ * byteconv2
+ * Same as byteconv4, but for shorts
+ */
+private short
+byteconv2(int from, int same, int big_endian)
+{
+       if (same)
+               return from;
+       else if (big_endian) {          /* lsb -> msb conversion on msb */
+               union {
+                       short s;
+                       char c[2];
+               } retval, tmpval;
+
+               tmpval.s = (short) from;
+               retval.c[0] = tmpval.c[1];
+               retval.c[1] = tmpval.c[0];
+
+               return retval.s;
+       }
+       else
+               return ntohs(from);     /* msb -> lsb conversion on lsb */
+}
+#endif
+
+size_t
+file_mbswidth(const char *s)
+{
+#ifdef HAVE_WCHAR_H
+       size_t bytesconsumed, old_n, n, width = 0;
+       mbstate_t state;
+       wchar_t nextchar;
+       (void)memset(&state, 0, sizeof(mbstate_t));
+       old_n = n = strlen(s);
+
+       while (n > 0) {
+               bytesconsumed = mbrtowc(&nextchar, s, n, &state);
+               if (bytesconsumed == (size_t)(-1) ||
+                   bytesconsumed == (size_t)(-2)) {
+                       /* Something went wrong, return something reasonable */
+                       return old_n;
                }
+               if (s[0] == '\n') {
+                       /*
+                        * do what strlen() would do, so that caller
+                        * is always right
+                        */
+                       width++;
+               } else
+                       width += wcwidth(nextchar);
+
+               s += bytesconsumed, n -= bytesconsumed;
        }
+       return width;
+#else
+       return strlen(s);
+#endif
+}
 
-#if HAVE_MCHECK_H && HAVE_MTRACE
-       /*@-noeffect@*/
-       muntrace(); /* Trace malloc only if MALLOC_TRACE=mtrace-output-file. */
-       /*@=noeffect@*/
+private void
+usage(void)
+{
+       (void)fprintf(stderr, USAGE, progname, progname);
+#ifdef HAVE_GETOPT_LONG
+       (void)fputs("Try `file --help' for more information.\n", stderr);
 #endif
+       exit(1);
+}
 
-       return 0;
+#ifdef HAVE_GETOPT_LONG
+private void
+help(void)
+{
+       puts(
+"Usage: file [OPTION]... [FILE]...\n"
+"Determine file type of FILEs.\n"
+"\n"
+"  -m, --magic-file LIST      use LIST as a colon-separated list of magic\n"
+"                               number files\n"
+"  -z, --uncompress           try to look inside compressed files\n"
+"  -b, --brief                do not prepend filenames to output lines\n"
+"  -c, --checking-printout    print the parsed form of the magic file, use in\n"
+"                               conjunction with -m to debug a new magic file\n"
+"                               before installing it\n"
+"  -f, --files-from FILE      read the filenames to be examined from FILE\n"
+"  -F, --separator string     use string as separator instead of `:'\n"
+"  -i, --mime                 output mime type strings\n"
+"  -k, --keep-going           don't stop at the first match\n"
+"  -L, --dereference          causes symlinks to be followed\n"
+"  -n, --no-buffer            do not buffer output\n"
+"  -N, --no-pad               do not pad output\n"
+"  -p, --preserve-date        preserve access times on files\n"
+"  -r, --raw                  don't translate unprintable chars to \\ooo\n"
+"  -s, --special-files        treat special (block/char devices) files as\n"
+"                             ordinary ones\n"
+"      --help                 display this help and exit\n"
+"      --version              output version information and exit\n"
+);
+       exit(0);
 }
-/*@=bounds@*/
+#endif
index f716680..abdbdd9 100644 (file)
@@ -1,4 +1,4 @@
- /*
+/*
  * Copyright (c) Ian F. Darwin 1986-1995.
  * Software written by Ian F. Darwin and others;
  * maintained 1995-present by Christos Zoulas and others.
  */
 /*
  * file.h - definitions for file(1) program
- * @(#) Id: file.h,v 1.53 2003/03/28 21:02:03 christos Exp 
+ * @(#)$Id: file.h,v 1.60 2004/03/22 19:12:15 christos Exp $
  */
 
 #ifndef __file_h__
 #define __file_h__
 
-/*@-redef@*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdio.h>     /* Include that here, to make sure __P gets defined */
+#include <errno.h>
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+#include <inttypes.h>
+#endif
+/* Do this here and now, because struct stat gets re-defined on solaris */
+#include <sys/stat.h>
+
+#ifndef MAGIC
+#define MAGIC "/etc/magic"
+#endif
+
+#ifdef __EMX__
+#define PATHSEP        ';'
+#else
+#define PATHSEP        ':'
+#endif
+
+#define private static
+#ifndef protected
+#define protected
+#endif
+#define public
 
 #ifndef HOWMANY
 # define HOWMANY 65536         /* how much of the file to look at */
@@ -51,6 +80,7 @@
 #define VERSIONNO      2
 #define FILE_MAGICSIZE (32 * 4)
 
+#define        FILE_LOAD       0
 #define FILE_CHECK     1
 #define FILE_COMPILE   2
 
@@ -86,9 +116,9 @@ struct magic {
        /* Word 3 */
        uint8_t in_op;          /* operator for indirection */
        uint8_t mask_op;        /* operator for mask */
-       uint8_t dummy1;
-       uint8_t dummy2;
-#define                                FILE_OPS        "&|^+-*%/"
+       uint8_t dummy1; 
+       uint8_t dummy2; 
+#define                                FILE_OPS        "&|^+-*/%"
 #define                                FILE_OPAND      0
 #define                                FILE_OPOR       1
 #define                                FILE_OPXOR      2
@@ -99,9 +129,9 @@ struct magic {
 #define                                FILE_OPMODULO   7
 #define                                FILE_OPINVERSE  0x80
        /* Word 4 */
-       int32_t offset;         /* offset to magic number */
+       uint32_t offset;        /* offset to magic number */
        /* Word 5 */
-       int32_t in_offset;      /* offset from indirection */
+       uint32_t in_offset;     /* offset from indirection */
        /* Word 6 */
        uint32_t mask;  /* mask before comparison with value */
        /* Word 7 */
@@ -114,7 +144,7 @@ struct magic {
                uint16_t h;
                uint32_t l;
                char s[MAXstring];
-               const char * buf;
+               char *buf;
                uint8_t hs[2];  /* 2 bytes of a fixed-endian "short" */
                uint8_t hl[4];  /* 4 bytes of a fixed-endian "long" */
        } value;                /* either number or string */
@@ -134,14 +164,11 @@ struct magic {
 /* list of magic entries */
 struct mlist {
        struct magic *magic;            /* array of magic entries */
-       uint32_t nmagic;                /* number of entries in array */
+       uint32_t nmagic;                        /* number of entries in array */
        int mapped;  /* allocation type: 0 => apprentice_file
                      *                  1 => apprentice_map + malloc
                      *                  2 => apprentice_map + mmap */
-/*@relnull@*/
-       struct mlist *next;
-/*@relnull@*/
-       struct mlist *prev;
+       struct mlist *next, *prev;
 };
 
 struct magic_set {
@@ -151,121 +178,64 @@ struct magic_set {
        int32_t *off;
     } c;
     struct out {
+       /* Accumulation buffer */
        char *buf;
        char *ptr;
        size_t len;
        size_t size;
+       /* Printable buffer */
+       char *pbuf;
+       size_t psize;
     } o;
+    int error;
     int flags;
     int haderr;
 };
 
-enum fmagicFlags_e {
-/*@-enummemuse@*/
-    FMAGIC_FLAGS_NONE          = 0,
-/*@=enummemuse@*/
-    FMAGIC_FLAGS_DEBUG         = (1 << 0),
-    FMAGIC_FLAGS_BRIEF         = (1 << 1),     /*!< brief output format */
-    FMAGIC_FLAGS_MIME          = (1 << 2),     /*!< output as mime-types */
-    FMAGIC_FLAGS_CONTINUE      = (1 << 3),     /*!< continue after 1st match */
-    FMAGIC_FLAGS_FOLLOW                = (1 << 4),     /*!< follow symlinks? */
-    FMAGIC_FLAGS_SPECIAL       = (1 << 5),     /*!< analyze block devices? */
-    FMAGIC_FLAGS_UNCOMPRESS    = (1 << 6),     /*!< uncompress files? */
-    FMAGIC_FLAGS_NOPAD         = (1 << 7)      /*!< don't pad output */
-};
-
-struct fmagic_s {
-    int flags;                 /*!< bit(s) to control fmagic behavior. */
-/*@dependent@*/ /*@observer@*/ /*@relnull@*/
-    const char *magicfile;     /*!< name of the magic file             */
-/*@dependent@*/ /*@observer@*/
-    const char *separator;     /*!< file name/type separator (default ":" */
-    int lineno;                        /*!< current line number in magic file  */
-/*@relnull@*/
-    struct mlist * mlist;      /*!< list of arrays of magic entries    */
-/*@relnull@*/
-    struct mlist * ml;         /*!< current magic array item           */
-/*@observer@*/
-    const char * fn;           /*!< current file name                  */
-    int fd;                    /*!< current file descriptor            */
-    struct stat sb;            /*!< current file stat(2) buffer        */
-/*@relnull@*/
-    unsigned char * buf;       /*!< current file buffer                */
-    int nb;                    /*!< current no. bytes in file buffer   */
-    union VALUETYPE val;       /*!< current magic expression value     */
-    int cls;                   /*!< Elf class                          */
-    int swap;                  /*!< Elf swap bytes?                    */
-/*@dependent@*/
-    char * obp;                        /*!< current output buffer pointer      */
-    size_t nob;                        /*!< bytes remaining in output buffer   */
-    char obuf[512];            /*!< output buffer                      */
-};
-
-typedef /*@abstract@*/ struct fmagic_s * fmagic;
-
-/*@unchecked@*/
-extern fmagic global_fmagic;
-
-/*@unchecked@*//*@observer@*/
-extern const char * default_magicfile;
-
-#ifdef __cplusplus
-extern "C" {
+struct stat;
+protected char *file_fmttime(uint32_t, int);
+protected int file_buffer(struct magic_set *, const void *, size_t);
+protected int file_fsmagic(struct magic_set *, const char *, struct stat *);
+protected int file_pipe2file(struct magic_set *, int, const void *, size_t);
+protected int file_printf(struct magic_set *, const char *, ...);
+protected int file_reset(struct magic_set *);
+protected int file_tryelf(struct magic_set *, int, const unsigned char *, size_t);
+protected int file_zmagic(struct magic_set *, const unsigned char *, size_t);
+protected int file_ascmagic(struct magic_set *, const unsigned char *, size_t);
+protected int file_is_tar(struct magic_set *, const unsigned char *, size_t);
+protected int file_softmagic(struct magic_set *, const unsigned char *, size_t);
+protected struct mlist *file_apprentice(struct magic_set *, const char *, int);
+protected uint32_t file_signextend(struct magic_set *, struct magic *, uint32_t);
+protected void file_delmagic(struct magic *, int type, size_t entries);
+protected void file_badread(struct magic_set *);
+protected void file_badseek(struct magic_set *);
+protected void file_oomem(struct magic_set *);
+protected void file_error(struct magic_set *, int, const char *, ...);
+protected void file_magwarn(const char *, ...);
+protected void file_mdump(struct magic *);
+protected void file_showstr(FILE *, const char *, size_t);
+protected size_t file_mbswidth(const char *);
+protected const char *file_getbuffer(struct magic_set *);
+
+#ifndef HAVE_STRERROR
+extern int sys_nerr;
+extern char *sys_errlist[];
+#define strerror(e) \
+       (((e) >= 0 && (e) < sys_nerr) ? sys_errlist[(e)] : "Unknown error")
 #endif
 
-/*@mayexit@*/
-extern int fmagicSetup(fmagic fm, const char *fn, int action)
-       /*@globals fileSystem, internalState @*/
-       /*@modifies fm, fileSystem, internalState @*/;
-extern int fmagicProcess(fmagic fm, const char *fn, int wid)
-       /*@globals fileSystem, internalState @*/
-       /*@modifies fm, fileSystem, internalState @*/;
-
-extern int fmagicA(fmagic fm)
-       /*@modifies fm @*/;
-extern int fmagicD(fmagic fm)
-       /*@globals fileSystem, internalState @*/
-       /*@modifies fm, fileSystem, internalState @*/;
-extern void fmagicE(fmagic fm)
-       /*@globals fileSystem, internalState @*/
-       /*@modifies fm, fileSystem, internalState @*/;
-extern int fmagicF(fmagic fm, int zfl)
-       /*@globals fileSystem, internalState @*/
-       /*@modifies fm, fileSystem, internalState @*/;
-extern int fmagicS(fmagic fm)
-       /*@globals fileSystem @*/
-       /*@modifies fm, fileSystem @*/;
-extern int fmagicZ(fmagic fm)
-       /*@globals fileSystem, internalState @*/
-       /*@modifies fm, fileSystem, internalState @*/;
-
-extern void file_printf(const fmagic fm, const char *f, ...)
-       /*@modifies fm @*/;
-
-/*@observer@*/
-extern const char *file_fmttime(uint32_t v, int local)
-       /*@*/;
-
-extern void file_magwarn(const char *f, ...)
-       /*@globals fileSystem @*/
-       /*@modifies fileSystem @*/;
-extern void file_mdump(struct magic *m)
-       /*@globals fileSystem @*/
-       /*@modifies fileSystem @*/;
-extern void file_showstr(FILE *fp, const char *s, size_t len)
-       /*@globals fileSystem @*/
-       /*@modifies fp, fileSystem @*/;
+#ifndef HAVE_STRTOUL
+#define strtoul(a, b, c)       strtol(a, b, c)
+#endif
 
-extern uint32_t file_signextend(struct magic *m, uint32_t v)
-       /*@globals fileSystem @*/
-       /*@modifies fileSystem @*/;
-extern int file_pipe2file(int fd, const void *startbuf, size_t nbytes)
-       /*@globals errno, fileSystem, internalState @*/
-       /*@modifies errno, fileSystem, internalState @*/;
+#if defined(HAVE_MMAP) && defined(HAVE_SYS_MMAN_H) && !defined(QUICK)
+#define QUICK
+#endif
 
-#ifdef __cplusplus
+#define FILE_RCSID(id) \
+static const char *rcsid(const char *p) { \
+       return rcsid(p = id); \
 }
-#endif
+#else
 
-/*@=redef@*/
 #endif /* __file_h__ */
index c3654e8..18bdd60 100644 (file)
 /*
+ * Copyright (c) Ian F. Darwin 1986-1995.
+ * Software written by Ian F. Darwin and others;
+ * maintained 1995-present by Christos Zoulas and others.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice immediately at the beginning of the file, without modification,
+ *    this list of conditions, and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    This product includes software developed by Ian F. Darwin and others.
+ * 4. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *  
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+/*
  * fsmagic - magic based on filesystem info - directory, special files, etc.
- *
- * Copyright (c) Ian F. Darwin, 1987.
- * Written by Ian F. Darwin.
- *
- * This software is not subject to any license of the American Telephone
- * and Telegraph Company or of the Regents of the University of California.
- *
- * Permission is granted to anyone to use this software for any purpose on
- * any computer system, and to alter it and redistribute it freely, subject
- * to the following restrictions:
- *
- * 1. The author is not responsible for the consequences of use of this
- *    software, no matter how awful, even if they arise from flaws in it.
- *
- * 2. The origin of this software must not be misrepresented, either by
- *    explicit claim or by omission.  Since few users ever read sources,
- *    credits must appear in the documentation.
- *
- * 3. Altered versions must be plainly marked as such, and must not be
- *    misrepresented as being the original software.  Since few users
- *    ever read sources, credits must appear in the documentation.
- *
- * 4. This notice may not be removed or altered.
  */
 
-#include "system.h"
 #include "file.h"
-#include "debug.h"
-
-FILE_RCSID("@(#)Id: fsmagic.c,v 1.36 2002/07/03 19:00:41 christos Exp ")
+#include "magic.h"
+#include <string.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <stdlib.h>
+#include <sys/stat.h>
+/* Since major is a function on SVR4, we cannot use `ifndef major'.  */
+#ifdef MAJOR_IN_MKDEV
+# include <sys/mkdev.h>
+# define HAVE_MAJOR
+#endif
+#ifdef MAJOR_IN_SYSMACROS
+# include <sys/sysmacros.h>
+# define HAVE_MAJOR
+#endif
+#ifdef major                   /* Might be defined in sys/types.h.  */
+# define HAVE_MAJOR
+#endif
+  
+#ifndef HAVE_MAJOR
+# define major(dev)  (((dev) >> 8) & 0xff)
+# define minor(dev)  ((dev) & 0xff)
+#endif
+#undef HAVE_MAJOR
 
-/*@access fmagic @*/
+#ifndef        lint
+FILE_RCSID("@(#)$Id: fsmagic.c,v 1.43 2003/10/14 19:29:55 christos Exp $")
+#endif /* lint */
 
-/*@-bounds@*/
-int
-fmagicD(fmagic fm)
+protected int
+file_fsmagic(struct magic_set *ms, const char *fn, struct stat *sb)
 {
-       const char * fn = fm->fn;
-       struct stat * st = &fm->sb;
        int ret = 0;
-       int xx;
+#ifdef S_IFLNK
+       char buf[BUFSIZ+4];
+       int nch;
+       struct stat tstatbuf;
+#endif
+
+       if (fn == NULL)
+               return 0;
 
        /*
         * Fstat is cheaper but fails for files you don't have read perms on.
         * On 4.2BSD and similar systems, use lstat() to identify symlinks.
         */
-#if defined(S_IFLNK) || defined(__LCLINT__)
-       if (!(fm->flags & FMAGIC_FLAGS_FOLLOW))
-               ret = lstat(fn, st);
+#ifdef S_IFLNK
+       if ((ms->flags & MAGIC_SYMLINK) == 0)
+               ret = lstat(fn, sb);
        else
 #endif
-       ret = stat(fn, st);     /* don't merge into if; see "ret =" above */
+       ret = stat(fn, sb);     /* don't merge into if; see "ret =" above */
 
        if (ret) {
-               /* Yes, I do mean stdout. */
-               /* No \n, caller will provide. */
-               file_printf(fm, "can't stat `%s' (%s).", fn, strerror(errno));
+               if (ms->flags & MAGIC_ERROR) {
+                       file_error(ms, errno, "cannot stat `%s'", fn);
+                       return -1;
+               }
+               if (file_printf(ms, "cannot open (%s)",
+                   fn, strerror(errno)) == -1)
+                       return -1;
                return 1;
        }
 
-       if ((fm->flags & FMAGIC_FLAGS_MIME)) {
-               if ((st->st_mode & S_IFMT) != S_IFREG) {
-                       file_printf(fm, "application/x-not-regular-file");
+       if ((ms->flags & MAGIC_MIME) != 0) {
+               if ((sb->st_mode & S_IFMT) != S_IFREG) {
+                       if (file_printf(ms, "application/x-not-regular-file")
+                           == -1)
+                               return -1;
                        return 1;
                }
        }
        else {
-#if defined(S_ISUID) || defined(__LCLINT__)
-               if (st->st_mode & S_ISUID) file_printf(fm, "setuid ");
+#ifdef S_ISUID
+               if (sb->st_mode & S_ISUID) 
+                       if (file_printf(ms, "setuid ") == -1)
+                               return -1;
 #endif
-#if defined(S_ISGID) || defined(__LCLINT__)
-               if (st->st_mode & S_ISGID) file_printf(fm, "setgid ");
+#ifdef S_ISGID
+               if (sb->st_mode & S_ISGID) 
+                       if (file_printf(ms, "setgid ") == -1)
+                               return -1;
 #endif
-#if defined(S_ISVTX) || defined(__LCLINT__)
-               if (st->st_mode & S_ISVTX) file_printf(fm, "sticky ");
+#ifdef S_ISVTX
+               if (sb->st_mode & S_ISVTX) 
+                       if (file_printf(ms, "sticky ") == -1)
+                               return -1;
 #endif
        }
        
-       switch (st->st_mode & S_IFMT) {
+       switch (sb->st_mode & S_IFMT) {
        case S_IFDIR:
-               file_printf(fm, "directory");
+               if (file_printf(ms, "directory") == -1)
+                       return -1;
                return 1;
-#if defined(S_IFCHR) || defined(__LCLINT__)
+#ifdef S_IFCHR
        case S_IFCHR:
                /* 
                 * If -s has been specified, treat character special files
                 * like ordinary files.  Otherwise, just report that they
                 * are block special files and go on to the next file.
                 */
-               if ((fm->flags & FMAGIC_FLAGS_SPECIAL))
+               if ((ms->flags & MAGIC_DEVICES) != 0)
                        break;
-#ifdef HAVE_STRUCT_STAT_ST_RDEV
+#ifdef HAVE_ST_RDEV
 # ifdef dv_unit
-               file_printf(fm, "character special (%d/%d/%d)",
-                       major(st->st_rdev),
-                       dv_unit(st->st_rdev),
-                       dv_subunit(st->st_rdev));
+               if (file_printf(ms, "character special (%d/%d/%d)",
+                   major(sb->st_rdev), dv_unit(sb->st_rdev),
+                   dv_subunit(sb->st_rdev)) == -1)
+                       return -1;
 # else
-/*@-shiftimplementation@*/
-               file_printf(fm, "character special (%ld/%ld)",
-                       (long) major(st->st_rdev), (long) minor(st->st_rdev));
-/*@=shiftimplementation@*/
+               if (file_printf(ms, "character special (%ld/%ld)",
+                   (long) major(sb->st_rdev), (long) minor(sb->st_rdev)) == -1)
+                       return -1;
 # endif
 #else
-               file_printf(fm, "character special");
+               if (file_printf(ms, "character special") == -1)
+                       return -1;
 #endif
                return 1;
 #endif
-#if defined(S_IFBLK) || defined(__LCLINT__)
+#ifdef S_IFBLK
        case S_IFBLK:
                /* 
                 * If -s has been specified, treat block special files
                 * like ordinary files.  Otherwise, just report that they
                 * are block special files and go on to the next file.
                 */
-               if ((fm->flags & FMAGIC_FLAGS_SPECIAL))
+               if ((ms->flags & MAGIC_DEVICES) != 0)
                        break;
-#ifdef HAVE_STRUCT_STAT_ST_RDEV
+#ifdef HAVE_ST_RDEV
 # ifdef dv_unit
-               file_printf(fm, "block special (%d/%d/%d)",
-                       major(st->st_rdev),
-                       dv_unit(st->st_rdev),
-                       dv_subunit(st->st_rdev));
+               if (file_printf(ms, "block special (%d/%d/%d)",
+                   major(sb->st_rdev), dv_unit(sb->st_rdev),
+                   dv_subunit(sb->st_rdev)) == -1)
+                       return -1;
 # else
-/*@-shiftimplementation@*/
-               file_printf(fm, "block special (%ld/%ld)",
-                       (long) major(st->st_rdev), (long) minor(st->st_rdev));
-/*@=shiftimplementation@*/
+               if (file_printf(ms, "block special (%ld/%ld)",
+                   (long)major(sb->st_rdev), (long)minor(sb->st_rdev)) == -1)
+                       return -1;
 # endif
 #else
-               file_printf(fm, "block special");
+               if (file_printf(ms, "block special") == -1)
+                       return -1;
 #endif
                return 1;
 #endif
        /* TODO add code to handle V7 MUX and Blit MUX files */
-#if defined(S_IFIFO) || defined(__LCLINT__)
+#ifdef S_IFIFO
        case S_IFIFO:
-               file_printf(fm, "fifo (named pipe)");
+               if (file_printf(ms, "fifo (named pipe)") == -1)
+                       return -1;
                return 1;
 #endif
-#if defined(S_IFDOOR)
+#ifdef S_IFDOOR
        case S_IFDOOR:
-               file_printf(fm, "door");
+               if (file_printf(ms, "door") == -1)
+                       return -1;
                return 1;
 #endif
-#if defined(S_IFLNK) || defined(__LCLINT__)
+#ifdef S_IFLNK
        case S_IFLNK:
-               {
-                       char buf[BUFSIZ+4];
-                       int nch;
-                       struct stat tstatbuf;
-
-                       buf[0] = '\0';
-                       if ((nch = readlink(fn, buf, BUFSIZ-1)) <= 0) {
-                               file_printf(fm, "unreadable symlink (%s).", strerror(errno));
-                               return 1;
+               if ((nch = readlink(fn, buf, BUFSIZ-1)) <= 0) {
+                       if (ms->flags & MAGIC_ERROR) {
+                           file_error(ms, errno, "unreadable symlink `%s'",
+                               fn);
+                           return -1;
                        }
-                       buf[nch] = '\0';        /* readlink(2) needs this */
+                       if (file_printf(ms,
+                           "unreadable symlink `%s' (%s)", fn,
+                           strerror(errno)) == -1)
+                               return -1;
+                       return 1;
+               }
+               buf[nch] = '\0';        /* readlink(2) forgets this */
 
-                       /* If broken symlink, say so and quit early. */
-/*@-branchstate@*/
-                       if (*buf == '/') {
-                           if (stat(buf, &tstatbuf) < 0) {
-                               file_printf(fm, "broken symbolic link to %s", buf);
-                               return 1;
-                           }
-                       }
-                       else {
-                           char *tmp;
-                           char buf2[BUFSIZ+BUFSIZ+4];
+               /* If broken symlink, say so and quit early. */
+               if (*buf == '/') {
+                   if (stat(buf, &tstatbuf) < 0) {
+                           if (ms->flags & MAGIC_ERROR) {
+                                   file_error(ms, errno, 
+                                       "broken symbolic link to `%s'", buf);
+                                   return -1;
+                           } 
+                           if (file_printf(ms, "broken symbolic link to `%s'",
+                               buf) == -1)
+                                   return -1;
+                           return 1;
+                   }
+               }
+               else {
+                       char *tmp;
+                       char buf2[BUFSIZ+BUFSIZ+4];
 
-                           if ((tmp = strrchr(fn,  '/')) == NULL) {
+                       if ((tmp = strrchr(fn,  '/')) == NULL) {
                                tmp = buf; /* in current directory anyway */
-                           }
-                           else {
-                               strcpy (buf2, fn);  /* take directory part */
-                               buf2[tmp-fn+1] = '\0';
-                               strcat (buf2, buf); /* plus (relative) symlink */
+                       } else {
+                               if (tmp - fn + 1 > BUFSIZ) {
+                                       if (ms->flags & MAGIC_ERROR) {
+                                               file_error(ms, 0, 
+                                                   "path too long: `%s'", buf);
+                                               return -1;
+                                       }
+                                       if (file_printf(ms,
+                                           "path too long: `%s'", fn) == -1)
+                                               return -1;
+                                       return 1;
+                               }
+                               (void)strcpy(buf2, fn);  /* take dir part */
+                               buf2[tmp - fn + 1] = '\0';
+                               (void)strcat(buf2, buf); /* plus (rel) link */
                                tmp = buf2;
-                           }
-                           if (stat(tmp, &tstatbuf) < 0) {
-                               file_printf(fm, "broken symbolic link to %s", buf);
-                               return 1;
-                           }
-                        }
-/*@=branchstate@*/
-
-                       /* Otherwise, handle it. */
-                       if ((fm->flags & FMAGIC_FLAGS_FOLLOW)) {
-                               file_printf(fm, "\n");
-                               xx = fmagicProcess(fm, buf, strlen(buf));
+                       }
+                       if (stat(tmp, &tstatbuf) < 0) {
+                               if (ms->flags & MAGIC_ERROR) {
+                                       file_error(ms, errno, 
+                                           "broken symbolic link to `%s'",
+                                           buf);
+                                       return -1;
+                               }
+                               if (file_printf(ms,
+                                   "broken symbolic link to `%s'", buf) == -1)
+                                       return -1;
                                return 1;
-                       } else { /* just print what it points to */
-                               file_printf(fm, "symbolic link to %s", buf);
                        }
                }
-               return 1;
+
+               /* Otherwise, handle it. */
+               if ((ms->flags & MAGIC_SYMLINK) != 0) {
+                       const char *p;
+                       ms->flags &= MAGIC_SYMLINK;
+                       p = magic_file(ms, buf);
+                       ms->flags |= MAGIC_SYMLINK;
+                       return p != NULL ? 1 : -1;
+               } else { /* just print what it points to */
+                       if (file_printf(ms, "symbolic link to `%s'",
+                           buf) == -1)
+                               return -1;
+               }
+       return 1;
 #endif
-#if defined(S_IFSOCK)
+#ifdef S_IFSOCK
 #ifndef __COHERENT__
        case S_IFSOCK:
-               file_printf(fm, "socket");
+               if (file_printf(ms, "socket") == -1)
+                       return -1;
                return 1;
 #endif
 #endif
        case S_IFREG:
                break;
        default:
-               error(EXIT_FAILURE, 0, "invalid mode 0%o.\n", st->st_mode);
-               /*@notreached@*/
+               file_error(ms, 0, "invalid mode 0%o", sb->st_mode);
+               return -1;
+               /*NOTREACHED*/
        }
 
        /*
@@ -224,162 +305,11 @@ fmagicD(fmagic fm)
         * the fact that it is empty will be detected and reported correctly
         * when we read the file.)
         */
-       if (!(fm->flags & FMAGIC_FLAGS_SPECIAL) && st->st_size == 0) {
-               file_printf(fm, ((fm->flags & FMAGIC_FLAGS_MIME)
-                       ? "application/x-empty" : "empty"));
+       if ((ms->flags & MAGIC_DEVICES) == 0 && sb->st_size == 0) {
+               if (file_printf(ms, (ms->flags & MAGIC_MIME) ?
+                   "application/x-empty" : "empty") == -1)
+                       return -1;
                return 1;
        }
        return 0;
 }
-/*@=bounds@*/
-
-int
-fmagicF(fmagic fm, int zfl)
-{
-       /*
-        * The main work is done here!
-        * We have the file name and/or the data buffer to be identified. 
-        */
-
-#ifdef __EMX__
-       /*
-        * Ok, here's the right place to add a call to some os-specific
-        * routine, e.g.
-        */
-       if (os2_apptype(fn, buf, nb) == 1)
-              return 'o';
-#endif
-       /* try compression stuff */
-       if (zfl && fmagicZ(fm))
-               return 'z';
-
-       /* try tests in /etc/magic (or surrogate magic file) */
-       if (fmagicS(fm))
-               return 's';
-
-       /* try known keywords, check whether it is ASCII */
-       if (fmagicA(fm))
-               return 'a';
-
-       /* abandon hope, all ye who remain here */
-       file_printf(fm, ((fm->flags & FMAGIC_FLAGS_MIME)
-               ? "application/octet-stream" : "data"));
-       return '\0';
-}
-
-/*
- * fmagicProcess - process input file
- */
-/*@-bounds@*/
-int
-fmagicProcess(fmagic fm, const char *fn, int wid)
-{
-       static const char stdname[] = "standard input";
-       char match = '\0';
-       int ret = 0;
-
-/*@-assignexpose -temptrans @*/
-       fm->fn = fn;
-/*@=assignexpose =temptrans @*/
-       fm->buf = xmalloc(HOWMANY+1);
-       fm->buf[0] = '\0';
-       fm->nb = 0;
-
-/*@-branchstate@*/
-       if (strcmp("-", fn) == 0) {
-               if (fstat(0, &fm->sb)<0) {
-                       error(EXIT_FAILURE, 0, "cannot fstat `%s' (%s).\n", stdname,
-                             strerror(errno));
-                       /*@notreached@*/
-               }
-               fm->fn = stdname;
-       }
-/*@=branchstate@*/
-
-       if (wid > 0 && !(fm->flags & FMAGIC_FLAGS_BRIEF))
-            file_printf(fm, "%s%s%*s ", fm->fn, fm->separator,
-               (int) ((fm->flags & FMAGIC_FLAGS_NOPAD) ? 0 : (wid - strlen(fm->fn))), "");
-
-       if (fm->fn != stdname) {
-               /*
-                * first try judging the file based on its filesystem status
-                */
-               if (fmagicD(fm) != 0)
-                       goto exit;
-
-               if ((fm->fd = open(fm->fn, O_RDONLY)) < 0) {
-                       /* We can't open it, but we were able to stat it. */
-                       if (fm->sb.st_mode & 0002)
-                               file_printf(fm, "writeable, ");
-                       if (fm->sb.st_mode & 0111)
-                               file_printf(fm, "executable, ");
-                       file_printf(fm, "can't read `%s' (%s).", fm->fn, strerror(errno));
-                       goto exit;
-               }
-       }
-
-
-       /*
-        * try looking at the first HOWMANY bytes
-        */
-       if ((fm->nb = read(fm->fd, (char *)fm->buf, HOWMANY)) == -1) {
-               error(EXIT_FAILURE, 0, "read failed (%s).\n", strerror(errno));
-               /*@notreached@*/
-       }
-
-       if (fm->nb == 0)
-               file_printf(fm, ((fm->flags & FMAGIC_FLAGS_MIME)
-                       ? "application/x-empty" : "empty"), fm);
-       else {
-               fm->buf[fm->nb++] = '\0';       /* null-terminate data buffer */
-               match = fmagicF(fm, (fm->flags & FMAGIC_FLAGS_UNCOMPRESS));
-       }
-
-#ifdef BUILTIN_ELF
-       if (match == 's' && fm->nb > 5) {
-               /*
-                * We matched something in the file, so this *might*
-                * be an ELF file, and the file is at least 5 bytes long,
-                * so if it's an ELF file it has at least one byte
-                * past the ELF magic number - try extracting information
-                * from the ELF headers that can't easily be extracted
-                * with rules in the magic file.
-                */
-               fmagicE(fm);
-       }
-#endif
-
-       if (fm->fn != stdname) {
-#ifdef RESTORE_TIME
-               /*
-                * Try to restore access, modification times if read it.
-                * This is really *bad* because it will modify the status
-                * time of the file... And of course this will affect
-                * backup programs
-                */
-# ifdef USE_UTIMES
-               struct timeval  utsbuf[2];
-               utsbuf[0].tv_sec = fm->sb.st_atime;
-               utsbuf[1].tv_sec = fm->sb.st_mtime;
-
-               (void) utimes(fm->fn, utsbuf); /* don't care if loses */
-# else
-               struct utimbuf  utbuf;
-
-               utbuf.actime = fm->sb.st_atime;
-               utbuf.modtime = fm->sb.st_mtime;
-               (void) utime(fm->fn, &utbuf); /* don't care if loses */
-# endif
-#endif
-               (void) close(fm->fd);
-               fm->fd = -1;
-       }
-
-exit:
-       if (fm->buf != NULL)
-               free(fm->buf);
-       fm->buf = NULL;
-       fm->nb = 0;
-       return ret;
-}
-/*@=bounds@*/
diff --git a/file/src/funcs.c b/file/src/funcs.c
new file mode 100644 (file)
index 0000000..f15616d
--- /dev/null
@@ -0,0 +1,184 @@
+/*
+ * Copyright (c) Christos Zoulas 2003.
+ * All Rights Reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice immediately at the beginning of the file, without modification,
+ *    this list of conditions, and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *  
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#include "file.h"
+#include "magic.h"
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+
+#ifndef        lint
+FILE_RCSID("@(#)$Id: funcs.c,v 1.11 2003/11/11 20:01:46 christos Exp $")
+#endif /* lint */
+/*
+ * Like printf, only we print to a buffer and advance it.
+ */
+protected int
+file_printf(struct magic_set *ms, const char *fmt, ...)
+{
+       va_list ap;
+       size_t len;
+       char *buf;
+
+       va_start(ap, fmt);
+
+       if ((len = vsnprintf(ms->o.ptr, ms->o.len, fmt, ap)) >= ms->o.len) {
+               va_end(ap);
+               if ((buf = realloc(ms->o.buf, len + 1024)) == NULL) {
+                       file_oomem(ms);
+                       return -1;
+               }
+               ms->o.ptr = buf + (ms->o.ptr - ms->o.buf);
+               ms->o.buf = buf;
+               ms->o.len = ms->o.size - (ms->o.ptr - ms->o.buf);
+               ms->o.size = len + 1024;
+
+               va_start(ap, fmt);
+               len = vsnprintf(ms->o.ptr, ms->o.len, fmt, ap);
+       }
+       ms->o.ptr += len;
+       ms->o.len -= len;
+       va_end(ap);
+       return 0;
+}
+
+/*
+ * error - print best error message possible
+ */
+/*VARARGS*/
+protected void
+file_error(struct magic_set *ms, int error, const char *f, ...)
+{
+       va_list va;
+       /* Only the first error is ok */
+       if (ms->haderr)
+               return;
+       va_start(va, f);
+       (void)vsnprintf(ms->o.buf, ms->o.size, f, va);
+       va_end(va);
+       if (error > 0) {
+               size_t len = strlen(ms->o.buf);
+               (void)snprintf(ms->o.buf + len, ms->o.size - len, " (%s)",
+                   strerror(error));
+       }
+       ms->haderr++;
+       ms->error = error;
+}
+
+
+protected void
+file_oomem(struct magic_set *ms)
+{
+       file_error(ms, errno, "cannot allocate memory");
+}
+
+protected void
+file_badseek(struct magic_set *ms)
+{
+       file_error(ms, errno, "error seeking");
+}
+
+protected void
+file_badread(struct magic_set *ms)
+{
+       file_error(ms, errno, "error reading");
+}
+
+protected int
+file_buffer(struct magic_set *ms, const void *buf, size_t nb)
+{
+    int m;
+    /* try compression stuff */
+    if ((m = file_zmagic(ms, buf, nb)) == 0) {
+       /* Check if we have a tar file */
+       if ((m = file_is_tar(ms, buf, nb)) == 0) {
+           /* try tests in /etc/magic (or surrogate magic file) */
+           if ((m = file_softmagic(ms, buf, nb)) == 0) {
+               /* try known keywords, check whether it is ASCII */
+               if ((m = file_ascmagic(ms, buf, nb)) == 0) {
+                   /* abandon hope, all ye who remain here */
+                   if (file_printf(ms, ms->flags & MAGIC_MIME ?
+                       "application/octet-stream" : "data") == -1)
+                           return -1;
+                   m = 1;
+               }
+           }
+       }
+    }
+    return m;
+}
+
+protected int
+file_reset(struct magic_set *ms)
+{
+       if (ms->mlist == NULL) {
+               file_error(ms, 0, "no magic files loaded");
+               return -1;
+       }
+       ms->o.ptr = ms->o.buf;
+       ms->haderr = 0;
+       ms->error = -1;
+       return 0;
+}
+
+protected const char *
+file_getbuffer(struct magic_set *ms)
+{
+       char *nbuf, *op, *np;
+       size_t nsize;
+
+       if (ms->haderr)
+               return NULL;
+
+       if (ms->flags & MAGIC_RAW)
+               return ms->o.buf;
+
+       nsize = ms->o.len * 4 + 1;
+       if (ms->o.psize < nsize) {
+               if ((nbuf = realloc(ms->o.pbuf, nsize)) == NULL) {
+                       file_oomem(ms);
+                       return NULL;
+               }
+               ms->o.psize = nsize;
+               ms->o.pbuf = nbuf;
+       }
+
+       for (np = ms->o.pbuf, op = ms->o.buf; *op; op++) {
+               if (isprint((unsigned char)*op)) {
+                       *np++ = *op;    
+               } else {
+                       *np++ = '\\';
+                       *np++ = ((*op >> 6) & 3) + '0';
+                       *np++ = ((*op >> 3) & 7) + '0';
+                       *np++ = ((*op >> 0) & 7) + '0';
+               }
+       }
+       *np = '\0';
+       return ms->o.pbuf;
+}
diff --git a/file/src/is_tar.c b/file/src/is_tar.c
new file mode 100644 (file)
index 0000000..fbee318
--- /dev/null
@@ -0,0 +1,153 @@
+/*
+ * Copyright (c) Ian F. Darwin 1986-1995.
+ * Software written by Ian F. Darwin and others;
+ * maintained 1995-present by Christos Zoulas and others.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice immediately at the beginning of the file, without modification,
+ *    this list of conditions, and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    This product includes software developed by Ian F. Darwin and others.
+ * 4. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *  
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+/*
+ * is_tar() -- figure out whether file is a tar archive.
+ *
+ * Stolen (by the author!) from the public domain tar program:
+ * Public Domain version written 26 Aug 1985 John Gilmore (ihnp4!hoptoad!gnu).
+ *
+ * @(#)list.c 1.18 9/23/86 Public Domain - gnu
+ *
+ * Comments changed and some code/comments reformatted
+ * for file command by Ian Darwin.
+ */
+
+#include "file.h"
+#include "magic.h"
+#include <string.h>
+#include <ctype.h>
+#include <sys/types.h>
+#include "tar.h"
+
+#ifndef lint
+FILE_RCSID("@(#)$Id: is_tar.c,v 1.24 2003/11/11 20:01:46 christos Exp $")
+#endif
+
+#define        isodigit(c)     ( ((c) >= '0') && ((c) <= '7') )
+
+private int is_tar(const unsigned char *, size_t);
+private int from_oct(int, const char *);       /* Decode octal number */
+
+protected int
+file_is_tar(struct magic_set *ms, const unsigned char *buf, size_t nbytes)
+{
+       /*
+        * Do the tar test first, because if the first file in the tar
+        * archive starts with a dot, we can confuse it with an nroff file.
+        */
+       switch (is_tar(buf, nbytes)) {
+       case 1:
+               if (file_printf(ms, (ms->flags & MAGIC_MIME) ?
+                   "application/x-tar" : "tar archive") == -1)
+                       return -1;
+               return 1;
+       case 2:
+               if (file_printf(ms, (ms->flags & MAGIC_MIME) ?
+                   "application/x-tar, POSIX" : "POSIX tar archive") == -1)
+                       return -1;
+               return 1;
+       default:
+               return 0;
+       }
+}
+
+/*
+ * Return 
+ *     0 if the checksum is bad (i.e., probably not a tar archive), 
+ *     1 for old UNIX tar file,
+ *     2 for Unix Std (POSIX) tar file.
+ */
+private int
+is_tar(const unsigned char *buf, size_t nbytes)
+{
+       const union record *header = (const union record *)(const void *)buf;
+       int     i;
+       int     sum, recsum;
+       const char      *p;
+
+       if (nbytes < sizeof(union record))
+               return 0;
+
+       recsum = from_oct(8,  header->header.chksum);
+
+       sum = 0;
+       p = header->charptr;
+       for (i = sizeof(union record); --i >= 0;) {
+               /*
+                * We cannot use unsigned char here because of old compilers,
+                * e.g. V7.
+                */
+               sum += 0xFF & *p++;
+       }
+
+       /* Adjust checksum to count the "chksum" field as blanks. */
+       for (i = sizeof(header->header.chksum); --i >= 0;)
+               sum -= 0xFF & header->header.chksum[i];
+       sum += ' '* sizeof header->header.chksum;       
+
+       if (sum != recsum)
+               return 0;       /* Not a tar archive */
+       
+       if (0==strcmp(header->header.magic, TMAGIC)) 
+               return 2;               /* Unix Standard tar archive */
+
+       return 1;                       /* Old fashioned tar archive */
+}
+
+
+/*
+ * Quick and dirty octal conversion.
+ *
+ * Result is -1 if the field is invalid (all blank, or nonoctal).
+ */
+private int
+from_oct(int digs, const char *where)
+{
+       int     value;
+
+       while (isspace((unsigned char)*where)) {        /* Skip spaces */
+               where++;
+               if (--digs <= 0)
+                       return -1;              /* All blank field */
+       }
+       value = 0;
+       while (digs > 0 && isodigit(*where)) {  /* Scan til nonoctal */
+               value = (value << 3) | (*where++ - '0');
+               --digs;
+       }
+
+       if (digs > 0 && *where && !isspace((unsigned char)*where))
+               return -1;                      /* Ended on non-space/nul */
+
+       return value;
+}
index e9154c4..d603296 100644 (file)
@@ -27,8 +27,8 @@
  * SUCH DAMAGE.
  */
 
-#include "magic.h"
 #include "file.h"
+#include "magic.h"
 
 #include <stdio.h>
 #include <stdlib.h>
 #ifdef QUICK
 #include <sys/mman.h>
 #endif
-#ifdef RESTORE_TIME
-# if (__COHERENT__ >= 0x420)
+
+#if defined(HAVE_UTIME)
+# if defined(HAVE_SYS_UTIME_H)
 #  include <sys/utime.h>
-# else
-#  ifdef USE_UTIMES
-#   include <sys/time.h>
-#  else
-#   include <utime.h>
-#  endif
+# elif defined(HAVE_UTIME_H)
+#  include <utime.h>
 # endif
+#elif defined(HAVE_UTIMES)
+# include <sys/time.h>
 #endif
+
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>    /* for read() */
 #endif
+
 #ifdef HAVE_LOCALE_H
 #include <locale.h>
 #endif
@@ -64,7 +65,7 @@
 #include "patchlevel.h"
 
 #ifndef        lint
-FILE_RCSID("@(#)$Id: magic.c,v 1.6 2003/03/26 15:35:30 christos Exp $")
+FILE_RCSID("@(#)$Id: magic.c,v 1.20 2004/03/23 15:33:43 christos Exp $")
 #endif /* lint */
 
 #ifdef __EMX__
@@ -73,11 +74,9 @@ protected int file_os2_apptype(struct magic_set *ms, const char *fn,
     const void *buf, size_t nb);
 #endif /* __EMX__ */
 
-#ifndef MAGIC
-# define MAGIC "/etc/magic"
-#endif
-
 private void free_mlist(struct mlist *);
+private void close_and_restore(const struct magic_set *, const char *, int,
+    const struct stat *);
 
 public struct magic_set *
 magic_open(int flags)
@@ -86,41 +85,38 @@ magic_open(int flags)
 
        if ((ms = malloc(sizeof(struct magic_set))) == NULL)
                return NULL;
+
+       if (magic_setflags(ms, flags) == -1) {
+               free(ms);
+               errno = EINVAL;
+               return NULL;
+       }
+
        ms->o.ptr = ms->o.buf = malloc(ms->o.size = 1024);
        ms->o.len = 0;
        if (ms->o.buf == NULL) {
                free(ms);
                return NULL;
        }
+       ms->o.pbuf = malloc(ms->o.psize = 1024);
+       if (ms->o.pbuf == NULL) {
+               free(ms->o.buf);
+               free(ms);
+               return NULL;
+       }
        ms->c.off = malloc((ms->c.len = 10) * sizeof(*ms->c.off));
        if (ms->c.off == NULL) {
+               free(ms->o.pbuf);
                free(ms->o.buf);
                free(ms);
                return NULL;
        }
-       ms->flags = flags;
        ms->haderr = 0;
+       ms->error = -1;
+       ms->mlist = NULL;
        return ms;
 }
 
-/*
- * load a magic file
- */
-public int
-magic_load(struct magic_set *ms, const char *magicfile)
-{
-       struct mlist *ml;
-
-       if (magicfile == NULL)
-               magicfile = (ms->flags & MAGIC_MIME) ? MAGIC ".mime" : MAGIC;
-
-       ml = file_apprentice(ms, magicfile, 0);
-       if (ml == NULL) 
-               return -1;
-       ms->mlist = ml;
-       return 0;
-}
-
 private void
 free_mlist(struct mlist *mlist)
 {
@@ -132,19 +128,7 @@ free_mlist(struct mlist *mlist)
        for (ml = mlist->next; ml != mlist;) {
                struct mlist *next = ml->next;
                struct magic *mg = ml->magic;
-               switch (ml->mapped) {
-               case 0:
-                       free(mg);
-                       break;
-               case 1:
-                       mg--;
-                       free(mg);
-                       break;
-               case 2:
-                       mg--;
-                       (void)munmap(mg, sizeof(*mg) * (ml->nmagic + 1));
-                       break;
-               }
+               file_delmagic(mg, ml->mapped, ml->nmagic);
                free(ml);
                ml = next;
        }
@@ -161,12 +145,25 @@ magic_close(ms)
        free(ms);
 }
 
+/*
+ * load a magic file
+ */
+public int
+magic_load(struct magic_set *ms, const char *magicfile)
+{
+       struct mlist *ml = file_apprentice(ms, magicfile, FILE_LOAD);
+       if (ml) {
+               free_mlist(ms->mlist);
+               ms->mlist = ml;
+               return 0;
+       }
+       return -1;
+}
+
 public int
 magic_compile(struct magic_set *ms, const char *magicfile)
 {
        struct mlist *ml = file_apprentice(ms, magicfile, FILE_COMPILE);
-       if(ml == NULL)
-               return -1;
        free_mlist(ml);
        return ml ? 0 : -1;
 }
@@ -175,12 +172,38 @@ public int
 magic_check(struct magic_set *ms, const char *magicfile)
 {
        struct mlist *ml = file_apprentice(ms, magicfile, FILE_CHECK);
-       if(ml == NULL)
-               return -1;
        free_mlist(ml);
        return ml ? 0 : -1;
 }
 
+private void
+close_and_restore(const struct magic_set *ms, const char *name, int fd,
+    const struct stat *sb)
+{
+       (void) close(fd);
+       if (fd != STDIN_FILENO && (ms->flags & MAGIC_PRESERVE_ATIME) != 0) {
+               /*
+                * Try to restore access, modification times if read it.
+                * This is really *bad* because it will modify the status
+                * time of the file... And of course this will affect
+                * backup programs
+                */
+#ifdef HAVE_UTIMES
+               struct timeval  utsbuf[2];
+               utsbuf[0].tv_sec = sb->st_atime;
+               utsbuf[1].tv_sec = sb->st_mtime;
+
+               (void) utimes(name, utsbuf); /* don't care if loses */
+#elif defined(HAVE_UTIME_H) || defined(HAVE_SYS_UTIME_H)
+               struct utimbuf  utbuf;
+
+               utbuf.actime = sb->st_atime;
+               utbuf.modtime = sb->st_mtime;
+               (void) utime(name, &utbuf); /* don't care if loses */
+#endif
+       }
+}
+
 /*
  * find type of named file
  */
@@ -190,7 +213,7 @@ magic_file(struct magic_set *ms, const char *inname)
        int     fd = 0;
        unsigned char buf[HOWMANY+1];   /* one extra for terminating '\0' */
        struct stat     sb;
-       int nbytes = 0; /* number of bytes read from a datafile */
+       ssize_t nbytes = 0;     /* number of bytes read from a datafile */
 
        if (file_reset(ms) == -1)
                return NULL;
@@ -201,7 +224,7 @@ magic_file(struct magic_set *ms, const char *inname)
        case 0:
                break;
        default:
-               return ms->o.buf;
+               return file_getbuffer(ms);
        }
 
 #ifndef        STDIN_FILENO
@@ -210,42 +233,52 @@ magic_file(struct magic_set *ms, const char *inname)
        if (inname == NULL)
                fd = STDIN_FILENO;
        else if ((fd = open(inname, O_RDONLY)) < 0) {
-               /* We can't open it, but we were able to stat it. */
-               if (sb.st_mode & 0002)
+               /* We cannot open it, but we were able to stat it. */
+               if (sb.st_mode & 0222)
                        if (file_printf(ms, "writable, ") == -1)
                                return NULL;
                if (sb.st_mode & 0111)
                        if (file_printf(ms, "executable, ") == -1)
                                return NULL;
-               return ms->o.buf;
+               if (S_ISREG(sb.st_mode))
+                       if (file_printf(ms, "regular file, ") == -1)
+                               return NULL;
+               if (file_printf(ms, "no read permission") == -1)
+                       return NULL;
+               return file_getbuffer(ms);
        }
 
        /*
         * try looking at the first HOWMANY bytes
         */
        if ((nbytes = read(fd, (char *)buf, HOWMANY)) == -1) {
-               file_error(ms, "Cannot read `%s' %s", inname, strerror(errno));
-               return NULL;
+               file_error(ms, errno, "cannot read `%s'", inname);
+               goto done;
        }
 
        if (nbytes == 0) {
                if (file_printf(ms, (ms->flags & MAGIC_MIME) ?
                    "application/x-empty" : "empty") == -1)
-                       return NULL;
+                       goto done;
+               goto gotit;
+       } else if (nbytes == 1) {
+               if (file_printf(ms, "very short file (no magic)") == -1)
+                       goto done;
+               goto gotit;
        } else {
-               buf[nbytes++] = '\0';   /* null-terminate it */
+               buf[nbytes] = '\0';     /* null-terminate it */
 #ifdef __EMX__
                switch (file_os2_apptype(ms, inname, buf, nbytes)) {
                case -1:
-                       return NULL;
+                       goto done;
                case 0:
                        break;
                default:
-                       return ms->o.buf;
+                       goto gotit;
                }
 #endif
                if (file_buffer(ms, buf, (size_t)nbytes) == -1)
-                       return NULL;
+                       goto done;
 #ifdef BUILTIN_ELF
                if (nbytes > 5) {
                        /*
@@ -253,15 +286,19 @@ magic_file(struct magic_set *ms, const char *inname)
                         * be an ELF file, and the file is at least 5 bytes
                         * long, so if it's an ELF file it has at least one
                         * byte past the ELF magic number - try extracting
-                        * information from the ELF headers that can't easily
+                        * information from the ELF headers that cannot easily
                         * be extracted with rules in the magic file.
                         */
                        file_tryelf(ms, fd, buf, (size_t)nbytes);
                }
 #endif
        }
-
-       return ms->haderr ? NULL : ms->o.buf;
+gotit:
+       close_and_restore(ms, inname, fd, &sb);
+       return file_getbuffer(ms);
+done:
+       close_and_restore(ms, inname, fd, &sb);
+       return NULL;
 }
 
 
@@ -277,7 +314,7 @@ magic_buffer(struct magic_set *ms, const void *buf, size_t nb)
        if (file_buffer(ms, buf, nb) == -1) {
                return NULL;
        }
-       return ms->haderr ? NULL : ms->o.buf;
+       return file_getbuffer(ms);
 }
 
 public const char *
@@ -286,8 +323,19 @@ magic_error(struct magic_set *ms)
        return ms->haderr ? ms->o.buf : NULL;
 }
 
-public void
+public int
+magic_errno(struct magic_set *ms)
+{
+       return ms->haderr ? ms->error : 0;
+}
+
+public int
 magic_setflags(struct magic_set *ms, int flags)
 {
+#if !defined(HAVE_UTIME) && !defined(HAVE_UTIMES)
+       if (flags & MAGIC_PRESERVE_ATIME)
+               return -1;
+#endif
        ms->flags = flags;
+       return 0;
 }
index 9110df1..eefb8bf 100644 (file)
 
 #include <sys/types.h>
 
-#define        MAGIC_NONE      0x00    /* No flags */
-#define        MAGIC_DEBUG     0x01    /* Turn on debugging */
-#define        MAGIC_SYMLINK   0x02    /* Follow symlinks */
-#define        MAGIC_COMPRESS  0x04    /* Check inside compressed files */
-#define        MAGIC_DEVICES   0x08    /* Look at the contents of devices */
-#define        MAGIC_MIME      0x10    /* Return a mime string */
-#define        MAGIC_CONTINUE  0x20    /* Return all matches, not just the first */
-#define        MAGIC_CHECK     0x40    /* Print warnings to stderr */
+#define        MAGIC_NONE              0x000   /* No flags */
+#define        MAGIC_DEBUG             0x001   /* Turn on debugging */
+#define        MAGIC_SYMLINK           0x002   /* Follow symlinks */
+#define        MAGIC_COMPRESS          0x004   /* Check inside compressed files */
+#define        MAGIC_DEVICES           0x008   /* Look at the contents of devices */
+#define        MAGIC_MIME              0x010   /* Return a mime string */
+#define        MAGIC_CONTINUE          0x020   /* Return all matches */
+#define        MAGIC_CHECK             0x040   /* Print warnings to stderr */
+#define        MAGIC_PRESERVE_ATIME    0x080   /* Restore access time on exit */
+#define        MAGIC_RAW               0x100   /* Don't translate unprintable chars */
+#define        MAGIC_ERROR             0x200   /* Handle ENOENT etc as real errors */
 
-typedef struct magic_set *magic_t;
+#ifdef __cplusplus
+extern "C" {
+#endif
 
-magic_t magic_open(int flags);
+typedef struct magic_set *magic_t;
+magic_t magic_open(int);
 void magic_close(magic_t);
 
 const char *magic_file(magic_t, const char *);
 const char *magic_buffer(magic_t, const void *, size_t);
 
 const char *magic_error(magic_t);
-void magic_setflags(magic_t, int);
+int magic_setflags(magic_t, int);
 
 int magic_load(magic_t, const char *);
 int magic_compile(magic_t, const char *);
 int magic_check(magic_t, const char *);
+int magic_errno(magic_t);
 
+#ifdef __cplusplus
+};
 #endif
+
+#endif /* _MAGIC_H */
index 780c225..ad93280 100644 (file)
@@ -37,7 +37,7 @@
  * appear at fixed offsets into the file. Don't make HOWMANY
  * too high unless you have a very fast CPU.
  *
- * Id: names.h,v 1.21 2003/03/23 21:16:26 christos Exp 
+ * $Id: names.h,v 1.24 2004/03/22 19:09:12 christos Exp $
  */
 
 /*
 #define        L_HTML  11              /* HTML */
 #define        L_BCPL  12              /* BCPL */
 #define        L_M4    13              /* M4 */
+#define        L_PO    14              /* PO */
 
-/*@unchecked@*/ /*@unused@*/ /*@observer@*/
 static const struct {
-/*@observer@*/ /*@null@*/
        const char *human;
-/*@observer@*/ /*@null@*/
        const char *mime;
 } types[] = {
        { "C program",                                  "text/x-c", },
@@ -74,7 +72,7 @@ static const struct {
        { "make commands",                              "text/x-makefile" },
        { "PL/1 program",                               "text/x-pl1" },
        { "assembler program",                          "text/x-asm" },
-       { "English",                                    "text/plain, English" },
+       { "English",                                    "text/plain" },
        { "Pascal program",                             "text/x-pascal" },
        { "mail",                                       "text/x-mail" },
        { "news",                                       "text/x-news" },
@@ -82,7 +80,8 @@ static const struct {
        { "HTML document",                              "text/html", },
        { "BCPL program",                               "text/x-bcpl" },
        { "M4 macro language pre-processor",            "text/x-m4" },
-       { "can't happen error on names.h/types",        "error/x-error" },
+       { "PO (gettext message catalogue)",             "text/x-po" },
+       { "cannot happen error on names.h/types",       "error/x-error" },
        { 0, 0}
 };
 
@@ -122,14 +121,13 @@ static const struct {
  * as Java, as it comes after "the" and "The".  Perhaps we need a fancier
  * heuristic to identify Java?
  */
-/*@unchecked@*/ /*@unused@*/ /*@observer@*/
 static struct names {
-/*@observer@*/ /*@null@*/
        const char *name;
        short type;
 } names[] = {
        /* These must be sorted by eye for optimal hit rate */
        /* Add to this list only after substantial meditation */
+       {"msgid",       L_PO},
        {"dnl",         L_M4},
        {"import",      L_JAVA},
        {"\"libhdr\"",  L_BCPL},
@@ -186,6 +184,8 @@ static struct names {
        {"HREF=",       L_HTML},
        {"<body",       L_HTML},
        {"<BODY",       L_HTML},
+       {"<html",       L_HTML},
+       {"<HTML",       L_HTML},
        {NULL,          0}
 };
 #define NNAMES ((sizeof(names)/sizeof(struct names)) - 1)
index 5ba30f8..b358604 100644 (file)
@@ -1,11 +1,64 @@
-#define        FILE_VERSION_MAJOR      3
-#define        patchlevel              39
+#define        FILE_VERSION_MAJOR      4
+#define        patchlevel              9
 
 /*
  * Patchlevel file for Ian Darwin's MAGIC command.
- * Id: patchlevel.h,v 1.39 2002/07/03 18:57:52 christos Exp 
+ * $Id: patchlevel.h,v 1.52 2004/04/07 00:32:25 christos Exp $
+ *
+ * $Log: patchlevel.h,v $
+ * Revision 1.52  2004/04/07 00:32:25  christos
+ * welcome to 4.09
+ *
+ * Revision 1.51  2004/03/22 21:17:11  christos
+ * welcome to 4.08.
+ *
+ * Revision 1.50  2003/12/23 17:34:04  christos
+ * 4.07
+ *
+ * Revision 1.49  2003/10/15 02:08:27  christos
+ * welcome to 4.06
+ *
+ * Revision 1.48  2003/09/12 19:41:14  christos
+ * this is 4.04
+ *
+ * Revision 1.47  2003/05/23 21:38:21  christos
+ * welcome to 4.03
+ *
+ * Revision 1.46  2003/04/02 18:57:43  christos
+ * prepare for 4.02
+ *
+ * Revision 1.45  2003/03/26 15:37:25  christos
+ * - Pass lint
+ * - make NULL in magic_file mean stdin
+ * - Fix "-" argument to file to pass NULL to magic_file
+ * - avoid pointer casts by using memcpy
+ * - rename magic_buf -> magic_buffer
+ * - keep only the first error
+ * - manual page: new sentence, new line
+ * - fix typo in api function (magic_buf -> magic_buffer)
+ *
+ * Revision 1.44  2003/03/23 22:23:31  christos
+ * finish librarification.
+ *
+ * Revision 1.43  2003/03/23 21:16:26  christos
+ * update copyrights.
+ *
+ * Revision 1.42  2003/03/23 04:06:05  christos
+ * Library re-organization
+ *
+ * Revision 1.41  2003/02/27 20:53:45  christos
+ * - fix memory allocation problem (Jeff Johnson)
+ * - fix stack overflow corruption (David Endler)
+ * - fixes from NetBSD source (Antti Kantee)
+ * - magic fixes
+ *
+ * Revision 1.40  2003/02/08 18:33:53  christos
+ * - detect inttypes.h too (Dave Love <d.love@dl.ac.uk>)
+ * - eliminate unsigned char warnings (Petter Reinholdtsen <pere@hungry.com>)
+ * - better elf PT_NOTE handling (Nalin Dahyabhai <nalin@redhat.com>)
+ * - add options to format the output differently
+ * - much more magic.
  *
- * Log: patchlevel.h,v 
  * Revision 1.39  2002/07/03 18:57:52  christos
  * - ansify/c99ize
  * - more magic
  * Fix a tiny null-pointer bug in previous fix for tar archive + uncompress.
  * 
  */
-
index 73a2c60..ee1926d 100644 (file)
@@ -1,64 +1,70 @@
 /*
+ * Copyright (c) Ian F. Darwin 1986-1995.
+ * Software written by Ian F. Darwin and others;
+ * maintained 1995-present by Christos Zoulas and others.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice immediately at the beginning of the file, without modification,
+ *    this list of conditions, and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    This product includes software developed by Ian F. Darwin and others.
+ * 4. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *  
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+/*
  * print.c - debugging printout routines
- *
- * Copyright (c) Ian F. Darwin, 1987.
- * Written by Ian F. Darwin.
- *
- * This software is not subject to any license of the American Telephone
- * and Telegraph Company or of the Regents of the University of California.
- *
- * Permission is granted to anyone to use this software for any purpose on
- * any computer system, and to alter it and redistribute it freely, subject
- * to the following restrictions:
- *
- * 1. The author is not responsible for the consequences of use of this
- *    software, no matter how awful, even if they arise from flaws in it.
- *
- * 2. The origin of this software must not be misrepresented, either by
- *    explicit claim or by omission.  Since few users ever read sources,
- *    credits must appear in the documentation.
- *
- * 3. Altered versions must be plainly marked as such, and must not be
- *    misrepresented as being the original software.  Since few users
- *    ever read sources, credits must appear in the documentation.
- *
- * 4. This notice may not be removed or altered.
  */
 
-#include "system.h"
 #include "file.h"
-#include "debug.h"
-
-FILE_RCSID("@(#)Id: print.c,v 1.38 2002/07/03 18:37:44 christos Exp ")
-
-/*@access fmagic @*/
+#include <stdio.h>
+#include <errno.h>
+#include <string.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <time.h>
 
-/*@-compmempass@*/
-/*@unchecked@*/
-static struct fmagic_s myfmagic;
-/*@unchecked@*/
-fmagic global_fmagic = &myfmagic;
-/*@=compmempass@*/
+#ifndef lint
+FILE_RCSID("@(#)$Id: print.c,v 1.44 2003/09/12 19:39:44 christos Exp $")
+#endif  /* lint */
 
 #define SZOF(a)        (sizeof(a) / sizeof(a[0]))
 
 #ifndef COMPILE_ONLY
-void
+protected void
 file_mdump(struct magic *m)
 {
-       /*@observer@*/
-       static const char *typ[] = { "invalid", "byte", "short", "invalid",
+       private const char *typ[] = { "invalid", "byte", "short", "invalid",
                                     "long", "string", "date", "beshort",
                                     "belong", "bedate", "leshort", "lelong",
                                     "ledate", "pstring", "ldate", "beldate",
                                     "leldate", "regex" };
-       static const char optyp[] = { '@', '&', '|', '^', '+', '-', 
+       private const char optyp[] = { '@', '&', '|', '^', '+', '-', 
                                      '*', '/', '%' };
        (void) fputc('[', stderr);
-/*@-formatconst@*/
        (void) fprintf(stderr, ">>>>>>>> %d" + 8 - (m->cont_level & 7),
                       m->offset);
-/*@=formatconst@*/
 
        if (m->flag & INDIR) {
                (void) fprintf(stderr, "(%s,",
@@ -78,10 +84,11 @@ file_mdump(struct magic *m)
        if (m->mask_op & FILE_OPINVERSE)
                (void) fputc('~', stderr);
        if (m->mask) {
-               ((m->mask_op&0x7F) < SZOF(optyp)) ? 
-                       (void) fputc(optyp[m->mask_op&0x7F], stderr) :
-                       (void) fputc('?', stderr);
-               if (m->type != FILE_STRING || m->type != FILE_PSTRING)
+               if ((m->mask_op & 0x7F) < SZOF(optyp)) 
+                       fputc(optyp[m->mask_op&0x7F], stderr);
+               else
+                       fputc('?', stderr);
+               if(FILE_STRING != m->type || FILE_PSTRING != m->type)
                        (void) fprintf(stderr, "%.8x", m->mask);
                else {
                        if (m->mask & STRING_IGNORE_LOWERCASE) 
@@ -133,89 +140,36 @@ file_mdump(struct magic *m)
 }
 #endif
 
-#if !defined(HAVE_ERROR) || defined(__LCLINT__)
-/*
- * error - print best error message possible and exit
- */
-/*VARARGS*/
-void
-error(int status, /*@unused@*/ int errnum, const char * format, ...)
-{
-       va_list va;
-
-       va_start(va,  format);
-       /* cuz we use stdout for most, stderr here */
-       (void) fflush(stdout); 
-
-       if (__progname != NULL) 
-               (void) fprintf(stderr, "%s: ", __progname);
-       (void) vfprintf(stderr,  format, va);
-       va_end(va);
-#if NOTYET
-       if (status)
-#endif
-               exit(status);
-}
-#endif
-
 /*VARARGS*/
-void
+protected void
 file_magwarn(const char *f, ...)
 {
-       fmagic fm = global_fmagic;
        va_list va;
-
        va_start(va, f);
+
        /* cuz we use stdout for most, stderr here */
        (void) fflush(stdout); 
 
-       if (__progname != NULL) 
-               (void) fprintf(stderr, "%s: %s, %d: ", 
-                              __progname, fm->magicfile, fm->lineno);
+       (void) fprintf(stderr, "WARNING: ");
        (void) vfprintf(stderr, f, va);
        va_end(va);
-       (void) fputc('\n', stderr);
-/*@-globstate@*/ /* FIX: __progname might be null */
-       return;
-/*@=globstate@*/
-}
-
-void
-file_printf(const fmagic fm, const char *f, ...)
-{
-       va_list va;
-       size_t nob;
-       int rc;
-
-       va_start(va, f);
-/*@-boundswrite@*/
-       rc = vsnprintf(fm->obp, fm->nob, f, va);
-/*@=boundswrite@*/
-       va_end(va);
-
-       fm->obuf[sizeof(fm->obuf)-1] = '\0';
-       nob = strlen(fm->obp);
-       fm->obp += nob;
-       fm->nob -= nob;
+       fputc('\n', stderr);
 }
 
-
-#ifndef COMPILE_ONLY
-const char *
+protected char *
 file_fmttime(uint32_t v, int local)
 {
-       char *pp = "???";
-       char *rt;
+       char *pp, *rt;
        time_t t = (time_t)v;
        struct tm *tm;
 
        if (local) {
                pp = ctime(&t);
        } else {
-#if !defined(HAVE_DAYLIGHT) && !defined(__LCLINT__)
-               static int daylight = 0;
+#ifndef HAVE_DAYLIGHT
+               private int daylight = 0;
 #ifdef HAVE_TM_ISDST
-               static time_t now = (time_t)0;
+               private time_t now = (time_t)0;
 
                if (now == (time_t)0) {
                        struct tm *tm1;
@@ -228,14 +182,10 @@ file_fmttime(uint32_t v, int local)
                if (daylight)
                        t += 3600;
                tm = gmtime(&t);
-               if (tm != NULL)
-                       pp = asctime(tm);
+               pp = asctime(tm);
        }
 
-/*@-modobserver@*/
        if ((rt = strchr(pp, '\n')) != NULL)
                *rt = '\0';
-/*@=modobserver@*/
        return pp;
 }
-#endif
index d482fc7..e0e8b6f 100644 (file)
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
-#include "system.h"
+#include "file.h"
 
 #ifdef BUILTIN_ELF
-#include "file.h"
+#include <string.h>
+#include <ctype.h>
+#include <stdlib.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
 #include "readelf.h"
-#include "debug.h"
 
-FILE_RCSID("@(#)Id: readelf.c,v 1.22 2002/07/03 18:26:38 christos Exp ")
+#ifndef lint
+FILE_RCSID("@(#)$Id: readelf.c,v 1.39 2004/03/22 20:28:40 christos Exp $")
+#endif
 
-/*@access fmagic @*/
-static size_t donote(const fmagic fm, unsigned char *, size_t, size_t, int);
+#ifdef ELFCORE
+private int dophn_core(struct magic_set *, int, int, int, off_t, int, size_t);
+#endif
+private int dophn_exec(struct magic_set *, int, int, int, off_t, int, size_t);
+private int doshn(struct magic_set *, int, int, int, off_t, int, size_t);
+private size_t donote(struct magic_set *, unsigned char *, size_t, size_t, int,
+    int, size_t);
 
 #define        ELF_ALIGN(a)    ((((a) + align - 1) / align) * align)
 
-/*@-bounds@*/
-static uint16_t
-getu16(const fmagic fm, uint16_t value)
-       /*@*/
+private uint16_t getu16(int, uint16_t);
+private uint32_t getu32(int, uint32_t);
+private uint64_t getu64(int, uint64_t);
+
+private uint16_t
+getu16(int swap, uint16_t value)
 {
        union {
                uint16_t ui;
                char c[2];
        } retval, tmpval;
 
-       if (fm->swap) {
+       if (swap) {
                tmpval.ui = value;
 
                retval.c[0] = tmpval.c[1];
@@ -61,16 +75,15 @@ getu16(const fmagic fm, uint16_t value)
                return value;
 }
 
-static uint32_t
-getu32(const fmagic fm, uint32_t value)
-       /*@*/
+private uint32_t
+getu32(int swap, uint32_t value)
 {
        union {
                uint32_t ui;
                char c[4];
        } retval, tmpval;
 
-       if (fm->swap) {
+       if (swap) {
                tmpval.ui = value;
 
                retval.c[0] = tmpval.c[3];
@@ -83,16 +96,15 @@ getu32(const fmagic fm, uint32_t value)
                return value;
 }
 
-static uint64_t
-getu64(const fmagic fm, uint64_t value)
-       /*@*/
+private uint64_t
+getu64(int swap, uint64_t value)
 {
        union {
                uint64_t ui;
                char c[8];
        } retval, tmpval;
 
-       if (fm->swap) {
+       if (swap) {
                tmpval.ui = value;
 
                retval.c[0] = tmpval.c[7];
@@ -108,71 +120,65 @@ getu64(const fmagic fm, uint64_t value)
        } else
                return value;
 }
-/*@=bounds@*/
 
-#define sh_addr                (fm->cls == ELFCLASS32          \
+#define sh_addr                (class == ELFCLASS32            \
                         ? (void *) &sh32               \
                         : (void *) &sh64)
-#define sh_size                (fm->cls == ELFCLASS32          \
+#define sh_size                (class == ELFCLASS32            \
                         ? sizeof sh32                  \
                         : sizeof sh64)
-#define shs_type       (fm->cls == ELFCLASS32          \
-                        ? getu32(fm, sh32.sh_type)     \
-                        : getu32(fm, sh64.sh_type))
-#define ph_addr                (fm->cls == ELFCLASS32          \
+#define shs_type       (class == ELFCLASS32            \
+                        ? getu32(swap, sh32.sh_type)   \
+                        : getu32(swap, sh64.sh_type))
+#define ph_addr                (class == ELFCLASS32            \
                         ? (void *) &ph32               \
                         : (void *) &ph64)
-#define ph_size                (fm->cls == ELFCLASS32          \
+#define ph_size                (class == ELFCLASS32            \
                         ? sizeof ph32                  \
                         : sizeof ph64)
-#define ph_type                (fm->cls == ELFCLASS32          \
-                        ? getu32(fm, ph32.p_type)      \
-                        : getu32(fm, ph64.p_type))
-#define ph_offset      (fm->cls == ELFCLASS32          \
-                        ? getu32(fm, ph32.p_offset)    \
-                        : getu64(fm, ph64.p_offset))
-#define ph_align       (int)((fm->cls == ELFCLASS32    \
-                        ? (off_t) (ph32.p_align ?      \
-                           getu32(fm, ph32.p_align) : 4) \
+#define ph_type                (class == ELFCLASS32            \
+                        ? getu32(swap, ph32.p_type)    \
+                        : getu32(swap, ph64.p_type))
+#define ph_offset      (class == ELFCLASS32            \
+                        ? getu32(swap, ph32.p_offset)  \
+                        : getu64(swap, ph64.p_offset))
+#define ph_align       (size_t)((class == ELFCLASS32   \
+                        ? (off_t) (ph32.p_align ?      \
+                           getu32(swap, ph32.p_align) : 4) \
                         : (off_t) (ph64.p_align ?      \
-                           getu64(fm, ph64.p_align) : 4)))
-#define ph_filesz      (fm->cls == ELFCLASS32            \
-                       ? getu32(fm, ph32.p_filesz)  \
-                       : getu64(fm, ph64.p_filesz))
-#define nh_size                (fm->cls == ELFCLASS32          \
+                           getu64(swap, ph64.p_align) : 4)))
+#define nh_size                (class == ELFCLASS32            \
                         ? sizeof nh32                  \
                         : sizeof nh64)
-#define nh_type                (fm->cls == ELFCLASS32          \
-                        ? getu32(fm, nh32.n_type)      \
-                        : getu32(fm, nh64.n_type))
-#define nh_namesz      (fm->cls == ELFCLASS32          \
-                        ? getu32(fm, nh32.n_namesz)    \
-                        : getu32(fm, nh64.n_namesz))
-#define nh_descsz      (fm->cls == ELFCLASS32          \
-                        ? getu32(fm, nh32.n_descsz)    \
-                        : getu32(fm, nh64.n_descsz))
-#define prpsoffsets(i) (fm->cls == ELFCLASS32          \
+#define nh_type                (class == ELFCLASS32            \
+                        ? getu32(swap, nh32.n_type)    \
+                        : getu32(swap, nh64.n_type))
+#define nh_namesz      (class == ELFCLASS32            \
+                        ? getu32(swap, nh32.n_namesz)  \
+                        : getu32(swap, nh64.n_namesz))
+#define nh_descsz      (class == ELFCLASS32            \
+                        ? getu32(swap, nh32.n_descsz)  \
+                        : getu32(swap, nh64.n_descsz))
+#define prpsoffsets(i) (class == ELFCLASS32            \
                         ? prpsoffsets32[i]             \
                         : prpsoffsets64[i])
 
 #ifdef ELFCORE
-/*@unchecked@*/ /*@observer@*/
-static size_t  prpsoffsets32[] = {
+size_t prpsoffsets32[] = {
        8,              /* FreeBSD */
        28,             /* Linux 2.0.36 */
        32,             /* Linux (I forget which kernel version) */
-       84              /* SunOS 5.x */
+       84,             /* SunOS 5.x */
 };
 
-/*@unchecked@*/ /*@observer@*/
-static size_t  prpsoffsets64[] = {
-       120             /* SunOS 5.x, 64-bit */
+size_t prpsoffsets64[] = {
+       120,            /* SunOS 5.x, 64-bit */
 };
 
 #define        NOFFSETS32      (sizeof prpsoffsets32 / sizeof prpsoffsets32[0])
 #define NOFFSETS64     (sizeof prpsoffsets64 / sizeof prpsoffsets64[0])
 
-#define NOFFSETS       (fm->cls == ELFCLASS32 ? NOFFSETS32 : NOFFSETS64)
+#define NOFFSETS       (class == ELFCLASS32 ? NOFFSETS32 : NOFFSETS64)
 
 /*
  * Look through the program headers of an executable image, searching
@@ -199,18 +205,15 @@ static size_t     prpsoffsets64[] = {
 #define        OS_STYLE_FREEBSD        1
 #define        OS_STYLE_NETBSD         2
 
-/*@unchecked@*/ /*@observer@*/
-static const char *os_style_names[] = {
+private const char *os_style_names[] = {
        "SVR4",
        "FreeBSD",
        "NetBSD",
 };
 
-/*@-bounds@*/
-static void
-dophn_core(fmagic fm, off_t off, int num, size_t size)
-       /*@globals fileSystem @*/
-       /*@modifies fm, fileSystem @*/
+private int
+dophn_core(struct magic_set *ms, int class, int swap, int fd, off_t off,
+    int num, size_t size)
 {
        Elf32_Phdr ph32;
        Elf64_Phdr ph64;
@@ -219,21 +222,21 @@ dophn_core(fmagic fm, off_t off, int num, size_t size)
        ssize_t bufsize;
 
        if (size != ph_size) {
-               error(EXIT_FAILURE, 0, "corrupted program header size.\n");
-               /*@notreached@*/
+               if (file_printf(ms, ", corrupted program header size") == -1)
+                       return -1;
+               return 0;
        }
-
        /*
         * Loop through all the program headers.
         */
        for ( ; num; num--) {
-               if (lseek(fm->fd, off, SEEK_SET) == (off_t)-1) {
-                       error(EXIT_FAILURE, 0, "lseek failed (%s).\n", strerror(errno));
-                       /*@notreached@*/
+               if (lseek(fd, off, SEEK_SET) == (off_t)-1) {
+                       file_badseek(ms);
+                       return -1;
                }
-               if (read(fm->fd, ph_addr, ph_size) == -1) {
-                       error(EXIT_FAILURE, 0, "read failed (%s).\n", strerror(errno));
-                       /*@notreached@*/
+               if (read(fd, ph_addr, ph_size) == -1) {
+                       file_badread(ms);
+                       return -1;
                }
                off += size;
                if (ph_type != PT_NOTE)
@@ -243,32 +246,33 @@ dophn_core(fmagic fm, off_t off, int num, size_t size)
                 * This is a PT_NOTE section; loop through all the notes
                 * in the section.
                 */
-               if (lseek(fm->fd, (off_t) ph_offset, SEEK_SET) == (off_t)-1) {
-                       error(EXIT_FAILURE, 0, "lseek failed (%s).\n", strerror(errno));
-                       /*@notreached@*/
+               if (lseek(fd, (off_t) ph_offset, SEEK_SET) == (off_t)-1) {
+                       file_badseek(ms);
+                       return -1;
                }
-               bufsize = read(fm->fd, nbuf, ((ph_filesz < BUFSIZ) ? ph_filesz : BUFSIZ));
+               bufsize = read(fd, nbuf, BUFSIZ);
                if (bufsize == -1) {
-                       error(EXIT_FAILURE, 0, ": " "read failed (%s).\n", strerror(errno));
-                       /*@notreached@*/
+                       file_badread(ms);
+                       return -1;
                }
                offset = 0;
                for (;;) {
                        if (offset >= (size_t)bufsize)
-                               /*@innerbreak@*/ break;
-                       offset = donote(fm, nbuf, offset, (size_t)bufsize,
-                           4);
+                               break;
+                       offset = donote(ms, nbuf, offset, (size_t)bufsize,
+                           class, swap, 4);
+                       if (offset == 0)
+                               break;
 
                }
        }
+       return 0;
 }
-/*@=bounds@*/
 #endif
 
-/*@-bounds@*/
-static size_t
-donote(const fmagic fm, unsigned char *nbuf, size_t offset, size_t size,
-    int align)
+private size_t
+donote(struct magic_set *ms, unsigned char *nbuf, size_t offset, size_t size,
+    int class, int swap, size_t align)
 {
        Elf32_Nhdr nh32;
        Elf64_Nhdr nh64;
@@ -276,65 +280,89 @@ donote(const fmagic fm, unsigned char *nbuf, size_t offset, size_t size,
 #ifdef ELFCORE
        int os_style = -1;
 #endif
+       uint32_t namesz, descsz;
 
-       if (fm->cls == ELFCLASS32)
+       if (class == ELFCLASS32)
                memcpy(&nh32, &nbuf[offset], sizeof(nh32));
        else
                memcpy(&nh64, &nbuf[offset], sizeof(nh64));
        offset += nh_size;
 
-       if ((nh_namesz == 0) && (nh_descsz == 0)) {
+       namesz = nh_namesz;
+       descsz = nh_descsz;
+       if ((namesz == 0) && (descsz == 0)) {
                /*
                 * We're out of note headers.
                 */
                return offset;
        }
 
+       if (namesz & 0x80000000) {
+           (void)file_printf(ms, ", bad note name size 0x%lx",
+               (unsigned long)namesz);
+           return offset;
+       }
+
+       if (descsz & 0x80000000) {
+           (void)file_printf(ms, ", bad note description size 0x%lx",
+               (unsigned long)descsz);
+           return offset;
+       }
+
+
        noff = offset;
-       doff = ELF_ALIGN(offset + nh_namesz);
+       doff = ELF_ALIGN(offset + namesz);
 
-       if (offset + nh_namesz > size) {
+       if (offset + namesz >= size) {
                /*
                 * We're past the end of the buffer.
                 */
                return doff;
        }
 
-       offset = ELF_ALIGN(doff + nh_descsz);
-       if (doff + nh_descsz > size)
+       offset = ELF_ALIGN(doff + descsz);
+       if (offset + descsz >= size) {
                return offset;
+       }
 
-       if (nh_namesz == 4 && strcmp((char *)&nbuf[noff], "GNU") == 0 &&
-           nh_type == NT_GNU_VERSION && nh_descsz == 16) {
+       if (namesz == 4 && strcmp((char *)&nbuf[noff], "GNU") == 0 &&
+           nh_type == NT_GNU_VERSION && descsz == 16) {
                uint32_t desc[4];
                (void)memcpy(desc, &nbuf[doff], sizeof(desc));
 
-               file_printf(fm, ", for GNU/");
-               switch (getu32(fm, desc[0])) {
+               if (file_printf(ms, ", for GNU/") == -1)
+                       return size;
+               switch (getu32(swap, desc[0])) {
                case GNU_OS_LINUX:
-                       file_printf(fm, "Linux");
+                       if (file_printf(ms, "Linux") == -1)
+                               return size;
                        break;
                case GNU_OS_HURD:
-                       file_printf(fm, "Hurd");
+                       if (file_printf(ms, "Hurd") == -1)
+                               return size;
                        break;
                case GNU_OS_SOLARIS:
-                       file_printf(fm, "Solaris");
+                       if (file_printf(ms, "Solaris") == -1)
+                               return size;
                        break;
                default:
-                       file_printf(fm, "<unknown>");
+                       if (file_printf(ms, "<unknown>") == -1)
+                               return size; 
                }
-               file_printf(fm, " %d.%d.%d", getu32(fm, desc[1]),
-                   getu32(fm, desc[2]), getu32(fm, desc[3]));
+               if (file_printf(ms, " %d.%d.%d", getu32(swap, desc[1]),
+                   getu32(swap, desc[2]), getu32(swap, desc[3])) == -1)
+                       return size;
                return size;
        }
 
-       if (nh_namesz == 7 && strcmp((char *)&nbuf[noff], "NetBSD") == 0 &&
-           nh_type == NT_NETBSD_VERSION && nh_descsz == 4) {
+       if (namesz == 7 && strcmp((char *)&nbuf[noff], "NetBSD") == 0 &&
+           nh_type == NT_NETBSD_VERSION && descsz == 4) {
                uint32_t desc;
                (void)memcpy(&desc, &nbuf[doff], sizeof(desc));
-               desc = getu32(fm, desc);
+               desc = getu32(swap, desc);
 
-               file_printf(fm, ", for NetBSD");
+               if (file_printf(ms, ", for NetBSD") == -1)
+                       return size;
                /*
                 * The version number used to be stuck as 199905, and was thus
                 * basically content-free.  Newer versions of NetBSD have fixed
@@ -353,41 +381,67 @@ donote(const fmagic fm, unsigned char *nbuf, size_t offset, size_t size,
                        u_int ver_min = (desc / 1000000) % 100;
                        u_int ver_maj = desc / 100000000;
 
-                       file_printf(fm, " %u.%u", ver_maj, ver_min);
+                       if (file_printf(ms, " %u.%u", ver_maj, ver_min) == -1)
+                               return size;
                        if (ver_rel == 0 && ver_patch != 0) {
-                               file_printf(fm, ".%u", ver_patch);
+                               if (file_printf(ms, ".%u", ver_patch) == -1)
+                                       return size;
                        } else if (ver_rel != 0) {
                                while (ver_rel > 26) {
-                                       file_printf(fm, "Z");
+                                       file_printf(ms, "Z");
                                        ver_rel -= 26;
                                }
-                               file_printf(fm, "%c", 'A' + ver_rel - 1);
+                               file_printf(ms, "%c", 'A' + ver_rel - 1);
                        }
                }
                return size;
        }
 
-       if (nh_namesz == 8 && strcmp((char *)&nbuf[noff], "FreeBSD") == 0 &&
-           nh_type == NT_FREEBSD_VERSION && nh_descsz == 4) {
+       if (namesz == 8 && strcmp((char *)&nbuf[noff], "FreeBSD") == 0 &&
+           nh_type == NT_FREEBSD_VERSION && descsz == 4) {
                uint32_t desc;
                (void)memcpy(&desc, &nbuf[doff], sizeof(desc));
-               desc = getu32(fm, desc);
-               file_printf(fm, ", for FreeBSD");
+               desc = getu32(swap, desc);
+               if (file_printf(ms, ", for FreeBSD") == -1)
+                       return size;
+
                /*
-                * Contents is __FreeBSD_version, whose relation to OS versions
-                * is defined by a huge table in the Porters' Handbook. Happily,
-                * the first three digits are the version number, at least in
-                * versions of FreeBSD that use this note.
+                * Contents is __FreeBSD_version, whose relation to OS
+                * versions is defined by a huge table in the Porters'
+                * Handbook. For up to 5.x, the first three digits are
+                * the version number.  For 5.x and higher, the scheme
+                * is: <major><two digit minor> <0 if release branch,
+                * otherwise 1>xx
                 */
-               file_printf(fm, " %d.%d", desc / 100000, desc / 10000 % 10);
-               if (desc / 1000 % 10 > 0)
-                       file_printf(fm, ".%d", desc / 1000 % 10);
+               if (desc / 100000 < 5) {
+                       if (file_printf(ms, " %d.%d", desc / 100000,
+                           desc / 10000 % 10) == -1)
+                               return size;
+                       if (desc / 1000 % 10 > 0)
+                               if (file_printf(ms, ".%d", desc / 1000 % 10)
+                                   == -1)
+                                       return size;
+               } else {
+                       if (file_printf(ms, " %d.%d", desc / 100000,
+                           desc / 1000 % 100) == -1)
+                               return size;
+                       desc %= 1000;
+                       if (desc > 100) {
+                               if (file_printf(ms, "-CURRENT (rev %d)",
+                                   desc % 100) == -1)
+                                       return size;
+                       } else if (desc != 0) {
+                               if (file_printf(ms, ".%d", desc / 10) == -1)
+                                       return size;
+                       }
+               }
                return size;
        }
 
-       if (nh_namesz == 8 && strcmp((char *)&nbuf[noff], "OpenBSD") == 0 &&
-           nh_type == NT_OPENBSD_VERSION && nh_descsz == 4) {
-               file_printf(fm, ", for OpenBSD");
+       if (namesz == 8 && strcmp((char *)&nbuf[noff], "OpenBSD") == 0 &&
+           nh_type == NT_OPENBSD_VERSION && descsz == 4) {
+               if (file_printf(ms, ", for OpenBSD") == -1)
+                       return size;
                /* Content of note is always 0 */
                return size;
        }
@@ -406,23 +460,24 @@ donote(const fmagic fm, unsigned char *nbuf, size_t offset, size_t size,
         * doesn't include the terminating null in the
         * name....
         */
-       if ((nh_namesz == 4 && strncmp((char *)&nbuf[noff], "CORE", 4) == 0) ||
-           (nh_namesz == 5 && strcmp((char *)&nbuf[noff], "CORE") == 0)) {
+       if ((namesz == 4 && strncmp((char *)&nbuf[noff], "CORE", 4) == 0) ||
+           (namesz == 5 && strcmp((char *)&nbuf[noff], "CORE") == 0)) {
                os_style = OS_STYLE_SVR4;
        } 
 
-       if ((nh_namesz == 8 && strcmp((char *)&nbuf[noff], "FreeBSD") == 0)) {
+       if ((namesz == 8 && strcmp((char *)&nbuf[noff], "FreeBSD") == 0)) {
                os_style = OS_STYLE_FREEBSD;
        }
 
-       if ((nh_namesz >= 11 && strncmp((char *)&nbuf[noff], "NetBSD-CORE", 11)
+       if ((namesz >= 11 && strncmp((char *)&nbuf[noff], "NetBSD-CORE", 11)
            == 0)) {
                os_style = OS_STYLE_NETBSD;
        }
 
 #ifdef ELFCORE
        if (os_style != -1)
-               file_printf(fm, ", %s-style", os_style_names[os_style]);
+               if (file_printf(ms, ", %s-style", os_style_names[os_style]) == -1)
+                       return size;
 
        if (os_style == OS_STYLE_NETBSD && nh_type == NT_NETBSD_CORE_PROCINFO) {
                uint32_t signo;
@@ -431,7 +486,8 @@ donote(const fmagic fm, unsigned char *nbuf, size_t offset, size_t size,
                 * offset 0x7c, and is up to 32-bytes,
                 * including the terminating NUL.
                 */
-               file_printf(fm, ", from '%.31s'", &nbuf[doff + 0x7c]);
+               if (file_printf(ms, ", from '%.31s'", &nbuf[doff + 0x7c]) == -1)
+                       return size;
                
                /*
                 * Extract the signal number.  It is at
@@ -439,7 +495,8 @@ donote(const fmagic fm, unsigned char *nbuf, size_t offset, size_t size,
                 */
                memcpy(&signo, &nbuf[doff + 0x08],
                    sizeof(signo));
-               file_printf(fm, " (signal %u)", getu32(fm, signo));
+               if (file_printf(ms, " (signal %u)", getu32(swap, signo)) == -1)
+                       return size;
                return size;
        } else if (os_style != OS_STYLE_NETBSD && nh_type == NT_PRPSINFO) {
                size_t i, j;
@@ -472,7 +529,7 @@ donote(const fmagic fm, unsigned char *nbuf, size_t offset, size_t size,
                                 * if we are, this obviously
                                 * isn't the right offset.
                                 */
-                               if (reloffset >= nh_descsz)
+                               if (reloffset >= descsz)
                                        goto tryanother;
 
                                c = nbuf[noffset];
@@ -503,8 +560,9 @@ donote(const fmagic fm, unsigned char *nbuf, size_t offset, size_t size,
                        /*
                         * Well, that worked.
                         */
-                       file_printf(fm, ", from '%.16s'",
-                           &nbuf[doff + prpsoffsets(i)]);
+                       if (file_printf(ms, ", from '%.16s'",
+                           &nbuf[doff + prpsoffsets(i)]) == -1)
+                               return size;
                        return size;
 
                tryanother:
@@ -516,48 +574,48 @@ donote(const fmagic fm, unsigned char *nbuf, size_t offset, size_t size,
        return offset;
 }
 
-static void
-doshn(fmagic fm, off_t off, int num, size_t size)
-       /*@globals fileSystem @*/
-       /*@modifies fm, fileSystem @*/
+private int
+doshn(struct magic_set *ms, int class, int swap, int fd, off_t off, int num,
+    size_t size)
 {
        Elf32_Shdr sh32;
        Elf64_Shdr sh64;
 
        if (size != sh_size) {
-               error(EXIT_FAILURE, 0, "corrupted program header size.\n");
-               /*@notreached@*/
+               if (file_printf(ms, ", corrupted section header size") == -1)
+                       return -1;
+               return 0;
        }
 
-       if (lseek(fm->fd, off, SEEK_SET) == (off_t)-1) {
-               error(EXIT_FAILURE, 0, "lseek failed (%s).\n", strerror(errno));
-               /*@notreached@*/
+       if (lseek(fd, off, SEEK_SET) == (off_t)-1) {
+               file_badseek(ms);
+               return -1;
        }
 
        for ( ; num; num--) {
-               if (read(fm->fd, sh_addr, sh_size) == -1) {
-                       error(EXIT_FAILURE, 0, "read failed (%s).\n", strerror(errno));
-                       /*@notreached@*/
+               if (read(fd, sh_addr, sh_size) == -1) {
+                       file_badread(ms);
+                       return -1;
                }
                if (shs_type == SHT_SYMTAB /* || shs_type == SHT_DYNSYM */) {
-                       file_printf(fm, ", not stripped");
-                       return;
+                       if (file_printf(ms, ", not stripped") == -1)
+                               return -1;
+                       return 0;
                }
        }
-       file_printf(fm, ", stripped");
+       if (file_printf(ms, ", stripped") == -1)
+               return -1;
+       return 0;
 }
-/*@=bounds@*/
 
 /*
  * Look through the program headers of an executable image, searching
  * for a PT_INTERP section; if one is found, it's dynamically linked,
  * otherwise it's statically linked.
  */
-/*@-bounds@*/
-static void
-dophn_exec(fmagic fm, off_t off, int num, size_t size)
-       /*@globals fileSystem @*/
-       /*@modifies fm, fileSystem @*/
+private int
+dophn_exec(struct magic_set *ms, int class, int swap, int fd, off_t off,
+    int num, size_t size)
 {
        Elf32_Phdr ph32;
        Elf64_Phdr ph64;
@@ -565,85 +623,98 @@ dophn_exec(fmagic fm, off_t off, int num, size_t size)
        const char *shared_libraries = "";
        unsigned char nbuf[BUFSIZ];
        int bufsize;
-       size_t offset;
+       size_t offset, align;
        off_t savedoffset;
 
        if (size != ph_size) {
-               error(EXIT_FAILURE, 0, "corrupted program header size.\n");
-               /*@notreached@*/
+               if (file_printf(ms, ", corrupted program header size") == -1)
+                   return -1;
+               return 0;
        }
-
-       if (lseek(fm->fd, off, SEEK_SET) == (off_t)-1) {
-               error(EXIT_FAILURE, 0, "lseek failed (%s).\n", strerror(errno));
-               /*@notreached@*/
+       if (lseek(fd, off, SEEK_SET) == (off_t)-1) {
+               file_badseek(ms);
+               return -1;
        }
 
        for ( ; num; num--) {
-               if (read(fm->fd, ph_addr, ph_size) == -1) {
-                       error(EXIT_FAILURE, 0, "read failed (%s).\n", strerror(errno));
-                       /*@notreached@*/
+               if (read(fd, ph_addr, ph_size) == -1) {
+                       file_badread(ms);
+                       return -1;
                }
-               if ((savedoffset = lseek(fm->fd, (off_t)0, SEEK_CUR)) == (off_t)-1) {
-                       error(EXIT_FAILURE, 0, "lseek failed (%s).\n", strerror(errno));
-                       /*@notreached@*/
+               if ((savedoffset = lseek(fd, (off_t)0, SEEK_CUR)) == (off_t)-1) {
+                       file_badseek(ms);
+                       return -1;
                }
 
                switch (ph_type) {
                case PT_DYNAMIC:
                        linking_style = "dynamically";
-                       /*@switchbreak@*/ break;
+                       break;
                case PT_INTERP:
                        shared_libraries = " (uses shared libs)";
-                       /*@switchbreak@*/ break;
+                       break;
                case PT_NOTE:
+                       if ((align = ph_align) & 0x80000000) {
+                               if (file_printf(ms, 
+                                   ", invalid note alignment 0x%lx",
+                                   (unsigned long)align) == -1)
+                                       return -1;
+                               align = 4;
+                       }
                        /*
                         * This is a PT_NOTE section; loop through all the notes
                         * in the section.
                         */
-                       if (lseek(fm->fd, (off_t) ph_offset, SEEK_SET) == -1) {
-                               error(EXIT_FAILURE, 0, "lseek failed (%s).\n", strerror(errno));
-                               /*@notreached@*/
+                       if (lseek(fd, (off_t) ph_offset, SEEK_SET)
+                           == (off_t)-1) {
+                               file_badseek(ms);
+                               return -1;
                        }
-                       bufsize = read(fm->fd, nbuf, ((ph_filesz < sizeof(nbuf)) ? ph_filesz : sizeof(nbuf)));
+                       bufsize = read(fd, nbuf, sizeof(nbuf));
                        if (bufsize == -1) {
-                               error(EXIT_FAILURE, 0, ": " "read failed (%s).\n",
-                                   strerror(errno));
-                               /*@notreached@*/
+                               file_badread(ms);
+                               return -1;
                        }
                        offset = 0;
                        for (;;) {
                                if (offset >= (size_t)bufsize)
-                                       /*@innerbreak@*/ break;
-                               offset = donote(fm, nbuf, offset,
-                                   (size_t)bufsize, ph_align);
+                                       break;
+                               offset = donote(ms, nbuf, offset,
+                                   (size_t)bufsize, class, swap, align);
+                               if (offset == 0)
+                                       break;
                        }
-                       if ((lseek(fm->fd, savedoffset, SEEK_SET)) == (off_t)-1) {
-                           error(EXIT_FAILURE, 0, "lseek failed (%s).\n", strerror(errno));
-                           /*@notreached@*/
+                       if (lseek(fd, savedoffset + offset, SEEK_SET)
+                           == (off_t)-1) {
+                               file_badseek(ms);
+                               return -1;
                        }
-                       /*@switchbreak@*/ break;
+                       break;
                }
        }
-       file_printf(fm, ", %s linked%s", linking_style, shared_libraries);
+       if (file_printf(ms, ", %s linked%s", linking_style, shared_libraries)
+           == -1)
+           return -1;
+       return 0;
 }
-/*@=bounds@*/
 
-/*@-bounds@*/
-void
-fmagicE(fmagic fm)
+
+protected int
+file_tryelf(struct magic_set *ms, int fd, const unsigned char *buf,
+    size_t nbytes)
 {
-/*@-sizeoftype@*/
        union {
                int32_t l;
                char c[sizeof (int32_t)];
        } u;
-/*@=sizeoftype@*/
+       int class;
+       int swap;
 
        /*
-        * If we can't seek, it must be a pipe, socket or fifo.
+        * If we cannot seek, it must be a pipe, socket or fifo.
         */
-       if((lseek(fm->fd, (off_t)0, SEEK_SET) == (off_t)-1) && (errno == ESPIPE))
-               fm->fd = file_pipe2file(fm->fd, fm->buf, fm->nb);
+       if((lseek(fd, (off_t)0, SEEK_SET) == (off_t)-1) && (errno == ESPIPE))
+               fd = file_pipe2file(ms, fd, buf, nbytes);
 
        /*
         * ELF executables have multiple section headers in arbitrary
@@ -651,96 +722,101 @@ fmagicE(fmagic fm)
         * Instead we traverse thru all section headers until a symbol table
         * one is found or else the binary is stripped.
         */
-       if (fm->buf[EI_MAG0] != ELFMAG0
-           || (fm->buf[EI_MAG1] != ELFMAG1 && fm->buf[EI_MAG1] != OLFMAG1)
-           || fm->buf[EI_MAG2] != ELFMAG2 || fm->buf[EI_MAG3] != ELFMAG3)
-           return;
+       if (buf[EI_MAG0] != ELFMAG0
+           || (buf[EI_MAG1] != ELFMAG1 && buf[EI_MAG1] != OLFMAG1)
+           || buf[EI_MAG2] != ELFMAG2 || buf[EI_MAG3] != ELFMAG3)
+           return 0;
+
 
-       fm->cls = fm->buf[EI_CLASS];
+       class = buf[4];
 
-       if (fm->cls == ELFCLASS32) {
+       if (class == ELFCLASS32) {
                Elf32_Ehdr elfhdr;
-               if (fm->nb <= sizeof (elfhdr))
-                       return;
+               if (nbytes <= sizeof (Elf32_Ehdr))
+                       return 0;
 
 
                u.l = 1;
-               (void) memcpy(&elfhdr, fm->buf, sizeof elfhdr);
-/*@-sizeoftype@*/
-               fm->swap = (u.c[sizeof(int32_t) - 1] + 1) != elfhdr.e_ident[EI_DATA];
-/*@=sizeoftype@*/
+               (void) memcpy(&elfhdr, buf, sizeof elfhdr);
+               swap = (u.c[sizeof(int32_t) - 1] + 1) != elfhdr.e_ident[5];
 
-               if (getu16(fm, elfhdr.e_type) == ET_CORE) 
+               if (getu16(swap, elfhdr.e_type) == ET_CORE) {
 #ifdef ELFCORE
-                       dophn_core(fm,
-                                  getu32(fm, elfhdr.e_phoff),
-                                  getu16(fm, elfhdr.e_phnum), 
-                                  getu16(fm, elfhdr.e_phentsize));
+                       if (dophn_core(ms, class, swap, fd,
+                           (off_t)getu32(swap, elfhdr.e_phoff),
+                           getu16(swap, elfhdr.e_phnum), 
+                           (size_t)getu16(swap, elfhdr.e_phentsize)) == -1)
+                               return -1;
 #else
                        ;
 #endif
-               else {
-                       if (getu16(fm, elfhdr.e_type) == ET_EXEC) {
-                               dophn_exec(fm,
-                                          getu32(fm, elfhdr.e_phoff),
-                                          getu16(fm, elfhdr.e_phnum), 
-                                          getu16(fm, elfhdr.e_phentsize));
+               } else {
+                       if (getu16(swap, elfhdr.e_type) == ET_EXEC) {
+                               if (dophn_exec(ms, class, swap,
+                                   fd, (off_t)getu32(swap, elfhdr.e_phoff),
+                                   getu16(swap, elfhdr.e_phnum), 
+                                   (size_t)getu16(swap, elfhdr.e_phentsize))
+                                   == -1)
+                                       return -1;
                        }
-                       doshn(fm,
-                             getu32(fm, elfhdr.e_shoff),
-                             getu16(fm, elfhdr.e_shnum),
-                             getu16(fm, elfhdr.e_shentsize));
+                       if (doshn(ms, class, swap, fd,
+                           (off_t)getu32(swap, elfhdr.e_shoff),
+                           getu16(swap, elfhdr.e_shnum),
+                           (size_t)getu16(swap, elfhdr.e_shentsize)) == -1)
+                               return -1;
                }
-               return;
+               return 1;
        }
 
-        if (fm->cls == ELFCLASS64) {
+        if (class == ELFCLASS64) {
                Elf64_Ehdr elfhdr;
-               if (fm->nb <= sizeof (elfhdr))
-                       return;
+               if (nbytes <= sizeof (Elf64_Ehdr))
+                       return 0;
+
 
                u.l = 1;
-               (void) memcpy(&elfhdr, fm->buf, sizeof elfhdr);
-/*@-sizeoftype@*/
-               fm->swap = (u.c[sizeof(int32_t) - 1] + 1) != elfhdr.e_ident[EI_DATA];
-/*@=sizeoftype@*/
+               (void) memcpy(&elfhdr, buf, sizeof elfhdr);
+               swap = (u.c[sizeof(int32_t) - 1] + 1) != elfhdr.e_ident[5];
 
-               if (getu16(fm, elfhdr.e_type) == ET_CORE) 
+               if (getu16(swap, elfhdr.e_type) == ET_CORE) {
 #ifdef ELFCORE
-                       dophn_core(fm,
+                       if (dophn_core(ms, class, swap, fd,
 #ifdef USE_ARRAY_FOR_64BIT_TYPES
-                                  getu32(fm, elfhdr.e_phoff[1]),
+                           (off_t)getu32(swap, elfhdr.e_phoff[1]),
 #else
-                                  getu64(fm, elfhdr.e_phoff),
+                           (off_t)getu64(swap, elfhdr.e_phoff),
 #endif
-                                  getu16(fm, elfhdr.e_phnum), 
-                                  getu16(fm, elfhdr.e_phentsize));
+                           getu16(swap, elfhdr.e_phnum), 
+                           (size_t)getu16(swap, elfhdr.e_phentsize)) == -1)
+                               return -1;
 #else
                        ;
 #endif
-               else
-               {
-                       if (getu16(fm, elfhdr.e_type) == ET_EXEC) {
-                               dophn_exec(fm,
+               } else {
+                       if (getu16(swap, elfhdr.e_type) == ET_EXEC) {
+                               if (dophn_exec(ms, class, swap, fd,
 #ifdef USE_ARRAY_FOR_64BIT_TYPES
-                                          getu32(fm, elfhdr.e_phoff[1]),
+                                   (off_t)getu32(swap, elfhdr.e_phoff[1]),
 #else
-                                          getu64(fm, elfhdr.e_phoff),
+                                   (off_t)getu64(swap, elfhdr.e_phoff),
 #endif
-                                          getu16(fm, elfhdr.e_phnum), 
-                                          getu16(fm, elfhdr.e_phentsize));
+                                   getu16(swap, elfhdr.e_phnum), 
+                                   (size_t)getu16(swap, elfhdr.e_phentsize))
+                                   == -1)
+                                       return -1;
                        }
-                       doshn(fm,
+                       if (doshn(ms, class, swap, fd,
 #ifdef USE_ARRAY_FOR_64BIT_TYPES
-                             getu32(fm, elfhdr.e_shoff[1]),
+                           (off_t)getu32(swap, elfhdr.e_shoff[1]),
 #else
-                             getu64(fm, elfhdr.e_shoff),
+                           (off_t)getu64(swap, elfhdr.e_shoff),
 #endif
-                             getu16(fm, elfhdr.e_shnum),
-                             getu16(fm, elfhdr.e_shentsize));
+                           getu16(swap, elfhdr.e_shnum),
+                           (size_t)getu16(swap, elfhdr.e_shentsize)) == -1)
+                               return -1;
                }
-               return;
+               return 1;
        }
+       return 0;
 }
-/*@=bounds@*/
-#endif /* BUILTIN_ELF */
+#endif
index d591043..391b54d 100644 (file)
@@ -1,9 +1,33 @@
-/*     $NetBSD: readelf.h,v 1.9 2002/05/18 07:00:47 pooka Exp $        */
-/*@-redef@*/
-
 /*
- * readelf.h 
- * @(#)Id: readelf.h,v 1.9 2002/05/16 18:45:56 christos Exp 
+ * Copyright (c) Christos Zoulas 2003.
+ * All Rights Reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice immediately at the beginning of the file, without modification,
+ *    this list of conditions, and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *  
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+/*
+ * @(#)Id: readelf.h,v 1.9 2002/05/16 18:45:56 christos Exp
  *
  * Provide elf data structures for non-elf machines, allowing file
  * non-elf hosts to determine if an elf binary is stripped.
@@ -38,7 +62,6 @@ typedef uint8_t               Elf64_Char;
 
 #define EI_NIDENT      16
 
-/*@-matchfields@*/
 typedef struct {
     Elf32_Char e_ident[EI_NIDENT];
     Elf32_Half e_type;
@@ -72,7 +95,6 @@ typedef struct {
     Elf64_Half e_shnum;
     Elf64_Half e_shstrndx;
 } Elf64_Ehdr;
-/*@=matchfields@*/
 
 /* e_type */
 #define ET_EXEC                2
@@ -156,7 +178,6 @@ typedef struct {
     Elf32_Word sh_entsize;
 } Elf32_Shdr;
 
-/*@-matchfields@*/
 typedef struct {
     Elf64_Word sh_name;
     Elf64_Word sh_type;
@@ -169,7 +190,6 @@ typedef struct {
     Elf64_Off  sh_addralign;
     Elf64_Off  sh_entsize;
 } Elf64_Shdr;
-/*@=matchfields@*/
 
 /* Notes used in ET_CORE */
 #define NT_PRSTATUS    1
@@ -212,6 +232,5 @@ typedef struct {
 #define GNU_OS_LINUX   0
 #define GNU_OS_HURD    1
 #define GNU_OS_SOLARIS 2
-/*@=redef@*/
 
 #endif
index 7c76e43..ef37dfd 100644 (file)
  * softmagic - interpret variable magic from MAGIC
  */
 
-#include "system.h"
 #include "file.h"
-#include "debug.h"
+#include "magic.h"
+#include <string.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <time.h>
+#include <regex.h>
 
-FILE_RCSID("@(#)Id: softmagic.c,v 1.58 2003/03/26 15:35:30 christos Exp ")
 
-/*@access fmagic @*/
+#ifndef        lint
+FILE_RCSID("@(#)$Id: softmagic.c,v 1.65 2004/03/09 18:49:58 christos Exp $")
+#endif /* lint */
 
-/*@-bounds@*/
-static int32_t
-fmagicSPrint(const fmagic fm, struct magic *m)
-       /*@globals fileSystem @*/
-       /*@modifies fm, fileSystem @*/
+private int match(struct magic_set *, struct magic *, uint32_t,
+    const unsigned char *, size_t);
+private int mget(struct magic_set *, union VALUETYPE *, const unsigned char *,
+    struct magic *, size_t);
+private int mcheck(struct magic_set *, union VALUETYPE *, struct magic *);
+private int32_t mprint(struct magic_set *, union VALUETYPE *, struct magic *);
+private void mdebug(uint32_t, const char *, size_t);
+private int mconvert(struct magic_set *, union VALUETYPE *, struct magic *);
+private int check_mem(struct magic_set *, unsigned int);
+
+/*
+ * softmagic - lookup one file in database 
+ * (already read from MAGIC by apprentice.c).
+ * Passed the name and FILE * of one file to be typed.
+ */
+/*ARGSUSED1*/          /* nbytes passed for regularity, maybe need later */
+protected int
+file_softmagic(struct magic_set *ms, const unsigned char *buf, size_t nbytes)
 {
-    union VALUETYPE * p = &fm->val;
-    uint32_t v;
-    int32_t t = 0;
+       struct mlist *ml;
+       for (ml = ms->mlist->next; ml != ms->mlist; ml = ml->next)
+               if (match(ms, ml->magic, ml->nmagic, buf, nbytes))
+                       return 1;
 
-    switch (m->type) {
-    case FILE_BYTE:
-       v = file_signextend(m, p->b);
-       file_printf(fm, m->desc, (unsigned char) v);
-/*@-sizeoftype@*/
-       t = m->offset + sizeof(char);
-/*@=sizeoftype@*/
-       break;
+       return 0;
+}
 
-    case FILE_SHORT:
-    case FILE_BESHORT:
-    case FILE_LESHORT:
-       v = file_signextend(m, p->h);
-       file_printf(fm, m->desc, (unsigned short) v);
-/*@-sizeoftype@*/
-       t = m->offset + sizeof(short);
-/*@=sizeoftype@*/
-       break;
+/*
+ * Go through the whole list, stopping if you find a match.  Process all
+ * the continuations of that match before returning.
+ *
+ * We support multi-level continuations:
+ *
+ *     At any time when processing a successful top-level match, there is a
+ *     current continuation level; it represents the level of the last
+ *     successfully matched continuation.
+ *
+ *     Continuations above that level are skipped as, if we see one, it
+ *     means that the continuation that controls them - i.e, the
+ *     lower-level continuation preceding them - failed to match.
+ *
+ *     Continuations below that level are processed as, if we see one,
+ *     it means we've finished processing or skipping higher-level
+ *     continuations under the control of a successful or unsuccessful
+ *     lower-level continuation, and are now seeing the next lower-level
+ *     continuation and should process it.  The current continuation
+ *     level reverts to the level of the one we're seeing.
+ *
+ *     Continuations at the current level are processed as, if we see
+ *     one, there's no lower-level continuation that may have failed.
+ *
+ *     If a continuation matches, we bump the current continuation level
+ *     so that higher-level continuations are processed.
+ */
+private int
+match(struct magic_set *ms, struct magic *magic, uint32_t nmagic,
+    const unsigned char *s, size_t nbytes)
+{
+       uint32_t magindex = 0;
+       unsigned int cont_level = 0;
+       int need_separator = 0;
+       union VALUETYPE p;
+       int32_t oldoff = 0;
+       int returnval = 0; /* if a match is found it is set to 1*/
+       int firstline = 1; /* a flag to print X\n  X\n- X */
 
-    case FILE_LONG:
-    case FILE_BELONG:
-    case FILE_LELONG:
-       v = file_signextend(m, p->l);
-       file_printf(fm, m->desc, (uint32_t) v);
-/*@-sizeoftype@*/
-       t = m->offset + sizeof(int32_t);
-/*@=sizeoftype@*/
-       break;
+       if (check_mem(ms, cont_level) == -1)
+               return -1;
 
-    case FILE_STRING:
-    case FILE_PSTRING:
-       if (m->reln == '=') {
-           file_printf(fm, m->desc, m->value.s);
-           t = m->offset + strlen(m->value.s);
-       } else {
-           if (*m->value.s == '\0') {
-               char *cp = strchr(p->s,'\n');
-               if (cp != NULL)
-                   *cp = '\0';
-           }
-           file_printf(fm, m->desc, p->s);
-           t = m->offset + strlen(p->s);
-       }
-       break;
+       for (magindex = 0; magindex < nmagic; magindex++) {
+               /* if main entry matches, print it... */
+               int flush = !mget(ms, &p, s, &magic[magindex], nbytes);
+               switch (mcheck(ms, &p, &magic[magindex])) {
+               case -1:
+                       return -1;
+               case 0:
+                       flush++;
+                       break;
+               default:
+                       break;
+               }
+               if (flush) {
+                       /* 
+                        * main entry didn't match,
+                        * flush its continuations
+                        */
+                       while (magindex < nmagic - 1 &&
+                              magic[magindex + 1].cont_level != 0)
+                              magindex++;
+                       continue;
+               }
 
-    case FILE_DATE:
-    case FILE_BEDATE:
-    case FILE_LEDATE:
-       file_printf(fm, m->desc, file_fmttime(p->l, 1));
-/*@-sizeoftype@*/
-       t = m->offset + sizeof(time_t);
-/*@=sizeoftype@*/
-       break;
+               if (!firstline) { /* we found another match */
+                       /* put a newline and '-' to do some simple formatting*/
+                       if (file_printf(ms, "\n- ") == -1)
+                               return -1;
+               }
 
-    case FILE_LDATE:
-    case FILE_BELDATE:
-    case FILE_LELDATE:
-       file_printf(fm, m->desc, file_fmttime(p->l, 0));
-/*@-sizeoftype@*/
-       t = m->offset + sizeof(time_t);
-/*@=sizeoftype@*/
-       break;
+               if ((ms->c.off[cont_level] = mprint(ms, &p, &magic[magindex]))
+                   == -1)
+                       return -1;
+               /*
+                * If we printed something, we'll need to print
+                * a blank before we print something else.
+                */
+               if (magic[magindex].desc[0])
+                       need_separator = 1;
+               /* and any continuations that match */
+               if (check_mem(ms, ++cont_level) == -1)
+                       return -1;
 
-    case FILE_REGEX:
-       file_printf(fm, m->desc, p->s);
-       t = m->offset + strlen(p->s);
-       break;
+               while (magic[magindex+1].cont_level != 0 && 
+                      ++magindex < nmagic) {
+                       if (cont_level < magic[magindex].cont_level)
+                               continue;
+                       if (cont_level > magic[magindex].cont_level) {
+                               /*
+                                * We're at the end of the level
+                                * "cont_level" continuations.
+                                */
+                               cont_level = magic[magindex].cont_level;
+                       }
+                       if (magic[magindex].flag & OFFADD) {
+                               oldoff=magic[magindex].offset;
+                               magic[magindex].offset += ms->c.off[cont_level-1];
+                       }
+                       if (!mget(ms, &p, s, &magic[magindex], nbytes))
+                               goto done;
+                               
+                       switch (mcheck(ms, &p, &magic[magindex])) {
+                       case -1:
+                               return -1;
+                       case 0:
+                               break;
+                       default:
+                               /*
+                                * This continuation matched.
+                                * Print its message, with
+                                * a blank before it if
+                                * the previous item printed
+                                * and this item isn't empty.
+                                */
+                               /* space if previous printed */
+                               if (need_separator
+                                   && (magic[magindex].nospflag == 0)
+                                  && (magic[magindex].desc[0] != '\0')) {
+                                       if (file_printf(ms, " ") == -1)
+                                               return -1;
+                                       need_separator = 0;
+                               }
+                               if ((ms->c.off[cont_level] = mprint(ms, &p,
+                                   &magic[magindex])) == -1)
+                                       return -1;
+                               if (magic[magindex].desc[0])
+                                       need_separator = 1;
 
-    default:
-       error(EXIT_FAILURE, 0, "invalid m->type (%d) in fmagicSPrint().\n", m->type);
-       /*@notreached@*/ break;
-    }
-    return(t);
+                               /*
+                                * If we see any continuations
+                                * at a higher level,
+                                * process them.
+                                */
+                               if (check_mem(ms, ++cont_level) == -1)
+                                       return -1;
+                       }
+done:
+                       if (magic[magindex].flag & OFFADD) {
+                                magic[magindex].offset = oldoff;
+                       }
+               }
+               firstline = 0;
+               returnval = 1;
+               if ((ms->flags & MAGIC_CONTINUE) == 0) {
+                       return 1; /* don't keep searching */
+               }                       
+       }
+       return returnval;  /* This is hit if -k is set or there is no match */
 }
-/*@=bounds@*/
 
-/*
- * Convert the byte order of the data we are looking at
- * While we're here, let's apply the mask operation
- * (unless you have a better idea)
- */
-/*@-bounds@*/
-static int
-fmagicSConvert(fmagic fm, struct magic *m)
-       /*@globals fileSystem @*/
-       /*@modifies fm, fileSystem @*/
+private int
+check_mem(struct magic_set *ms, unsigned int level)
 {
-    union VALUETYPE * p = &fm->val;
+       size_t len;
 
-    switch (m->type) {
-    case FILE_BYTE:
-       if (m->mask)
-           switch (m->mask_op&0x7F) {
-           case FILE_OPAND:
-               p->b &= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPOR:
-               p->b |= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPXOR:
-               p->b ^= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPADD:
-               p->b += m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPMINUS:
-               p->b -= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPMULTIPLY:
-               p->b *= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPDIVIDE:
-               p->b /= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPMODULO:
-               p->b %= m->mask;
-               /*@innerbreak@*/ break;
-           }
-       if (m->mask_op & FILE_OPINVERSE)
-           p->b = ~p->b;
-       return 1;
-    case FILE_SHORT:
-       if (m->mask)
-           switch (m->mask_op&0x7F) {
-           case FILE_OPAND:
-               p->h &= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPOR:
-               p->h |= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPXOR:
-               p->h ^= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPADD:
-               p->h += m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPMINUS:
-               p->h -= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPMULTIPLY:
-               p->h *= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPDIVIDE:
-               p->h /= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPMODULO:
-               p->h %= m->mask;
-               /*@innerbreak@*/ break;
-           }
-       if (m->mask_op & FILE_OPINVERSE)
-           p->h = ~p->h;
-       return 1;
-    case FILE_LONG:
-    case FILE_DATE:
-    case FILE_LDATE:
-       if (m->mask)
-           switch (m->mask_op&0x7F) {
-           case FILE_OPAND:
-               p->l &= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPOR:
-               p->l |= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPXOR:
-               p->l ^= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPADD:
-               p->l += m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPMINUS:
-               p->l -= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPMULTIPLY:
-               p->l *= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPDIVIDE:
-               p->l /= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPMODULO:
-               p->l %= m->mask;
-               /*@innerbreak@*/ break;
-           }
-       if (m->mask_op & FILE_OPINVERSE)
-           p->l = ~p->l;
-       return 1;
-    case FILE_STRING:
-       {
-           int n;
+       if (level < ms->c.len)
+               return 0;
 
-           /* Null terminate and eat *trailing* return */
-           p->s[sizeof(p->s) - 1] = '\0';
-           n = strlen(p->s) - 1;
-           if (p->s[n] == '\n')
-               p->s[n] = '\0';
-           return 1;
-       }
-    case FILE_PSTRING:
-       {
-           char *ptr1 = p->s, *ptr2 = ptr1 + 1;
-           int n = *p->s;
-           if (n >= sizeof(p->s))
-               n = sizeof(p->s) - 1;
-           while (n--)
-               *ptr1++ = *ptr2++;
-           *ptr1 = '\0';
-           n = strlen(p->s) - 1;
-           if (p->s[n] == '\n')
-               p->s[n] = '\0';
-           return 1;
-       }
-    case FILE_BESHORT:
-       p->h = (short)((p->hs[0]<<8)|(p->hs[1]));
-       if (m->mask)
-           switch (m->mask_op&0x7F) {
-           case FILE_OPAND:
-               p->h &= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPOR:
-               p->h |= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPXOR:
-               p->h ^= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPADD:
-               p->h += m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPMINUS:
-               p->h -= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPMULTIPLY:
-               p->h *= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPDIVIDE:
-               p->h /= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPMODULO:
-               p->h %= m->mask;
-               /*@innerbreak@*/ break;
-           }
-       if (m->mask_op & FILE_OPINVERSE)
-           p->h = ~p->h;
-       return 1;
-    case FILE_BELONG:
-    case FILE_BEDATE:
-    case FILE_BELDATE:
-       p->l = (int32_t)
-           ((p->hl[0]<<24)|(p->hl[1]<<16)|(p->hl[2]<<8)|(p->hl[3]));
-       if (m->mask)
-           switch (m->mask_op&0x7F) {
-           case FILE_OPAND:
-               p->l &= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPOR:
-               p->l |= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPXOR:
-               p->l ^= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPADD:
-               p->l += m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPMINUS:
-               p->l -= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPMULTIPLY:
-               p->l *= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPDIVIDE:
-               p->l /= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPMODULO:
-               p->l %= m->mask;
-               /*@innerbreak@*/ break;
-           }
-       if (m->mask_op & FILE_OPINVERSE)
-           p->l = ~p->l;
-       return 1;
-    case FILE_LESHORT:
-       p->h = (short)((p->hs[1]<<8)|(p->hs[0]));
-       if (m->mask)
-           switch (m->mask_op&0x7F) {
-           case FILE_OPAND:
-               p->h &= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPOR:
-               p->h |= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPXOR:
-               p->h ^= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPADD:
-               p->h += m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPMINUS:
-               p->h -= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPMULTIPLY:
-               p->h *= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPDIVIDE:
-               p->h /= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPMODULO:
-               p->h %= m->mask;
-               /*@innerbreak@*/ break;
-           }
-       if (m->mask_op & FILE_OPINVERSE)
-           p->h = ~p->h;
-       return 1;
-    case FILE_LELONG:
-    case FILE_LEDATE:
-    case FILE_LELDATE:
-       p->l = (int32_t)
-           ((p->hl[3]<<24)|(p->hl[2]<<16)|(p->hl[1]<<8)|(p->hl[0]));
-       if (m->mask)
-           switch (m->mask_op&0x7F) {
-           case FILE_OPAND:
-               p->l &= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPOR:
-               p->l |= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPXOR:
-               p->l ^= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPADD:
-               p->l += m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPMINUS:
-               p->l -= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPMULTIPLY:
-               p->l *= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPDIVIDE:
-               p->l /= m->mask;
-               /*@innerbreak@*/ break;
-           case FILE_OPMODULO:
-               p->l %= m->mask;
-               /*@innerbreak@*/ break;
-           }
-       if (m->mask_op & FILE_OPINVERSE)
-           p->l = ~p->l;
-       return 1;
-    case FILE_REGEX:
-       return 1;
-    default:
-       error(EXIT_FAILURE, 0, "invalid type %d in fmagicSConvert().\n", m->type);
-       /*@notreached@*/
-       return 0;
-    }
+       len = (ms->c.len += 20) * sizeof(*ms->c.off);
+       ms->c.off = (ms->c.off == NULL) ? malloc(len) : realloc(ms->c.off, len);
+       if (ms->c.off != NULL)
+               return 0;
+       file_oomem(ms);
+       return -1;
 }
-/*@=bounds@*/
 
-
-static void
-fmagicSDebug(int32_t offset, char *str, size_t len)
-       /*@globals fileSystem @*/
-       /*@modifies fileSystem @*/
+private int32_t
+mprint(struct magic_set *ms, union VALUETYPE *p, struct magic *m)
 {
-    (void) fprintf(stderr, "fmagicSGet @%d: ", offset);
-    file_showstr(stderr, (char *) str, len);
-    (void) fputc('\n', stderr);
-    (void) fputc('\n', stderr);
-}
+       uint32_t v;
+       int32_t t=0 ;
 
-/*@-bounds@*/
-static int
-fmagicSGet(fmagic fm, struct magic *m)
-       /*@globals fileSystem @*/
-       /*@modifies fm, fileSystem @*/
-{
-    unsigned char * buf = fm->buf;
-    int nb = fm->nb;
-    union VALUETYPE * p = &fm->val;
-    int32_t offset = m->offset;
 
-/*@-branchstate@*/
-    if (m->type == FILE_REGEX) {
-       /*
-       * offset is interpreted as last line to search,
-       * (starting at 1), not as bytes-from start-of-file
-       */
-       char *last = NULL;
-/*@-temptrans@*/
-       p->buf = buf;
-/*@=temptrans@*/
-       for (; offset && (buf = strchr(buf, '\n')) != NULL; offset--, buf++)
-           last = buf;
-       if (last != NULL)
-           *last = '\0';
-    } else if (offset + sizeof(*p) <= nb)
-       memcpy(p, buf + offset, sizeof(*p));
-    else {
-       /*
-        * the usefulness of padding with zeroes eludes me, it
-        * might even cause problems
-        */
-       int32_t have = nb - offset;
-       memset(p, 0, sizeof(*p));
-       if (have > 0)
-           memcpy(p, buf + offset, have);
-    }
-/*@=branchstate@*/
+       switch (m->type) {
+       case FILE_BYTE:
+               v = file_signextend(ms, m, (size_t)p->b);
+               if (file_printf(ms, m->desc, (unsigned char) v) == -1)
+                       return -1;
+               t = m->offset + sizeof(char);
+               break;
 
-    if (fm->flags & FMAGIC_FLAGS_DEBUG) {
-       fmagicSDebug(offset, (char *) p, sizeof(*p));
-       file_mdump(m);
-    }
+       case FILE_SHORT:
+       case FILE_BESHORT:
+       case FILE_LESHORT:
+               v = file_signextend(ms, m, (size_t)p->h);
+               if (file_printf(ms, m->desc, (unsigned short) v) == -1)
+                       return -1;
+               t = m->offset + sizeof(short);
+               break;
 
-    if (m->flag & INDIR) {
-       switch (m->in_type) {
-       case FILE_BYTE:
-           if (m->in_offset)
-               switch (m->in_op&0x7F) {
-               case FILE_OPAND:
-                   offset = p->b & m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPOR:
-                   offset = p->b | m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPXOR:
-                   offset = p->b ^ m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPADD:
-                   offset = p->b + m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPMINUS:
-                   offset = p->b - m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPMULTIPLY:
-                   offset = p->b * m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPDIVIDE:
-                   offset = p->b / m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPMODULO:
-                   offset = p->b % m->in_offset;
-                   /*@innerbreak@*/ break;
-               }
-           if (m->in_op & FILE_OPINVERSE)
-               offset = ~offset;
-           break;
-       case FILE_BESHORT:
-           if (m->in_offset)
-               switch (m->in_op&0x7F) {
-               case FILE_OPAND:
-                   offset = (short)((p->hs[0]<<8) | (p->hs[1])) &
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPOR:
-                   offset = (short)((p->hs[0]<<8) | (p->hs[1])) |
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPXOR:
-                   offset = (short)((p->hs[0]<<8) | (p->hs[1])) ^
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPADD:
-                   offset = (short)((p->hs[0]<<8) | (p->hs[1])) +
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPMINUS:
-                   offset = (short)((p->hs[0]<<8) | (p->hs[1])) -
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPMULTIPLY:
-                   offset = (short)((p->hs[0]<<8) | (p->hs[1])) *
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPDIVIDE:
-                   offset = (short)((p->hs[0]<<8) | (p->hs[1])) /
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPMODULO:
-                   offset = (short)((p->hs[0]<<8) | (p->hs[1])) %
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               }
-           if (m->in_op & FILE_OPINVERSE)
-               offset = ~offset;
-           break;
-       case FILE_LESHORT:
-           if (m->in_offset)
-               switch (m->in_op&0x7F) {
-               case FILE_OPAND:
-                   offset = (short)((p->hs[1]<<8) | (p->hs[0])) &
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPOR:
-                   offset = (short)((p->hs[1]<<8) | (p->hs[0])) |
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPXOR:
-                   offset = (short)((p->hs[1]<<8) | (p->hs[0])) ^
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPADD:
-                   offset = (short)((p->hs[1]<<8) | (p->hs[0])) +
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPMINUS:
-                   offset = (short)((p->hs[1]<<8) | (p->hs[0])) -
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPMULTIPLY:
-                   offset = (short)((p->hs[1]<<8) | (p->hs[0])) *
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPDIVIDE:
-                   offset = (short)((p->hs[1]<<8) | (p->hs[0])) /
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPMODULO:
-                   offset = (short)((p->hs[1]<<8) | (p->hs[0])) %
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               }
-           if (m->in_op & FILE_OPINVERSE)
-               offset = ~offset;
-           break;
-       case FILE_SHORT:
-           if (m->in_offset)
-               switch (m->in_op&0x7F) {
-               case FILE_OPAND:
-                   offset = p->h & m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPOR:
-                   offset = p->h | m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPXOR:
-                   offset = p->h ^ m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPADD:
-                   offset = p->h + m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPMINUS:
-                   offset = p->h - m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPMULTIPLY:
-                   offset = p->h * m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPDIVIDE:
-                   offset = p->h / m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPMODULO:
-                   offset = p->h % m->in_offset;
-                   /*@innerbreak@*/ break;
-               }
-           if (m->in_op & FILE_OPINVERSE)
-               offset = ~offset;
-           break;
-       case FILE_BELONG:
-           if (m->in_offset)
-               switch (m->in_op&0x7F) {
-               case FILE_OPAND:
-                   offset = (int32_t)( (p->hl[0]<<24) | (p->hl[1]<<16) |
-                                       (p->hl[2]<< 8) | (p->hl[3])) &
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPOR:
-                   offset = (int32_t)( (p->hl[0]<<24) | (p->hl[1]<<16) |
-                                       (p->hl[2]<< 8) | (p->hl[3])) |
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPXOR:
-                   offset = (int32_t)( (p->hl[0]<<24) | (p->hl[1]<<16) |
-                                       (p->hl[2]<< 8) | (p->hl[3])) ^
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPADD:
-                   offset = (int32_t)( (p->hl[0]<<24) | (p->hl[1]<<16) |
-                                       (p->hl[2]<< 8) | (p->hl[3])) +
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPMINUS:
-                   offset = (int32_t)( (p->hl[0]<<24) | (p->hl[1]<<16) |
-                                       (p->hl[2]<< 8) | (p->hl[3])) -
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPMULTIPLY:
-                   offset = (int32_t)( (p->hl[0]<<24) | (p->hl[1]<<16) |
-                                       (p->hl[2]<< 8) | (p->hl[3])) *
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPDIVIDE:
-                   offset = (int32_t)( (p->hl[0]<<24) | (p->hl[1]<<16) |
-                                       (p->hl[2]<< 8) | (p->hl[3])) /
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPMODULO:
-                   offset = (int32_t)( (p->hl[0]<<24) | (p->hl[1]<<16) |
-                                       (p->hl[2]<< 8) | (p->hl[3])) %
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               }
-           if (m->in_op & FILE_OPINVERSE)
-               offset = ~offset;
-           break;
-       case FILE_LELONG:
-           if (m->in_offset)
-               switch (m->in_op&0x7F) {
-               case FILE_OPAND:
-                   offset = (int32_t)( (p->hl[3]<<24) | (p->hl[2]<<16) |
-                                       (p->hl[1]<< 8) | (p->hl[0])) &
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPOR:
-                   offset = (int32_t)( (p->hl[3]<<24) | (p->hl[2]<<16) |
-                                       (p->hl[1]<< 8) | (p->hl[0])) |
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPXOR:
-                   offset = (int32_t)( (p->hl[3]<<24) | (p->hl[2]<<16) |
-                                       (p->hl[1]<< 8) | (p->hl[0])) ^
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPADD:
-                   offset = (int32_t)( (p->hl[3]<<24) | (p->hl[2]<<16) |
-                                       (p->hl[1]<< 8) | (p->hl[0])) +
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPMINUS:
-                   offset = (int32_t)( (p->hl[3]<<24) | (p->hl[2]<<16) |
-                                       (p->hl[1]<< 8) | (p->hl[0])) -
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPMULTIPLY:
-                   offset = (int32_t)( (p->hl[3]<<24) | (p->hl[2]<<16) |
-                                       (p->hl[1]<< 8) | (p->hl[0])) *
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPDIVIDE:
-                   offset = (int32_t)( (p->hl[3]<<24) | (p->hl[2]<<16) |
-                                        (p->hl[1]<< 8) | (p->hl[0])) /
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPMODULO:
-                   offset = (int32_t)( (p->hl[3]<<24) | (p->hl[2]<<16) |
-                                       (p->hl[1]<< 8) | (p->hl[0])) %
-                                m->in_offset;
-                   /*@innerbreak@*/ break;
+       case FILE_LONG:
+       case FILE_BELONG:
+       case FILE_LELONG:
+               v = file_signextend(ms, m, p->l);
+               if (file_printf(ms, m->desc, (uint32_t) v) == -1)
+                       return -1;
+               t = m->offset + sizeof(int32_t);
+               break;
+
+       case FILE_STRING:
+       case FILE_PSTRING:
+               if (m->reln == '=') {
+                       if (file_printf(ms, m->desc, m->value.s) == -1)
+                               return -1;
+                       t = m->offset + strlen(m->value.s);
                }
-           if (m->in_op & FILE_OPINVERSE)
-               offset = ~offset;
-           break;
-       case FILE_LONG:
-           if (m->in_offset)
-               switch (m->in_op&0x7F) {
-               case FILE_OPAND:
-                   offset = p->l & m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPOR:
-                   offset = p->l | m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPXOR:
-                   offset = p->l ^ m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPADD:
-                   offset = p->l + m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPMINUS:
-                   offset = p->l - m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPMULTIPLY:
-                   offset = p->l * m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPDIVIDE:
-                   offset = p->l / m->in_offset;
-                   /*@innerbreak@*/ break;
-               case FILE_OPMODULO:
-                   offset = p->l % m->in_offset;
-                   /*@innerbreak@*/ break;
-           /*  case TOOMANYSWITCHBLOCKS:
-            *      ugh = p->eye % m->strain;
-            *      rub;
-            *  case BEER:
-            *      off = p->tab & m->in_gest;
-            *      sleep;
-            */
+               else {
+                       if (*m->value.s == '\0') {
+                               char *cp = strchr(p->s,'\n');
+                               if (cp)
+                                       *cp = '\0';
+                       }
+                       if (file_printf(ms, m->desc, p->s) == -1)
+                               return -1;
+                       t = m->offset + strlen(p->s);
                }
-           if (m->in_op & FILE_OPINVERSE)
-               offset = ~offset;
-           break;
-       }
+               break;
 
-/*@-compmempass@*/
-       if (buf == NULL || offset + sizeof(*p) > nb)
-           return 0;
-/*@=compmempass@*/
+       case FILE_DATE:
+       case FILE_BEDATE:
+       case FILE_LEDATE:
+               if (file_printf(ms, m->desc, file_fmttime(p->l, 1)) == -1)
+                       return -1;
+               t = m->offset + sizeof(time_t);
+               break;
 
-       memcpy(p, buf + offset, sizeof(*p));
+       case FILE_LDATE:
+       case FILE_BELDATE:
+       case FILE_LELDATE:
+               if (file_printf(ms, m->desc, file_fmttime(p->l, 0)) == -1)
+                       return -1;
+               t = m->offset + sizeof(time_t);
+               break;
+       case FILE_REGEX:
+               if (file_printf(ms, m->desc, p->s) == -1)
+                       return -1;
+               t = m->offset + strlen(p->s);
+               break;
 
-       if (fm->flags & FMAGIC_FLAGS_DEBUG) {
-           fmagicSDebug(offset, (char *) p, sizeof(*p));
-           file_mdump(m);
+       default:
+               file_error(ms, 0, "invalid m->type (%d) in mprint()", m->type);
+               return -1;
        }
-    }
-/*@-compmempass@*/
-    if (!fmagicSConvert(fm, m))
-       return 0;
-    return 1;
-/*@=compmempass@*/
+       return(t);
 }
-/*@=bounds@*/
 
-/*@-bounds@*/
-static int
-fmagicSCheck(const fmagic fm, struct magic *m)
-       /*@globals fileSystem @*/
-       /*@modifies fileSystem @*/
+/*
+ * Convert the byte order of the data we are looking at
+ * While we're here, let's apply the mask operation
+ * (unless you have a better idea)
+ */
+private int
+mconvert(struct magic_set *ms, union VALUETYPE *p, struct magic *m)
 {
-    union VALUETYPE * p = &fm->val;
-    uint32_t l = m->value.l;
-    uint32_t v = 0;
-    int matched;
+       switch (m->type) {
+       case FILE_BYTE:
+               if (m->mask)
+                       switch (m->mask_op&0x7F) {
+                       case FILE_OPAND:
+                               p->b &= m->mask;
+                               break;
+                       case FILE_OPOR:
+                               p->b |= m->mask;
+                               break;
+                       case FILE_OPXOR:
+                               p->b ^= m->mask;
+                               break;
+                       case FILE_OPADD:
+                               p->b += m->mask;
+                               break;
+                       case FILE_OPMINUS:
+                               p->b -= m->mask;
+                               break;
+                       case FILE_OPMULTIPLY:
+                               p->b *= m->mask;
+                               break;
+                       case FILE_OPDIVIDE:
+                               p->b /= m->mask;
+                               break;
+                       case FILE_OPMODULO:
+                               p->b %= m->mask;
+                               break;
+                       }
+               if (m->mask_op & FILE_OPINVERSE)
+                       p->b = ~p->b;
+               return 1;
+       case FILE_SHORT:
+               if (m->mask)
+                       switch (m->mask_op&0x7F) {
+                       case FILE_OPAND:
+                               p->h &= m->mask;
+                               break;
+                       case FILE_OPOR:
+                               p->h |= m->mask;
+                               break;
+                       case FILE_OPXOR:
+                               p->h ^= m->mask;
+                               break;
+                       case FILE_OPADD:
+                               p->h += m->mask;
+                               break;
+                       case FILE_OPMINUS:
+                               p->h -= m->mask;
+                               break;
+                       case FILE_OPMULTIPLY:
+                               p->h *= m->mask;
+                               break;
+                       case FILE_OPDIVIDE:
+                               p->h /= m->mask;
+                               break;
+                       case FILE_OPMODULO:
+                               p->h %= m->mask;
+                               break;
+                       }
+               if (m->mask_op & FILE_OPINVERSE)
+                       p->h = ~p->h;
+               return 1;
+       case FILE_LONG:
+       case FILE_DATE:
+       case FILE_LDATE:
+               if (m->mask)
+                       switch (m->mask_op&0x7F) {
+                       case FILE_OPAND:
+                               p->l &= m->mask;
+                               break;
+                       case FILE_OPOR:
+                               p->l |= m->mask;
+                               break;
+                       case FILE_OPXOR:
+                               p->l ^= m->mask;
+                               break;
+                       case FILE_OPADD:
+                               p->l += m->mask;
+                               break;
+                       case FILE_OPMINUS:
+                               p->l -= m->mask;
+                               break;
+                       case FILE_OPMULTIPLY:
+                               p->l *= m->mask;
+                               break;
+                       case FILE_OPDIVIDE:
+                               p->l /= m->mask;
+                               break;
+                       case FILE_OPMODULO:
+                               p->l %= m->mask;
+                               break;
+                       }
+               if (m->mask_op & FILE_OPINVERSE)
+                       p->l = ~p->l;
+               return 1;
+       case FILE_STRING:
+               {
+                       int n;
 
-    if ( (m->value.s[0] == 'x') && (m->value.s[1] == '\0') )
-       return 1;
+                       /* Null terminate and eat *trailing* return */
+                       p->s[sizeof(p->s) - 1] = '\0';
+                       n = strlen(p->s) - 1;
+                       if (p->s[n] == '\n')
+                               p->s[n] = '\0';
+                       return 1;
+               }
+       case FILE_PSTRING:
+               {
+                       char *ptr1 = p->s, *ptr2 = ptr1 + 1;
+                       unsigned int n = *p->s;
+                       if (n >= sizeof(p->s))
+                               n = sizeof(p->s) - 1;
+                       while (n--)
+                               *ptr1++ = *ptr2++;
+                       *ptr1 = '\0';
+                       n = strlen(p->s) - 1;
+                       if (p->s[n] == '\n')
+                               p->s[n] = '\0';
+                       return 1;
+               }
+       case FILE_BESHORT:
+               p->h = (short)((p->hs[0]<<8)|(p->hs[1]));
+               if (m->mask)
+                       switch (m->mask_op&0x7F) {
+                       case FILE_OPAND:
+                               p->h &= m->mask;
+                               break;
+                       case FILE_OPOR:
+                               p->h |= m->mask;
+                               break;
+                       case FILE_OPXOR:
+                               p->h ^= m->mask;
+                               break;
+                       case FILE_OPADD:
+                               p->h += m->mask;
+                               break;
+                       case FILE_OPMINUS:
+                               p->h -= m->mask;
+                               break;
+                       case FILE_OPMULTIPLY:
+                               p->h *= m->mask;
+                               break;
+                       case FILE_OPDIVIDE:
+                               p->h /= m->mask;
+                               break;
+                       case FILE_OPMODULO:
+                               p->h %= m->mask;
+                               break;
+                       }
+               if (m->mask_op & FILE_OPINVERSE)
+                       p->h = ~p->h;
+               return 1;
+       case FILE_BELONG:
+       case FILE_BEDATE:
+       case FILE_BELDATE:
+               p->l = (int32_t)
+                   ((p->hl[0]<<24)|(p->hl[1]<<16)|(p->hl[2]<<8)|(p->hl[3]));
+               if (m->mask)
+                       switch (m->mask_op&0x7F) {
+                       case FILE_OPAND:
+                               p->l &= m->mask;
+                               break;
+                       case FILE_OPOR:
+                               p->l |= m->mask;
+                               break;
+                       case FILE_OPXOR:
+                               p->l ^= m->mask;
+                               break;
+                       case FILE_OPADD:
+                               p->l += m->mask;
+                               break;
+                       case FILE_OPMINUS:
+                               p->l -= m->mask;
+                               break;
+                       case FILE_OPMULTIPLY:
+                               p->l *= m->mask;
+                               break;
+                       case FILE_OPDIVIDE:
+                               p->l /= m->mask;
+                               break;
+                       case FILE_OPMODULO:
+                               p->l %= m->mask;
+                               break;
+                       }
+               if (m->mask_op & FILE_OPINVERSE)
+                       p->l = ~p->l;
+               return 1;
+       case FILE_LESHORT:
+               p->h = (short)((p->hs[1]<<8)|(p->hs[0]));
+               if (m->mask)
+                       switch (m->mask_op&0x7F) {
+                       case FILE_OPAND:
+                               p->h &= m->mask;
+                               break;
+                       case FILE_OPOR:
+                               p->h |= m->mask;
+                               break;
+                       case FILE_OPXOR:
+                               p->h ^= m->mask;
+                               break;
+                       case FILE_OPADD:
+                               p->h += m->mask;
+                               break;
+                       case FILE_OPMINUS:
+                               p->h -= m->mask;
+                               break;
+                       case FILE_OPMULTIPLY:
+                               p->h *= m->mask;
+                               break;
+                       case FILE_OPDIVIDE:
+                               p->h /= m->mask;
+                               break;
+                       case FILE_OPMODULO:
+                               p->h %= m->mask;
+                               break;
+                       }
+               if (m->mask_op & FILE_OPINVERSE)
+                       p->h = ~p->h;
+               return 1;
+       case FILE_LELONG:
+       case FILE_LEDATE:
+       case FILE_LELDATE:
+               p->l = (int32_t)
+                   ((p->hl[3]<<24)|(p->hl[2]<<16)|(p->hl[1]<<8)|(p->hl[0]));
+               if (m->mask)
+                       switch (m->mask_op&0x7F) {
+                       case FILE_OPAND:
+                               p->l &= m->mask;
+                               break;
+                       case FILE_OPOR:
+                               p->l |= m->mask;
+                               break;
+                       case FILE_OPXOR:
+                               p->l ^= m->mask;
+                               break;
+                       case FILE_OPADD:
+                               p->l += m->mask;
+                               break;
+                       case FILE_OPMINUS:
+                               p->l -= m->mask;
+                               break;
+                       case FILE_OPMULTIPLY:
+                               p->l *= m->mask;
+                               break;
+                       case FILE_OPDIVIDE:
+                               p->l /= m->mask;
+                               break;
+                       case FILE_OPMODULO:
+                               p->l %= m->mask;
+                               break;
+                       }
+               if (m->mask_op & FILE_OPINVERSE)
+                       p->l = ~p->l;
+               return 1;
+       case FILE_REGEX:
+               return 1;
+       default:
+               file_error(ms, 0, "invalid type %d in mconvert()", m->type);
+               return 0;
+       }
+}
 
-    switch (m->type) {
-    case FILE_BYTE:
-       v = p->b;
-       break;
 
-    case FILE_SHORT:
-    case FILE_BESHORT:
-    case FILE_LESHORT:
-       v = p->h;
-       break;
+private void
+mdebug(uint32_t offset, const char *str, size_t len)
+{
+       (void) fprintf(stderr, "mget @%d: ", offset);
+       file_showstr(stderr, str, len);
+       (void) fputc('\n', stderr);
+       (void) fputc('\n', stderr);
+}
 
-    case FILE_LONG:
-    case FILE_BELONG:
-    case FILE_LELONG:
-    case FILE_DATE:
-    case FILE_BEDATE:
-    case FILE_LEDATE:
-    case FILE_LDATE:
-    case FILE_BELDATE:
-    case FILE_LELDATE:
-       v = p->l;
-       break;
+private int
+mget(struct magic_set *ms, union VALUETYPE *p, const unsigned char *s,
+    struct magic *m, size_t nbytes)
+{
+       uint32_t offset = m->offset;
 
-    case FILE_STRING:
-    case FILE_PSTRING:
-    {
-       /*
-        * What we want here is:
-        * v = strncmp(m->value.s, p->s, m->vallen);
-        * but ignoring any nulls.  bcmp doesn't give -/+/0
-        * and isn't universally available anyway.
-        */
-       unsigned char *a = (unsigned char*)m->value.s;
-       unsigned char *b = (unsigned char*)p->s;
-       int len = m->vallen;
-       l = 0;
-       v = 0;
-       if (0L == m->mask) { /* normal string: do it fast */
-           while (--len >= 0)
-               if ((v = *b++ - *a++) != '\0')
-                   /*@loopbreak@*/ break; 
-       } else { /* combine the others */
-           while (--len >= 0) {
-               if ((m->mask & STRING_IGNORE_LOWERCASE) && islower(*a)) {
-                   if ((v = tolower(*b++) - *a++) != '\0')
-                       /*@loopbreak@*/ break;
-               } else
-               if ((m->mask & STRING_COMPACT_BLANK) && isspace(*a)) { 
-                   a++;
-                   if (isspace(*b++)) {
-                       while (isspace(*b))
-                           b++;
-                   } else {
-                       v = 1;
-                       /*@loopbreak@*/ break;
-                   }
-               } else
-               if (isspace(*a) && (m->mask & STRING_COMPACT_OPTIONAL_BLANK)) {
-                   a++;
-                   while (isspace(*b))
-                       b++;
-               } else {
-                   if ((v = *b++ - *a++) != '\0')
-                       /*@loopbreak@*/ break;
+       if (m->type == FILE_REGEX) {
+               /*
+                * offset is interpreted as last line to search,
+                * (starting at 1), not as bytes-from start-of-file
+                */
+               unsigned char *b, *last = NULL;
+               if ((p->buf = strdup((const char *)s)) == NULL) {
+                       file_oomem(ms);
+                       return -1;
                }
-           }
+               for (b = (unsigned char *)p->buf; offset &&
+                   (b = (unsigned char *)strchr((char *)b, '\n')) != NULL;
+                   offset--, s++)
+                       last = b;
+               if (last != NULL)
+                       *last = '\0';
+       } else if (offset + sizeof(union VALUETYPE) <= nbytes)
+               memcpy(p, s + offset, sizeof(union VALUETYPE));
+       else {
+               /*
+                * the usefulness of padding with zeroes eludes me, it
+                * might even cause problems
+                */
+               memset(p, 0, sizeof(union VALUETYPE));
+               if (offset < nbytes)
+                       memcpy(p, s + offset, nbytes - offset);
        }
-       break;
-    }
-    case FILE_REGEX:
-    {
-       int rc;
-       regex_t rx;
-       char errmsg[512];
 
-       rc = regcomp(&rx, m->value.s, REG_EXTENDED|REG_NOSUB);
-       if (rc) {
-           (void) regerror(rc, &rx, errmsg, sizeof(errmsg));
-           error(EXIT_FAILURE, 0, "regex error %d, (%s)\n", rc, errmsg);
-           /*@notreached@*/
-       } else {
-           rc = regexec(&rx, p->buf, 0, NULL, 0);
-           return !rc;
-       }
-    }
-       /*@notreached@*/ break;
-    default:
-       error(EXIT_FAILURE, 0, "invalid type %d in fmagicSCheck().\n", m->type);
-       /*@notreached@*/
-       return 0;
-    }
+       /* Verify we have enough data to match magic type */
+       switch (m->type) {
+               case FILE_BYTE:
+                       if (nbytes < (offset + 1)) /* should alway be true */
+                               return 0;
+                       break;
 
-    if (m->type != FILE_STRING && m->type != FILE_PSTRING)
-       v = file_signextend(m, v);
+               case FILE_SHORT:
+               case FILE_BESHORT:
+               case FILE_LESHORT:
+                       if (nbytes < (offset + 2))
+                               return 0;
+                       break;
 
-    switch (m->reln) {
-    case 'x':
-       if (fm->flags & FMAGIC_FLAGS_DEBUG)
-           (void) fprintf(stderr, "%u == *any* = 1\n", v);
-       matched = 1;
-       break;
+               case FILE_LONG:
+               case FILE_BELONG:
+               case FILE_LELONG:
+               case FILE_DATE:
+               case FILE_BEDATE:
+               case FILE_LEDATE:
+               case FILE_LDATE:
+               case FILE_BELDATE:
+               case FILE_LELDATE:
+                       if (nbytes < (offset + 4))
+                               return 0;
+                       break;
 
-    case '!':
-       matched = v != l;
-       if (fm->flags & FMAGIC_FLAGS_DEBUG)
-           (void) fprintf(stderr, "%u != %u = %d\n",
-                              v, l, matched);
-       break;
-
-    case '=':
-       matched = v == l;
-       if (fm->flags & FMAGIC_FLAGS_DEBUG)
-           (void) fprintf(stderr, "%u == %u = %d\n",
-                              v, l, matched);
-       break;
-
-    case '>':
-       if (m->flag & UNSIGNED) {
-           matched = v > l;
-           if (fm->flags & FMAGIC_FLAGS_DEBUG)
-               (void) fprintf(stderr, "%u > %u = %d\n", v, l, matched);
+               case FILE_STRING:
+               case FILE_PSTRING:
+                       if (nbytes < (offset + m->vallen))
+                               return 0;
+                       break;
        }
-       else {
-           matched = (int32_t) v > (int32_t) l;
-           if (fm->flags & FMAGIC_FLAGS_DEBUG)
-               (void) fprintf(stderr, "%d > %d = %d\n", v, l, matched);
-       }
-       break;
 
-    case '<':
-       if (m->flag & UNSIGNED) {
-           matched = v < l;
-           if (fm->flags & FMAGIC_FLAGS_DEBUG)
-               (void) fprintf(stderr, "%u < %u = %d\n", v, l, matched);
-       }
-       else {
-           matched = (int32_t) v < (int32_t) l;
-           if (fm->flags & FMAGIC_FLAGS_DEBUG)
-               (void) fprintf(stderr, "%d < %d = %d\n", v, l, matched);
+       if ((ms->flags & MAGIC_DEBUG) != 0) {
+               mdebug(offset, (char *)(void *)p, sizeof(union VALUETYPE));
+               file_mdump(m);
        }
-       break;
 
-    case '&':
-       matched = (v & l) == l;
-       if (fm->flags & FMAGIC_FLAGS_DEBUG)
-           (void) fprintf(stderr, "((%x & %x) == %x) = %d\n", v, l, l, matched);
-       break;
+       if (m->flag & INDIR) {
+               switch (m->in_type) {
+               case FILE_BYTE:
+                       if (m->in_offset)
+                               switch (m->in_op&0x7F) {
+                               case FILE_OPAND:
+                                       offset = p->b & m->in_offset;
+                                       break;
+                               case FILE_OPOR:
+                                       offset = p->b | m->in_offset;
+                                       break;
+                               case FILE_OPXOR:
+                                       offset = p->b ^ m->in_offset;
+                                       break;
+                               case FILE_OPADD:
+                                       offset = p->b + m->in_offset;
+                                       break;
+                               case FILE_OPMINUS:
+                                       offset = p->b - m->in_offset;
+                                       break;
+                               case FILE_OPMULTIPLY:
+                                       offset = p->b * m->in_offset;
+                                       break;
+                               case FILE_OPDIVIDE:
+                                       offset = p->b / m->in_offset;
+                                       break;
+                               case FILE_OPMODULO:
+                                       offset = p->b % m->in_offset;
+                                       break;
+                               }
+                       if (m->in_op & FILE_OPINVERSE)
+                               offset = ~offset;
+                       break;
+               case FILE_BESHORT:
+                       if (m->in_offset)
+                               switch (m->in_op&0x7F) {
+                               case FILE_OPAND:
+                                       offset = (short)((p->hs[0]<<8)|
+                                                        (p->hs[1])) &
+                                                m->in_offset;
+                                       break;
+                               case FILE_OPOR:
+                                       offset = (short)((p->hs[0]<<8)|
+                                                        (p->hs[1])) |
+                                                m->in_offset;
+                                       break;
+                               case FILE_OPXOR:
+                                       offset = (short)((p->hs[0]<<8)|
+                                                        (p->hs[1])) ^
+                                                m->in_offset;
+                                       break;
+                               case FILE_OPADD:
+                                       offset = (short)((p->hs[0]<<8)|
+                                                        (p->hs[1])) +
+                                                m->in_offset;
+                                       break;
+                               case FILE_OPMINUS:
+                                       offset = (short)((p->hs[0]<<8)|
+                                                        (p->hs[1])) -
+                                                m->in_offset;
+                                       break;
+                               case FILE_OPMULTIPLY:
+                                       offset = (short)((p->hs[0]<<8)|
+                                                        (p->hs[1])) *
+                                                m->in_offset;
+                                       break;
+                               case FILE_OPDIVIDE:
+                                       offset = (short)((p->hs[0]<<8)|
+                                                        (p->hs[1])) /
+                                                m->in_offset;
+                                       break;
+                               case FILE_OPMODULO:
+                                       offset = (short)((p->hs[0]<<8)|
+                                                        (p->hs[1])) %
+                                                m->in_offset;
+                                       break;
+                               }
+                       if (m->in_op & FILE_OPINVERSE)
+                               offset = ~offset;
+                       break;
+               case FILE_LESHORT:
+                       if (m->in_offset)
+                               switch (m->in_op&0x7F) {
+                               case FILE_OPAND:
+                                       offset = (short)((p->hs[1]<<8)|
+                                                        (p->hs[0])) &
+                                                m->in_offset;
+                                       break;
+                               case FILE_OPOR:
+                                       offset = (short)((p->hs[1]<<8)|
+                                                        (p->hs[0])) |
+                                                m->in_offset;
+                                       break;
+                               case FILE_OPXOR:
+                                       offset = (short)((p->hs[1]<<8)|
+                                                        (p->hs[0])) ^
+                                                m->in_offset;
+                                       break;
+                               case FILE_OPADD:
+                                       offset = (short)((p->hs[1]<<8)|
+                                                        (p->hs[0])) +
+                                                m->in_offset;
+                                       break;
+                               case FILE_OPMINUS:
+                                       offset = (short)((p->hs[1]<<8)|
+                                                        (p->hs[0])) -
+                                                m->in_offset;
+                                       break;
+                               case FILE_OPMULTIPLY:
+                                       offset = (short)((p->hs[1]<<8)|
+                                                        (p->hs[0])) *
+                                                m->in_offset;
+                                       break;
+                               case FILE_OPDIVIDE:
+                                       offset = (short)((p->hs[1]<<8)|
+                                                        (p->hs[0])) /
+                                                m->in_offset;
+                                       break;
+                               case FILE_OPMODULO:
+                                       offset = (short)((p->hs[1]<<8)|
+                                                        (p->hs[0])) %
+                                                m->in_offset;
+                                       break;
+                               }
+                       if (m->in_op & FILE_OPINVERSE)
+                               offset = ~offset;
+                       break;
+               case FILE_SHORT:
+                       if (m->in_offset)
+                               switch (m->in_op&0x7F) {
+                               case FILE_OPAND:
+                                       offset = p->h & m->in_offset;
+                                       break;
+                               case FILE_OPOR:
+                                       offset = p->h | m->in_offset;
+                                       break;
+                               case FILE_OPXOR:
+                                       offset = p->h ^ m->in_offset;
+                                       break;
+                               case FILE_OPADD:
+                                       offset = p->h + m->in_offset;
+                                       break;
+                               case FILE_OPMINUS:
+                                       offset = p->h - m->in_offset;
+                                       break;
+                               case FILE_OPMULTIPLY:
+                                       offset = p->h * m->in_offset;
+                                       break;
+                               case FILE_OPDIVIDE:
+                                       offset = p->h / m->in_offset;
+                                       break;
+                               case FILE_OPMODULO:
+                                       offset = p->h % m->in_offset;
+                                       break;
+                               }
+                       if (m->in_op & FILE_OPINVERSE)
+                               offset = ~offset;
+                       break;
+               case FILE_BELONG:
+                       if (m->in_offset)
+                               switch (m->in_op&0x7F) {
+                               case FILE_OPAND:
+                                       offset = (int32_t)((p->hl[0]<<24)|
+                                                        (p->hl[1]<<16)|
+                                                        (p->hl[2]<<8)|
+                                                        (p->hl[3])) &
+                                                m->in_offset;
+                                       break;
+                               case FILE_OPOR:
+                                       offset = (int32_t)((p->hl[0]<<24)|
+                                                        (p->hl[1]<<16)|
+                                                        (p->hl[2]<<8)|
+                                                        (p->hl[3])) |
+                                                m->in_offset;
+                                       break;
+                               case FILE_OPXOR:
+                                       offset = (int32_t)((p->hl[0]<<24)|
+                                                        (p->hl[1]<<16)|
+                                                        (p->hl[2]<<8)|
+                                                        (p->hl[3])) ^
+                                                m->in_offset;
+                                       break;
+                               case FILE_OPADD:
+                                       offset = (int32_t)((p->hl[0]<<24)|
+                                                        (p->hl[1]<<16)|
+                                                        (p->hl[2]<<8)|
+                                                        (p->hl[3])) +
+                                                m->in_offset;
+                                       break;
+                               case FILE_OPMINUS:
+                                       offset = (int32_t)((p->hl[0]<<24)|
+                                                        (p->hl[1]<<16)|
+                                                        (p->hl[2]<<8)|
+                                                        (p->hl[3])) -
+                                                m->in_offset;
+                                       break;
+                               case FILE_OPMULTIPLY:
+                                       offset = (int32_t)((p->hl[0]<<24)|
+                                                        (p->hl[1]<<16)|
+                                                        (p->hl[2]<<8)|
+                                                        (p->hl[3])) *
+                                                m->in_offset;
+                                       break;
+                               case FILE_OPDIVIDE:
+                                       offset = (int32_t)((p->hl[0]<<24)|
+                                                        (p->hl[1]<<16)|
+                                                        (p->hl[2]<<8)|
+                                                        (p->hl[3])) /
+                                                m->in_offset;
+                                       break;
+                               case FILE_OPMODULO:
+                                       offset = (int32_t)((p->hl[0]<<24)|
+                                                        (p->hl[1]<<16)|
+                                                        (p->hl[2]<<8)|
+                                                        (p->hl[3])) %
+                                                m->in_offset;
+                                       break;
+                               }
+                       if (m->in_op & FILE_OPINVERSE)
+                               offset = ~offset;
+                       break;
+               case FILE_LELONG:
+                       if (m->in_offset)
+                               switch (m->in_op&0x7F) {
+                               case FILE_OPAND:
+                                       offset = (int32_t)((p->hl[3]<<24)|
+                                                        (p->hl[2]<<16)|
+                                                        (p->hl[1]<<8)|
+                                                        (p->hl[0])) &
+                                                m->in_offset;
+                                       break;
+                               case FILE_OPOR:
+                                       offset = (int32_t)((p->hl[3]<<24)|
+                                                        (p->hl[2]<<16)|
+                                                        (p->hl[1]<<8)|
+                                                        (p->hl[0])) |
+                                                m->in_offset;
+                                       break;
+                               case FILE_OPXOR:
+                                       offset = (int32_t)((p->hl[3]<<24)|
+                                                        (p->hl[2]<<16)|
+                                                        (p->hl[1]<<8)|
+                                                        (p->hl[0])) ^
+                                                m->in_offset;
+                                       break;
+                               case FILE_OPADD:
+                                       offset = (int32_t)((p->hl[3]<<24)|
+                                                        (p->hl[2]<<16)|
+                                                        (p->hl[1]<<8)|
+                                                        (p->hl[0])) +
+                                                m->in_offset;
+                                       break;
+                               case FILE_OPMINUS:
+                                       offset = (int32_t)((p->hl[3]<<24)|
+                                                        (p->hl[2]<<16)|
+                                                        (p->hl[1]<<8)|
+                                                        (p->hl[0])) -
+                                                m->in_offset;
+                                       break;
+                               case FILE_OPMULTIPLY:
+                                       offset = (int32_t)((p->hl[3]<<24)|
+                                                        (p->hl[2]<<16)|
+                                                        (p->hl[1]<<8)|
+                                                        (p->hl[0])) *
+                                                m->in_offset;
+                                       break;
+                               case FILE_OPDIVIDE:
+                                       offset = (int32_t)((p->hl[3]<<24)|
+                                                        (p->hl[2]<<16)|
+                                                        (p->hl[1]<<8)|
+                                                        (p->hl[0])) /
+                                                m->in_offset;
+                                       break;
+                               case FILE_OPMODULO:
+                                       offset = (int32_t)((p->hl[3]<<24)|
+                                                        (p->hl[2]<<16)|
+                                                        (p->hl[1]<<8)|
+                                                        (p->hl[0])) %
+                                                m->in_offset;
+                                       break;
+                               }
+                       if (m->in_op & FILE_OPINVERSE)
+                               offset = ~offset;
+                       break;
+               case FILE_LONG:
+                       if (m->in_offset)
+                               switch (m->in_op&0x7F) {
+                               case FILE_OPAND:
+                                       offset = p->l & m->in_offset;
+                                       break;
+                               case FILE_OPOR:
+                                       offset = p->l | m->in_offset;
+                                       break;
+                               case FILE_OPXOR:
+                                       offset = p->l ^ m->in_offset;
+                                       break;
+                               case FILE_OPADD:
+                                       offset = p->l + m->in_offset;
+                                       break;
+                               case FILE_OPMINUS:
+                                       offset = p->l - m->in_offset;
+                                       break;
+                               case FILE_OPMULTIPLY:
+                                       offset = p->l * m->in_offset;
+                                       break;
+                               case FILE_OPDIVIDE:
+                                       offset = p->l / m->in_offset;
+                                       break;
+                               case FILE_OPMODULO:
+                                       offset = p->l % m->in_offset;
+                                       break;
+                       /*      case TOOMANYSWITCHBLOCKS:
+                        *              ugh = p->eye % m->strain;
+                        *              rub;
+                        *      case BEER:
+                        *              off = p->tab & m->in_gest;
+                        *              sleep;
+                        */
+                               }
+                       if (m->in_op & FILE_OPINVERSE)
+                               offset = ~offset;
+                       break;
+               }
 
-    case '^':
-       matched = (v & l) != l;
-       if (fm->flags & FMAGIC_FLAGS_DEBUG)
-           (void) fprintf(stderr, "((%x & %x) != %x) = %d\n", v, l, l, matched);
-       break;
+               if (nbytes < sizeof(union VALUETYPE) ||
+                   nbytes - sizeof(union VALUETYPE) < offset)
+                       return 0;
 
-    default:
-       matched = 0;
-       error(EXIT_FAILURE, 0, "fmagicSCheck: can't happen: invalid relation %d.\n", m->reln);
-       /*@notreached@*/ break;
-    }
+               memcpy(p, s + offset, sizeof(union VALUETYPE));
 
-    return matched;
+               if ((ms->flags & MAGIC_DEBUG) != 0) {
+                       mdebug(offset, (char *)(void *)p,
+                           sizeof(union VALUETYPE));
+                       file_mdump(m);
+               }
+       }
+       if (!mconvert(ms, p, m))
+         return 0;
+       return 1;
 }
-/*@=bounds@*/
 
-/*
- * Go through the whole list, stopping if you find a match.  Process all
- * the continuations of that match before returning.
- *
- * We support multi-level continuations:
- *
- *     At any time when processing a successful top-level match, there is a
- *     current continuation level; it represents the level of the last
- *     successfully matched continuation.
- *
- *     Continuations above that level are skipped as, if we see one, it
- *     means that the continuation that controls them - i.e, the
- *     lower-level continuation preceding them - failed to match.
- *
- *     Continuations below that level are processed as, if we see one,
- *     it means we've finished processing or skipping higher-level
- *     continuations under the control of a successful or unsuccessful
- *     lower-level continuation, and are now seeing the next lower-level
- *     continuation and should process it.  The current continuation
- *     level reverts to the level of the one we're seeing.
- *
- *     Continuations at the current level are processed as, if we see
- *     one, there's no lower-level continuation that may have failed.
- *
- *     If a continuation matches, we bump the current continuation level
- *     so that higher-level continuations are processed.
- */
-/*@-bounds@*/
-static int
-fmagicSMatch(const fmagic fm)
-       /*@globals fileSystem @*/
-       /*@modifies fm, fileSystem @*/
+private int
+mcheck(struct magic_set *ms, union VALUETYPE *p, struct magic *m)
 {
-    struct magic * m;
-    uint32_t nmagic = fm->ml->nmagic;
-    int cont_level = 0;
-    int need_separator = 0;
-    /*@only@*/
-    static int32_t * tmpoff = NULL;    /* XXX memory leak */
-    static int tmpdelta = 64;
-    static size_t tmplen = 0;
-    int32_t oldoff = 0;
-    int firstline = 1; /* a flag to print X\n  X\n- X */
-    int ret = 0; /* if a match is found it is set to 1*/
-    int i;
+       uint32_t l = m->value.l;
+       uint32_t v;
+       int matched;
 
-    for (i = 0; i < nmagic; i++) {
-       m = &fm->ml->magic[i];
-       /* if main entry matches, print it... */
-       if (!fmagicSGet(fm, m) || !fmagicSCheck(fm, m)) {
-           /* main entry didn't match, flush its continuations */
-           while ((m+1)->cont_level != 0 && ++i < nmagic)
-               m++;
-           continue;
+       if ( (m->value.s[0] == 'x') && (m->value.s[1] == '\0') ) {
+               return 1;
        }
 
-       if (! firstline) { /* we found another match */
-           /* put a newline and '-' to do some simple formatting */
-           file_printf(fm, "\n- ");
-       }
 
-       if ((cont_level+1) >= tmplen) {
-           tmplen += tmpdelta;
-           tmpoff = xrealloc(tmpoff, tmplen * sizeof(*tmpoff));
-       }
-       tmpoff[cont_level] = fmagicSPrint(fm, m);
-       cont_level++;
+       switch (m->type) {
+       case FILE_BYTE:
+               v = p->b;
+               break;
 
-       /*
-        * If we printed something, we'll need to print
-        * a blank before we print something else.
-        */
-       if (m->desc[0])
-           need_separator = 1;
+       case FILE_SHORT:
+       case FILE_BESHORT:
+       case FILE_LESHORT:
+               v = p->h;
+               break;
 
-       /* and any continuations that match */
-       while ((m+1)->cont_level != 0 && ++i < nmagic) {
-           m++;
-           if (cont_level < m->cont_level)
-               /*@innercontinue@*/ continue;
-           if (cont_level > m->cont_level) {
-               /* We're at the end of the level "cont_level" continuations. */
-               cont_level = m->cont_level;
-           }
-           if (m->flag & OFFADD) {
-               oldoff = m->offset;
-               m->offset += tmpoff[cont_level-1];
-           }
-           if (fmagicSGet(fm, m) && fmagicSCheck(fm, m)) {
+       case FILE_LONG:
+       case FILE_BELONG:
+       case FILE_LELONG:
+       case FILE_DATE:
+       case FILE_BEDATE:
+       case FILE_LEDATE:
+       case FILE_LDATE:
+       case FILE_BELDATE:
+       case FILE_LELDATE:
+               v = p->l;
+               break;
+
+       case FILE_STRING:
+       case FILE_PSTRING:
+       {
                /*
-                * This continuation matched.
-                * Print its message, with a blank before it if the previous
-                * item printed and this item isn't empty.
+                * What we want here is:
+                * v = strncmp(m->value.s, p->s, m->vallen);
+                * but ignoring any nulls.  bcmp doesn't give -/+/0
+                * and isn't universally available anyway.
                 */
-               /* space if previous printed */
-               if (need_separator
-                  && (m->nospflag == 0) && (m->desc[0] != '\0'))
-               {
-                   file_printf(fm, " ");
-                   need_separator = 0;
+               unsigned char *a = (unsigned char*)m->value.s;
+               unsigned char *b = (unsigned char*)p->s;
+               int len = m->vallen;
+               l = 0;
+               v = 0;
+               if (0L == m->mask) { /* normal string: do it fast */
+                       while (--len >= 0)
+                               if ((v = *b++ - *a++) != '\0')
+                                       break; 
+               } else { /* combine the others */
+                       while (--len >= 0) {
+                               if ((m->mask & STRING_IGNORE_LOWERCASE) &&
+                                   islower(*a)) {
+                                       if ((v = tolower(*b++) - *a++) != '\0')
+                                               break;
+                               } else if ((m->mask & STRING_COMPACT_BLANK) && 
+                                   isspace(*a)) { 
+                                       a++;
+                                       if (isspace(*b++)) {
+                                               while (isspace(*b))
+                                                       b++;
+                                       } else {
+                                               v = 1;
+                                               break;
+                                       }
+                               } else if (isspace(*a) &&
+                                   (m->mask & STRING_COMPACT_OPTIONAL_BLANK)) {
+                                       a++;
+                                       while (isspace(*b))
+                                               b++;
+                               } else {
+                                       if ((v = *b++ - *a++) != '\0')
+                                               break;
+                               }
+                       }
                }
-               if ((cont_level+1) >= tmplen) {
-                   tmplen += tmpdelta;
-                   tmpoff = xrealloc(tmpoff, tmplen * sizeof(*tmpoff));
+               break;
+       }
+       case FILE_REGEX:
+       {
+               int rc;
+               regex_t rx;
+               char errmsg[512];
+
+               rc = regcomp(&rx, m->value.s, REG_EXTENDED|REG_NOSUB);
+               if (rc) {
+                       free(p->buf);
+                       regerror(rc, &rx, errmsg, sizeof(errmsg));
+                       file_error(ms, 0, "regex error %d, (%s)", rc, errmsg);
+                       return -1;
+               } else {
+                       rc = regexec(&rx, p->buf, 0, 0, 0);
+                       regfree(&rx);
+                       free(p->buf);
+                       return !rc;
                }
-               tmpoff[cont_level] = fmagicSPrint(fm, m);
-               cont_level++;
-               if (m->desc[0])
-                   need_separator = 1;
-           }
-           if (m->flag & OFFADD)
-               m->offset = oldoff;
        }
-       firstline = 0;
-       ret = 1;
-       if (!(fm->flags & FMAGIC_FLAGS_CONTINUE)) /* don't keep searching */
-           return 1;
-    }
-    return ret;        /* This is hit if -k is set or there is no match */
-}
-/*@=bounds@*/
+       default:
+               file_error(ms, 0, "invalid type %d in mcheck()", m->type);
+               return -1;
+       }
 
-/*
- * fmagicS - lookup one file in database 
- * (already read from MAGIC by apprentice.c).
- * Passed the name and FILE * of one file to be typed.
- */
-int
-fmagicS(fmagic fm)
-{
-/*@-branchstate@*/
-    if (fm->mlist != NULL)
-    for (fm->ml = fm->mlist->next; fm->ml != fm->mlist; fm->ml = fm->ml->next) {
-/*@-compmempass@*/
-       if (fmagicSMatch(fm))
-           return 1;
-/*@=compmempass@*/
-    }
-/*@=branchstate@*/
+       if (m->type != FILE_STRING && m->type != FILE_PSTRING)
+               v = file_signextend(ms, m, v);
+
+       switch (m->reln) {
+       case 'x':
+               if ((ms->flags & MAGIC_DEBUG) != 0)
+                       (void) fprintf(stderr, "%u == *any* = 1\n", v);
+               matched = 1;
+               break;
+
+       case '!':
+               matched = v != l;
+               if ((ms->flags & MAGIC_DEBUG) != 0)
+                       (void) fprintf(stderr, "%u != %u = %d\n",
+                                      v, l, matched);
+               break;
+
+       case '=':
+               matched = v == l;
+               if ((ms->flags & MAGIC_DEBUG) != 0)
+                       (void) fprintf(stderr, "%u == %u = %d\n",
+                                      v, l, matched);
+               break;
+
+       case '>':
+               if (m->flag & UNSIGNED) {
+                       matched = v > l;
+                       if ((ms->flags & MAGIC_DEBUG) != 0)
+                               (void) fprintf(stderr, "%u > %u = %d\n",
+                                              v, l, matched);
+               }
+               else {
+                       matched = (int32_t) v > (int32_t) l;
+                       if ((ms->flags & MAGIC_DEBUG) != 0)
+                               (void) fprintf(stderr, "%d > %d = %d\n",
+                                              v, l, matched);
+               }
+               break;
+
+       case '<':
+               if (m->flag & UNSIGNED) {
+                       matched = v < l;
+                       if ((ms->flags & MAGIC_DEBUG) != 0)
+                               (void) fprintf(stderr, "%u < %u = %d\n",
+                                              v, l, matched);
+               }
+               else {
+                       matched = (int32_t) v < (int32_t) l;
+                       if ((ms->flags & MAGIC_DEBUG) != 0)
+                               (void) fprintf(stderr, "%d < %d = %d\n",
+                                              v, l, matched);
+               }
+               break;
+
+       case '&':
+               matched = (v & l) == l;
+               if ((ms->flags & MAGIC_DEBUG) != 0)
+                       (void) fprintf(stderr, "((%x & %x) == %x) = %d\n",
+                                      v, l, l, matched);
+               break;
+
+       case '^':
+               matched = (v & l) != l;
+               if ((ms->flags & MAGIC_DEBUG) != 0)
+                       (void) fprintf(stderr, "((%x & %x) != %x) = %d\n",
+                                      v, l, l, matched);
+               break;
+
+       default:
+               matched = 0;
+               file_error(ms, 0, "cannot happen: invalid relation `%c'",
+                   m->reln);
+               return -1;
+       }
 
-/*@-compmempass@*/
-    return 0;
-/*@=compmempass@*/
+       return matched;
 }
diff --git a/file/src/system.h b/file/src/system.h
deleted file mode 100644 (file)
index 7ea2793..0000000
+++ /dev/null
@@ -1,326 +0,0 @@
-#ifndef        H_SYSTEM
-#define        H_SYSTEM
-/*@-redef@*/
-
-#ifndef __linux__
-#define _LARGEFILE_SOURCE
-#define _LARGEFILE64_SOURCE 
-#define _FILE_OFFSET_BITS 64
-#endif
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <sys/types.h>
-
-#include <sys/stat.h>
-#include <stdio.h>
-
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#ifdef HAVE_STRING_H
-# if !STDC_HEADERS && HAVE_MEMORY_H
-#  include <memory.h>
-# endif
-# include <string.h>
-#else
-# include <strings.h>
-char *memchr ();
-#endif
-
-#include <errno.h>
-#ifndef errno
-/*@-declundef @*/
-extern int errno;
-/*@=declundef @*/
-#endif
-
-#if defined(__LCLINT__)
-/*@-declundef @*/
-/*@exits@*/
-extern void error(int status, int errnum, const char *format, ...)
-       __attribute__ ((__format__ (__printf__, 3, 4)))
-       /*@globals fileSystem @*/
-       /*@modifies fileSystem @*/;
-/*@=declundef @*/
-#else
-#if HAVE_ERROR && HAVE_ERROR_H
-#include <error.h>
-#endif
-#endif
-
-#ifdef STDC_HEADERS
-#include <stdlib.h>
-#ifdef HAVE_STDINT_H
-#include <stdint.h>
-#endif
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif /* STDC_HEADERS */
-
-#if defined(__LCLINT__)
-/*@-declundef@*/
-/*@-exportfcn@*/
-extern __const unsigned short int **__ctype_b_loc (void)
-     __attribute__ ((__const)) /*@*/;
-extern __const __int32_t **__ctype_tolower_loc (void)
-     __attribute__ ((__const)) /*@*/;
-extern __const __int32_t **__ctype_toupper_loc (void)
-     __attribute__ ((__const)) /*@*/;
-/*@=exportfcn@*/
-/*@-exportvar@*/
-/*@unchecked@*/
-extern __const __int32_t *__ctype_tolower;
-/*@unchecked@*/
-extern __const __int32_t *__ctype_toupper;
-/*@=exportvar@*/
-/*@=declundef@*/
-#endif
-
-#include <ctype.h>
-
-#if defined (__GLIBC__) && defined(__LCLINT__)
-/*@-exportlocal@*/
-extern int isalnum(int) __THROW        /*@*/;
-extern int isalpha(int) __THROW        /*@*/;
-extern int isascii(int) __THROW        /*@*/;
-extern int iscntrl(int) __THROW        /*@*/;
-extern int isdigit(int) __THROW        /*@*/;
-extern int isgraph(int) __THROW        /*@*/;
-extern int islower(int) __THROW        /*@*/;
-extern int isprint(int) __THROW        /*@*/;
-extern int ispunct(int) __THROW        /*@*/;
-extern int isspace(int) __THROW        /*@*/;
-extern int isupper(int) __THROW        /*@*/;
-extern int isxdigit(int) __THROW       /*@*/;
-extern int toascii(int) __THROW        /*@*/;
-extern int _toupper(int) __THROW       /*@*/;
-extern int _tolower(int) __THROW       /*@*/;
-/*@=exportlocal@*/
-#endif
-
-/* XXX solaris2.5.1 has not */
-#if !defined(EXIT_FAILURE) && !defined(__LCLINT__)
-#define        EXIT_FAILURE    1
-#endif
-
-#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
-#else
-#include <sys/file.h>
-#endif
-
-#if HAVE_SYS_WAIT_H
-#include <sys/wait.h>
-#endif
-
-#if HAVE_SYS_MMAN_H && !defined(__LCLINT__)
-#include <sys/mman.h>
-#endif
-
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-#  include <sys/time.h>
-# else
-#  include <time.h>
-# endif
-#endif
-
-#ifdef RESTORE_TIME
-# if (__COHERENT__ >= 0x420)
-#  include <sys/utime.h>
-# else
-#  ifdef USE_UTIMES
-#   include <sys/time.h>
-#  else
-#   include <utime.h>
-#  endif
-# endif
-#endif
-
-/* Since major is a function on SVR4, we can't use `ifndef major'.  */
-#if MAJOR_IN_MKDEV
-#include <sys/mkdev.h>
-#define HAVE_MAJOR
-#endif
-#if MAJOR_IN_SYSMACROS
-#include <sys/sysmacros.h>
-#define HAVE_MAJOR
-#endif
-#ifdef major                   /* Might be defined in sys/types.h.  */
-#define HAVE_MAJOR
-#endif
-
-#ifndef HAVE_MAJOR
-#define major(dev)  (((dev) >> 8) & 0xff)
-#define minor(dev)  ((dev) & 0xff)
-#define makedev(maj, min)  (((maj) << 8) | (min))
-#endif
-#undef HAVE_MAJOR
-
-#ifdef HAVE_GETOPT_H 
-#if defined(__LCLINT__)
-/*@-declundef -exportfcn @*/
-extern int getopt_long (int ___argc, char *const *___argv,
-               const char *__shortopts, const struct option *__longopts,
-               int * __longind)
-       /*@*/;
-/*@=declundef =exportfcn @*/
-#endif
-#include <getopt.h>     /* for long options (is this portable?)*/
-#endif
-
-#ifdef NEED_GETOPT
-/*@unchecked@*/
-extern int optind;             /* From getopt(3)                       */
-/*@unchecked@*/
-extern char *optarg;
-#endif
-
-#if HAVE_REGEX_H
-#include <regex.h>
-#endif
-
-#ifdef HAVE_LIBZ
-#include <zlib.h>
-#endif
-
-#ifndef HAVE_STRERROR
-/*@unchecked@*/
-extern int sys_nerr;
-/*@unchecked@*/
-extern char *sys_errlist[];
-#define strerror(e) \
-       (((e) >= 0 && (e) < sys_nerr) ? sys_errlist[(e)] : "Unknown error")
-#endif
-
-#ifndef HAVE_STRTOUL
-#define strtoul(a, b, c)       strtol(a, b, c)
-#endif
-
-/*@-declundef -exportfcn -incondefs @*/
-/**
- */
-/*@mayexit@*/ /*@only@*/ /*@out@*/
-void * xmalloc (size_t size)
-       /*@globals errno @*/
-       /*@ensures maxSet(result) == (size - 1) @*/
-       /*@modifies errno @*/;
-
-/**
- */
-/*@mayexit@*/ /*@only@*/
-void * xcalloc (size_t nmemb, size_t size)
-       /*@ensures maxSet(result) == (nmemb - 1) @*/
-       /*@*/;
-
-/**
- * @todo Annotate ptr with returned/out.
- */
-/*@mayexit@*/ /*@only@*/
-void * xrealloc (/*@null@*/ /*@only@*/ void * ptr, size_t size)
-       /*@ensures maxSet(result) == (size - 1) @*/
-       /*@modifies *ptr @*/;
-
-/**
- */
-/*@-fcnuse@*/
-/*@mayexit@*/ /*@only@*/
-char * xstrdup (const char *str)
-       /*@*/;
-/*@=fcnuse@*/
-/*@=declundef =exportfcn=incondefs @*/
-
-/**
- */
-/*@-shadow@*/
-/*@unused@*/ /*@exits@*/ /*@only@*/
-static inline void * vmefail(/*@unused@*/ size_t nb)
-       /*@globals fileSystem @*/
-       /*@modifies fileSystem @*/
-{
-       error(EXIT_FAILURE, 0, "out of memory");
-       /*@notreached@*/
-/*@-nullret@*/
-       return NULL;
-/*@=nullret@*/
-}
-/*@=shadow@*/
-
-#if HAVE_MCHECK_H
-#include <mcheck.h>
-#if defined(__LCLINT__)
-/*@-declundef -incondefs @*/ /* LCL: missing annotations */
-extern int mcheck (void (*__abortfunc) (enum mcheck_status)) __THROW
-       /*@globals internalState@*/
-       /*@modifies internalState @*/;
-extern int mcheck_pedantic (void (*__abortfunc) (enum mcheck_status)) __THROW
-       /*@globals internalState@*/
-       /*@modifies internalState @*/;
-extern void mcheck_check_all (void)
-       /*@globals internalState@*/
-       /*@modifies internalState @*/;
-extern enum mcheck_status mprobe (void *__ptr) __THROW
-       /*@globals internalState@*/
-       /*@modifies internalState @*/;
-extern void mtrace (void) __THROW
-       /*@globals internalState@*/
-       /*@modifies internalState @*/;
-extern void muntrace (void) __THROW
-       /*@globals internalState@*/
-       /*@modifies internalState @*/;
-/*@=declundef =incondefs @*/
-#endif /* defined(__LCLINT__) */
-#endif /* HAVE_MCHECK_H */
-
-#if !defined(__LCLINT__)
-/* Memory allocation via macro defs to get meaningful locations from mtrace() */
-#define        xmalloc(_size)          (malloc(_size) ? : vmefail(0))
-#define        xcalloc(_nmemb, _size)  (calloc((_nmemb), (_size)) ? : vmefail(0))
-#define        xrealloc(_ptr, _size)   (realloc((_ptr), (_size)) ? : vmefail(0))
-#define        xstrdup(_str)   (strcpy(xmalloc(strlen(_str)+1), (_str)))
-#endif
-
-/* Retrofit glibc __progname */
-#if defined __GLIBC__ && __GLIBC__ >= 2
-#if __GLIBC_MINOR__ >= 1
-#define __progname      __assert_program_name
-#endif
-#define setprogname(pn)
-#else
-#define __progname      program_name
-#define setprogname(pn) \
-  { if ((__progname = strrchr(pn, '/')) != NULL) __progname++; \
-    else __progname = pn;               \
-  }
-#endif
-/*@unchecked@*/
-const char *__progname;
-
-#if HAVE_LOCALE_H
-# include <locale.h>
-#endif
-
-#if defined(__LCLINT__)
-#define FILE_RCSID(id)
-#else
-#define FILE_RCSID(id) \
-static inline const char *rcsid(const char *p) { \
-       return rcsid(p = id); \
-}
-#endif
-
-/*@=redef@*/
-
-#endif /* H_SYSTEM */
index c0dda6a..983ab56 100644 (file)
@@ -1,15 +1,54 @@
 /*
+ * Copyright (c) Ian F. Darwin 1986-1995.
+ * Software written by Ian F. Darwin and others;
+ * maintained 1995-present by Christos Zoulas and others.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice immediately at the beginning of the file, without modification,
+ *    this list of conditions, and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    This product includes software developed by Ian F. Darwin and others.
+ * 4. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *  
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+/*
  * Header file for public domain tar (tape archive) program.
  *
  * @(#)tar.h 1.20 86/10/29     Public Domain.
  *
  * Created 25 August 1985 by John Gilmore, ihnp4!hoptoad!gnu.
  *
- * Id: tar.h,v 1.5 1999/01/13 15:44:10 christos Exp  # checkin only
+ * $Id: tar.h,v 1.7 2003/10/14 19:29:56 christos Exp $ # checkin only
  */
 
-#ifndef        __tar_h__
-#define        __tar_h__
+/*
+ * Kludge for handling systems that cannot cope with multiple
+ * external definitions of a variable.  In ONE routine (tar.c),
+ * we #define TAR_EXTERN to null; here, we set it to "extern" if
+ * it is not already set.
+ */
+#ifndef TAR_EXTERN
+#define TAR_EXTERN extern
+#endif
 
 /*
  * Header block on tape.
@@ -24,7 +63,6 @@
 #define        TUNMLEN 32
 #define        TGNMLEN 32
 
-/*@-fielduse@*/
 union record {
        char            charptr[RECORDSIZE];
        struct header {
@@ -44,15 +82,13 @@ union record {
                char    devminor[8];
        } header;
 };
-/*@=fielduse@*/
 
 /* The checksum field is filled with this while the checksum is computed. */
 #define        CHKBLANKS       "        "      /* 8 blanks, no null */
 
 /* The magic field is filled with this if uname and gname are valid. */
-#define        TARMAGIC                "ustar  "       /* 7 chars and a null */
+#define        TMAGIC          "ustar  "       /* 7 chars and a null */
 
-#if 0
 /* The linkflag defines the type of file */
 #define        LF_OLDNORMAL    '\0'            /* Normal disk file, Unix compat */
 #define        LF_NORMAL       '0'             /* Normal disk file */
@@ -78,35 +114,35 @@ union record {
 /*
  * Global variables
  */
-extern union record    *ar_block;      /* Start of block of archive */
-extern union record    *ar_record;     /* Current record of archive */
-extern union record    *ar_last;       /* Last+1 record of archive block */
-extern char            ar_reading;     /* 0 writing, !0 reading archive */
-extern int             blocking;       /* Size of each block, in records */
-extern int             blocksize;      /* Size of each block, in bytes */
-extern char            *ar_file;       /* File containing archive */
-extern char            *name_file;     /* File containing names to work on */
-extern char            *tar;           /* Name of this program */
+TAR_EXTERN union record        *ar_block;      /* Start of block of archive */
+TAR_EXTERN union record        *ar_record;     /* Current record of archive */
+TAR_EXTERN union record        *ar_last;       /* Last+1 record of archive block */
+TAR_EXTERN char                ar_reading;     /* 0 writing, !0 reading archive */
+TAR_EXTERN int         blocking;       /* Size of each block, in records */
+TAR_EXTERN int         blocksize;      /* Size of each block, in bytes */
+TAR_EXTERN char                *ar_file;       /* File containing archive */
+TAR_EXTERN char                *name_file;     /* File containing names to work on */
+TAR_EXTERN char                *tar;           /* Name of this program */
 
 /*
  * Flags from the command line
  */
-extern char    f_reblock;              /* -B */
-extern char    f_create;               /* -c */
-extern char    f_debug;                /* -d */
-extern char    f_sayblock;             /* -D */
-extern char    f_follow_links;         /* -h */
-extern char    f_ignorez;              /* -i */
-extern char    f_keep;                 /* -k */
-extern char    f_modified;             /* -m */
-extern char    f_oldarch;              /* -o */
-extern char    f_use_protection;       /* -p */
-extern char    f_sorted_names;         /* -s */
-extern char    f_list;                 /* -t */
-extern char    f_namefile;             /* -T */
-extern char    f_verbose;              /* -v */
-extern char    f_extract;              /* -x */
-extern char    f_compress;             /* -z */
+TAR_EXTERN char        f_reblock;              /* -B */
+TAR_EXTERN char        f_create;               /* -c */
+TAR_EXTERN char        f_debug;                /* -d */
+TAR_EXTERN char        f_sayblock;             /* -D */
+TAR_EXTERN char        f_follow_links;         /* -h */
+TAR_EXTERN char        f_ignorez;              /* -i */
+TAR_EXTERN char        f_keep;                 /* -k */
+TAR_EXTERN char        f_modified;             /* -m */
+TAR_EXTERN char        f_oldarch;              /* -o */
+TAR_EXTERN char        f_use_protection;       /* -p */
+TAR_EXTERN char        f_sorted_names;         /* -s */
+TAR_EXTERN char        f_list;                 /* -t */
+TAR_EXTERN char        f_namefile;             /* -T */
+TAR_EXTERN char        f_verbose;              /* -v */
+TAR_EXTERN char        f_extract;              /* -x */
+TAR_EXTERN char        f_compress;             /* -z */
 
 /*
  * We now default to Unix Standard format rather than 4.2BSD tar format.
@@ -130,11 +166,11 @@ struct name {
        char            name[NAMSIZ+1];
 };
 
-extern struct name     *namelist;      /* Points to first name in list */
-extern struct name     *namelast;      /* Points to last name in list */
+TAR_EXTERN struct name *namelist;      /* Points to first name in list */
+TAR_EXTERN struct name *namelast;      /* Points to last name in list */
 
-extern int             archive;        /* File descriptor for archive file */
-extern int             errors;         /* # of files in error */
+TAR_EXTERN int         archive;        /* File descriptor for archive file */
+TAR_EXTERN int         errors;         /* # of files in error */
 
 /*
  *
@@ -154,12 +190,20 @@ struct link {
        char            name[NAMSIZ+1];
 };
 
-extern struct link     *linklist;      /* Points to first link in list */
+TAR_EXTERN struct link *linklist;      /* Points to first link in list */
+
 
 /*
  * Error recovery stuff
  */
-extern char            read_error_flag;
-#endif
+TAR_EXTERN char                read_error_flag;
+
 
-#endif /* __tar_h__ */
+#if 0
+/*
+ * Declarations of functions available to the world.
+ */
+/*LINTLIBRARY*/
+#define         annorec(stream, msg)   anno(stream, msg, 0)    /* Cur rec */
+#define        annofile(stream, msg)   anno(stream, msg, 1)    /* Saved rec */
+#endif
diff --git a/file/src/test.c b/file/src/test.c
new file mode 100644 (file)
index 0000000..2c60585
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) Christos Zoulas 2003.
+ * All Rights Reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice immediately at the beginning of the file, without modification,
+ *    this list of conditions, and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *  
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#include <stdio.h>
+#include "magic.h"
+
+int
+main(int argc, char **argv)
+{
+    struct magic_set *ms;
+    const char *m;
+    int i;
+
+    if(argc < 2)
+       return 1;
+
+    ms = magic_open(MAGIC_NONE);
+    if (ms == NULL) {
+       printf("ERROR: out of memory\n");
+       return 1;
+    }
+    if (magic_load(ms, NULL) == -1) {
+       printf("ERROR: %s\n", magic_error(ms));
+       return 1;
+    }
+
+    for (i = 1; i < argc; i++) {
+       if ((m = magic_file(ms, argv[i])) == NULL)
+           printf("ERROR: %s\n", magic_error(ms));
+       else
+           printf("%s: %s\n", argv[i], m);
+    }
+
+    magic_close(ms);
+    return 0;
+}