diff options
Diffstat (limited to 'target')
-rw-r--r-- | target/ext2/ext2root.mk | 13 | ||||
-rw-r--r-- | target/ext2/genext2fs.patch | 8444 |
2 files changed, 7859 insertions, 598 deletions
diff --git a/target/ext2/ext2root.mk b/target/ext2/ext2root.mk index a6f1f3d14..e4e77ca0a 100644 --- a/target/ext2/ext2root.mk +++ b/target/ext2/ext2root.mk @@ -10,12 +10,21 @@ GENEXT2_SITE=http://ftp.debian.org/debian/pool/main/g/genext2fs $(DL_DIR)/$(GENEXT2_SOURCE): $(WGET) -P $(DL_DIR) $(GENEXT2_SITE)/$(GENEXT2_SOURCE) -$(GENEXT2_DIR): $(DL_DIR)/$(GENEXT2_SOURCE) +$(GENEXT2_DIR)/.unpacked: $(DL_DIR)/$(GENEXT2_SOURCE) zcat $(DL_DIR)/$(GENEXT2_SOURCE) | tar -C $(BUILD_DIR) -xvf - mv $(GENEXT2_DIR).orig $(GENEXT2_DIR) toolchain/patch-kernel.sh $(GENEXT2_DIR) target/ext2/ genext2fs*.patch + touch $(GENEXT2_DIR)/.unpacked -$(GENEXT2_DIR)/genext2fs: $(GENEXT2_DIR) +$(GENEXT2_DIR)/.configured: $(GENEXT2_DIR)/.unpacked + chmod a+x $(GENEXT2_DIR)/configure + (cd $(GENEXT2_DIR); rm -rf config.cache; \ + ./configure \ + --prefix=$(STAGING_DIR) \ + ); + touch $(GENEXT2_DIR)/.configured + +$(GENEXT2_DIR)/genext2fs: $(GENEXT2_DIR)/.configured $(MAKE) CFLAGS="-Wall -O2 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE \ -D_FILE_OFFSET_BITS=64" -C $(GENEXT2_DIR); touch -c $(GENEXT2_DIR)/genext2fs diff --git a/target/ext2/genext2fs.patch b/target/ext2/genext2fs.patch index c8db64659..3c4a04383 100644 --- a/target/ext2/genext2fs.patch +++ b/target/ext2/genext2fs.patch @@ -1,46 +1,602 @@ -diff -urN genext2fs-1.3.orig/Makefile genext2fs-1.3/Makefile ---- genext2fs-1.3.orig/Makefile 1969-12-31 17:00:00.000000000 -0700 -+++ genext2fs-1.3/Makefile 2003-04-21 01:41:42.000000000 -0600 -@@ -0,0 +1,46 @@ -+CC=gcc -+CFLAGS=-Wall -O0 -g +diff --exclude CVS -urN genext2fs-1.3.orig/AUTHORS genext2fs/AUTHORS +--- genext2fs-1.3.orig/AUTHORS 1969-12-31 17:00:00.000000000 -0700 ++++ genext2fs/AUTHORS 2001-05-02 12:20:05.000000000 -0600 +@@ -0,0 +1 @@ ++Xavier Bestel <xavier.bestel@free.fr> +diff --exclude CVS -urN genext2fs-1.3.orig/ChangeLog genext2fs/ChangeLog +--- genext2fs-1.3.orig/ChangeLog 1969-12-31 17:00:00.000000000 -0700 ++++ genext2fs/ChangeLog 2004-11-21 23:21:05.000000000 -0700 +@@ -0,0 +1,2 @@ ++see our cvs logs here: ++http://cvs.sourceforge.net/viewcvs.py/genext2fs/genext2fs/ +diff --exclude CVS -urN genext2fs-1.3.orig/INSTALL genext2fs/INSTALL +--- genext2fs-1.3.orig/INSTALL 1969-12-31 17:00:00.000000000 -0700 ++++ genext2fs/INSTALL 2004-11-21 23:19:19.000000000 -0700 +@@ -0,0 +1,5 @@ ++To install, just do it the normal GNU way: + -+SRC=genext2fs.c -+OBJS=$(patsubst %.c,%.o, $(SRC)) ++./configure ++make ++sudo make install +diff --exclude CVS -urN genext2fs-1.3.orig/Makefile.am genext2fs/Makefile.am +--- genext2fs-1.3.orig/Makefile.am 1969-12-31 17:00:00.000000000 -0700 ++++ genext2fs/Makefile.am 2002-10-16 09:41:00.000000000 -0600 +@@ -0,0 +1,11 @@ ++bin_PROGRAMS = genext2fs ++genext2fs_SOURCES = genext2fs.c ++man_MANS = genext2fs.8 + -+all: genext2fs -+INSTALL=install ++# test genext2fs by creating the image and comparing checksums ++test: all ++ sh ./test.sh ++ ++# test genext2fs by actually mounting the created image. ++test-mount: all ++ sudo sh ./test-mount.sh +diff --exclude CVS -urN genext2fs-1.3.orig/Makefile.in genext2fs/Makefile.in +--- genext2fs-1.3.orig/Makefile.in 1969-12-31 17:00:00.000000000 -0700 ++++ genext2fs/Makefile.in 2004-12-27 13:03:47.000000000 -0700 +@@ -0,0 +1,570 @@ ++# Makefile.in generated by automake 1.8.5 from Makefile.am. ++# @configure_input@ + -+genext2fs: $(OBJS) -+ $(CC) $(CFLAGS) -o $@ $(OBJS) ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004 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. + -+$(OBJS): %.o : %.c -+ $(CC) $(CFLAGS) -c $< -o $@ ++# 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. + -+$(OBJS): Makefile ++@SET_MAKE@ + -+install: -+ $(INSTALL) -d $(DESTDIR)/usr/bin/ -+ $(INSTALL) -m 755 genext2fs $(DESTDIR)/usr/bin/ -+ $(INSTALL) -d $(DESTDIR)/usr/share/man/man8/ -+ $(INSTALL) -m 644 genext2fs.8 $(DESTDIR)/usr/share/man/man8/ ++SOURCES = $(genext2fs_SOURCES) + -+clean: -+ rm -rf *.o *.a core genext2fs -+ rm -rf test ext2.img ++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 = : ++bin_PROGRAMS = genext2fs$(EXEEXT) ++subdir = . ++DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ ++ $(srcdir)/Makefile.in $(top_srcdir)/configure AUTHORS COPYING \ ++ ChangeLog INSTALL NEWS TODO depcomp install-sh missing ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.in ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ ++ configure.lineno configure.status.lineno ++mkinstalldirs = $(mkdir_p) ++CONFIG_CLEAN_FILES = ++am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man8dir)" ++binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) ++PROGRAMS = $(bin_PROGRAMS) ++am_genext2fs_OBJECTS = genext2fs.$(OBJEXT) ++genext2fs_OBJECTS = $(am_genext2fs_OBJECTS) ++genext2fs_LDADD = $(LDADD) ++DEFAULT_INCLUDES = -I. -I$(srcdir) ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/genext2fs.Po ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ ++SOURCES = $(genext2fs_SOURCES) ++DIST_SOURCES = $(genext2fs_SOURCES) ++man8dir = $(mandir)/man8 ++NROFF = nroff ++MANS = $(man_MANS) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++distdir = $(PACKAGE)-$(VERSION) ++top_distdir = $(distdir) ++am__remove_distdir = \ ++ { test ! -d $(distdir) \ ++ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ ++ && rm -fr $(distdir); }; } ++DIST_ARCHIVES = $(distdir).tar.gz ++GZIP_ENV = --best ++distuninstallcheck_listfiles = find . -type f -print ++distcleancheck_listfiles = find . -type f -print ++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@ ++CPPFLAGS = @CPPFLAGS@ ++CYGPATH_W = @CYGPATH_W@ ++DEFS = @DEFS@ ++DEPDIR = @DEPDIR@ ++ECHO_C = @ECHO_C@ ++ECHO_N = @ECHO_N@ ++ECHO_T = @ECHO_T@ ++EXEEXT = @EXEEXT@ ++INSTALL_DATA = @INSTALL_DATA@ ++INSTALL_PROGRAM = @INSTALL_PROGRAM@ ++INSTALL_SCRIPT = @INSTALL_SCRIPT@ ++INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++LDFLAGS = @LDFLAGS@ ++LIBOBJS = @LIBOBJS@ ++LIBS = @LIBS@ ++LTLIBOBJS = @LTLIBOBJS@ ++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@ ++SET_MAKE = @SET_MAKE@ ++SHELL = @SHELL@ ++STRIP = @STRIP@ ++VERSION = @VERSION@ ++ac_ct_CC = @ac_ct_CC@ ++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_alias = @build_alias@ ++datadir = @datadir@ ++exec_prefix = @exec_prefix@ ++host_alias = @host_alias@ ++includedir = @includedir@ ++infodir = @infodir@ ++install_sh = @install_sh@ ++libdir = @libdir@ ++libexecdir = @libexecdir@ ++localstatedir = @localstatedir@ ++mandir = @mandir@ ++mkdir_p = @mkdir_p@ ++oldincludedir = @oldincludedir@ ++prefix = @prefix@ ++program_transform_name = @program_transform_name@ ++sbindir = @sbindir@ ++sharedstatedir = @sharedstatedir@ ++sysconfdir = @sysconfdir@ ++target_alias = @target_alias@ ++genext2fs_SOURCES = genext2fs.c ++man_MANS = genext2fs.8 ++all: all-am + -+check: all -+ mkdir -p test -+ dd if=/dev/zero of=test/zero count=1 -+ ./genext2fs -b 4096 -d test ext2.img -+ -+ md5=`md5sum ext2.img | cut -f 1 -d " "`; \ -+ if [ "$$md5" != "89471302d95f96a76fbb2cff98182cde" ] ; then \ -+ echo "test failed."; \ -+ else \ -+ echo "test succeeded."; \ ++.SUFFIXES: ++.SUFFIXES: .c .o .obj ++am--refresh: ++ @: ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ ++ cd $(srcdir) && $(AUTOMAKE) --gnu \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ ++ cd $(top_srcdir) && \ ++ $(AUTOMAKE) --gnu Makefile ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ echo ' $(SHELL) ./config.status'; \ ++ $(SHELL) ./config.status;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ ++ esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++ $(SHELL) ./config.status --recheck ++ ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(srcdir) && $(AUTOCONF) ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) ++ cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) ++install-binPROGRAMS: $(bin_PROGRAMS) ++ @$(NORMAL_INSTALL) ++ test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" ++ @list='$(bin_PROGRAMS)'; for p in $$list; do \ ++ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ++ if test -f $$p \ ++ ; then \ ++ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ ++ echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ ++ $(INSTALL_PROGRAM_ENV) $(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: ++ -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) ++genext2fs$(EXEEXT): $(genext2fs_OBJECTS) $(genext2fs_DEPENDENCIES) ++ @rm -f genext2fs$(EXEEXT) ++ $(LINK) $(genext2fs_LDFLAGS) $(genext2fs_OBJECTS) $(genext2fs_LDADD) $(LIBS) ++ ++mostlyclean-compile: ++ -rm -f *.$(OBJEXT) ++ ++distclean-compile: ++ -rm -f *.tab.c ++ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/genext2fs.Po@am__quote@ ++ ++.c.o: ++@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ ++@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; 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 $< ++ ++.c.obj: ++@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ ++@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; 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 `$(CYGPATH_W) '$<'` ++uninstall-info-am: ++install-man8: $(man8_MANS) $(man_MANS) ++ @$(NORMAL_INSTALL) ++ test -z "$(man8dir)" || $(mkdir_p) "$(DESTDIR)$(man8dir)" ++ @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ ++ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ ++ for i in $$l2; do \ ++ case "$$i" in \ ++ *.8*) 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 \ ++ 8*) ;; \ ++ *) ext='8' ;; \ ++ 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)$(man8dir)/$$inst'"; \ ++ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst"; \ ++ done ++uninstall-man8: ++ @$(NORMAL_UNINSTALL) ++ @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ ++ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ ++ for i in $$l2; do \ ++ case "$$i" in \ ++ *.8*) list="$$list $$i" ;; \ ++ esac; \ ++ done; \ ++ for i in $$list; do \ ++ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ ++ case "$$ext" in \ ++ 8*) ;; \ ++ *) ext='8' ;; \ ++ 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)$(man8dir)/$$inst'"; \ ++ rm -f "$(DESTDIR)$(man8dir)/$$inst"; \ ++ done ++ ++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 ++ ++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; }'`; \ ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ + fi -+ ++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 ++ ++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"; \ ++ $(mkdir_p) "$(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 ++ -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-bzip2: distdir ++ $(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2 ++ $(am__remove_distdir) ++ ++dist-tarZ: distdir ++ $(AMTAR) chof - $(distdir) | compress -c >$(distdir).tar.Z ++ $(am__remove_distdir) ++ ++dist-shar: distdir ++ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz ++ $(am__remove_distdir) ++ ++dist-zip: distdir ++ -rm -f $(distdir).zip ++ zip -rq $(distdir).zip $(distdir) ++ $(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 ++ case '$(DIST_ARCHIVES)' in \ ++ *.tar.gz*) \ ++ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - ;;\ ++ *.tar.bz2*) \ ++ bunzip2 -c $(distdir).tar.bz2 | $(AMTAR) xf - ;;\ ++ *.tar.Z*) \ ++ uncompress -c $(distdir).tar.Z | $(AMTAR) xf - ;;\ ++ *.shar.gz*) \ ++ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ ++ *.zip*) \ ++ unzip $(distdir).zip ;;\ ++ esac ++ 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 ../.. && umask 077 && mkdir "$$dc_destdir") \ ++ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ ++ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ ++ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ ++ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ ++ } || { rm -rf "$$dc_destdir"; exit 1; }) \ ++ && rm -rf "$$dc_destdir" \ ++ && $(MAKE) $(AM_MAKEFLAGS) dist \ ++ && rm -rf $(DIST_ARCHIVES) \ ++ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck ++ $(am__remove_distdir) ++ @(echo "$(distdir) archives ready for distribution: "; \ ++ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ ++ sed -e '1{h;s/./=/g;p;x;}' -e '$${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-am ++all-am: Makefile $(PROGRAMS) $(MANS) ++installdirs: ++ for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man8dir)"; do \ ++ test -z "$$dir" || $(mkdir_p) "$$dir"; \ ++ done ++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 mostlyclean-am ++ ++distclean: distclean-am ++ -rm -f $(am__CONFIG_DISTCLEAN_FILES) ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++distclean-am: clean-am distclean-compile distclean-generic \ ++ distclean-tags ++ ++dvi: dvi-am ++ ++dvi-am: ++ ++html: html-am ++ ++info: info-am ++ ++info-am: ++ ++install-data-am: install-man ++ ++install-exec-am: install-binPROGRAMS ++ ++install-info: install-info-am ++ ++install-man: install-man8 ++ ++installcheck-am: ++ ++maintainer-clean: maintainer-clean-am ++ -rm -f $(am__CONFIG_DISTCLEAN_FILES) ++ -rm -rf $(top_srcdir)/autom4te.cache ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++maintainer-clean-am: distclean-am maintainer-clean-generic ++ ++mostlyclean: mostlyclean-am ++ ++mostlyclean-am: mostlyclean-compile mostlyclean-generic ++ ++pdf: pdf-am ++ ++pdf-am: ++ ++ps: ps-am ++ ++ps-am: ++ ++uninstall-am: uninstall-binPROGRAMS uninstall-info-am uninstall-man ++ ++uninstall-man: uninstall-man8 ++ ++.PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \ ++ clean-binPROGRAMS clean-generic ctags dist dist-all dist-bzip2 \ ++ dist-gzip dist-shar dist-tarZ dist-zip distcheck distclean \ ++ distclean-compile distclean-generic distclean-tags \ ++ distcleancheck distdir distuninstallcheck dvi dvi-am html \ ++ html-am info info-am install install-am install-binPROGRAMS \ ++ install-data install-data-am install-exec install-exec-am \ ++ install-info install-info-am install-man install-man8 \ ++ install-strip installcheck installcheck-am installdirs \ ++ maintainer-clean maintainer-clean-generic mostlyclean \ ++ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ ++ tags uninstall uninstall-am uninstall-binPROGRAMS \ ++ uninstall-info-am uninstall-man uninstall-man8 ++ ++ +# test genext2fs by creating the image and comparing checksums +test: all + sh ./test.sh @@ -48,30 +604,5072 @@ diff -urN genext2fs-1.3.orig/Makefile genext2fs-1.3/Makefile +# test genext2fs by actually mounting the created image. +test-mount: all + sudo sh ./test-mount.sh -diff -urN genext2fs-1.3.orig/debian/changelog genext2fs-1.3/debian/changelog ---- genext2fs-1.3.orig/debian/changelog 1969-12-31 17:00:00.000000000 -0700 -+++ genext2fs-1.3/debian/changelog 2003-04-21 01:41:42.000000000 -0600 -@@ -0,0 +1,17 @@ -+genext2fs (1.3-2) unstable; urgency=low ++# 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 --exclude CVS -urN genext2fs-1.3.orig/NEWS genext2fs/NEWS +--- genext2fs-1.3.orig/NEWS 1969-12-31 17:00:00.000000000 -0700 ++++ genext2fs/NEWS 2004-11-21 23:21:05.000000000 -0700 +@@ -0,0 +1 @@ ++No news yet :) +diff --exclude CVS -urN genext2fs-1.3.orig/README genext2fs/README +--- genext2fs-1.3.orig/README 1969-12-31 17:00:00.000000000 -0700 ++++ genext2fs/README 2004-11-21 23:18:40.000000000 -0700 +@@ -0,0 +1,19 @@ ++ ABOUT ++----------- ++genext2fs is a mean to generate an ext2 filesystem as a normal (non-root) ++user. It doesn't require you to mount the image file to copy files on it. ++It doesn't even require you to be the superuser to make device nodes. ++ ++http://sourceforge.net/projects/genext2fs ++ ++ CONTACT ++------------- ++Please use the genext2fs-devel@lists.sourceforge.net mailing list. ++ ++ INSTALL ++------------- ++Please see the INSTALL file ;) ++ ++ AUTHORS ++------------- ++Please see the AUTHORS file ;) +diff --exclude CVS -urN genext2fs-1.3.orig/TODO genext2fs/TODO +--- genext2fs-1.3.orig/TODO 1969-12-31 17:00:00.000000000 -0700 ++++ genext2fs/TODO 2004-11-25 11:12:10.000000000 -0700 +@@ -0,0 +1,13 @@ ++Disclaimer: I'll probably never do all this ... ++ ++- support fancy ext2 options ++- support ext3 ++ ++- add path to -f/-d options, e.g: ++ -f /:file.img => extract file.img at root ++ -d /etc:/path/to/my/etc => copy /path/to/my/etc into /etc ++ ++- add tar.gz extraction capabilities ? ++ ++- implement truncate_node ++- find a better way to guess filesystem's size +diff --exclude CVS -urN genext2fs-1.3.orig/aclocal.m4 genext2fs/aclocal.m4 +--- genext2fs-1.3.orig/aclocal.m4 1969-12-31 17:00:00.000000000 -0700 ++++ genext2fs/aclocal.m4 2004-12-27 13:03:45.000000000 -0700 +@@ -0,0 +1,908 @@ ++# generated automatically by aclocal 1.8.5 -*- Autoconf -*- ++ ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 ++# 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. ++ ++# -*- Autoconf -*- ++# Copyright (C) 2002, 2003 Free Software Foundation, Inc. ++# Generated from amversion.in; do not edit by hand. ++ ++# 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.8"]) ++ ++# 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.8.5])]) ++ ++# AM_AUX_DIR_EXPAND ++ ++# Copyright (C) 2001, 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. ++ ++# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets ++# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to ++# `$srcdir', `$srcdir/..', or `$srcdir/../..'. ++# ++# Of course, Automake must honor this variable whenever it calls a ++# tool from the auxiliary directory. The problem is that $srcdir (and ++# therefore $ac_aux_dir as well) can be either absolute or relative, ++# depending on how configure is run. This is pretty annoying, since ++# it makes $ac_aux_dir quite unusable in subdirectories: in the top ++# source directory, any form will work fine, but in subdirectories a ++# relative path needs to be adjusted first. ++# ++# $ac_aux_dir/missing ++# fails when called from a subdirectory if $ac_aux_dir is relative ++# $top_srcdir/$ac_aux_dir/missing ++# fails if $ac_aux_dir is absolute, ++# fails when called from a subdirectory in a VPATH build with ++# a relative $ac_aux_dir ++# ++# The reason of the latter failure is that $top_srcdir and $ac_aux_dir ++# are both prefixed by $srcdir. In an in-source build this is usually ++# harmless because $srcdir is `.', but things will broke when you ++# start a VPATH build or use an absolute $srcdir. ++# ++# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, ++# iff we strip the leading $srcdir from $ac_aux_dir. That would be: ++# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` ++# and then we would define $MISSING as ++# MISSING="\${SHELL} $am_aux_dir/missing" ++# This will work as long as MISSING is not called from configure, because ++# unfortunately $(top_srcdir) has no meaning in configure. ++# However there are other variables, like CC, which are often used in ++# configure, and could therefore not use this "fixed" $ac_aux_dir. ++# ++# Another solution, used here, is to always expand $ac_aux_dir to an ++# absolute PATH. The drawback is that using absolute paths prevent a ++# configured tree to be moved without reconfiguration. ++ ++AC_DEFUN([AM_AUX_DIR_EXPAND], ++[dnl Rely on autoconf to set up CDPATH properly. ++AC_PREREQ([2.50])dnl ++# expand $ac_aux_dir to an absolute path ++am_aux_dir=`cd $ac_aux_dir && pwd` ++]) ++ ++# AM_CONDITIONAL -*- Autoconf -*- ++ ++# Copyright (C) 1997, 2000, 2001, 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 6 ++ ++# AM_CONDITIONAL(NAME, SHELL-CONDITION) ++# ------------------------------------- ++# Define a conditional. ++AC_DEFUN([AM_CONDITIONAL], ++[AC_PREREQ(2.52)dnl ++ 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])]) ++ ++# serial 7 -*- Autoconf -*- ++ ++# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 ++# 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 ++ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with ++ # Solaris 8's {/usr,}/bin/sh. ++ touch 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 ++ # or remarks (even with -Werror). So we grep stderr for any message ++ # that says an option was ignored or not supported. ++ # When given -MP, icc 7.0 and 7.1 complain thusly: ++ # icc: Command line warning: ignoring option '-M'; no argument required ++ # The diagnosis changed in icc 8.0: ++ # icc: Command line remark: option '-MP' not supported ++ if (grep 'ignoring option' conftest.err || ++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else ++ am_cv_$1_dependencies_compiler_type=$depmode ++ break ++ fi ++ fi ++ done ++ ++ cd .. ++ rm -rf conftest.dir ++else ++ am_cv_$1_dependencies_compiler_type=none ++fi ++]) ++AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) ++AM_CONDITIONAL([am__fastdep$1], [ ++ test "x$enable_dependency_tracking" != xno \ ++ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ++]) ++ ++ ++# AM_SET_DEPDIR ++# ------------- ++# Choose a directory name for dependency files. ++# This macro is AC_REQUIREd in _AM_DEPENDENCIES ++AC_DEFUN([AM_SET_DEPDIR], ++[AC_REQUIRE([AM_SET_LEADING_DOT])dnl ++AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ++]) ++ ++ ++# AM_DEP_TRACK ++# ------------ ++AC_DEFUN([AM_DEP_TRACK], ++[AC_ARG_ENABLE(dependency-tracking, ++[ --disable-dependency-tracking speeds up one-time build ++ --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 (C) 1999, 2000, 2001, 2002, 2003, 2004 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 's/^DEPDIR = //p' < "$mf"` ++ test -z "$DEPDIR" && continue ++ # When using ansi2knr, U may be empty or an underscore; expand it ++ U=`sed -n 's/^U = //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 ' ++ /^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"]) ++]) ++ ++# 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 11 ++ ++# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) ++# AM_INIT_AUTOMAKE([OPTIONS]) ++# ----------------------------------------------- ++# The call with PACKAGE and VERSION arguments is the old style ++# call (pre autoconf-2.50), which is being phased out. PACKAGE ++# and VERSION should now be passed to AC_INIT and removed from ++# the call to AM_INIT_AUTOMAKE. ++# We support both call styles for the transition. After ++# the next Automake release, Autoconf can make the AC_INIT ++# arguments mandatory, and then we can depend on a new Autoconf ++# release and drop the old call support. ++AC_DEFUN([AM_INIT_AUTOMAKE], ++[AC_PREREQ([2.58])dnl ++dnl Autoconf wants to disallow AM_ names. We explicitly allow ++dnl the ones we care about. ++m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl ++AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl ++AC_REQUIRE([AC_PROG_INSTALL])dnl ++# 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 ++AC_REQUIRE([AM_PROG_MKDIR_P])dnl ++# 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]) ++ ++# AM_PROG_INSTALL_SH ++# ------------------ ++# Define $install_sh. ++ ++# Copyright (C) 2001, 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. ++ ++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)]) ++ ++# -*- 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])]) ++ ++# 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 ++]) ++ ++# -*- Autoconf -*- ++ ++ ++# Copyright (C) 1997, 1999, 2000, 2001, 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 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_PROG_MKDIR_P ++# --------------- ++# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. ++ ++# Copyright (C) 2003, 2004 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. ++ ++# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories ++# created by `make install' are always world readable, even if the ++# installer happens to have an overly restrictive umask (e.g. 077). ++# This was a mistake. There are at least two reasons why we must not ++# use `-m 0755': ++# - it causes special bits like SGID to be ignored, ++# - it may be too restrictive (some setups expect 775 directories). ++# ++# Do not use -m 0755 and let people choose whatever they expect by ++# setting umask. ++# ++# We cannot accept any implementation of `mkdir' that recognizes `-p'. ++# Some implementations (such as Solaris 8's) are not thread-safe: if a ++# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' ++# concurrently, both version can detect that a/ is missing, but only ++# one can create it and the other will error out. Consequently we ++# restrict ourselves to GNU make (using the --version option ensures ++# this.) ++AC_DEFUN([AM_PROG_MKDIR_P], ++[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then ++ # Keeping the `.' argument allows $(mkdir_p) to be used without ++ # argument. Indeed, we sometimes output rules like ++ # $(mkdir_p) $(somedir) ++ # where $(somedir) is conditionally defined. ++ # (`test -n '$(somedir)' && $(mkdir_p) $(somedir)' is a more ++ # expensive solution, as it forces Make to start a sub-shell.) ++ mkdir_p='mkdir -p -- .' ++else ++ # On NextStep and OpenStep, the `mkdir' command does not ++ # recognize any option. It will interpret all options as ++ # directories to create, and then abort because `.' already ++ # exists. ++ for d in ./-p ./--version; ++ do ++ test -d $d && rmdir $d ++ done ++ # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. ++ if test -f "$ac_aux_dir/mkinstalldirs"; then ++ mkdir_p='$(mkinstalldirs)' ++ else ++ mkdir_p='$(install_sh) -d' ++ fi ++fi ++AC_SUBST([mkdir_p])]) ++ ++# Helper functions for option handling. -*- 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_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 (C) 1996, 1997, 2000, 2001, 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 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)]) ++ ++# AM_PROG_INSTALL_STRIP ++ ++# Copyright (C) 2001, 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. ++ ++# 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])]) ++ +diff --exclude CVS -urN genext2fs-1.3.orig/autogen.sh genext2fs/autogen.sh +--- genext2fs-1.3.orig/autogen.sh 1969-12-31 17:00:00.000000000 -0700 ++++ genext2fs/autogen.sh 2004-11-21 23:24:52.000000000 -0700 +@@ -0,0 +1,22 @@ ++#!/bin/sh ++ ++die() { ++ echo "*** $0 failed :(" ++ exit 1 ++} ++ ++./clean.sh ++ ++automake_flags="-c -a" ++for p in aclocal autoconf automake ; do ++ flags=${p}_flags ++ if ! ${p} ${!flags} ; then ++ echo "*** ${p} failed :(" ++ exit 1 ++ fi ++done ++ ++echo ++echo "Now just run:" ++echo "./configure" ++echo "make" +diff --exclude CVS -urN genext2fs-1.3.orig/clean.sh genext2fs/clean.sh +--- genext2fs-1.3.orig/clean.sh 1969-12-31 17:00:00.000000000 -0700 ++++ genext2fs/clean.sh 2004-11-21 23:24:52.000000000 -0700 +@@ -0,0 +1,13 @@ ++#!/bin/bash ++ ++for f in \ ++ `find . -name Makefile.in -o -name Makefile` \ ++ `find . -name .libs -o -name .deps` \ ++ `find . -name '*.o' -o -name '*.la' -o -name '*.lo' -o -name '*.loT'` \ ++ aclocal.m4* autom4te.cache \ ++ configure config.* \ ++ depcomp install-sh ltmain.sh missing mkinstalldirs libtool \ ++ genext2fs ++do ++ rm -rf $f ++done +diff --exclude CVS -urN genext2fs-1.3.orig/configure genext2fs/configure +--- genext2fs-1.3.orig/configure 1969-12-31 17:00:00.000000000 -0700 ++++ genext2fs/configure 2004-12-27 13:03:46.000000000 -0700 +@@ -0,0 +1,4034 @@ ++#! /bin/sh ++# Guess values for system-dependent variables and create Makefiles. ++# Generated by GNU Autoconf 2.59. ++# ++# Copyright (C) 2003 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 ++DUALCASE=1; export DUALCASE # for MKS sh ++ ++# Support unset when possible. ++if ( (MAIL=60; unset MAIL) || exit) >/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 -z "`(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 ++ test -d ./-p && rmdir ./-p ++ as_mkdir_p=false ++fi ++ ++as_executable_p="test -f" ++ ++# Sed expression to map a string onto a valid CPP name. ++as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" ++ ++# Sed expression to map a string onto a valid variable name. ++as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" ++ ++ ++# 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="genext2fs.c" ++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 mkdir_p AWK SET_MAKE am__leading_dot 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 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 ++ ++# ++# 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 ++_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] ++ --disable-dependency-tracking speeds up one-time build ++ --enable-dependency-tracking do not reject slow dependency extractors ++ ++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> ++ ++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 ++ ++# Do not use `cd foo && pwd` to compute absolute paths, because ++# the directories may not exist. ++case `pwd` in ++.) ac_abs_builddir="$ac_dir";; ++*) ++ case "$ac_dir" in ++ .) ac_abs_builddir=`pwd`;; ++ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; ++ *) ac_abs_builddir=`pwd`/"$ac_dir";; ++ esac;; ++esac ++case $ac_abs_builddir in ++.) ac_abs_top_builddir=${ac_top_builddir}.;; ++*) ++ case ${ac_top_builddir}. in ++ .) ac_abs_top_builddir=$ac_abs_builddir;; ++ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; ++ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; ++ esac;; ++esac ++case $ac_abs_builddir in ++.) ac_abs_srcdir=$ac_srcdir;; ++*) ++ case $ac_srcdir in ++ .) ac_abs_srcdir=$ac_abs_builddir;; ++ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; ++ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; ++ esac;; ++esac ++case $ac_abs_builddir in ++.) ac_abs_top_srcdir=$ac_top_srcdir;; ++*) ++ case $ac_top_srcdir in ++ .) ac_abs_top_srcdir=$ac_abs_builddir;; ++ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; ++ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; ++ esac;; ++esac ++ ++ 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 (C) 2003 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.59. 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 && ++ 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.8" ++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" ++# OS/2's system install, which has a completely different semantic ++# ./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/* | \ ++ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ ++ /usr/ucb/* ) ;; ++ *) ++ # OSF1 and SCO ODT 3.0 have their own names for install. ++ # Don't use installbsd from OSF since it installs stuff as root ++ # by default. ++ for ac_prog in ginstall scoinst install; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if $as_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 ++ ++if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then ++ # Keeping the `.' argument allows $(mkdir_p) to be used without ++ # argument. Indeed, we sometimes output rules like ++ # $(mkdir_p) $(somedir) ++ # where $(somedir) is conditionally defined. ++ # (`test -n '$(somedir)' && $(mkdir_p) $(somedir)' is a more ++ # expensive solution, as it forces Make to start a sub-shell.) ++ mkdir_p='mkdir -p -- .' ++else ++ # On NextStep and OpenStep, the `mkdir' command does not ++ # recognize any option. It will interpret all options as ++ # directories to create, and then abort because `.' already ++ # exists. ++ for d in ./-p ./--version; ++ do ++ test -d $d && rmdir $d ++ done ++ # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. ++ if test -f "$ac_aux_dir/mkinstalldirs"; then ++ mkdir_p='$(mkinstalldirs)' ++ else ++ mkdir_p='$(install_sh) -d' ++ fi ++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=genext2fs ++ VERSION=1.3 ++ ++ ++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_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 ++/* 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 file name" >&5 ++echo $ECHO_N "checking for C compiler default output file name... $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 ++/* 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 ++/* 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>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); } && ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' ++ { (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); }; } && ++ { 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.err 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 ++/* 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>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); } && ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' ++ { (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); }; } && ++ { 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.err 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 ++/* 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; ++} ++ ++/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has ++ function prototypes and stuff, but not '\xHH' hex character constants. ++ These don't provoke an error unfortunately, instead are silently treated ++ as 'x'. The following induces an error, until -std1 is added to get ++ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an ++ array size at least. It's necessary to write '\x00'==0 to get something ++ that's true only with -std1. */ ++int osf4_cc_array ['\x00' == 0 ? 1 : -1]; ++ ++int test (int i, double x); ++struct s1 {int (*f) (int a);}; ++struct s2 {int (*f) (double a);}; ++int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); ++int argc; ++char **argv; ++int ++main () ++{ ++return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ++ ; ++ return 0; ++} ++_ACEOF ++# 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>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); } && ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' ++ { (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); }; } && ++ { 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.err 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>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); } && ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' ++ { (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); }; } && ++ { 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 \ ++ '' \ ++ '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 ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_declaration ++#include <stdlib.h> ++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>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); } && ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' ++ { (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); }; } && ++ { 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.err conftest.$ac_objext conftest.$ac_ext ++ cat >conftest.$ac_ext <<_ACEOF ++/* 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>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); } && ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' ++ { (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); }; } && ++ { 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.err 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.err 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 ++ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with ++ # Solaris 8's {/usr,}/bin/sh. ++ touch 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 ++ # or remarks (even with -Werror). So we grep stderr for any message ++ # that says an option was ignored or not supported. ++ # When given -MP, icc 7.0 and 7.1 complain thusly: ++ # icc: Command line warning: ignoring option '-M'; no argument required ++ # The diagnosis changed in icc 8.0: ++ # icc: Command line remark: option '-MP' not supported ++ if (grep 'ignoring option' conftest.err || ++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else ++ am_cv_CC_dependencies_compiler_type=$depmode ++ break ++ fi ++ fi ++ done ++ ++ cd .. ++ rm -rf conftest.dir ++else ++ am_cv_CC_dependencies_compiler_type=none ++fi ++ ++fi ++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" ++# OS/2's system install, which has a completely different semantic ++# ./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/* | \ ++ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ ++ /usr/ucb/* ) ;; ++ *) ++ # OSF1 and SCO ODT 3.0 have their own names for install. ++ # Don't use installbsd from OSF since it installs stuff as root ++ # by default. ++ for ac_prog in ginstall scoinst install; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ if $as_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' ++ ++ ac_config_files="$ac_config_files 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 ++ ++# Transform confdefs.h into DEFS. ++# Protect against shell expansion while executing Makefile rules. ++# Protect against Makefile macro expansion. ++# ++# If the first sed substitution is executed (which looks for macros that ++# take arguments), then we branch to the quote section. Otherwise, ++# look for a macro that doesn't take arguments. ++cat >confdef2opt.sed <<\_ACEOF ++t clear ++: clear ++s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g ++t quote ++s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g ++t quote ++d ++: quote ++s,[ `~#$^&*(){}\\|;'"<>?],\\&,g ++s,\[,\\&,g ++s,\],\\&,g ++s,\$,$$,g ++p ++_ACEOF ++# We use echo to avoid assuming a particular line-breaking character. ++# The extra dot is to prevent the shell from consuming trailing ++# line-breaks from the sub-command output. A line-break within ++# single-quotes doesn't work because, if this script is created in a ++# platform that uses two characters for line-breaks (e.g., DOS), tr ++# would break. ++ac_LF_and_DOT=`echo; echo .` ++DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` ++rm -f confdef2opt.sed ++ ++ ++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 "${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 ++DUALCASE=1; export DUALCASE # for MKS sh ++ ++# Support unset when possible. ++if ( (MAIL=60; unset MAIL) || exit) >/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 -z "`(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 ++ test -d ./-p && rmdir ./-p ++ as_mkdir_p=false ++fi ++ ++as_executable_p="test -f" ++ ++# Sed expression to map a string onto a valid CPP name. ++as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" ++ ++# Sed expression to map a string onto a valid variable name. ++as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" ++ ++ ++# 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.59. 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 + -+ * apply fix from upstream cvs that appears to fix endian bug -+ (closes: #122411) -+ * mention filesystem size limit in manpage (closes: #122729) -+ * mention that hard links are not supported in manpage -+ (closes: #155464) -+ * add sanity check at the end of the build ++if test -n "$ac_config_commands"; then ++ echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS ++fi + -+ -- David Kimdon <dwhedon@debian.org> Fri, 8 Mar 2002 23:17:36 -0800 ++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 ++ ++Configuration files: ++$config_files ++ ++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.59, ++ with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" ++ ++Copyright (C) 2003 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" ;; ++ "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; ++ *) { { 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_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,@mkdir_p@,$mkdir_p,;t t ++s,@AWK@,$AWK,;t t ++s,@SET_MAKE@,$SET_MAKE,;t t ++s,@am__leading_dot@,$am__leading_dot,;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,@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 ++ ++# Do not use `cd foo && pwd` to compute absolute paths, because ++# the directories may not exist. ++case `pwd` in ++.) ac_abs_builddir="$ac_dir";; ++*) ++ case "$ac_dir" in ++ .) ac_abs_builddir=`pwd`;; ++ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; ++ *) ac_abs_builddir=`pwd`/"$ac_dir";; ++ esac;; ++esac ++case $ac_abs_builddir in ++.) ac_abs_top_builddir=${ac_top_builddir}.;; ++*) ++ case ${ac_top_builddir}. in ++ .) ac_abs_top_builddir=$ac_abs_builddir;; ++ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; ++ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; ++ esac;; ++esac ++case $ac_abs_builddir in ++.) ac_abs_srcdir=$ac_srcdir;; ++*) ++ case $ac_srcdir in ++ .) ac_abs_srcdir=$ac_abs_builddir;; ++ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; ++ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; ++ esac;; ++esac ++case $ac_abs_builddir in ++.) ac_abs_top_srcdir=$ac_top_srcdir;; ++*) ++ case $ac_top_srcdir in ++ .) ac_abs_top_srcdir=$ac_abs_builddir;; ++ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; ++ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; ++ esac;; ++esac ++ ++ ++ case $INSTALL in ++ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; ++ *) ac_INSTALL=$ac_top_builddir$INSTALL ;; ++ esac ++ ++ # 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; } ++ ++ 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 ++_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_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'` ++ { 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 ++ ++# Do not use `cd foo && pwd` to compute absolute paths, because ++# the directories may not exist. ++case `pwd` in ++.) ac_abs_builddir="$ac_dir";; ++*) ++ case "$ac_dir" in ++ .) ac_abs_builddir=`pwd`;; ++ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; ++ *) ac_abs_builddir=`pwd`/"$ac_dir";; ++ esac;; ++esac ++case $ac_abs_builddir in ++.) ac_abs_top_builddir=${ac_top_builddir}.;; ++*) ++ case ${ac_top_builddir}. in ++ .) ac_abs_top_builddir=$ac_abs_builddir;; ++ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; ++ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; ++ esac;; ++esac ++case $ac_abs_builddir in ++.) ac_abs_srcdir=$ac_srcdir;; ++*) ++ case $ac_srcdir in ++ .) ac_abs_srcdir=$ac_abs_builddir;; ++ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; ++ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; ++ esac;; ++esac ++case $ac_abs_builddir in ++.) ac_abs_top_srcdir=$ac_top_srcdir;; ++*) ++ case $ac_top_srcdir in ++ .) ac_abs_top_srcdir=$ac_abs_builddir;; ++ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; ++ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; ++ esac;; ++esac ++ ++ ++ { 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 's/^DEPDIR = //p' < "$mf"` ++ test -z "$DEPDIR" && continue ++ # When using ansi2knr, U may be empty or an underscore; expand it ++ U=`sed -n 's/^U = //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 ' ++ /^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 ++ +diff --exclude CVS -urN genext2fs-1.3.orig/configure.in genext2fs/configure.in +--- genext2fs-1.3.orig/configure.in 1969-12-31 17:00:00.000000000 -0700 ++++ genext2fs/configure.in 2001-05-02 12:20:05.000000000 -0600 +@@ -0,0 +1,5 @@ ++AC_INIT(genext2fs.c) ++AM_INIT_AUTOMAKE(genext2fs,1.3) ++AC_PROG_CC ++AC_PROG_INSTALL ++AC_OUTPUT(Makefile) +diff --exclude CVS -urN genext2fs-1.3.orig/debian/changelog genext2fs/debian/changelog +--- genext2fs-1.3.orig/debian/changelog 1969-12-31 17:00:00.000000000 -0700 ++++ genext2fs/debian/changelog 2001-07-26 22:41:25.000000000 -0600 +@@ -0,0 +1,9 @@ +genext2fs (1.3-1) unstable; urgency=low + + * Initial Release. (closes: #105263) + + -- David Kimdon <dwhedon@debian.org> Sat, 14 Jul 2001 13:24:49 -0700 + -diff -urN genext2fs-1.3.orig/debian/control genext2fs-1.3/debian/control ++Local variables: ++mode: debian-changelog ++End: +diff --exclude CVS -urN genext2fs-1.3.orig/debian/control genext2fs/debian/control --- genext2fs-1.3.orig/debian/control 1969-12-31 17:00:00.000000000 -0700 -+++ genext2fs-1.3/debian/control 2003-04-21 01:41:42.000000000 -0600 ++++ genext2fs/debian/control 2001-07-16 18:01:00.000000000 -0600 @@ -0,0 +1,19 @@ +Source: genext2fs +Section: admin @@ -92,9 +5690,9 @@ diff -urN genext2fs-1.3.orig/debian/control genext2fs-1.3/debian/control + Warning ! `genext2fs' has been designed for embedded + systems. As such, it will generate a filesystem for single-user + usage: all files/directories/etc... will belong to UID/GID 0 -diff -urN genext2fs-1.3.orig/debian/copyright genext2fs-1.3/debian/copyright +diff --exclude CVS -urN genext2fs-1.3.orig/debian/copyright genext2fs/debian/copyright --- genext2fs-1.3.orig/debian/copyright 1969-12-31 17:00:00.000000000 -0700 -+++ genext2fs-1.3/debian/copyright 2003-04-21 01:41:42.000000000 -0600 ++++ genext2fs/debian/copyright 2001-07-16 18:01:00.000000000 -0600 @@ -0,0 +1,15 @@ +This package was debianized by David Kimdon <dwhedon@debian.org> on +Sat, 14 Jul 2001 13:24:49 -0700. @@ -111,10 +5709,10 @@ diff -urN genext2fs-1.3.orig/debian/copyright genext2fs-1.3/debian/copyright + +On Debian systems, the complete text of the GNU General Public +License can be found in /usr/share/common-licenses/GPL file. -diff -urN genext2fs-1.3.orig/debian/rules genext2fs-1.3/debian/rules +diff --exclude CVS -urN genext2fs-1.3.orig/debian/rules genext2fs/debian/rules --- genext2fs-1.3.orig/debian/rules 1969-12-31 17:00:00.000000000 -0700 -+++ genext2fs-1.3/debian/rules 2003-04-21 01:41:42.000000000 -0600 -@@ -0,0 +1,70 @@ ++++ genext2fs/debian/rules 2001-07-27 09:08:16.000000000 -0600 +@@ -0,0 +1,69 @@ +#!/usr/bin/make -f +# Sample debian/rules that uses debhelper. +# GNU copyright 1997 to 1999 by Joey Hess. @@ -139,7 +5737,6 @@ diff -urN genext2fs-1.3.orig/debian/rules genext2fs-1.3/debian/rules + + # Add here commands to compile the package. + $(MAKE) -+ $(MAKE) check + + touch build-stamp + @@ -185,9 +5782,539 @@ diff -urN genext2fs-1.3.orig/debian/rules genext2fs-1.3/debian/rules + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install configure -diff -urN genext2fs-1.3.orig/dev.txt genext2fs-1.3/dev.txt +diff --exclude CVS -urN genext2fs-1.3.orig/depcomp genext2fs/depcomp +--- genext2fs-1.3.orig/depcomp 1969-12-31 17:00:00.000000000 -0700 ++++ genext2fs/depcomp 2004-12-27 13:03:47.000000000 -0700 +@@ -0,0 +1,526 @@ ++#! /bin/sh ++# depcomp - compile a program generating dependencies as side-effects ++ ++scriptversion=2004-04-25.13 ++ ++# Copyright (C) 1999, 2000, 2003, 2004 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>. ++ ++case $1 in ++ '') ++ echo "$0: No command. Try \`$0 --help' for more information." 1>&2 ++ exit 1; ++ ;; ++ -h | --h*) ++ cat <<\EOF ++Usage: depcomp [--help] [--version] PROGRAM [ARGS] ++ ++Run PROGRAMS ARGS to compile a file, generating dependencies ++as side-effects. ++ ++Environment variables: ++ depmode Dependency tracking mode. ++ source Source file read by `PROGRAMS ARGS'. ++ object Object file output by `PROGRAMS ARGS'. ++ depfile Dependency file to output. ++ tmpdepfile Temporary file to use when outputing dependencies. ++ libtool Whether libtool is used (yes/no). ++ ++Report bugs to <bug-automake@gnu.org>. ++EOF ++ exit 0 ++ ;; ++ -v | --v*) ++ echo "depcomp $scriptversion" ++ exit 0 ++ ;; ++esac ++ ++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. In older versions, this file always lives in the ++ # current directory. Also, the AIX compiler puts `$object:' at the ++ # start of each line; $object doesn't have directory information. ++ # Version 6 uses the directory in both cases. ++ stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` ++ tmpdepfile="$stripped.u" ++ if test "$libtool" = yes; then ++ "$@" -Wc,-M ++ else ++ "$@" -M ++ fi ++ stat=$? ++ ++ if test -f "$tmpdepfile"; then : ++ else ++ stripped=`echo "$stripped" | sed 's,^.*/,,'` ++ tmpdepfile="$stripped.u" ++ fi ++ ++ if test $stat -eq 0; then : ++ else ++ rm -f "$tmpdepfile" ++ exit $stat ++ fi ++ ++ if test -f "$tmpdepfile"; then ++ outname="$stripped.o" ++ # 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) ++ # Intel's C compiler understands `-MD -MF file'. However on ++ # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c ++ # ICC 7.0 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: ++ # ICC 7.1 will output ++ # foo.o: sub/foo.c sub/foo.h ++ # and will wrap long lines using \ : ++ # foo.o: 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', ++ # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. ++ # Do two passes, one to just change these to ++ # `$object: dependent.h' and one to simply `dependent.h:'. ++ sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" ++ # Some versions of the HPUX 10.20 sed can't process this invocation ++ # correctly. Breaking it into two sed invocations is a workaround. ++ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | ++ sed -e 's/$/ :/' >> "$depfile" ++ rm -f "$tmpdepfile" ++ ;; ++ ++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 ++ # Dependencies are output in .lo.d with libtool 1.4. ++ # They are output in .o.d with libtool 1.5. ++ tmpdepfile1="$dir.libs/$base.lo.d" ++ tmpdepfile2="$dir.libs/$base.o.d" ++ tmpdepfile3="$dir.libs/$base.d" ++ "$@" -Wc,-MD ++ else ++ tmpdepfile1="$dir$base.o.d" ++ tmpdepfile2="$dir$base.d" ++ tmpdepfile3="$dir$base.d" ++ "$@" -MD ++ fi ++ ++ stat=$? ++ if test $stat -eq 0; then : ++ else ++ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" ++ exit $stat ++ fi ++ ++ if test -f "$tmpdepfile1"; then ++ tmpdepfile="$tmpdepfile1" ++ elif test -f "$tmpdepfile2"; then ++ tmpdepfile="$tmpdepfile2" ++ else ++ tmpdepfile="$tmpdepfile3" ++ fi ++ if test -f "$tmpdepfile"; then ++ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" ++ # That's a tab and a space 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 preprocessed 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 preprocessed 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 preprocessed 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 ++ ++# Local Variables: ++# mode: shell-script ++# sh-indentation: 2 ++# eval: (add-hook 'write-file-hooks 'time-stamp) ++# time-stamp-start: "scriptversion=" ++# time-stamp-format: "%:y-%02m-%02d.%02H" ++# time-stamp-end: "$" ++# End: +diff --exclude CVS -urN genext2fs-1.3.orig/dev.txt genext2fs/dev.txt --- genext2fs-1.3.orig/dev.txt 2000-09-28 09:03:19.000000000 -0600 -+++ genext2fs-1.3/dev.txt 1969-12-31 17:00:00.000000000 -0700 ++++ genext2fs/dev.txt 1969-12-31 17:00:00.000000000 -0700 @@ -1,94 +0,0 @@ -drwx /dev -crw- 10,190 /dev/lcd @@ -283,9 +6410,9 @@ diff -urN genext2fs-1.3.orig/dev.txt genext2fs-1.3/dev.txt -crw- 5,67 /dev/cua3 -crw- 5,68 /dev/cua4 -crw- 5,69 /dev/cua5 -diff -urN genext2fs-1.3.orig/device_table.txt genext2fs-1.3/device_table.txt +diff --exclude CVS -urN genext2fs-1.3.orig/device_table.txt genext2fs/device_table.txt --- genext2fs-1.3.orig/device_table.txt 1969-12-31 17:00:00.000000000 -0700 -+++ genext2fs-1.3/device_table.txt 2003-04-21 01:41:42.000000000 -0600 ++++ genext2fs/device_table.txt 2004-10-24 02:43:50.000000000 -0600 @@ -0,0 +1,129 @@ +# When building a target filesystem, it is desirable to not have to +# become root and then run 'mknod' a thousand times. Using a device @@ -416,10 +6543,10 @@ diff -urN genext2fs-1.3.orig/device_table.txt genext2fs-1.3/device_table.txt +#/dev/mcd b 640 0 0 23 0 0 0 - +#/dev/optcd b 640 0 0 17 0 0 0 - + -diff -urN genext2fs-1.3.orig/genext2fs.8 genext2fs-1.3/genext2fs.8 +diff --exclude CVS -urN genext2fs-1.3.orig/genext2fs.8 genext2fs/genext2fs.8 --- genext2fs-1.3.orig/genext2fs.8 1969-12-31 17:00:00.000000000 -0700 -+++ genext2fs-1.3/genext2fs.8 2003-04-21 01:41:42.000000000 -0600 -@@ -0,0 +1,125 @@ ++++ genext2fs/genext2fs.8 2004-10-24 02:43:50.000000000 -0600 +@@ -0,0 +1,129 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection @@ -447,6 +6574,10 @@ diff -urN genext2fs-1.3.orig/genext2fs.8 genext2fs-1.3/genext2fs.8 +as a normal (non-root) user. It doesn't require you to mount +the image file to copy files on it. It doesn't even require +you to be the superuser to make device nodes. ++.SH WARNING ++\fBgenext2fs\fP has been designed for embedded ++systems. As such, it will generate a filesystem for single-user ++usage: all files/directories/etc... will belong to UID/GID 0 +.SH OPTIONS +.TP +.BI -x \ image @@ -545,18 +6676,29 @@ diff -urN genext2fs-1.3.orig/genext2fs.8 genext2fs-1.3/genext2fs.8 +.SH AUTHOR +This manual page was written by David Kimdon <dwhedon@debian.org>, +for the Debian GNU/Linux system (but may be used by others). -diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c +diff --exclude CVS -urN genext2fs-1.3.orig/genext2fs.c genext2fs/genext2fs.c --- genext2fs-1.3.orig/genext2fs.c 2001-06-18 02:11:32.000000000 -0600 -+++ genext2fs-1.3/genext2fs.c 2003-04-21 01:48:35.000000000 -0600 -@@ -1,3 +1,4 @@ ++++ genext2fs/genext2fs.c 2004-12-08 04:51:42.000000000 -0700 +@@ -1,8 +1,14 @@ +/* vi: set sw=8 ts=8: */ // genext2fs.c // // ext2 filesystem generator for embedded systems -@@ -26,6 +27,22 @@ + // Copyright (C) 2000 Xavier Bestel <xavier.bestel@free.fr> + // ++// 'du' portions taken from coreutils/du.c in busybox: ++// Copyright (C) 1999,2000 by Lineo, inc. and John Beppu ++// Copyright (C) 1999,2000,2001 by John Beppu <beppu@codepoet.org> ++// Copyright (C) 2002 Edward Betts <edward@debian.org> ++// + // 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; version +@@ -26,6 +32,23 @@ // Bugfix: getcwd values for Solaris xavier.gueguen@col.bsf.alcatel.fr // Bugfix: ANSI scanf for non-GNU C xavier.gueguen@col.bsf.alcatel.fr // 28 Jun 2001 Bugfix: getcwd differs for Solaris/GNU mike@sowbug.com ++// 8 Mar 2002 Bugfix: endianness swap of x-indirects +// 23 Mar 2002 Bugfix: test for IFCHR or IFBLK was flawed +// 10 Oct 2002 Added comments,makefile targets, vsundar@ixiacom.com +// endianess swap assert check. @@ -565,18 +6707,18 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c +// Copyright (C) 2002 Ixia communications +// 14 Oct 2002 Added support for groups vsundar@ixiacom.com +// Copyright (C) 2002 Ixia communications -+// 5 Jan 2003 Bugfixes: reserved inodes should be set vsundar@usc.edu -+// only in the first group; directory names -+// need to be null padded at the end; and -+// number of blocks per group should be a -+// multiple of 8. Updated md5 values. -+// 6 Jan 2003 Erik Andersen <andersee@debian.org> added -+// mkfs.jffs2 compatible device table support, -+// along with -q, -P, -U ++// 5 Jan 2003 Bugfixes: reserved inodes should be set vsundar@usc.edu ++// only in the first group; directory names ++// need to be null padded at the end; and ++// number of blocks per group should be a ++// multiple of 8. Updated md5 values. ++// 6 Jan 2003 Erik Andersen <andersee@debian.org> added ++// mkfs.jffs2 compatible device table support, ++// along with -q, -P, -U // `genext2fs' is a mean to generate an ext2 filesystem -@@ -33,10 +50,6 @@ +@@ -33,10 +56,6 @@ // the image file to copy files on it. It doesn't even require // you to be the superuser to make device nodes. // @@ -587,7 +6729,7 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c // Example usage: // // # genext2fs -b 1440 -d srcdir /dev/fd0 -@@ -45,21 +58,15 @@ +@@ -45,41 +64,131 @@ // a new ext2 filesystem image. You can then mount the floppy as // usual. // @@ -605,16 +6747,17 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c -// This device list builds the /dev directory, a character device -// node /dev/lcd (major 10, minor 190) and a block device node -// /dev/ram0 (major 1, minor 0) +- +// then would read the device_table.txt file and make apropriate nodes. +// The format for the device table file is covered in detail in the sample +// device_table.txt file provided with the genext2fs source. - +#define _GNU_SOURCE #include <stdio.h> #include <stdlib.h> #include <string.h> -@@ -67,6 +74,11 @@ + #include <dirent.h> ++#include <libgen.h> #include <stdarg.h> #include <unistd.h> #include <sys/stat.h> @@ -623,15 +6766,105 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c +#include <ctype.h> +#include <errno.h> +#include <fcntl.h> ++#include <sys/types.h> ++#include <getopt.h> ++ ++struct stats { ++ unsigned long nblocks; ++ unsigned long ninodes; ++}; ++ ++#if 0 ++#define HASH_SIZE 311 /* Should be prime */ ++#define hash_inode(i) ((i) % HASH_SIZE) ++ ++typedef struct ino_dev_hash_bucket_struct { ++ struct ino_dev_hash_bucket_struct *next; ++ ino_t ino; ++ dev_t dev; ++ char name[1]; ++} ino_dev_hashtable_bucket_t; ++ ++static ino_dev_hashtable_bucket_t *ino_dev_hashtable[HASH_SIZE]; ++ ++static int is_in_ino_dev_hashtable(const struct stat *statbuf, char **name) ++{ ++ ino_dev_hashtable_bucket_t *bucket; ++ ++ bucket = ino_dev_hashtable[hash_inode(statbuf->st_ino)]; ++ while (bucket != NULL) { ++ if ((bucket->ino == statbuf->st_ino) && ++ (bucket->dev == statbuf->st_dev)) ++ { ++ if (name) *name = bucket->name; ++ return 1; ++ } ++ bucket = bucket->next; ++ } ++ return 0; ++} ++/* Add statbuf to statbuf hash table */ ++static void add_to_ino_dev_hashtable(const struct stat *statbuf, const char *name) ++{ ++ int i; ++ size_t s; ++ ino_dev_hashtable_bucket_t *bucket; ++ ++ i = hash_inode(statbuf->st_ino); ++ s = name ? strlen(name) : 0; ++ bucket = malloc(sizeof(ino_dev_hashtable_bucket_t) + s); ++ bucket->ino = statbuf->st_ino; ++ bucket->dev = statbuf->st_dev; ++ if (name) ++ strcpy(bucket->name, name); ++ else ++ bucket->name[0] = '\0'; ++ bucket->next = ino_dev_hashtable[i]; ++ ino_dev_hashtable[i] = bucket; ++} ++/* Clear statbuf hash table */ ++static void reset_ino_dev_hashtable(void) ++{ ++ int i; ++ ino_dev_hashtable_bucket_t *bucket; + ++ for (i = 0; i < HASH_SIZE; i++) { ++ while (ino_dev_hashtable[i] != NULL) { ++ bucket = ino_dev_hashtable[i]->next; ++ free(ino_dev_hashtable[i]); ++ ino_dev_hashtable[i] = bucket; ++ } ++ } ++} ++ ++static int count_ino_in_hashtable(void) ++{ ++ long count = 0; ++ int i; ++ ++ for (i = 0; i < HASH_SIZE; i++) { ++ ino_dev_hashtable_bucket_t *bucket = ino_dev_hashtable[i]; ++ while (bucket != NULL) { ++ count++; ++ bucket = bucket->next; ++ } ++ } ++ ++ return count; ++} ++#endif + + // block size -@@ -76,10 +88,14 @@ #define BLOCKSIZE 1024 #define BLOCKS_PER_GROUP 8192 #define BYTES_PER_INODE (8*BLOCKSIZE) +-#define RESERVED_INODES 5/100 +/* Percentage of blocks that are reserved.*/ - #define RESERVED_INODES 5/100 ++#define RESERVED_BLOCKS 5/100 ++#define MAX_RESERVED_BLOCKS 25/100 // inode block size (why is it != BLOCKSIZE ?!?) @@ -641,14 +6874,37 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c #define INODE_BLOCKSIZE 512 #define INOBLK (BLOCKSIZE / INODE_BLOCKSIZE) -@@ -147,6 +163,39 @@ +@@ -115,18 +224,20 @@ + // file modes + + #define FM_IFMT 0xF000 // format mask +-#define FM_IFLNK 0xA000 // socket +-#define FM_IFSOCK 0xC000 // symbolic link ++#define FM_IFLNK 0xA000 // symbolic link ++#define FM_IFSOCK 0xC000 // socket + #define FM_IFREG 0x8000 // regular file + #define FM_IFBLK 0x6000 // block device + #define FM_IFDIR 0x4000 // directory + #define FM_IFCHR 0x2000 // character device + #define FM_IFIFO 0x1000 // fifo + ++#define FM_IMASK 0x0FFF // all perms + #define FM_ISUID 0x0800 // SUID + #define FM_ISGID 0x0400 // SGID + #define FM_ISVTX 0x0200 // sticky bit + ++ + #define FM_IRWXU 0x01C0 // user mask + #define FM_IRUSR 0x0100 // read + #define FM_IWUSR 0x0080 // write +@@ -147,6 +258,39 @@ #define OP_HOLES 0x01 // make files with holes +/* Defines for accessing group details */ + +// Number of groups in the filesystem -+#define GRP_NBGROUPS(fs) ( ((fs)->sb.s_blocks_count-1)/(fs)->sb.s_blocks_per_group ) ++#define GRP_NBGROUPS(fs) (((fs)->sb.s_blocks_count+(fs)->sb.s_blocks_per_group-1)/(fs)->sb.s_blocks_per_group) + +// Get group block bitmap (bbm) given the group number +#define GRP_GET_GROUP_BBM(fs,grp) ( get_blk((fs),(fs)->gd[(grp)].bg_block_bitmap) ) @@ -681,7 +6937,31 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c // used types -@@ -287,7 +336,6 @@ +@@ -176,7 +320,7 @@ + #define SCANF_PREFIX "511" + #define SCANF_STRING(s) (s = malloc(512)) + #define GETCWD_SIZE -1 +-inline int snprintf(char *str, size_t n, const char *fmt, ...) ++static inline int snprintf(char *str, size_t n, const char *fmt, ...) + { + int ret; + va_list ap; +@@ -190,12 +334,12 @@ + + // endianness swap + +-inline uint16 swab16(uint16 val) ++static inline uint16 swab16(uint16 val) + { + return (val >> 8) | (val << 8); + } + +-inline uint32 swab32(uint32 val) ++static inline uint32 swab32(uint32 val) + { + return ((val>>24) | ((val>>8)&0xFF00) | + ((val<<8)&0xFF0000) | (val<<24)); +@@ -287,7 +431,6 @@ { groupdescriptor_decl uint32 bg_reserved[3]; @@ -689,7 +6969,7 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c } groupdescriptor; typedef struct -@@ -304,6 +352,32 @@ +@@ -304,6 +447,32 @@ typedef uint8 block[BLOCKSIZE]; @@ -722,7 +7002,7 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c typedef struct { uint32 bnum; -@@ -313,15 +387,14 @@ +@@ -313,15 +482,14 @@ uint32 bptind; } blockwalker; @@ -731,24 +7011,65 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c #if BLOCKSIZE == 1024 typedef struct { - block zero; // The famous block 0 - superblock sb; // The superblock +- block zero; // The famous block 0 +- superblock sb; // The superblock - groupdescriptor gd; // The group desciptor - block bbm; // The block bitmap - block ibm; // The inode bitmap - inode itab[0]; // The inode table ++ block zero; // The famous block 0 ++ superblock sb; // The superblock + groupdescriptor gd[0]; // The group descriptors } filesystem; #else #error UNHANDLED BLOCKSIZE -@@ -389,25 +462,113 @@ +@@ -345,35 +513,35 @@ + #define udecl32(x) this->x = swab32(this->x); + #define utdecl32(x,n) { int i; for(i=0; i<n; i++) this->x[i] = swab32(this->x[i]); } + +-void swap_sb(superblock *sb) ++static void swap_sb(superblock *sb) + { + #define this sb + superblock_decl + #undef this + } + +-void swap_gd(groupdescriptor *gd) ++static void swap_gd(groupdescriptor *gd) + { + #define this gd + groupdescriptor_decl + #undef this + } + +-void swap_nod(inode *nod) ++static void swap_nod(inode *nod) + { + #define this nod + inode_decl + #undef this + } + +-void swap_dir(directory *dir) ++static void swap_dir(directory *dir) + { + #define this dir + directory_decl + #undef this + } + +-void swap_block(block b) ++static void swap_block(block b) + { + int i; + uint32 *blk = (uint32*)b; +@@ -389,67 +557,158 @@ #undef udecl32 #undef utdecl32 -char * argv0; +static char * app_name; -+static int squash_uids = 0; -+static int squash_perms = 0; +static const char *const memory_exhausted = "memory exhausted"; // error (un)handling @@ -795,7 +7116,6 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c + s = ": "; + fprintf(stderr, "%s%s\n", s, strerror(err)); +} -+ +#if 0 +static void perror_msg(const char *s, ...) +{ @@ -812,14 +7132,10 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c + vperror_msg(s, p); + va_end(p); + exit(EXIT_FAILURE); - } - --inline void pexit(const char * fname) ++} ++ +static FILE *xfopen(const char *path, const char *mode) - { -- fprintf(stderr, "%s: ", argv0); -- perror(fname); -- exit(1); ++{ + FILE *fp; + if ((fp = fopen(path, mode)) == NULL) + perror_msg_and_die("%s", path); @@ -836,10 +7152,14 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c + if (t == NULL) + error_msg_and_die(memory_exhausted); + return t; -+} -+ -+extern void *xrealloc(void *ptr, size_t size) -+{ + } + +-inline void pexit(const char * fname) ++static void *xrealloc(void *ptr, size_t size) + { +- fprintf(stderr, "%s: ", argv0); +- perror(fname); +- exit(1); + ptr = realloc(ptr, size); + if (ptr == NULL && size != 0) + error_msg_and_die(memory_exhausted); @@ -863,23 +7183,51 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c + while (bufsize < readsize + 1); + + buf[readsize] = '\0'; -+ + return buf; } // printf helper macro -@@ -423,7 +584,7 @@ + #define plural(a) (a), ((a) > 1) ? "s" : "" + + // temporary working block +-inline uint8 * get_workblk(void) ++static inline uint8 * get_workblk(void) + { +- static block b; ++ unsigned char* b=calloc(1,BLOCKSIZE); + return b; + } +-inline void free_workblk(block b) ++static inline void free_workblk(block b) { ++ free(b); } -// rounds a quantity up to a blocksize +-uint32 rndup(uint32 qty, uint32 siz) +/* Rounds qty upto a multiple of siz. siz should be a power of 2 */ - uint32 rndup(uint32 qty, uint32 siz) ++static uint32 rndup(uint32 qty, uint32 siz) { return (qty + (siz - 1)) & ~(siz - 1); -@@ -444,7 +605,13 @@ + } + + // check if something is allocated in the bitmap +-inline uint32 allocated(block b, uint32 item) ++static inline uint32 allocated(block b, uint32 item) + { + return b[(item-1) / 8] & (1 << ((item-1) % 8)); + } + + // return a given block from a filesystem +-inline uint8 * get_blk(filesystem *fs, uint32 blk) ++static inline uint8 * get_blk(filesystem *fs, uint32 blk) + { + return (uint8*)fs + blk*BLOCKSIZE; + } + // return a given inode from a filesystem - inline inode * get_nod(filesystem *fs, uint32 nod) +-inline inode * get_nod(filesystem *fs, uint32 nod) ++static inline inode * get_nod(filesystem *fs, uint32 nod) { - return &fs->itab[nod-1]; + int grp,offset; @@ -892,12 +7240,25 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c } // allocate a given block/inode in the bitmap -@@ -479,29 +646,57 @@ + // allocate first free if item == 0 +-uint32 allocate(block b, uint32 item) ++static uint32 allocate(block b, uint32 item) + { + if(!item) + { +@@ -473,39 +732,67 @@ + } + + // deallocate a given block/inode +-void deallocate(block b, uint32 item) ++static void deallocate(block b, uint32 item) + { + b[(item-1) / 8] &= ~(1 << ((item-1) % 8)); } // allocate a block -uint32 alloc_blk(filesystem *fs) -+uint32 alloc_blk(filesystem *fs, uint32 nod) ++static uint32 alloc_blk(filesystem *fs, uint32 nod) { - uint32 bk; - if(!(bk = allocate(fs->bbm, 0))) @@ -927,7 +7288,8 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c } // allocate an inode - uint32 alloc_nod(filesystem *fs) +-uint32 alloc_nod(filesystem *fs) ++static uint32 alloc_nod(filesystem *fs) { - uint32 nod; - if(!(nod = allocate(fs->ibm, 0))) @@ -965,7 +7327,30 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c } // print a bitmap allocation -@@ -546,14 +741,14 @@ +-void print_bm(block b, uint32 max) ++static void print_bm(block b, uint32 max) + { + uint32 i; + printf("----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0\n"); +@@ -520,7 +807,7 @@ + } + + // initalize a blockwalker (iterator for blocks list) +-void init_bw(filesystem *fs, uint32 nod, blockwalker *bw) ++static void init_bw(filesystem *fs, uint32 nod, blockwalker *bw) + { + bw->bnum = 0; + bw->bpdir = EXT2_INIT_BLOCK; +@@ -529,7 +816,7 @@ + // return next block of inode (WALK_END for end) + // if create>0, append a newly allocated block at the end + // if hole!=0, create a hole in the file +-uint32 walk_bw(filesystem *fs, uint32 nod, blockwalker *bw, uint32 *create, uint32 hole) ++static uint32 walk_bw(filesystem *fs, uint32 nod, blockwalker *bw, uint32 *create, uint32 hole) + { + uint32 *bkref = 0; + uint32 *b; +@@ -546,14 +833,14 @@ { bkref = &get_nod(fs, nod)->i_block[bw->bpdir = 0]; if(extend) // allocate first block @@ -982,7 +7367,7 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c } // first block in indirect block else if(bw->bpdir == EXT2_NDIR_BLOCKS) -@@ -562,11 +757,11 @@ +@@ -562,11 +849,11 @@ bw->bpdir = EXT2_IND_BLOCK; bw->bpind = 0; if(extend) // allocate indirect block @@ -996,7 +7381,7 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c } // block in indirect block else if((bw->bpdir == EXT2_IND_BLOCK) && (bw->bpind < BLOCKSIZE/4 - 1)) -@@ -575,7 +770,7 @@ +@@ -575,7 +862,7 @@ b = (uint32*)get_blk(fs, get_nod(fs, nod)->i_block[bw->bpdir]); bkref = &b[bw->bpind]; if(extend) // allocate block @@ -1005,7 +7390,7 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c } // first block in first indirect block in first double indirect block else if(bw->bpdir == EXT2_IND_BLOCK) -@@ -585,14 +780,14 @@ +@@ -585,14 +872,14 @@ bw->bpind = 0; bw->bpdind = 0; if(extend) // allocate double indirect block @@ -1023,7 +7408,7 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c } // block in indirect block in double indirect block else if((bw->bpdir == EXT2_DIND_BLOCK) && (bw->bpdind < BLOCKSIZE/4 - 1)) -@@ -602,7 +797,7 @@ +@@ -602,7 +889,7 @@ b = (uint32*)get_blk(fs, b[bw->bpind]); bkref = &b[bw->bpdind]; if(extend) // allocate block @@ -1032,7 +7417,7 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c } // first block in indirect block in double indirect block else if((bw->bpdir == EXT2_DIND_BLOCK) && (bw->bpind < BLOCKSIZE/4 - 1)) -@@ -612,20 +807,100 @@ +@@ -612,20 +899,100 @@ bw->bpind++; b = (uint32*)get_blk(fs, get_nod(fs, nod)->i_block[bw->bpdir]); if(extend) // allocate indirect block @@ -1139,12 +7524,29 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c } if(extend) get_nod(fs, nod)->i_blocks = bw->bnum * INOBLK; -@@ -663,23 +938,40 @@ +@@ -633,7 +1000,7 @@ } + // add blocks to an inode (file/dir/etc...) +-void extend_blk(filesystem *fs, uint32 nod, block b, int amount) ++static void extend_blk(filesystem *fs, uint32 nod, block b, int amount) + { + int create = amount; + blockwalker bw, lbw; +@@ -662,24 +1029,35 @@ + } + } + ++static void truncate_nod(filesystem *fs, uint32 nod) ++{ ++ inode *node = get_nod(fs, nod); ++assert(!node->i_size); ++#warning truncate_nod() no yet implemented ++} ++ // link an entry (inode #) to a directory -void add2dir(filesystem *fs, uint32 dnod, uint32 nod, const char* name) -+void add2dir(filesystem *fs, uint32 dnod, uint32 nod, const char* name, uint32 mode, uid_t uid, gid_t gid, time_t ctime) ++static void add2dir(filesystem *fs, uint32 dnod, uint32 nod, const char* name) { blockwalker bw; uint32 bk; @@ -1155,26 +7557,13 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c - errexit("can't add '%s' to a non-directory", name); + inode *node; + inode *pnode; -+ -+ /* Squash all permissions so files are owned by root -+ * and file permissions have group/other perms removed */ -+ if (squash_uids) { -+ uid = gid = 0; -+ } -+ if (squash_perms) { -+ if (!S_ISLNK(mode)) { -+ mode &= ~(S_IWGRP | S_IWOTH); -+ mode &= ~(S_ISUID | S_ISGID); -+ } -+ } + + pnode = get_nod(fs, dnod); -+ -+ if(!S_ISDIR(pnode->i_mode)) ++ if((pnode->i_mode & FM_IFMT) != FM_IFDIR) + error_msg_and_die("can't add '%s' to a non-directory", name); if(!*name) - errexit("bad name '%s' (not meaningful)", name); -+ error_msg_and_die("bad name '%s' (not meaningful)", name); ++ error_msg_and_die("can't create an inode with an empty name"); if(strchr(name, '/')) - errexit("bad name '%s' (contains a slash)", name); + error_msg_and_die("bad name '%s' (contains a slash)", name); @@ -1186,7 +7575,7 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c init_bw(fs, dnod, &bw); while((bk = walk_bw(fs, dnod, &bw, 0, 0)) != WALK_END) // for all blocks in dir { -@@ -691,9 +983,16 @@ +@@ -691,7 +1069,8 @@ if((!d->d_inode) && (d->d_rec_len >= reclen)) { d->d_inode = nod; @@ -1194,18 +7583,9 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c + node = get_nod(fs, nod); + node->i_links_count++; d->d_name_len = nlen; -- strncpy(d->d_name, name, nlen); -+ strncpy(d->d_name, name, rndup(nlen,4)); -+ node->i_mode = mode; -+ node->i_uid = uid; -+ node->i_gid = gid; -+ node->i_atime = ctime; -+ node->i_ctime = ctime; -+ node->i_mtime = ctime; + strncpy(d->d_name, name, nlen); return; - } - // if entry with enough room (last one?), shrink it & use it -@@ -705,9 +1004,16 @@ +@@ -705,7 +1084,8 @@ d = (directory*) (((int8*)d) + d->d_rec_len); d->d_rec_len = reclen; d->d_inode = nod; @@ -1213,18 +7593,9 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c + node = get_nod(fs, nod); + node->i_links_count++; d->d_name_len = nlen; -- strncpy(d->d_name, name, nlen); -+ strncpy(d->d_name, name, rndup(nlen,4)); -+ node->i_mode = mode; -+ node->i_uid = uid; -+ node->i_gid = gid; -+ node->i_atime = ctime; -+ node->i_ctime = ctime; -+ node->i_mtime = ctime; + strncpy(d->d_name, name, nlen); return; - } - } -@@ -716,10 +1022,17 @@ +@@ -716,7 +1096,8 @@ b = get_workblk(); d = (directory*)b; d->d_inode = nod; @@ -1233,104 +7604,166 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c + node->i_links_count++; d->d_rec_len = BLOCKSIZE; d->d_name_len = nlen; -- strncpy(d->d_name, name, nlen); -+ strncpy(d->d_name, name, rndup(nlen,4)); -+ node->i_mode = mode; -+ node->i_uid = uid; -+ node->i_gid = gid; -+ node->i_atime = ctime; -+ node->i_ctime = ctime; -+ node->i_mtime = ctime; - extend_blk(fs, dnod, b, 1); - get_nod(fs, dnod)->i_size += BLOCKSIZE; - free_workblk(b); -@@ -747,7 +1060,7 @@ + strncpy(d->d_name, name, nlen); +@@ -726,7 +1107,7 @@ + } + + // find an entry in a directory +-uint32 find_dir(filesystem *fs, uint32 nod, const char * name) ++static uint32 find_dir(filesystem *fs, uint32 nod, const char * name) + { + blockwalker bw; + uint32 bk; +@@ -745,9 +1126,9 @@ + } + // find the inode of a full path - uint32 find_path(filesystem *fs, uint32 nod, const char * name) +-uint32 find_path(filesystem *fs, uint32 nod, const char * name) ++static uint32 find_path(filesystem *fs, uint32 nod, const char * name) { - char *p, *n, *n2 = strdup(name); + char *p, *n, *n2 = xstrdup(name); n = n2; while(*n == '/') { -@@ -770,27 +1083,32 @@ +@@ -769,28 +1150,62 @@ + return nod; } - // make a full-fledged directory (i.e. with "." & "..") +-// make a full-fledged directory (i.e. with "." & "..") -uint32 mkdir_fs(filesystem *fs, uint32 parent_nod, const char *name, uint32 mode) -+uint32 mkdir_fs(filesystem *fs, uint32 parent_nod, const char *name, uint32 mode, -+ uid_t uid, gid_t gid, time_t ctime) ++// create a simple inode ++static uint32 mknod_fs(filesystem *fs, uint32 parent_nod, const char *name, uint32 mode, uint16 uid, uint16 gid, uint8 major, uint8 minor, uint32 ctime, uint32 mtime) { uint32 nod; ++ inode *node; if((nod = find_dir(fs, parent_nod, name))) - return nod; - nod = alloc_nod(fs); +- return nod; +- nod = alloc_nod(fs); - get_nod(fs, nod)->i_mode = FM_IFDIR | mode; - add2dir(fs, parent_nod, nod, name); - add2dir(fs, nod, nod, "."); - add2dir(fs, nod, parent_nod, ".."); - fs->gd.bg_used_dirs_count++; -+ if (!(mode & FM_IFDIR)) -+ mode |= FM_IFDIR; -+ add2dir(fs, parent_nod, nod, name, mode, uid, gid, ctime); -+ add2dir(fs, nod, nod, ".", mode, uid, gid, ctime); -+ add2dir(fs, nod, parent_nod, "..", mode, uid, gid, ctime); -+ fs->gd[GRP_GROUP_OF_INODE(fs,nod)].bg_used_dirs_count++; ++ { ++ node = get_nod(fs, nod); ++ if((node->i_mode & FM_IFMT) != (mode & FM_IFMT)) ++ error_msg_and_die("node '%s' already exists and isn't of the same type", name); ++ node->i_mode = mode; ++ } ++ else ++ { ++ nod = alloc_nod(fs); ++ node = get_nod(fs, nod); ++ node->i_mode = mode; ++ add2dir(fs, parent_nod, nod, name); ++ switch(mode & FM_IFMT) ++ { ++ case FM_IFLNK: ++ mode = FM_IFLNK | FM_IRWXU | FM_IRWXG | FM_IRWXO; ++ break; ++ case FM_IFBLK: ++ case FM_IFCHR: ++ ((uint8*)get_nod(fs, nod)->i_block)[0] = minor; ++ ((uint8*)get_nod(fs, nod)->i_block)[1] = major; ++ break; ++ case FM_IFDIR: ++ add2dir(fs, nod, nod, "."); ++ add2dir(fs, nod, parent_nod, ".."); ++ fs->gd[GRP_GROUP_OF_INODE(fs,nod)].bg_used_dirs_count++; ++ break; ++ } ++ } ++ node->i_uid = uid; ++ node->i_gid = gid; ++ node->i_atime = mtime; ++ node->i_ctime = ctime; ++ node->i_mtime = mtime; return nod; } ++// make a full-fledged directory (i.e. with "." & "..") ++static inline uint32 mkdir_fs(filesystem *fs, uint32 parent_nod, const char *name, uint32 mode, ++ uid_t uid, gid_t gid, uint32 ctime, uint32 mtime) ++{ ++ return mknod_fs(fs, parent_nod, name, mode|FM_IFDIR, uid, gid, 0, 0, ctime, mtime); ++} ++ // make a symlink -uint32 mklink_fs(filesystem *fs, uint32 parent_nod, const char *name, size_t size, uint8 * b) -+uint32 mklink_fs(filesystem *fs, uint32 parent_nod, const char *name, size_t size, -+ uint8 * b, uid_t uid, gid_t gid, time_t ctime) ++static uint32 mklink_fs(filesystem *fs, uint32 parent_nod, const char *name, size_t size, uint8 *b, uid_t uid, gid_t gid, uint32 ctime, uint32 mtime) { -+ uint32 mode; - uint32 nod = alloc_nod(fs); -+ mode = FM_IFLNK | FM_IRWXU | FM_IRWXG | FM_IRWXO; - get_nod(fs, nod)->i_mode = FM_IFLNK | FM_IRWXU | FM_IRWXG | FM_IRWXO; +- uint32 nod = alloc_nod(fs); +- get_nod(fs, nod)->i_mode = FM_IFLNK | FM_IRWXU | FM_IRWXG | FM_IRWXO; ++ uint32 nod = mknod_fs(fs, parent_nod, name, FM_IFLNK | FM_IRWXU | FM_IRWXG | FM_IRWXO, uid, gid, 0, 0, ctime, mtime); ++ truncate_nod(fs, nod); get_nod(fs, nod)->i_size = size; - add2dir(fs, parent_nod, nod, name); -+ add2dir(fs, parent_nod, nod, name, mode, uid, gid, ctime); if(size <= 4 * (EXT2_TIND_BLOCK+1)) { strncpy((char*)get_nod(fs, nod)->i_block, (char*)b, size); -@@ -801,15 +1119,15 @@ +@@ -801,228 +1216,361 @@ } // make a file from a FILE* -uint32 mkfile_fs(filesystem *fs, uint32 parent_nod, const char *name, uint32 mode, size_t size, FILE *f) -+uint32 mkfile_fs(filesystem *fs, uint32 parent_nod, const char *name, uint32 mode, size_t size, FILE *f, uid_t uid, gid_t gid, time_t ctime) ++static uint32 mkfile_fs(filesystem *fs, uint32 parent_nod, const char *name, uint32 mode, size_t size, FILE *f, uid_t uid, gid_t gid, uint32 ctime, uint32 mtime) { uint8 * b; - uint32 nod = alloc_nod(fs); +- uint32 nod = alloc_nod(fs); - get_nod(fs, nod)->i_mode = FM_IFREG | mode; -+ mode |= FM_IFREG; ++ uint32 nod = mknod_fs(fs, parent_nod, name, mode|FM_IFREG, uid, gid, 0, 0, ctime, mtime); ++ truncate_nod(fs, nod); get_nod(fs, nod)->i_size = size; - add2dir(fs, parent_nod, nod, name); -+ add2dir(fs, parent_nod, nod, name, mode, uid, gid, ctime); if(!(b = (uint8*)malloc(rndup(size, BLOCKSIZE)))) - errexit("not enough mem to read file '%s'", name); + error_msg_and_die("not enough mem to read file '%s'", name); memset(b, 0,rndup(size, BLOCKSIZE)); if(f) - fread(b, size, 1, f); -@@ -824,6 +1142,15 @@ - uint32 get_mode(struct stat *st) +- fread(b, size, 1, f); ++ fread(b, size, 1, f); // FIXME: ugly. use mmap() ... + else +- memset(b, 0, size); ++ memset(b, 0, size); // .. or handle b = 0 + extend_blk(fs, nod, b, rndup(size, BLOCKSIZE) / BLOCKSIZE); + free(b); + return nod; + } + + // retrieves a mode info from a struct stat +-uint32 get_mode(struct stat *st) ++static uint32 get_mode(struct stat *st) { uint32 mode = 0; + -+ /* Squash file permissions as needed */ -+ if (squash_perms) { -+ if (!S_ISLNK(mode)) { -+ st->st_mode &= ~(S_IWGRP | S_IWOTH); -+ st->st_mode &= ~(S_ISUID | S_ISGID); -+ } -+ } -+ if(st->st_mode & S_IRUSR) - mode |= FM_IRUSR | FM_IRGRP | FM_IROTH; +- mode |= FM_IRUSR | FM_IRGRP | FM_IROTH; ++ mode |= FM_IRUSR; if(st->st_mode & S_IWUSR) -@@ -833,30 +1160,17 @@ +- mode |= FM_IWUSR | FM_IWGRP | FM_IWOTH; ++ mode |= FM_IWUSR; + if(st->st_mode & S_IXUSR) +- mode |= FM_IXUSR | FM_IXGRP | FM_IXOTH; ++ mode |= FM_IXUSR; ++ if(st->st_mode & S_IRGRP) ++ mode |= FM_IRGRP; ++ if(st->st_mode & S_IWGRP) ++ mode |= FM_IWGRP; ++ if(st->st_mode & S_IXGRP) ++ mode |= FM_IXGRP; ++ if(st->st_mode & S_IROTH) ++ mode |= FM_IROTH; ++ if(st->st_mode & S_IWOTH) ++ mode |= FM_IWOTH; ++ if(st->st_mode & S_IXOTH) ++ mode |= FM_IXOTH; ++ if(st->st_mode & S_ISUID) ++ mode |= FM_ISUID; ++ if(st->st_mode & S_ISGID) ++ mode |= FM_ISGID; ++ if(st->st_mode & S_ISVTX) ++ mode |= FM_ISVTX; return mode; } @@ -1347,25 +7780,51 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c - return mode; -} - - // basename of a path - free me - char * basename(const char * fullpath) - { - char * p = strrchr(fullpath, '/'); +-// basename of a path - free me +-char * basename(const char * fullpath) +-{ +- char * p = strrchr(fullpath, '/'); - return strdup(p ? p + 1 : fullpath); -+ return xstrdup(p ? p + 1 : fullpath); - } - - // dirname of a path - free me - char * dirname(const char * fullpath) - { +-} +- +-// dirname of a path - free me +-char * dirname(const char * fullpath) +-{ - char * p, * n = strdup(fullpath); -+ char * p, * n = xstrdup(fullpath); - if((p = strrchr(n, '/'))) - *(p+1) = 0; - else -@@ -864,66 +1178,6 @@ - return n; - } +- if((p = strrchr(n, '/'))) +- *(p+1) = 0; +- else +- *n = 0; +- return n; +-} ++// add or fixup entries to the filesystem from a text file ++/* device table entries take the form of: ++ <path> <type> <mode> <uid> <gid> <major> <minor> <start> <inc> <count> ++ /dev/mem c 640 0 0 1 1 0 0 - ++ ++ type can be one of: ++ f A regular file ++ d Directory ++ c Character special device file ++ b Block special device file ++ p Fifo (named pipe) ++ ++ I don't bother with symlinks (permissions are irrelevant), hard ++ links (special cases of regular files), or sockets (why bother). ++ ++ Regular files must exist in the target root directory. If a char, ++ block, fifo, or directory does not exist, it will be created. ++*/ ++ ++static void add2fs_from_file(filesystem *fs, uint32 this_nod, FILE * fh, int squash_uids, int squash_perms, struct stats *stats) ++{ ++ unsigned long mode, uid, gid, major, minor; ++ unsigned long start, increment, count; ++ uint32 nod, ctime, mtime; ++ char *c, type, *path = NULL, *path2 = NULL, *dir, *name, *line = NULL; ++ size_t len; ++ struct stat st; ++ int nbargs, lineno = 0; -// adds entries to the filesystem from a text file -void add2fs_from_file(filesystem *fs, uint32 this_nod, FILE * fh) @@ -1380,7 +7839,23 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c - break; - mode = get_modestr(cmod + 1); - switch(*cmod) -- { ++ fstat(fileno(fh), &st); ++ ctime = st.st_ctime; ++ mtime = st.st_mtime; ++ while(getline(&line, &len, fh) >= 0) ++ { ++ mode = uid = gid = major = minor = 0; ++ start = 0; increment = 1; count = 0; ++ lineno++; ++ if((c = strchr(line, '#'))) ++ *c = 0; ++ free(path); path = NULL; ++ free(path2); path2 = NULL; ++ nbargs = sscanf (line, "%" SCANF_PREFIX "s %c %lo %lu %lu %lu %lu %lu %lu %lu", ++ SCANF_STRING(path), &type, &mode, &uid, &gid, &major, &minor, ++ &start, &increment, &count); ++ if(nbargs < 3) + { - case 'd': - fscanf(fh, "%" SCANF_PREFIX "s\n", SCANF_STRING(path)); - break; @@ -1397,7 +7872,10 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c - continue; - default: - errexit("malformed text input file"); -- } ++ if(nbargs > 0) ++ error_msg("device table line %d skipped: bad format for entry '%s'", lineno, path); ++ continue; + } - name = basename(path); - dir = dirname(path); - free(path); @@ -1405,12 +7883,15 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c - errexit("can't find directory '%s' to create '%s''", dir, name); - free(dir); - if((!strcmp(name, ".")) || (!strcmp(name, ".."))) -- { ++ if(stats) + { - free(name); - continue; -- } ++ stats->ninodes += count ? count : 1; + } - switch(*cmod) -- { ++ else + { - case 'd': - mkdir_fs(fs, nod, name, mode); - break; @@ -1422,15 +7903,79 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c - ((uint8*)get_nod(fs, nod2)->i_block)[1] = major; - add2dir(fs, nod, nod2, name); - break; -- } ++ if(squash_uids) ++ uid = gid = 0; ++ if(squash_perms) ++ mode &= ~(FM_IRWXG | FM_IRWXO); ++ mode &= FM_IMASK; ++ path2 = strdup(path); ++ name = basename(path); ++ dir = dirname(path2); ++ if(!(nod = find_path(fs, this_nod, dir))) ++ { ++ error_msg("device table line %d skipped: can't find directory '%s' to create '%s''", lineno, dir, name); ++ continue; ++ } ++ if((!strcmp(name, ".")) || (!strcmp(name, ".."))) ++ { ++ error_msg("device table line %d skipped", lineno); ++ continue; ++ } ++ ++ switch (type) ++ { ++ case 'd': ++ mode |= FM_IFDIR; ++ break; ++ case 'f': ++ mode |= FM_IFREG; ++ break; ++ case 'p': ++ mode |= FM_IFIFO; ++ break; ++ case 'c': ++ mode |= FM_IFCHR; ++ break; ++ case 'b': ++ mode |= FM_IFBLK; ++ break; ++ default: ++ error_msg("device table line %d skipped: bad type '%c' for entry '%s'", lineno, type, name); ++ continue; ++ } ++ if(count > 0) ++ { ++ char *dname; ++ unsigned i, len; ++ len = strlen(name) + 10; ++ dname = malloc(len + 1); ++ for(i = start; i < count; i++) ++ { ++ snprintf(dname, len, "%s%u", name, i); ++ mknod_fs(fs, nod, dname, mode, uid, gid, major, minor + (i * increment - start), ctime, mtime); ++ } ++ free(dname); ++ } ++ else ++ mknod_fs(fs, nod, name, mode, uid, gid, major, minor, ctime, mtime); + } - free(name); -- } --} -- + } ++ free(line); ++ free(path); ++ free(path2); + } + // adds a tree of entries to the filesystem from current dir - void add2fs_from_dir(filesystem *fs, uint32 this_nod) +-void add2fs_from_dir(filesystem *fs, uint32 this_nod) ++static void add2fs_from_dir(filesystem *fs, uint32 this_nod, int squash_uids, int squash_perms, struct stats *stats) { -@@ -934,7 +1188,7 @@ + uint32 nod; ++ uint32 uid, gid, mode, ctime, mtime; ++ const char *name; + FILE *fh; + DIR *dh; + struct dirent *dent; struct stat st; uint8 *b; if(!(dh = opendir("."))) @@ -1439,49 +7984,113 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c while((dent = readdir(dh))) { if((!strcmp(dent->d_name, ".")) || (!strcmp(dent->d_name, ".."))) -@@ -948,31 +1202,27 @@ - get_nod(fs, nod)->i_mode = (((st.st_mode & S_IFMT) == S_IFCHR) ? FM_IFCHR : FM_IFBLK) | get_mode(&st); - ((uint8*)get_nod(fs, nod)->i_block)[0] = (st.st_rdev & 0xff); - ((uint8*)get_nod(fs, nod)->i_block)[1] = (st.st_rdev >> 8); + continue; + lstat(dent->d_name, &st); +- switch(st.st_mode & S_IFMT) +- { +- case S_IFCHR: +- case S_IFBLK: +- nod = alloc_nod(fs); +- get_nod(fs, nod)->i_mode = (((st.st_mode & S_IFMT) == S_IFCHR) ? FM_IFCHR : FM_IFBLK) | get_mode(&st); +- ((uint8*)get_nod(fs, nod)->i_block)[0] = (st.st_rdev & 0xff); +- ((uint8*)get_nod(fs, nod)->i_block)[1] = (st.st_rdev >> 8); - add2dir(fs, this_nod, nod, dent->d_name); -+ add2dir(fs, this_nod, nod, dent->d_name, st.st_mode, st.st_uid, st.st_gid, st.st_ctime); - break; - case S_IFLNK: +- break; +- case S_IFLNK: - if(!(b = (uint8*)malloc(rndup(st.st_size, BLOCKSIZE)))) - errexit("out of memory"); - if(readlink(dent->d_name, (char*)b, st.st_size) < 0) - pexit(dent->d_name); - mklink_fs(fs, this_nod, dent->d_name, st.st_size, b); -+ b = xreadlink(dent->d_name); -+ mklink_fs(fs, this_nod, dent->d_name, st.st_size, b, st.st_uid, st.st_gid, st.st_ctime); - free(b); - break; - case S_IFREG: +- free(b); +- break; +- case S_IFREG: - if(!(fh = fopen(dent->d_name, "r"))) - pexit(dent->d_name); - mkfile_fs(fs, this_nod, dent->d_name, get_mode(&st), st.st_size, fh); -+ fh = xfopen(dent->d_name, "r"); -+ mkfile_fs(fs, this_nod, dent->d_name, st.st_mode, st.st_size, fh, st.st_uid, st.st_gid, st.st_ctime); - fclose(fh); - break; - case S_IFDIR: +- fclose(fh); +- break; +- case S_IFDIR: - nod = mkdir_fs(fs, this_nod, dent->d_name, get_mode(&st)); -+ nod = mkdir_fs(fs, this_nod, dent->d_name, st.st_mode, st.st_uid, st.st_gid, st.st_ctime); - if(chdir(dent->d_name) < 0) +- if(chdir(dent->d_name) < 0) - pexit(dent->d_name); -+ perror_msg_and_die(dent->d_name); - add2fs_from_dir(fs, nod); - chdir(".."); - break; - default: +- add2fs_from_dir(fs, nod); +- chdir(".."); +- break; +- default: - fprintf(stderr, "ignoring entry %s", dent->d_name); -+ error_msg("ignoring entry %s", dent->d_name); - } +- } ++ uid = st.st_uid; ++ gid = st.st_gid; ++ ctime = st.st_ctime; ++ mtime = st.st_mtime; ++ name = dent->d_name; ++ mode = get_mode(&st); ++ if(squash_uids) ++ uid = gid = 0; ++ if(squash_perms) ++ mode &= ~(FM_IRWXG | FM_IRWXO); ++ if(stats) ++ switch(st.st_mode & S_IFMT) ++ { ++ case S_IFLNK: ++ case S_IFREG: ++ if((st.st_mode & S_IFMT) == S_IFREG || st.st_size > 4 * (EXT2_TIND_BLOCK+1)) ++ stats->nblocks += (st.st_size + BLOCKSIZE - 1) / BLOCKSIZE; ++ case S_IFCHR: ++ case S_IFBLK: ++ case S_IFIFO: ++ stats->ninodes++; ++ break; ++ case S_IFDIR: ++ stats->ninodes++; ++ if(chdir(dent->d_name) < 0) ++ perror_msg_and_die(dent->d_name); ++ add2fs_from_dir(fs, nod, squash_uids, squash_perms, stats); ++ chdir(".."); ++ break; ++ default: ++ break; ++ } ++ else ++ switch(st.st_mode & S_IFMT) ++ { ++ case S_IFCHR: ++ mknod_fs(fs, this_nod, name, mode|FM_IFCHR, uid, gid, st.st_rdev >> 8, st.st_rdev & 0xff, ctime, mtime); ++ break; ++ case S_IFBLK: ++ mknod_fs(fs, this_nod, name, mode|FM_IFBLK, uid, gid, st.st_rdev >> 8, st.st_rdev & 0xff, ctime, mtime); ++ break; ++ case S_IFIFO: ++ mknod_fs(fs, this_nod, name, mode|FM_IFIFO, uid, gid, 0, 0, ctime, mtime); ++ break; ++ case S_IFLNK: ++ b = xreadlink(dent->d_name); ++ mklink_fs(fs, this_nod, name, st.st_size, b, uid, gid, ctime, mtime); ++ free(b); ++ break; ++ case S_IFREG: ++ fh = xfopen(dent->d_name, "r"); ++ mkfile_fs(fs, this_nod, name, mode, st.st_size, fh, uid, gid, ctime, mtime); ++ fclose(fh); ++ break; ++ case S_IFDIR: ++ nod = mkdir_fs(fs, this_nod, name, mode, uid, gid, ctime, mtime); ++ if(chdir(dent->d_name) < 0) ++ perror_msg_and_die(name); ++ add2fs_from_dir(fs, nod, squash_uids, squash_perms, stats); ++ chdir(".."); ++ break; ++ default: ++ error_msg("ignoring entry %s", name); ++ } } closedir(dh); -@@ -981,9 +1231,11 @@ + } + // endianness swap of x-indirect blocks - void swap_goodblocks(filesystem *fs, inode *nod) +-void swap_goodblocks(filesystem *fs, inode *nod) ++static void swap_goodblocks(filesystem *fs, inode *nod) { - int i; + int i,j,done=0; @@ -1493,9 +8102,10 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c for(i = 0; i <= EXT2_TIND_BLOCK; i++) nod->i_block[i] = swab32(nod->i_block[i]); if(nblk <= EXT2_IND_BLOCK) -@@ -991,20 +1243,55 @@ + return; swap_block(get_blk(fs, nod->i_block[EXT2_IND_BLOCK])); - if(nblk <= EXT2_IND_BLOCK + BLOCKSIZE/4) +- if(nblk <= EXT2_IND_BLOCK + BLOCKSIZE/4) ++ if(nblk <= EXT2_DIND_BLOCK + BLOCKSIZE/4) return; + /* Currently this will fail b'cos the number of blocks as stored + in i_blocks also includes the indirection blocks (see @@ -1508,12 +8118,12 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c + started.This is benign as 0 means block 0 which has been + zeroed out and therefore points back to itself from any offset + */ ++ // FIXME: I have fixed that, but I have the feeling the rest of ++ // ths function needs to be fixed for the same reasons - Xav + assert(nod->i_block[EXT2_DIND_BLOCK] != 0); for(i = 0; i < BLOCKSIZE/4; i++) -+ /* Should this be... +- if(nblk > EXT2_IND_BLOCK + BLOCKSIZE/4 + i) + if(nblk > EXT2_IND_BLOCK + BLOCKSIZE/4 + (BLOCKSIZE/4)*i ) -+ */ - if(nblk > EXT2_IND_BLOCK + BLOCKSIZE/4 + i) swap_block(get_blk(fs, ((uint32*)get_blk(fs, nod->i_block[EXT2_DIND_BLOCK]))[i])); swap_block(get_blk(fs, nod->i_block[EXT2_DIND_BLOCK])); if(nblk <= EXT2_IND_BLOCK + BLOCKSIZE/4 + BLOCKSIZE/4 * BLOCKSIZE/4) @@ -1540,7 +8150,8 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c + return; } - void swap_badblocks(filesystem *fs, inode *nod) +-void swap_badblocks(filesystem *fs, inode *nod) ++static void swap_badblocks(filesystem *fs, inode *nod) { - int i; + int i,j,done=0; @@ -1552,16 +8163,17 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c for(i = 0; i <= EXT2_TIND_BLOCK; i++) nod->i_block[i] = swab32(nod->i_block[i]); if(nblk <= EXT2_IND_BLOCK) -@@ -1012,13 +1299,34 @@ + return; swap_block(get_blk(fs, nod->i_block[EXT2_IND_BLOCK])); - if(nblk <= EXT2_IND_BLOCK + BLOCKSIZE/4) +- if(nblk <= EXT2_IND_BLOCK + BLOCKSIZE/4) ++ if(nblk <= EXT2_DIND_BLOCK + BLOCKSIZE/4) return; + /* See comment in swap_goodblocks */ + assert(nod->i_block[EXT2_DIND_BLOCK] != 0); swap_block(get_blk(fs, nod->i_block[EXT2_DIND_BLOCK])); for(i = 0; i < BLOCKSIZE/4; i++) -+ /* See comment in swap_goodblocks */ - if(nblk > EXT2_IND_BLOCK + BLOCKSIZE/4 + i) +- if(nblk > EXT2_IND_BLOCK + BLOCKSIZE/4 + i) ++ if(nblk > EXT2_IND_BLOCK + BLOCKSIZE/4 + (BLOCKSIZE/4)*i ) swap_block(get_blk(fs, ((uint32*)get_blk(fs, nod->i_block[EXT2_DIND_BLOCK]))[i])); if(nblk <= EXT2_IND_BLOCK + BLOCKSIZE/4 + BLOCKSIZE/4 * BLOCKSIZE/4) return; @@ -1588,7 +8200,12 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c } // endianness swap of the whole filesystem -@@ -1045,7 +1353,8 @@ +-void swap_goodfs(filesystem *fs) ++static void swap_goodfs(filesystem *fs) + { + int i; + for(i = 1; i < fs->sb.s_inodes_count; i++) +@@ -1045,15 +1593,17 @@ swap_goodblocks(fs, nod); swap_nod(nod); } @@ -1598,7 +8215,8 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c swap_sb(&fs->sb); } -@@ -1053,7 +1362,8 @@ +-void swap_badfs(filesystem *fs) ++static void swap_badfs(filesystem *fs) { int i; swap_sb(&fs->sb); @@ -1608,7 +8226,15 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c for(i = 1; i < fs->sb.s_inodes_count; i++) { inode *nod = get_nod(fs, i); -@@ -1084,53 +1394,118 @@ +@@ -1077,60 +1627,123 @@ + } + + // initialize an empty filesystem +-filesystem * init_fs(int nbblocks, int nbinodes, int nbresrvd, int holes) ++static filesystem * init_fs(int nbblocks, int nbinodes, int nbresrvd, int holes) + { + int i; + filesystem *fs; directory *d; uint8 * b; uint32 nod; @@ -1618,6 +8244,7 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c + int j; + uint8 *bbm,*ibm; + inode *itab0; ++ uint32 now = time(NULL); if(nbblocks < 16) // totally arbitrary - errexit("too small filesystem"); @@ -1625,39 +8252,28 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c - errexit("too big filesystem"); + error_msg_and_die("too small filesystem"); + -+ /* nbblocks is the total number of blocks in the system. First -+ * calculate how much overhead blocks - inode table blocks,bitmap -+ * blocks,group descriptor blocks etc. - are needed assuming each -+ * group has BLOCKS_PER_GROUP blocks.Then recalculate nbblocks with -+ * this figure. Each group has the same number of blocks. So the fs -+ * has a size atleast the given value but usually rounded off to a i -+ * higher number. ++ /* nbblocks is the total number of blocks in the filesystem. First ++ * calculate the size of each group assuming each group has ++ * BLOCKS_PER_GROUP blocks (which is the maximum). Then recalculate ++ * blocks per group so that each group (except possibly the last one) ++ * has the same number of blocks. nbinodes is the total number of ++ * inodes in the system. These are divided between all groups. ++ * Then calculate the overhead blocks - inode table blocks, bitmap ++ * blocks, group descriptor blocks etc. + */ -+ nbgroups = rndup(nbblocks,BLOCKS_PER_GROUP)/ BLOCKS_PER_GROUP; -+ nbinodes_per_group = nbinodes/nbgroups +1; -+ nbinodes_per_group = rndup(nbinodes_per_group, BLOCKSIZE/sizeof(inode)); ++ ++ nbgroups = (nbblocks + BLOCKS_PER_GROUP - 1) / BLOCKS_PER_GROUP; ++ nbblocks_per_group = rndup((nbblocks + nbgroups - 1)/nbgroups, 8); ++ nbinodes_per_group = rndup((nbinodes + nbgroups - 1)/nbgroups, ++ (BLOCKSIZE/sizeof(inode))); + if (nbinodes_per_group < 16) + nbinodes_per_group = 16; //minimum number b'cos the first 10 are reserved -+ overhead_per_group = 3 /*super block,ibm,bbm*/ -+ + /* No. of blocks that the inodes occupy */ -+ nbinodes_per_group *sizeof(inode)/BLOCKSIZE -+ + /* No. of blocks that group descriptors occupy */ -+ rndup(nbgroups*sizeof(groupdescriptor),BLOCKSIZE)/BLOCKSIZE; -+ free_blocks = nbblocks - overhead_per_group * nbgroups - 1 /*boot block */; -+ free_blocks_per_group = free_blocks/nbgroups; -+ if (free_blocks > free_blocks_per_group * nbgroups) -+ free_blocks_per_group++; -+ nbblocks_per_group = free_blocks_per_group + overhead_per_group; -+ /* e2fsck complains if nbblocks_per_group is not a multiple of 8 */ -+ nbblocks_per_group = rndup(nbblocks_per_group,8); ++ ++ gd = rndup(nbgroups*sizeof(groupdescriptor),BLOCKSIZE)/BLOCKSIZE; ++ itbl = nbinodes_per_group * sizeof(inode)/BLOCKSIZE; ++ overhead_per_group = 3 /*sb,ibm,bbm*/ + itbl + gd; ++ free_blocks = nbblocks - overhead_per_group*nbgroups - 1 /*boot block*/; + free_blocks_per_group = nbblocks_per_group - overhead_per_group; -+ if (nbblocks_per_group > BLOCKS_PER_GROUP) { -+ /* Can this happen ? */ -+ nbblocks_per_group = BLOCKS_PER_GROUP; -+ free_blocks_per_group = nbblocks_per_group - overhead_per_group; -+ } -+ nbblocks = nbblocks_per_group * nbgroups + 1; -+ + if(!(fs = (filesystem*)calloc(nbblocks, BLOCKSIZE))) - errexit("not enough memory for filesystem"); @@ -1669,7 +8285,7 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c fs->sb.s_blocks_count = nbblocks; fs->sb.s_r_blocks_count = nbresrvd; - fs->sb.s_free_blocks_count = nbblocks; -+ fs->sb.s_free_blocks_count = free_blocks_per_group*nbgroups; ++ fs->sb.s_free_blocks_count = free_blocks; fs->sb.s_free_inodes_count = fs->sb.s_inodes_count - EXT2_FIRST_INO + 1; fs->sb.s_first_data_block = (BLOCKSIZE == 1024); fs->sb.s_log_block_size = BLOCKSIZE >> 11; @@ -1702,20 +8318,23 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c - allocate(fs->bbm, i); - for(i = 1; i < EXT2_FIRST_INO; i++) - allocate(fs->ibm, i); -- -- // make root inode and directory -- fs->itab[EXT2_ROOT_INO-1].i_mode = FM_IFDIR | FM_IRWXU | FM_IRWXG | FM_IRWXO; -- fs->itab[EXT2_ROOT_INO-1].i_size = BLOCKSIZE; -- fs->itab[EXT2_ROOT_INO-1].i_links_count = 2; -+ gd = rndup(nbgroups*sizeof(groupdescriptor),BLOCKSIZE)/BLOCKSIZE; -+ itbl = nbinodes_per_group*sizeof(inode)/BLOCKSIZE; + for(i = 0,bbmpos=2+gd,ibmpos=3+gd,itblpos =4+gd; + i<nbgroups; + i++, bbmpos += nbblocks_per_group,ibmpos += nbblocks_per_group, + itblpos += nbblocks_per_group) { + -+ fs->gd[i].bg_free_blocks_count = free_blocks_per_group; -+ fs->gd[i].bg_free_inodes_count = nbinodes_per_group; ++ if(free_blocks > free_blocks_per_group) { ++ fs->gd[i].bg_free_blocks_count = free_blocks_per_group; ++ free_blocks -= free_blocks_per_group; ++ } else { ++ fs->gd[i].bg_free_blocks_count = free_blocks; ++ free_blocks = 0; // this is the last block group ++ } ++ if(i) ++ fs->gd[i].bg_free_inodes_count = nbinodes_per_group; ++ else ++ fs->gd[i].bg_free_inodes_count = nbinodes_per_group - ++ EXT2_FIRST_INO + 2; + fs->gd[i].bg_used_dirs_count = 0; + fs->gd[i].bg_block_bitmap = bbmpos; + fs->gd[i].bg_inode_bitmap = ibmpos; @@ -1728,11 +8347,12 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c + + /* Block bitmap */ + bbm = get_blk(fs,fs->gd[i].bg_block_bitmap); -+ //non-filesystem blocks. -+ for(j=fs->sb.s_blocks_per_group + 1; j <= BLOCKSIZE * 8; j++) ++ //non-filesystem blocks ++ for(j = fs->gd[i].bg_free_blocks_count ++ + overhead_per_group + 1; j <= BLOCKSIZE * 8; j++) + allocate(bbm, j); + //system blocks -+ for(j = 1; j <= 3+gd+itbl; j++) ++ for(j = 1; j <= overhead_per_group; j++) + allocate(bbm, j); + + /* Inode bitmap */ @@ -1740,48 +8360,52 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c + //non-filesystem inodes + for(j = fs->sb.s_inodes_per_group+1; j <= BLOCKSIZE * 8; j++) + allocate(ibm, j); ++ //system inodes ++ if(i == 0) ++ for(j = 1; j < EXT2_FIRST_INO; j++) ++ allocate(ibm, j); + } -+ -+ /* We have groups now. Add the root filesystem in group 0 */ -+ /* Also allocate the system inodes in group 0 and update */ -+ /* directory count and inode count for group 0 */ -+ -+ ibm = get_blk(fs,fs->gd[0].bg_inode_bitmap); -+ for(j = 1; j < EXT2_FIRST_INO; j++) { -+ allocate(ibm, j); -+ fs->gd[0].bg_free_inodes_count--; -+ } + + // make root inode and directory +- fs->itab[EXT2_ROOT_INO-1].i_mode = FM_IFDIR | FM_IRWXU | FM_IRWXG | FM_IRWXO; +- fs->itab[EXT2_ROOT_INO-1].i_size = BLOCKSIZE; +- fs->itab[EXT2_ROOT_INO-1].i_links_count = 2; ++ /* We have groups now. Add the root filesystem in group 0 */ ++ /* Also increment the directory count for group 0 */ ++ fs->gd[0].bg_free_inodes_count--; + fs->gd[0].bg_used_dirs_count = 1; + itab0 = (inode *)get_blk(fs,fs->gd[0].bg_inode_table); -+ itab0[EXT2_ROOT_INO-1].i_mode = FM_IFDIR | FM_IRWXU | FM_IRWXG | FM_IRWXO; ++ itab0[EXT2_ROOT_INO-1].i_mode = FM_IFDIR | FM_IRWXU | FM_IRGRP | FM_IROTH | FM_IXGRP | FM_IXOTH; + itab0[EXT2_ROOT_INO-1].i_size = BLOCKSIZE; + itab0[EXT2_ROOT_INO-1].i_links_count = 2; + b = get_workblk(); d = (directory*)b; d->d_inode = EXT2_ROOT_INO; -@@ -1147,9 +1522,14 @@ +@@ -1147,9 +1760,14 @@ // make lost+found directory and reserve blocks if(fs->sb.s_r_blocks_count) { - nod = mkdir_fs(fs, EXT2_ROOT_INO, "lost+found", FM_IRWXU | FM_IRWXG | FM_IRWXO); -+ nod = mkdir_fs(fs, EXT2_ROOT_INO, "lost+found", S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH, 0, 0, time(NULL)); ++ nod = mkdir_fs(fs, EXT2_ROOT_INO, "lost+found", FM_IRWXU, 0, 0, now, now); memset(b, 0, BLOCKSIZE); ((directory*)b)->d_rec_len = BLOCKSIZE; + /* We run into problems with e2fsck if directory lost+found grows + * bigger than this. Need to find out why this happens - sundar + */ -+ if (fs->sb.s_r_blocks_count > 2049 ) -+ fs->sb.s_r_blocks_count=2049; ++ if (fs->sb.s_r_blocks_count > fs->sb.s_blocks_count * MAX_RESERVED_BLOCKS ) ++ fs->sb.s_r_blocks_count = fs->sb.s_blocks_count * MAX_RESERVED_BLOCKS; for(i = 1; i < fs->sb.s_r_blocks_count; i++) extend_blk(fs, nod, b, 1); get_nod(fs, nod)->i_size = fs->sb.s_r_blocks_count * BLOCKSIZE; -@@ -1170,24 +1550,24 @@ +@@ -1168,36 +1786,34 @@ + } + // loads a filesystem from disk - filesystem * load_fs(FILE * fh, int swapit) +-filesystem * load_fs(FILE * fh, int swapit) ++static filesystem * load_fs(FILE * fh, int swapit) { -- size_t fssize; -+ size_t fssize = 0; + size_t fssize; filesystem *fs; if((fseek(fh, 0, SEEK_END) < 0) || ((fssize = ftell(fh)) < 0)) - pexit("input filesystem image"); @@ -1793,8 +8417,6 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c - if(fssize > BLOCKS_PER_GROUP) // I build only one group - errexit("too big filesystem"); + error_msg_and_die("too small filesystem"); -+/* if(fssize > BLOCKS_PER_GROUP) // I build only one group -+ error_msg_and_die("too big filesystem"); */ if(!(fs = (filesystem*)calloc(fssize, BLOCKSIZE))) - errexit("not enough memory for filesystem"); + error_msg_and_die("not enough memory for filesystem"); @@ -1809,7 +8431,37 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c return fs; } -@@ -1230,9 +1610,9 @@ +-void free_fs(filesystem *fs) ++static void free_fs(filesystem *fs) + { + free(fs); + } + + // just walk through blocks list +-void flist_blocks(filesystem *fs, uint32 nod, FILE *fh) ++static void flist_blocks(filesystem *fs, uint32 nod, FILE *fh) + { + blockwalker bw; + uint32 bk; +@@ -1208,7 +1824,7 @@ + } + + // walk through blocks list +-void list_blocks(filesystem *fs, uint32 nod) ++static void list_blocks(filesystem *fs, uint32 nod) + { + int bn = 0; + blockwalker bw; +@@ -1221,7 +1837,7 @@ + } + + // saves blocks to FILE* +-void write_blocks(filesystem *fs, uint32 nod, FILE* f) ++static void write_blocks(filesystem *fs, uint32 nod, FILE* f) + { + blockwalker bw; + uint32 bk; +@@ -1230,15 +1846,15 @@ while((bk = walk_bw(fs, nod, &bw, 0, 0)) != WALK_END) { if(fsize <= 0) @@ -1821,7 +8473,14 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c fsize -= BLOCKSIZE; } } -@@ -1250,7 +1630,7 @@ + + // hexdumps blocks to a FILE* +-void hexdump_blocks(filesystem *fs, uint32 nod, FILE* f) ++static void hexdump_blocks(filesystem *fs, uint32 nod, FILE* f) + { + blockwalker bw; + uint32 bk; +@@ -1250,7 +1866,7 @@ { int i, j; if(fsize <= 0) @@ -1830,7 +8489,52 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c b = get_blk(fs, bk); for(i = 0; i < 64; i++) { -@@ -1406,7 +1786,7 @@ +@@ -1273,7 +1889,7 @@ + } + + // print block/char device minor and major +-void print_dev(filesystem *fs, uint32 nod) ++static void print_dev(filesystem *fs, uint32 nod) + { + int minor, major; + minor = ((uint8*)get_nod(fs, nod)->i_block)[0]; +@@ -1282,7 +1898,7 @@ + } + + // print an inode as a directory +-void print_dir(filesystem *fs, uint32 nod) ++static void print_dir(filesystem *fs, uint32 nod) + { + blockwalker bw; + uint32 bk; +@@ -1306,7 +1922,7 @@ + } + + // print a symbolic link +-void print_link(filesystem *fs, uint32 nod) ++static void print_link(filesystem *fs, uint32 nod) + { + if(!get_nod(fs, nod)->i_blocks) + printf("links to '%s'\n", (char*)get_nod(fs, nod)->i_block); +@@ -1319,7 +1935,7 @@ + } + + // make a ls-like printout of permissions +-void make_perms(uint32 mode, char perms[11]) ++static void make_perms(uint32 mode, char perms[11]) + { + strcpy(perms, "----------"); + if(mode & FM_IRUSR) +@@ -1378,7 +1994,7 @@ + } + + // print an inode +-void print_inode(filesystem *fs, uint32 nod) ++static void print_inode(filesystem *fs, uint32 nod) + { + char *s; + char perms[11]; +@@ -1406,7 +2022,7 @@ s = (nod >= EXT2_FIRST_INO) ? "normal" : "unknown reserved"; } printf("inode %d (%s, %d links): ", nod, s, get_nod(fs, nod)->i_links_count); @@ -1839,7 +8543,7 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c { printf("unallocated\n"); return; -@@ -1440,24 +1820,46 @@ +@@ -1440,58 +2056,76 @@ default: list_blocks(fs, nod); } @@ -1847,9 +8551,10 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c } // describes various fields in a filesystem - void print_fs(filesystem *fs) +-void print_fs(filesystem *fs) ++static void print_fs(filesystem *fs) { -- int i; + int i; - printf("%d blocks (%d free, %d reserved), first data block: %d\n", fs->sb.s_blocks_count, fs->sb.s_free_blocks_count, fs->sb.s_r_blocks_count, fs->sb.s_first_data_block); - printf("%d inodes (%d free)\n", fs->sb.s_inodes_count, fs->sb.s_free_inodes_count); - printf("block size = %d, frag size = %d\n", fs->sb.s_log_block_size ? (fs->sb.s_log_block_size << 11) : 1024, fs->sb.s_log_frag_size ? (fs->sb.s_log_frag_size << 11) : 1024); @@ -1862,7 +8567,6 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c - for(i=1; i<=fs->sb.s_inodes_count; i++) - if(allocated(fs->ibm, i)) - print_inode(fs, i); -+ int i,j; + uint8 *ibm; + + printf("%d blocks (%d free, %d reserved), first data block: %d\n", @@ -1873,33 +8577,33 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c + printf("block size = %d, frag size = %d\n", + fs->sb.s_log_block_size ? (fs->sb.s_log_block_size << 11) : 1024, + fs->sb.s_log_frag_size ? (fs->sb.s_log_frag_size << 11) : 1024); -+ printf("Number of groups: %d\n",GRP_NBGROUPS(fs)); ++ printf("number of groups: %d\n",GRP_NBGROUPS(fs)); + printf("%d blocks per group,%d frags per group,%d inodes per group\n", + fs->sb.s_blocks_per_group, fs->sb.s_frags_per_group, + fs->sb.s_inodes_per_group); + printf("Size of inode table: %d blocks\n", + fs->sb.s_inodes_per_group * sizeof(inode)/BLOCKSIZE); + for (i = 0; i < GRP_NBGROUPS(fs); i++) { -+ printf("Group No: %d\n", i); ++ printf("Group No: %d\n", i+1); + printf("block bitmap: block %d,inode bitmap: block %d, inode table: block %d\n", + fs->gd[i].bg_block_bitmap, fs->gd[i].bg_inode_bitmap, + fs->gd[i].bg_inode_table); -+ printf("Free blocks count: %d\n",fs->gd[i].bg_free_blocks_count); -+ printf("Free inodes count: %d\n",fs->gd[i].bg_free_inodes_count); -+ printf("Used dir count: %d\n",fs->gd[i].bg_used_dirs_count); + printf("block bitmap allocation:\n"); + print_bm(GRP_GET_GROUP_BBM(fs, i),fs->sb.s_blocks_per_group); + printf("inode bitmap allocation:\n"); + ibm = GRP_GET_GROUP_IBM(fs, i); + print_bm(ibm, fs->sb.s_inodes_per_group); -+ for (j = 1; j <= fs->sb.s_inodes_per_group; j++) -+ if (allocated(ibm, j)) -+ print_inode(fs, i*fs->sb.s_inodes_per_group + j); ++ for (i = 1; i <= fs->sb.s_inodes_per_group; i++) ++ if (allocated(ibm, i)) ++ print_inode(fs, i); + } } - void dump_fs(filesystem *fs, FILE * fh, int swapit) -@@ -1467,31 +1869,234 @@ +-void dump_fs(filesystem *fs, FILE * fh, int swapit) ++static void dump_fs(filesystem *fs, FILE * fh, int swapit) + { + int nbblocks = fs->sb.s_blocks_count; + fs->sb.s_reserved[200] = 0; if(swapit) swap_goodfs(fs); if(fwrite(fs, BLOCKSIZE, nbblocks, fh) < nbblocks) @@ -1909,211 +8613,8 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c swap_badfs(fs); } -+/* device table entries take the form of: -+ <path> <type> <mode> <uid> <gid> <major> <minor> <start> <inc> <count> -+ /dev/mem c 640 0 0 1 1 0 0 - -+ -+ type can be one of: -+ f A regular file -+ d Directory -+ c Character special device file -+ b Block special device file -+ p Fifo (named pipe) -+ -+ I don't bother with symlinks (permissions are irrelevant), hard -+ links (special cases of regular files), or sockets (why bother). -+ -+ Regular files must exist in the target root directory. If a char, -+ block, fifo, or directory does not exist, it will be created. -+*/ -+static int interpret_table_entry(filesystem *fs, char *line) -+{ -+ char type, *name = NULL, *tmp, *dir, *bname; -+ unsigned long mode = 0755, uid = 0, gid = 0, major = 0, minor = 0; -+ unsigned long start = 0, increment = 1, count = 0; -+ inode *entry; -+ uint32 nod, parent; -+ -+ if (sscanf (line, "%" SCANF_PREFIX "s %c %lo %lu %lu %lu %lu %lu %lu %lu", -+ SCANF_STRING(name), &type, &mode, &uid, &gid, &major, &minor, -+ &start, &increment, &count) < 0) -+ { -+ return 1; -+ } -+ -+ if (!strcmp(name, "/")) { -+ error_msg_and_die("Device table entries require absolute paths"); -+ } -+ -+ /* Check if this file already exists... */ -+ switch (type) { -+ case 'd': -+ mode |= S_IFDIR; -+ break; -+ case 'f': -+ mode |= S_IFREG; -+ break; -+ case 'p': -+ mode |= S_IFIFO; -+ break; -+ case 'c': -+ mode |= S_IFCHR; -+ break; -+ case 'b': -+ mode |= S_IFBLK; -+ break; -+ default: -+ error_msg_and_die("Unsupported file type"); -+ } -+ nod = 0; -+ if (count==0) -+ nod = find_path(fs, EXT2_ROOT_INO, name); -+ if (nod) { -+ /* Ok, we just need to fixup an existing entry -+ * and we will be all done... */ -+ entry = get_nod(fs, nod); -+ entry->i_uid = uid; -+ entry->i_gid = gid; -+ entry->i_mode = mode; -+ if (major) { -+ dev_t rdev = makedev(major, minor); -+ ((uint8*)entry->i_block)[0] = (rdev & 0xff); -+ ((uint8*)entry->i_block)[1] = (rdev >> 8); -+ } -+ } else { -+ /* Try and find our parent now */ -+ tmp = xstrdup(name); -+ dir = dirname(tmp); -+ parent = find_path(fs, EXT2_ROOT_INO, dir); -+ free(tmp); -+ if (!parent) { -+ error_msg ("skipping device_table entry '%s': no parent directory!", name); -+ free(name); -+ return 1; -+ } -+ -+ tmp = xstrdup(name); -+ bname = xstrdup(basename(tmp)); -+ free(tmp); -+ switch (type) { -+ case 'd': -+ mkdir_fs(fs, parent, bname, mode|FM_IFDIR, uid, gid, time(NULL)); -+ break; -+ case 'f': -+#if 0 -+ { -+ // This is a bit odd.. This will try to include -+ // the file of the same name from your _build_ -+ // system... Probably a very bad idea.... -+ struct stat st; -+ FILE *fh = xfopen(name, "r"); -+ lstat(name, &st); -+ mkfile_fs(fs, parent, bname, mode|FM_IFREG, st.st_size, fh, uid, gid, st.st_ctime); -+ fclose(fh); -+ } -+#else -+ error_msg("ignoring entry %s", name); -+#endif -+ break; -+ case 'p': -+ error_msg("ignoring entry %s", name); -+ break; -+ case 'c': -+ case 'b': -+ if (count > 0) { -+ dev_t rdev; -+ char *dname; -+ unsigned long i; -+ for (i = start; i < count; i++) { -+ asprintf(&dname, "%s%lu", bname, i); -+ nod = find_path(fs, EXT2_ROOT_INO, dname); -+ if (nod) { -+ /* We just need to fixup an existing entry */ -+ entry = get_nod(fs, nod); -+ } else { -+ nod = alloc_nod(fs); -+ add2dir(fs, parent, nod, dname, mode, uid, gid, time(NULL)); -+ entry = get_nod(fs, nod); -+ } -+ entry->i_uid = uid; -+ entry->i_gid = gid; -+ entry->i_mode = mode; -+ rdev = makedev(major, minor + (i * increment - start)); -+ ((uint8*)entry->i_block)[0] = (rdev & 0xff); -+ ((uint8*)entry->i_block)[1] = (rdev >> 8); -+ free(dname); -+ } -+ } else { -+ dev_t rdev = makedev(major, minor); -+ nod = alloc_nod(fs); -+ add2dir(fs, parent, nod, bname, mode, uid, gid, time(NULL)); -+ entry = get_nod(fs, nod); -+ ((uint8*)entry->i_block)[0] = (rdev & 0xff); -+ ((uint8*)entry->i_block)[1] = (rdev >> 8); -+ } -+ break; -+ default: -+ error_msg_and_die("Unsupported file type"); -+ } -+ free(bname); -+ } -+ free(name); -+ return 0; -+} -+ -+static int parse_device_table(filesystem *root, FILE * file) -+{ -+ char *line; -+ int status = 0; -+ size_t length = 0; -+ -+ /* Turn off squash, since we must ensure that values -+ * entered via the device table are not squashed */ -+ squash_uids = 0; -+ squash_perms = 0; -+ -+ /* Looks ok so far. The general plan now is to read in one -+ * line at a time, check for leading comment delimiters ('#'), -+ * then try and parse the line as a device table. If we fail -+ * to parse things, try and help the poor fool to fix their -+ * device table with a useful error msg... */ -+ line = NULL; -+ while (getline(&line, &length, file) != -1) { -+ /* First trim off any whitespace */ -+ int len = strlen(line); -+ -+ /* trim trailing whitespace */ -+ while (len > 0 && isspace(line[len - 1])) -+ line[--len] = '\0'; -+ /* trim leading whitespace */ -+ memmove(line, &line[strspn(line, " \n\r\t\v")], len); -+ -+ /* How long are we after trimming? */ -+ len = strlen(line); -+ -+ /* If this is NOT a comment line, try to interpret it */ -+ if (len && *line != '#') { -+ if (interpret_table_entry(root, line)) -+ status = 1; -+ } -+ -+ free(line); -+ line = NULL; -+ } -+ fclose(file); -+ -+ return status; -+} -+ -+/* -+Local Variables: -+c-file-style: "linux" -+c-basic-offset: 4 -+tab-width: 4 -+End: -+*/ -+ - void showhelp(void) +-void showhelp(void) ++static void showhelp(void) { fprintf(stderr, "Usage: %s [options] image\n" "Create an ext2 filesystem image from directories/files\n\n" @@ -2133,7 +8634,7 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c - "crw- 10,190 /dev/lcd\n" - "brw- 1,0 /dev/ram0\n\n" - "Report bugs to xavier.bestel@free.fr\n", argv0); -+ " -x image Use this image as a starting point\n" ++ " -x image Use this image as a starting point\n" + " -d directory Add this directory as source\n" + " -b blocks Size in blocks\n" + " -i inodes Number of inodes\n" @@ -2147,16 +8648,31 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c + " -P Squash permissions on all files\n" + " -v Print resulting filesystem structure\n" + " -h Show this help\n\n" -+ "Report bugs to xavier.bestel@free.fr\n", app_name); ++ "Report bugs to genext2fs-devel@lists.sourceforge.net\n", app_name); } #define MAX_DOPT 128 -@@ -1521,21 +2126,17 @@ +@@ -1507,6 +2141,8 @@ + int nbblocks = -1; + int nbinodes = -1; + int nbresrvd = -1; ++ int tmp_nbblocks = -1; ++ int tmp_nbinodes = -1; + char * fsout = "-"; + char * fsin = 0; + char * dopt[MAX_DOPT]; +@@ -1516,19 +2152,17 @@ + int verbose = 0; + int holes = 0; + int emptyval = 0; ++ int squash_uids = 0; ++ int squash_perms = 0; + uint16 endian = 1; + int bigendian = !*(char*)&endian; filesystem *fs; int i; int c; -+ struct stat sb; -+ FILE *devtable = NULL; ++ struct stats stats; - argv0 = argv[0]; - if(argc <= 1) @@ -2170,25 +8686,18 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c switch(c) { case 'x': - fsin = optarg; +@@ -1536,6 +2170,7 @@ break; case 'd': -- case 'f': + case 'f': ++ case 'D': dopt[didx++] = optarg; break; case 'b': -@@ -1556,6 +2157,24 @@ +@@ -1556,6 +2191,16 @@ case 'z': holes = 1; break; -+ case 'f': -+ case 'D': -+ devtable = xfopen(optarg, "r"); -+ if (fstat(fileno(devtable), &sb) < 0) -+ perror_msg_and_die(optarg); -+ if (sb.st_size < 10) -+ error_msg_and_die("%s: not a proper device table file", optarg); -+ break; + case 'q': + squash_uids = 1; + squash_perms = 1; @@ -2202,9 +8711,11 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c case 'v': verbose = 1; break; -@@ -1566,16 +2185,14 @@ +@@ -1565,17 +2210,16 @@ + default: exit(1); } ++ if(optind < (argc - 1)) - errexit("too many arguments"); + error_msg_and_die("too many arguments"); @@ -2221,38 +8732,84 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c fs = load_fs(fh, bigendian); fclose(fh); } -@@ -1585,7 +2202,7 @@ +@@ -1584,12 +2228,55 @@ + } else { ++ stats.ninodes = 0; ++ stats.nblocks = 0; ++ for(i = 0; i < didx; i++) ++ { ++ struct stat st; ++ FILE *fh; ++ char *pdir; ++ stat(dopt[i], &st); ++ switch(st.st_mode & S_IFMT) ++ { ++ case S_IFREG: ++ fh = xfopen(dopt[i], "r"); ++ add2fs_from_file(fs, EXT2_ROOT_INO, fh, squash_uids, squash_perms, &stats); ++ fclose(fh); ++ break; ++ case S_IFDIR: ++ if(!(pdir = getcwd(0, GETCWD_SIZE))) ++ perror_msg_and_die(dopt[i]); ++ if(chdir(dopt[i]) < 0) ++ perror_msg_and_die(dopt[i]); ++ add2fs_from_dir(fs, EXT2_ROOT_INO, squash_uids, squash_perms, &stats); ++ if(chdir(pdir) < 0) ++ perror_msg_and_die(pdir); ++ free(pdir); ++ break; ++ default: ++ error_msg_and_die("%s in neither a file nor a directory", dopt[i]); ++ } ++ } ++ ++ tmp_nbinodes = stats.ninodes + EXT2_FIRST_INO + 1; ++ tmp_nbblocks = stats.nblocks; // FIXME: should add space taken by inodes too ++ ++ if(tmp_nbblocks > nbblocks) ++ { ++ printf("number of blocks too low, increasing to %d\n",tmp_nbblocks); ++ nbblocks = tmp_nbblocks; ++ } ++ if(tmp_nbinodes > nbinodes) ++ { ++ printf("number of inodes too low, increasing to %d\n",tmp_nbinodes); ++ nbinodes = tmp_nbinodes; ++ } if(nbblocks == -1) - errexit("filesystem size unspecified"); + error_msg_and_die("filesystem size unspecified"); if(nbinodes == -1) nbinodes = nbblocks * BLOCKSIZE / rndup(BYTES_PER_INODE, BLOCKSIZE); if(nbresrvd == -1) -@@ -1595,35 +2212,30 @@ +- nbresrvd = nbblocks * RESERVED_INODES; ++ nbresrvd = nbblocks * RESERVED_BLOCKS; + fs = init_fs(nbblocks, nbinodes, nbresrvd, holes); + } for(i = 0; i < didx; i++) - { - struct stat st; -- FILE *fh; - char *pdir; - stat(dopt[i], &st); +@@ -1601,28 +2288,27 @@ switch(st.st_mode & S_IFMT) { -- case S_IFREG: + case S_IFREG: - if(!(fh = fopen(dopt[i], "r"))) - pexit(dopt[i]); - add2fs_from_file(fs, EXT2_ROOT_INO, fh); -- fclose(fh); -- break; ++ fh = xfopen(dopt[i], "r"); ++ add2fs_from_file(fs, EXT2_ROOT_INO, fh, squash_uids, squash_perms, NULL); + fclose(fh); + break; case S_IFDIR: if(!(pdir = getcwd(0, GETCWD_SIZE))) - pexit(dopt[i]); + perror_msg_and_die(dopt[i]); if(chdir(dopt[i]) < 0) - pexit(dopt[i]); +- add2fs_from_dir(fs, EXT2_ROOT_INO); + perror_msg_and_die(dopt[i]); - add2fs_from_dir(fs, EXT2_ROOT_INO); ++ add2fs_from_dir(fs, EXT2_ROOT_INO, squash_uids, squash_perms, NULL); if(chdir(pdir) < 0) - pexit(pdir); + perror_msg_and_die(pdir); @@ -2260,7 +8817,7 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c break; default: - errexit("%s in neither a file nor a directory", dopt[i]); -+ error_msg_and_die("%s is neither a file nor a directory", dopt[i]); ++ error_msg_and_die("%s in neither a file nor a directory", dopt[i]); } } if(emptyval) @@ -2268,12 +8825,9 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c - if(!allocated(fs->bbm, i)) + if(!allocated(GRP_GET_BLOCK_BITMAP(fs,i),GRP_BBM_OFFSET(fs,i))) memset(get_blk(fs, i), emptyval, BLOCKSIZE); -+ if(devtable) -+ parse_device_table(fs, devtable); if(verbose) print_fs(fs); - for(i = 0; i < gidx; i++) -@@ -1633,21 +2245,18 @@ +@@ -1633,25 +2319,23 @@ char *p; FILE *fh; if(!(nod = find_path(fs, EXT2_ROOT_INO, gopt[i]))) @@ -2298,9 +8852,707 @@ diff -urN genext2fs-1.3.orig/genext2fs.c genext2fs-1.3/genext2fs.c dump_fs(fs, fh, bigendian); fclose(fh); } -diff -urN genext2fs-1.3.orig/test-mount.sh genext2fs-1.3/test-mount.sh + else + dump_fs(fs, stdout, bigendian); ++ free_fs(fs); + return 0; + } +diff --exclude CVS -urN genext2fs-1.3.orig/install-sh genext2fs/install-sh +--- genext2fs-1.3.orig/install-sh 1969-12-31 17:00:00.000000000 -0700 ++++ genext2fs/install-sh 2004-12-27 13:03:47.000000000 -0700 +@@ -0,0 +1,325 @@ ++#!/bin/sh ++# install - install a program, script, or datafile ++ ++scriptversion=2004-04-01.17 ++ ++# This originates from X11R5 (mit/util/scripts/install.sh), which was ++# later released in X11R6 (xc/config/util/install.sh) with the ++# following copyright and license. ++# ++# Copyright (C) 1994 X Consortium ++# ++# Permission is hereby granted, free of charge, to any person obtaining a copy ++# of this software and associated documentation files (the "Software"), to ++# deal in the Software without restriction, including without limitation the ++# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or ++# sell copies of the Software, and to permit persons to whom the Software is ++# furnished to do so, subject to the following conditions: ++# ++# The above copyright notice and this permission notice shall be included in ++# all copies or substantial portions of the Software. ++# ++# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE ++# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN ++# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- ++# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++# ++# Except as contained in this notice, the name of the X Consortium shall not ++# be used in advertising or otherwise to promote the sale, use or other deal- ++# ings in this Software without prior written authorization from the X Consor- ++# tium. ++# ++# ++# FSF changes to this file are in the public domain. ++# ++# Calling this script install-sh is preferred over install.sh, to prevent ++# `make' implicit rules from creating a file called install from it ++# when there is no Makefile. ++# ++# This script is compatible with the BSD install script, but was written ++# from scratch. It can only install one file at a time, a restriction ++# shared with many OS's install programs. ++ ++# set DOITPROG to echo to test this script ++ ++# Don't use :- since 4.3BSD and earlier shells don't like it. ++doit="${DOITPROG-}" ++ ++# put in absolute paths if you don't have them in your path; or use env. vars. ++ ++mvprog="${MVPROG-mv}" ++cpprog="${CPPROG-cp}" ++chmodprog="${CHMODPROG-chmod}" ++chownprog="${CHOWNPROG-chown}" ++chgrpprog="${CHGRPPROG-chgrp}" ++stripprog="${STRIPPROG-strip}" ++rmprog="${RMPROG-rm}" ++mkdirprog="${MKDIRPROG-mkdir}" ++ ++transformbasename= ++transform_arg= ++instcmd="$mvprog" ++chmodcmd="$chmodprog 0755" ++chowncmd= ++chgrpcmd= ++stripcmd= ++rmcmd="$rmprog -f" ++mvcmd="$mvprog" ++src= ++dst= ++dir_arg= ++ ++usage="Usage: $0 [OPTION]... SRCFILE DSTFILE ++ or: $0 [OPTION]... SRCFILES... DIRECTORY ++ or: $0 -d DIRECTORIES... ++ ++In the first form, install SRCFILE to DSTFILE, removing SRCFILE by default. ++In the second, create the directory path DIR. ++ ++Options: ++-b=TRANSFORMBASENAME ++-c copy source (using $cpprog) instead of moving (using $mvprog). ++-d create directories instead of installing files. ++-g GROUP $chgrp installed files to GROUP. ++-m MODE $chmod installed files to MODE. ++-o USER $chown installed files to USER. ++-s strip installed files (using $stripprog). ++-t=TRANSFORM ++--help display this help and exit. ++--version display version info and exit. ++ ++Environment variables override the default commands: ++ CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG ++" ++ ++while test -n "$1"; do ++ case $1 in ++ -b=*) transformbasename=`echo $1 | sed 's/-b=//'` ++ shift ++ continue;; ++ ++ -c) instcmd=$cpprog ++ shift ++ continue;; ++ ++ -d) dir_arg=true ++ shift ++ continue;; ++ ++ -g) chgrpcmd="$chgrpprog $2" ++ shift ++ shift ++ continue;; ++ ++ --help) echo "$usage"; exit 0;; ++ ++ -m) chmodcmd="$chmodprog $2" ++ shift ++ shift ++ continue;; ++ ++ -o) chowncmd="$chownprog $2" ++ shift ++ shift ++ continue;; ++ ++ -s) stripcmd=$stripprog ++ shift ++ continue;; ++ ++ -t=*) transformarg=`echo $1 | sed 's/-t=//'` ++ shift ++ continue;; ++ ++ --version) echo "$0 $scriptversion"; exit 0;; ++ ++ *) # When -d is used, all remaining arguments are directories to create. ++ test -n "$dir_arg" && break ++ # Otherwise, the last argument is the destination. Remove it from $@. ++ for arg ++ do ++ if test -n "$dstarg"; then ++ # $@ is not empty: it contains at least $arg. ++ set fnord "$@" "$dstarg" ++ shift # fnord ++ fi ++ shift # arg ++ dstarg=$arg ++ done ++ break;; ++ esac ++done ++ ++if test -z "$1"; then ++ if test -z "$dir_arg"; then ++ echo "$0: no input file specified." >&2 ++ exit 1 ++ fi ++ # It's OK to call `install-sh -d' without argument. ++ # This can happen when creating conditional directories. ++ exit 0 ++fi ++ ++for src ++do ++ # Protect names starting with `-'. ++ case $src in ++ -*) src=./$src ;; ++ esac ++ ++ if test -n "$dir_arg"; then ++ dst=$src ++ src= ++ ++ if test -d "$dst"; then ++ instcmd=: ++ chmodcmd= ++ else ++ instcmd=$mkdirprog ++ fi ++ else ++ # Waiting for this to be detected by the "$instcmd $src $dsttmp" command ++ # might cause directories to be created, which would be especially bad ++ # if $src (and thus $dsttmp) contains '*'. ++ if test ! -f "$src" && test ! -d "$src"; then ++ echo "$0: $src does not exist." >&2 ++ exit 1 ++ fi ++ ++ if test -z "$dstarg"; then ++ echo "$0: no destination specified." >&2 ++ exit 1 ++ fi ++ ++ dst=$dstarg ++ # Protect names starting with `-'. ++ case $dst in ++ -*) dst=./$dst ;; ++ esac ++ ++ # If destination is a directory, append the input filename; won't work ++ # if double slashes aren't ignored. ++ if test -d "$dst"; then ++ dst=$dst/`basename "$src"` ++ fi ++ fi ++ ++ # This sed command emulates the dirname command. ++ dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` ++ ++ # Make sure that the destination directory exists. ++ ++ # Skip lots of stat calls in the usual case. ++ if test ! -d "$dstdir"; then ++ defaultIFS=' ++ ' ++ IFS="${IFS-$defaultIFS}" ++ ++ oIFS=$IFS ++ # Some sh's can't handle IFS=/ for some reason. ++ IFS='%' ++ set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` ++ IFS=$oIFS ++ ++ pathcomp= ++ ++ while test $# -ne 0 ; do ++ pathcomp=$pathcomp$1 ++ shift ++ if test ! -d "$pathcomp"; then ++ $mkdirprog "$pathcomp" || lasterr=$? ++ # mkdir can fail with a `File exist' error in case several ++ # install-sh are creating the directory concurrently. This ++ # is OK. ++ test ! -d "$pathcomp" && { (exit ${lasterr-1}); exit; } ++ fi ++ pathcomp=$pathcomp/ ++ done ++ fi ++ ++ if test -n "$dir_arg"; then ++ $doit $instcmd "$dst" \ ++ && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ ++ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ ++ && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ ++ && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } ++ ++ else ++ # If we're going to rename the final executable, determine the name now. ++ if test -z "$transformarg"; then ++ dstfile=`basename "$dst"` ++ else ++ dstfile=`basename "$dst" $transformbasename \ ++ | sed $transformarg`$transformbasename ++ fi ++ ++ # don't allow the sed command to completely eliminate the filename. ++ test -z "$dstfile" && dstfile=`basename "$dst"` ++ ++ # Make a couple of temp file names in the proper directory. ++ dsttmp=$dstdir/_inst.$$_ ++ rmtmp=$dstdir/_rm.$$_ ++ ++ # Trap to clean up those temp files at exit. ++ trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0 ++ trap '(exit $?); exit' 1 2 13 15 ++ ++ # Move or copy the file name to the temp name ++ $doit $instcmd "$src" "$dsttmp" && ++ ++ # and set any options; do chmod last to preserve setuid bits. ++ # ++ # If any of these fail, we abort the whole thing. If we want to ++ # ignore errors from any of these, just make sure not to ignore ++ # errors from the above "$doit $instcmd $src $dsttmp" command. ++ # ++ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ ++ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ ++ && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ ++ && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && ++ ++ # Now rename the file to the real destination. ++ { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ ++ || { ++ # The rename failed, perhaps because mv can't rename something else ++ # to itself, or perhaps because mv is so ancient that it does not ++ # support -f. ++ ++ # Now remove or move aside any old file at destination location. ++ # We try this two ways since rm can't unlink itself on some ++ # systems and the destination file might be busy for other ++ # reasons. In this case, the final cleanup might fail but the new ++ # file should still install successfully. ++ { ++ if test -f "$dstdir/$dstfile"; then ++ $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ ++ || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ ++ || { ++ echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 ++ (exit 1); exit ++ } ++ else ++ : ++ fi ++ } && ++ ++ # Now rename the file to the real destination. ++ $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" ++ } ++ } ++ fi || { (exit 1); exit; } ++done ++ ++# The final little trick to "correctly" pass the exit status to the exit trap. ++{ ++ (exit 0); exit ++} ++ ++# Local variables: ++# eval: (add-hook 'write-file-hooks 'time-stamp) ++# time-stamp-start: "scriptversion=" ++# time-stamp-format: "%:y-%02m-%02d.%02H" ++# time-stamp-end: "$" ++# End: +diff --exclude CVS -urN genext2fs-1.3.orig/missing genext2fs/missing +--- genext2fs-1.3.orig/missing 1969-12-31 17:00:00.000000000 -0700 ++++ genext2fs/missing 2004-12-27 13:03:47.000000000 -0700 +@@ -0,0 +1,360 @@ ++#! /bin/sh ++# Common stub for a few missing GNU programs while installing. ++ ++scriptversion=2003-09-02.23 ++ ++# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003 ++# Free Software Foundation, Inc. ++# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996. ++ ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2, or (at your option) ++# any later version. ++ ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++ ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, 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. ++ ++if test $# -eq 0; then ++ echo 1>&2 "Try \`$0 --help' for more information" ++ exit 1 ++fi ++ ++run=: ++ ++# In the cases where this matters, `missing' is being run in the ++# srcdir already. ++if test -f configure.ac; then ++ configure_ac=configure.ac ++else ++ configure_ac=configure.in ++fi ++ ++msg="missing on your system" ++ ++case "$1" in ++--run) ++ # Try to run requested program, and just exit if it succeeds. ++ run= ++ shift ++ "$@" && exit 0 ++ # Exit code 63 means version mismatch. This often happens ++ # when the user try to use an ancient version of a tool on ++ # a file that requires a minimum version. In this case we ++ # we should proceed has if the program had been absent, or ++ # if --run hadn't been passed. ++ if test $? = 63; then ++ run=: ++ msg="probably too old" ++ fi ++ ;; ++esac ++ ++# If it does not exist, or fails to run (possibly an outdated version), ++# try to emulate it. ++case "$1" in ++ ++ -h|--h|--he|--hel|--help) ++ echo "\ ++$0 [OPTION]... PROGRAM [ARGUMENT]... ++ ++Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an ++error status if there is no known handling for PROGRAM. ++ ++Options: ++ -h, --help display this help and exit ++ -v, --version output version information and exit ++ --run try to run the given command, and emulate it if it fails ++ ++Supported PROGRAM values: ++ aclocal touch file \`aclocal.m4' ++ autoconf touch file \`configure' ++ autoheader touch file \`config.h.in' ++ automake touch all \`Makefile.in' files ++ bison create \`y.tab.[ch]', if possible, from existing .[ch] ++ flex create \`lex.yy.c', if possible, from existing .c ++ help2man touch the output file ++ lex create \`lex.yy.c', if possible, from existing .c ++ makeinfo touch the output file ++ tar try tar, gnutar, gtar, then tar without non-portable flags ++ yacc create \`y.tab.[ch]', if possible, from existing .[ch] ++ ++Send bug reports to <bug-automake@gnu.org>." ++ ;; ++ ++ -v|--v|--ve|--ver|--vers|--versi|--versio|--version) ++ echo "missing $scriptversion (GNU Automake)" ++ ;; ++ ++ -*) ++ echo 1>&2 "$0: Unknown \`$1' option" ++ echo 1>&2 "Try \`$0 --help' for more information" ++ exit 1 ++ ;; ++ ++ aclocal*) ++ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then ++ # We have it, but it failed. ++ exit 1 ++ fi ++ ++ echo 1>&2 "\ ++WARNING: \`$1' is $msg. You should only need it if ++ you modified \`acinclude.m4' or \`${configure_ac}'. You might want ++ to install the \`Automake' and \`Perl' packages. Grab them from ++ any GNU archive site." ++ touch aclocal.m4 ++ ;; ++ ++ autoconf) ++ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then ++ # We have it, but it failed. ++ exit 1 ++ fi ++ ++ echo 1>&2 "\ ++WARNING: \`$1' is $msg. You should only need it if ++ you modified \`${configure_ac}'. You might want to install the ++ \`Autoconf' and \`GNU m4' packages. Grab them from any GNU ++ archive site." ++ touch configure ++ ;; ++ ++ autoheader) ++ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then ++ # We have it, but it failed. ++ exit 1 ++ fi ++ ++ echo 1>&2 "\ ++WARNING: \`$1' is $msg. You should only need it if ++ you modified \`acconfig.h' or \`${configure_ac}'. You might want ++ to install the \`Autoconf' and \`GNU m4' packages. Grab them ++ from any GNU archive site." ++ files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` ++ test -z "$files" && files="config.h" ++ touch_files= ++ for f in $files; do ++ case "$f" in ++ *:*) touch_files="$touch_files "`echo "$f" | ++ sed -e 's/^[^:]*://' -e 's/:.*//'`;; ++ *) touch_files="$touch_files $f.in";; ++ esac ++ done ++ touch $touch_files ++ ;; ++ ++ automake*) ++ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then ++ # We have it, but it failed. ++ exit 1 ++ fi ++ ++ echo 1>&2 "\ ++WARNING: \`$1' is $msg. You should only need it if ++ you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. ++ You might want to install the \`Automake' and \`Perl' packages. ++ Grab them from any GNU archive site." ++ find . -type f -name Makefile.am -print | ++ sed 's/\.am$/.in/' | ++ while read f; do touch "$f"; done ++ ;; ++ ++ autom4te) ++ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then ++ # We have it, but it failed. ++ exit 1 ++ fi ++ ++ echo 1>&2 "\ ++WARNING: \`$1' is needed, but is $msg. ++ You might have modified some files without having the ++ proper tools for further handling them. ++ You can get \`$1' as part of \`Autoconf' from any GNU ++ archive site." ++ ++ file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` ++ test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` ++ if test -f "$file"; then ++ touch $file ++ else ++ test -z "$file" || exec >$file ++ echo "#! /bin/sh" ++ echo "# Created by GNU Automake missing as a replacement of" ++ echo "# $ $@" ++ echo "exit 0" ++ chmod +x $file ++ exit 1 ++ fi ++ ;; ++ ++ bison|yacc) ++ echo 1>&2 "\ ++WARNING: \`$1' $msg. You should only need it if ++ you modified a \`.y' file. You may need the \`Bison' package ++ in order for those modifications to take effect. You can get ++ \`Bison' from any GNU archive site." ++ rm -f y.tab.c y.tab.h ++ if [ $# -ne 1 ]; then ++ eval LASTARG="\${$#}" ++ case "$LASTARG" in ++ *.y) ++ SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` ++ if [ -f "$SRCFILE" ]; then ++ cp "$SRCFILE" y.tab.c ++ fi ++ SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` ++ if [ -f "$SRCFILE" ]; then ++ cp "$SRCFILE" y.tab.h ++ fi ++ ;; ++ esac ++ fi ++ if [ ! -f y.tab.h ]; then ++ echo >y.tab.h ++ fi ++ if [ ! -f y.tab.c ]; then ++ echo 'main() { return 0; }' >y.tab.c ++ fi ++ ;; ++ ++ lex|flex) ++ echo 1>&2 "\ ++WARNING: \`$1' is $msg. You should only need it if ++ you modified a \`.l' file. You may need the \`Flex' package ++ in order for those modifications to take effect. You can get ++ \`Flex' from any GNU archive site." ++ rm -f lex.yy.c ++ if [ $# -ne 1 ]; then ++ eval LASTARG="\${$#}" ++ case "$LASTARG" in ++ *.l) ++ SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` ++ if [ -f "$SRCFILE" ]; then ++ cp "$SRCFILE" lex.yy.c ++ fi ++ ;; ++ esac ++ fi ++ if [ ! -f lex.yy.c ]; then ++ echo 'main() { return 0; }' >lex.yy.c ++ fi ++ ;; ++ ++ help2man) ++ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then ++ # We have it, but it failed. ++ exit 1 ++ fi ++ ++ echo 1>&2 "\ ++WARNING: \`$1' is $msg. You should only need it if ++ you modified a dependency of a manual page. You may need the ++ \`Help2man' package in order for those modifications to take ++ effect. You can get \`Help2man' from any GNU archive site." ++ ++ file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` ++ if test -z "$file"; then ++ file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` ++ fi ++ if [ -f "$file" ]; then ++ touch $file ++ else ++ test -z "$file" || exec >$file ++ echo ".ab help2man is required to generate this page" ++ exit 1 ++ fi ++ ;; ++ ++ makeinfo) ++ if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then ++ # We have makeinfo, but it failed. ++ exit 1 ++ fi ++ ++ echo 1>&2 "\ ++WARNING: \`$1' is $msg. You should only need it if ++ you modified a \`.texi' or \`.texinfo' file, or any other file ++ indirectly affecting the aspect of the manual. The spurious ++ call might also be the consequence of using a buggy \`make' (AIX, ++ DU, IRIX). You might want to install the \`Texinfo' package or ++ the \`GNU make' package. Grab either from any GNU archive site." ++ file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` ++ if test -z "$file"; then ++ file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` ++ file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` ++ fi ++ touch $file ++ ;; ++ ++ tar) ++ shift ++ if test -n "$run"; then ++ echo 1>&2 "ERROR: \`tar' requires --run" ++ exit 1 ++ fi ++ ++ # We have already tried tar in the generic part. ++ # Look for gnutar/gtar before invocation to avoid ugly error ++ # messages. ++ if (gnutar --version > /dev/null 2>&1); then ++ gnutar "$@" && exit 0 ++ fi ++ if (gtar --version > /dev/null 2>&1); then ++ gtar "$@" && exit 0 ++ fi ++ firstarg="$1" ++ if shift; then ++ case "$firstarg" in ++ *o*) ++ firstarg=`echo "$firstarg" | sed s/o//` ++ tar "$firstarg" "$@" && exit 0 ++ ;; ++ esac ++ case "$firstarg" in ++ *h*) ++ firstarg=`echo "$firstarg" | sed s/h//` ++ tar "$firstarg" "$@" && exit 0 ++ ;; ++ esac ++ fi ++ ++ echo 1>&2 "\ ++WARNING: I can't seem to be able to run \`tar' with the given arguments. ++ You may want to install GNU tar or Free paxutils, or check the ++ command line arguments." ++ exit 1 ++ ;; ++ ++ *) ++ echo 1>&2 "\ ++WARNING: \`$1' is needed, and is $msg. ++ You might have modified some files without having the ++ proper tools for further handling them. Check the \`README' file, ++ it often tells you about the needed prerequisites for installing ++ this package. You may also peek at any GNU archive site, in case ++ some other package would contain this missing \`$1' program." ++ exit 1 ++ ;; ++esac ++ ++exit 0 ++ ++# Local variables: ++# eval: (add-hook 'write-file-hooks 'time-stamp) ++# time-stamp-start: "scriptversion=" ++# time-stamp-format: "%:y-%02m-%02d.%02H" ++# time-stamp-end: "$" ++# End: +diff --exclude CVS -urN genext2fs-1.3.orig/test-mount.sh genext2fs/test-mount.sh --- genext2fs-1.3.orig/test-mount.sh 1969-12-31 17:00:00.000000000 -0700 -+++ genext2fs-1.3/test-mount.sh 2003-04-21 01:41:42.000000000 -0600 ++++ genext2fs/test-mount.sh 2004-10-24 02:43:50.000000000 -0600 @@ -0,0 +1,96 @@ +#!/bin/sh +set -e @@ -2398,9 +9650,9 @@ diff -urN genext2fs-1.3.orig/test-mount.sh genext2fs-1.3/test-mount.sh +ftest dev.txt 4096 + +exit 0 -diff -urN genext2fs-1.3.orig/test.sh genext2fs-1.3/test.sh +diff --exclude CVS -urN genext2fs-1.3.orig/test.sh genext2fs/test.sh --- genext2fs-1.3.orig/test.sh 1969-12-31 17:00:00.000000000 -0700 -+++ genext2fs-1.3/test.sh 2003-04-21 01:41:42.000000000 -0600 ++++ genext2fs/test.sh 2004-10-24 02:43:50.000000000 -0600 @@ -0,0 +1,53 @@ +#!/bin/sh +set -e |