diff options
| -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 | 
