[Forensics-changes] [SCM] debian-forensics/md5deep branch, upstream, updated. upstream/3.4-1-gd852584

Christophe Monniez christophe.monniez at fccu.be
Mon May 31 20:02:25 UTC 2010


The following commit has been merged in the upstream branch:
commit d85258432eee4cee540007d7e9fd880d5a602e9f
Author: Christophe Monniez <christophe.monniez at fccu.be>
Date:   Mon May 31 21:02:48 2010 +0200

    Adding upstream version 3.6.

diff --git a/ChangeLog b/ChangeLog
index 194a503..bad2509 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,101 @@
+2010-03-23 Jesse Kornblum
+
+	* Version bump to 3.6 and release
+
+	* Documented expert mode in hashdeep man page, getting started
+	  guide. Also made a few tweaks to the md5deep documentation.
+
+	* Added some error checking routines to helpers
+	
+
+2010-03-06 Jesse Kornblum
+
+	* Cleaned up md5deep/main.h comment styles. Also added a field
+	  to the state variable to keep track of the file's type. This
+	  is was handy for...
+
+	* Updating file size computation to use results of stat 
+	  operation normally done anyway during dig phase.
+	
+
+2010-02-26 Jesse Kornblum
+
+	* Adding 'expert' mode from md5deep to hashdeep.
+	
+
+2010-02-25 Jesse Kornblum
+
+	* Changed all contact email addresses to research account at
+	  jessekornblum.com. The 'md5deep' account will be deprecated.
+	
+
+2010-01-09 Jesse Kornblum
+
+	* Finished updating download links. Updated and published
+	  Hashdeep quick start guide
+
+	
+2009-12-30 Jesse Kornblum
+
+	* Converting documentation update to use rsync+ssh to upload content
+	
+
+2009-12-29 Jesse Kornblum
+
+	* Version bump to 3.5.1
+
+	* Attempting to fix bug 2922415 involving zero byte files
+
+	* Added a few items to the TODO list
+
+	* Started web page cleanup
+
+
+2009-12-21 Jesse Kornblum
+
+	* Attempting to fix bug 2919014 regarding hashdeep and its
+	  failure to detect when files go missing during an audit
+	  if there is another, identical file in a different location
+
+	* Cleanup on md5deep code for -f mode
+
+	* Revised list of new features for release 3.5
+
+
+2009-09-24 Jesse Kornblum
+
+	* Again revised patch 2855502 to handle the last read of
+	  files/stdin when no data is read. This happens when the
+	  file size is an exact multiple of the piecewise size.
+	
+
+2009-09-16 Jesse Kornblum
+
+	* Updated broken link on web page for Whirlpool.
+	
+
+2009-09-09 Jesse Kornblum
+
+	* Applied a modified version of patch 2855502 to fix file size 
+	  computation for piecewise hashing of stdin.
+	
+
+2009-07-11 Jesse Kornblum
+
+	* Added draft of Hashdeep Getting Started guide
+	
+
+2009-07-10 Jesse Kornblum
+
+	* Fixed method to read list of files to hash from a file.
+	
+
+2009-06-14 Jesse Kornblum 
+
+	* Experimenting with reading list of files to hash from another
+	  file in md5deep.
+	
+
 2009-05-22 Jesse Kornblum 
 
 	* Closed search handle in is_junction_point in response
diff --git a/Makefile.in b/Makefile.in
index 61c6b5a..596a9e2 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
@@ -15,8 +16,9 @@
 @SET_MAKE@
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -46,6 +48,7 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
 CONFIG_HEADER = config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
@@ -57,6 +60,9 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	ps-recursive uninstall-recursive
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
   distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir dist dist-all distcheck
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
@@ -64,9 +70,34 @@ 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); }; }
+  { test ! -d "$(distdir)" \
+    || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+         && rm -fr "$(distdir)"; }; }
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 DIST_ARCHIVES = $(distdir).tar.gz
 GZIP_ENV = --best
 distuninstallcheck_listfiles = find . -type f -print
@@ -189,15 +220,15 @@ $(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  \
+	      echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
+	      $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
 		&& exit 0; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -213,9 +244,10 @@ $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENC
 	$(SHELL) ./config.status --recheck
 
 $(top_srcdir)/configure:  $(am__configure_deps)
-	cd $(srcdir) && $(AUTOCONF)
+	$(am__cd) $(srcdir) && $(AUTOCONF)
 $(ACLOCAL_M4):  $(am__aclocal_m4_deps)
-	cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
 
 config.h: stamp-h1
 	@if test ! -f $@; then \
@@ -227,7 +259,7 @@ stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
 	@rm -f stamp-h1
 	cd $(top_builddir) && $(SHELL) ./config.status config.h
 $(srcdir)/config.h.in:  $(am__configure_deps) 
-	cd $(top_srcdir) && $(AUTOHEADER)
+	($(am__cd) $(top_srcdir) && $(AUTOHEADER))
 	rm -f stamp-h1
 	touch $@
 
@@ -241,7 +273,7 @@ distclean-hdr:
 #     (which will cause the Makefiles to be regenerated when you run `make');
 # (2) otherwise, pass the desired values on the `make' command line.
 $(RECURSIVE_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -258,7 +290,7 @@ $(RECURSIVE_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
@@ -266,7 +298,7 @@ $(RECURSIVE_TARGETS):
 	fi; test -z "$$fail"
 
 $(RECURSIVE_CLEAN_TARGETS):
-	@failcom='exit 1'; \
+	@fail= failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
 	    *=* | --[!k]*);; \
@@ -292,16 +324,16 @@ $(RECURSIVE_CLEAN_TARGETS):
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -316,7 +348,7 @@ tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -328,7 +360,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
@@ -337,36 +369,41 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
 	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
 distdir: $(DISTFILES)
 	$(am__remove_distdir)
-	test -d $(distdir) || mkdir $(distdir)
+	test -d "$(distdir)" || mkdir "$(distdir)"
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
@@ -382,38 +419,55 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test -d "$(distdir)/$$subdir" \
 	    || $(MKDIR_P) "$(distdir)/$$subdir" \
 	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
 		am__remove_distdir=: \
 		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
 	done
-	-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+	-test -n "$(am__skip_mode_fix)" \
+	|| find "$(distdir)" -type d ! -perm -755 \
+		-exec chmod u+rwx,go+rx {} \; -o \
 	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
 	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
 	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
-	|| chmod -R a+r $(distdir)
+	|| chmod -R a+r "$(distdir)"
 dist-gzip: distdir
 	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
 	$(am__remove_distdir)
@@ -426,6 +480,10 @@ dist-lzma: distdir
 	tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
 	$(am__remove_distdir)
 
+dist-xz: distdir
+	tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
+	$(am__remove_distdir)
+
 dist-tarZ: distdir
 	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
 	$(am__remove_distdir)
@@ -449,15 +507,17 @@ dist dist-all: distdir
 distcheck: dist
 	case '$(DIST_ARCHIVES)' in \
 	*.tar.gz*) \
-	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
 	*.tar.bz2*) \
-	  bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
 	*.tar.lzma*) \
-	  unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
+	  lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+	*.tar.xz*) \
+	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
 	*.tar.Z*) \
 	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
 	*.shar.gz*) \
-	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
 	*.zip*) \
 	  unzip $(distdir).zip ;;\
 	esac
@@ -465,9 +525,11 @@ distcheck: dist
 	mkdir $(distdir)/_build
 	mkdir $(distdir)/_inst
 	chmod a-w $(distdir)
+	test -d $(distdir)/_build || exit 0; \
 	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
 	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
-	  && cd $(distdir)/_build \
+	  && am__cwd=`pwd` \
+	  && $(am__cd) $(distdir)/_build \
 	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
 	    $(DISTCHECK_CONFIGURE_FLAGS) \
 	  && $(MAKE) $(AM_MAKEFLAGS) \
@@ -489,13 +551,15 @@ distcheck: dist
 	  && rm -rf "$$dc_destdir" \
 	  && $(MAKE) $(AM_MAKEFLAGS) dist \
 	  && rm -rf $(DIST_ARCHIVES) \
-	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+	  && cd "$$am__cwd" \
+	  || exit 1
 	$(am__remove_distdir)
 	@(echo "$(distdir) archives ready for distribution: "; \
 	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
 	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
 distuninstallcheck:
-	@cd $(distuninstallcheck_dir) \
+	@$(am__cd) '$(distuninstallcheck_dir)' \
 	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
 	   || { echo "ERROR: files left after uninstall:" ; \
 	        if test -n "$(DESTDIR)"; then \
@@ -537,6 +601,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -556,6 +621,8 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
@@ -564,18 +631,28 @@ install-data-am:
 
 install-dvi: install-dvi-recursive
 
+install-dvi-am:
+
 install-exec-am:
 
 install-html: install-html-recursive
 
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
 install-pdf: install-pdf-recursive
 
+install-pdf-am:
+
 install-ps: install-ps-recursive
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -598,21 +675,21 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
-	install-strip
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
+	ctags-recursive install-am install-strip tags-recursive
 
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am am--refresh check check-am clean clean-generic \
 	ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
-	dist-lzma dist-shar dist-tarZ dist-zip distcheck distclean \
-	distclean-generic distclean-hdr distclean-tags distcleancheck \
-	distdir distuninstallcheck dvi dvi-am html html-am info \
-	info-am install install-am install-data install-data-am \
-	install-dvi install-dvi-am install-exec install-exec-am \
-	install-html install-html-am install-info install-info-am \
-	install-man install-pdf install-pdf-am install-ps \
-	install-ps-am install-strip installcheck installcheck-am \
-	installdirs installdirs-am maintainer-clean \
+	dist-lzma dist-shar dist-tarZ dist-xz dist-zip distcheck \
+	distclean distclean-generic distclean-hdr distclean-tags \
+	distcleancheck distdir distuninstallcheck dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
 	pdf-am ps ps-am tags tags-recursive uninstall uninstall-am
 
@@ -667,6 +744,7 @@ world: distclean
 	make
 	make win-package
 	make dist
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/NEWS b/NEWS
index 2651808..efcda80 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,40 @@
+** Changes in version 3.6 (23 Mar 2010)
+
+* New Features
+
+      Added expert mode found in md5deep to hashdeep.
+
+* Bug Fixes
+
+      Fixed error checking in helper routines.
+
+
+
+
+** Changes in version 3.5.1 (30 Dec 2009)
+
+* Bug Fixes
+
+      Fixed processing of zero byte files.
+
+
+
+
+** Changes in version 3.5 (22 Dec 2009)
+
+* New Features
+
+      Added mode to load list of files to process from a file (-f mode)
+
+* Bug Fixes
+
+      Fixed file size computation for piecewise hashing of standard input.
+
+      Fixed error when auditing a directory to check for identical copies
+      of a file if one copy is removed.
+
+
+
 ** Changes in version 3.4 (11 Jun 2009)
 
 * Bug Fixes
diff --git a/TODO b/TODO
index 18c47c0..46fae3f 100644
--- a/TODO
+++ b/TODO
@@ -1,3 +1,12 @@
+*** Update trove descriptions and other sf.net text to include hashdeep
+
+*** Edit md5deep web page
+    - Describe hashdeep in the introduction
+
+*** Create unit test directive/code
+
+*** Write hashdeep quickstart guide
+
 *** Create FAQ
   - Why nothing happens when I double click it
   - Why is this better than one line of shell
@@ -5,6 +14,3 @@
 *** Add support for hashdeep to use NSRL files and other types?
 
 *** Add timestamp mode (-t) to hashdeep
-
-*** Add 'make test' directive to run compiled programs on test files 
-    and ensure compilation was successful. 
diff --git a/aclocal.m4 b/aclocal.m4
index cc5936e..7d4b74e 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,7 +1,7 @@
-# generated automatically by aclocal 1.10.2 -*- Autoconf -*-
+# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2005, 2006, 2007, 2008, 2009  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.
@@ -31,10 +31,10 @@ To do so, use the procedure documented by the package, typically `autoreconf'.])
 # generated from the m4 files accompanying Automake X.Y.
 # (This private macro should not be called outside this file.)
 AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.10'
+[am__api_version='1.11'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.10.2], [],
+m4_if([$1], [1.11.1], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -50,7 +50,7 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.10.2])dnl
+[AM_AUTOMAKE_VERSION([1.11.1])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
@@ -110,14 +110,14 @@ am_aux_dir=`cd $ac_aux_dir && pwd`
 
 # AM_CONDITIONAL                                            -*- Autoconf -*-
 
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
 # 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.
 
-# serial 8
+# serial 9
 
 # AM_CONDITIONAL(NAME, SHELL-CONDITION)
 # -------------------------------------
@@ -130,6 +130,7 @@ AC_SUBST([$1_TRUE])dnl
 AC_SUBST([$1_FALSE])dnl
 _AM_SUBST_NOTMAKE([$1_TRUE])dnl
 _AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
 if $2; then
   $1_TRUE=
   $1_FALSE='#'
@@ -143,14 +144,14 @@ AC_CONFIG_COMMANDS_PRE(
 Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
 # 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.
 
-# serial 9
+# serial 10
 
 # 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,
@@ -207,6 +208,16 @@ AC_CACHE_CHECK([dependency style of $depcc],
   if test "$am_compiler_list" = ""; then
      am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
   fi
+  am__universal=false
+  m4_case([$1], [CC],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac],
+    [CXX],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac])
+
   for depmode in $am_compiler_list; do
     # Setup a source with many dependencies, because some compilers
     # like to wrap large dependency lists on column 80 (with \), and
@@ -224,7 +235,17 @@ AC_CACHE_CHECK([dependency style of $depcc],
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
     case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
     nosideeffect)
       # after this tag, mechanisms are not by side-effect, so they'll
       # only be used when explicitly requested
@@ -234,19 +255,23 @@ AC_CACHE_CHECK([dependency style of $depcc],
 	break
       fi
       ;;
+    msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
     none) break ;;
     esac
-    # 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} \
+       source=sub/conftest.c object=$am__obj \
        depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
          >/dev/null 2>conftest.err &&
        grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
        grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
        ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
       # icc doesn't choke on unknown options, it will just issue warnings
       # or remarks (even with -Werror).  So we grep stderr for any message
@@ -310,59 +335,61 @@ _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-#serial 4
+#serial 5
 
 # _AM_OUTPUT_DEPENDENCY_COMMANDS
 # ------------------------------
 AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[# Autoconf 2.62 quotes --file arguments for eval, but not when files
-# are listed without --file.  Let's play safe and only enable the eval
-# if we detect the quoting.
-case $CONFIG_FILES in
-*\'*) eval set x "$CONFIG_FILES" ;;
-*)   set x $CONFIG_FILES ;;
-esac
-shift
-for mf
-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.
-  # Grep'ing the whole file is not good either: AIX grep has a line
-  # limit of 2048, but all sed's we know have understand at least 4000.
-  if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-    dirpart=`AS_DIRNAME("$mf")`
-  else
-    continue
-  fi
-  # Extract the definition of DEPDIR, am__include, and am__quote
-  # from the Makefile without running `make'.
-  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-  test -z "$DEPDIR" && continue
-  am__include=`sed -n 's/^am__include = //p' < "$mf"`
-  test -z "am__include" && continue
-  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-  # When using ansi2knr, U may be empty or an underscore; expand it
-  U=`sed -n 's/^U = //p' < "$mf"`
-  # Find all dependency output files, they are included files with
-  # $(DEPDIR) in their names.  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 "
-    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/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"
+[{
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  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.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`AS_DIRNAME("$mf")`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running `make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # When using ansi2knr, U may be empty or an underscore; expand it
+    U=`sed -n 's/^U = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  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 "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/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
-done
+}
 ])# _AM_OUTPUT_DEPENDENCY_COMMANDS
 
 
@@ -394,13 +421,13 @@ AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
 # Do all the work for Automake.                             -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2008 Free Software Foundation, Inc.
+# 2005, 2006, 2008, 2009 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.
 
-# serial 13
+# serial 16
 
 # 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.
@@ -417,7 +444,7 @@ AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
 # 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.60])dnl
+[AC_PREREQ([2.62])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
@@ -468,8 +495,8 @@ AM_MISSING_PROG(AUTOCONF, autoconf)
 AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
 AM_MISSING_PROG(AUTOHEADER, autoheader)
 AM_MISSING_PROG(MAKEINFO, makeinfo)
-AM_PROG_INSTALL_SH
-AM_PROG_INSTALL_STRIP
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
 AC_REQUIRE([AM_PROG_MKDIR_P])dnl
 # We need awk for the "check" target.  The system "awk" is bad on
 # some platforms.
@@ -477,24 +504,37 @@ AC_REQUIRE([AC_PROG_AWK])dnl
 AC_REQUIRE([AC_PROG_MAKE_SET])dnl
 AC_REQUIRE([AM_SET_LEADING_DOT])dnl
 _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
-              [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
-	      		     [_AM_PROG_TAR([v7])])])
+	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+			     [_AM_PROG_TAR([v7])])])
 _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
+		  [_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
+		  [_AM_DEPENDENCIES(CXX)],
+		  [define([AC_PROG_CXX],
+			  defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
 AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-                  [_AM_DEPENDENCIES(OBJC)],
-                  [define([AC_PROG_OBJC],
-                          defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+		  [_AM_DEPENDENCIES(OBJC)],
+		  [define([AC_PROG_OBJC],
+			  defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
 ])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
 ])
 
+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
 
 # When config.status generates a header, we must update the stamp-h file.
 # This file resides in the same directory as the config header
@@ -517,7 +557,7 @@ for _am_header in $config_headers :; do
 done
 echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2005, 2008  Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -528,7 +568,14 @@ echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_co
 # Define $install_sh.
 AC_DEFUN([AM_PROG_INSTALL_SH],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
 AC_SUBST(install_sh)])
 
 # Copyright (C) 2003, 2005  Free Software Foundation, Inc.
@@ -554,13 +601,13 @@ AC_SUBST([am__leading_dot])])
 
 # Check to see how 'make' treats includes.	            -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003, 2005, 2009  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.
 
-# serial 3
+# serial 4
 
 # AM_MAKE_INCLUDE()
 # -----------------
@@ -569,7 +616,7 @@ AC_DEFUN([AM_MAKE_INCLUDE],
 [am_make=${MAKE-make}
 cat > confinc << 'END'
 am__doit:
-	@echo done
+	@echo this is the am__doit target
 .PHONY: am__doit
 END
 # If we don't find an include directive, just comment out the code.
@@ -579,24 +626,24 @@ 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
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
 # 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
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
 fi
 AC_SUBST([am__include])
 AC_SUBST([am__quote])
@@ -606,14 +653,14 @@ rm -f confinc confmf
 
 # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
 # 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.
 
-# serial 5
+# serial 6
 
 # AM_MISSING_PROG(NAME, PROGRAM)
 # ------------------------------
@@ -630,7 +677,14 @@ AC_SUBST($1)])
 AC_DEFUN([AM_MISSING_HAS_RUN],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
 AC_REQUIRE_AUX_FILE([missing])dnl
-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
 # Use eval to expand $SHELL
 if eval "$MISSING --run true"; then
   am_missing_run="$MISSING --run "
@@ -701,14 +755,14 @@ AC_DEFUN([_AM_IF_OPTION],
 
 # Check to make sure that the build environment is sane.    -*- Autoconf -*-
 
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
 # 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.
 
-# serial 4
+# serial 5
 
 # AM_SANITY_CHECK
 # ---------------
@@ -717,16 +771,29 @@ AC_DEFUN([AM_SANITY_CHECK],
 # Just in case
 sleep 1
 echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[[\\\"\#\$\&\'\`$am_lf]]*)
+    AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+  *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
+    AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+esac
+
 # Do `set' in a subshell so we don't clobber the current shell's
 # arguments.  Must try -L first in case configure is actually a
 # symlink; some systems play weird games with the mod time of symlinks
 # (eg FreeBSD returns the mod time of the symlink's containing
 # directory).
 if (
-   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   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`
+      set X `ls -t "$srcdir/configure" conftest.file`
    fi
    rm -f conftest.file
    if test "$[*]" != "X $srcdir/configure conftest.file" \
@@ -779,18 +846,25 @@ fi
 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
-# Copyright (C) 2006  Free Software Foundation, Inc.
+# Copyright (C) 2006, 2008  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.
 
+# serial 2
+
 # _AM_SUBST_NOTMAKE(VARIABLE)
 # ---------------------------
 # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
 # This macro is traced by Automake.
 AC_DEFUN([_AM_SUBST_NOTMAKE])
 
+# AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
 # Check how to create a tarball.                            -*- Autoconf -*-
 
 # Copyright (C) 2004, 2005  Free Software Foundation, Inc.
diff --git a/common/dig.c b/common/dig.c
index 3679d42..1bb4187 100644
--- a/common/dig.c
+++ b/common/dig.c
@@ -12,7 +12,7 @@
 //
 //
 
-// $Id: dig.c 190 2009-05-22 21:18:20Z jessekornblum $
+// $Id: dig.c 228 2010-03-23 12:09:17Z jessekornblum $
 
 #include "main.h"
 
@@ -317,7 +317,6 @@ static int is_junction_point(state *s, TCHAR *fn)
   return status;
 }
 
-// RBF - Remove experimental code?
 // This is experimental code for reparse point process
 // We don't use it yet, but I don't want to delete it
 // until I know what I'm doing. (jk 1 Mar 2009)
@@ -458,7 +457,6 @@ static int file_type_helper(_tstat_t sb)
     return stat_symlink;  
 #endif   // ifndef _WIN32 
 
-
   // Used to detect Solaris doors 
 #ifdef S_IFDOOR
 #ifdef S_ISDOOR
@@ -599,8 +597,8 @@ static int should_hash(state *s, TCHAR *fn)
 
   // We must reset the number of bytes in each file processed
   // so that we can tell if fstat reads the number successfully
-  s->total_bytes = 0;
-  s->timestamp = 0;
+  s->total_bytes = UNKNOWN_FILE_SIZE;
+  s->timestamp   = 0;
 
   type = file_type(s,fn);
   
diff --git a/common/hash.c b/common/hash.c
index d9939e8..82d2c38 100644
--- a/common/hash.c
+++ b/common/hash.c
@@ -9,7 +9,7 @@
 // WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 //
-// $Id: hash.c 188 2009-04-20 10:28:52Z jessekornblum $
+// $Id: hash.c 228 2010-03-23 12:09:17Z jessekornblum $
 
 
 #include "main.h"
@@ -123,8 +123,8 @@ static void shorten_filename(TCHAR *dest, TCHAR *src)
   if (NULL == basen)
     return;
 
-  // RBF - Check the return value of my_basename
-  my_basename(basen);  
+  if (my_basename(basen))
+    return;
 
   if (_tcslen(basen) < MAX_FILENAME_LENGTH)
   {
@@ -265,6 +265,7 @@ static int hash(state *s)
 {
   int done = FALSE, status = FALSE;
   TCHAR *tmp_name = NULL;
+  uint64_t start_offset;
   
   if (NULL == s)
     return TRUE;
@@ -297,47 +298,53 @@ static int hash(state *s)
 #endif
     HASH_INITIALIZE();
     
-    if (s->mode & mode_piecewise)
-    {
-      // This logic keeps the offset values correct when s->block_size
-      // is larger than the whole file. 
-      if (s->bytes_read + s->block_size >  s->total_bytes)
-	_sntprintf(s->full_name,PATH_MAX,_TEXT("%s offset %"PRIu64"-%"PRIu64),
-		  tmp_name, s->bytes_read, s->total_bytes);
-      else
-	_sntprintf(s->full_name,PATH_MAX,_TEXT("%s offset %"PRIu64"-%"PRIu64),
-		  tmp_name, s->bytes_read, s->bytes_read + s->block_size);
-    }
-    
+    start_offset = s->bytes_read;
+
     if (!compute_hash(s))
     {
       if (s->mode & mode_piecewise)
 	free(s->full_name);
       return TRUE;
     }
-      
-    HASH_FINALIZE();
 
-#ifdef __MD5DEEP_H
-    static char hex[] = "0123456789abcdef";
-    size_t i;
-
-    for (i = 0; i < s->hash_length ; ++i) 
+    // We should only display a hash if we've processed some
+    // data during this read OR if the whole file is zero bytes long.
+    // If the file is zero bytes, we won't have read anything, but
+    // still need to display a hash.
+    if (start_offset != s->bytes_read || 0 == s->total_bytes)
     {
-      s->hash_result[2 * i] = hex[(s->hash_sum[i] >> 4) & 0xf];
-      s->hash_result[2 * i + 1] = hex[s->hash_sum[i] & 0xf];
-    }
+      if (s->mode & mode_piecewise)
+      {
+	if (0 == s->total_bytes)
+	  _sntprintf(s->full_name,PATH_MAX,_TEXT("%s offset 0"),tmp_name);
+	else
+	  _sntprintf(s->full_name,PATH_MAX,_TEXT("%s offset %"PRIu64"-%"PRIu64),
+		     tmp_name, start_offset, s->bytes_read - 1);
+      }
+      
+      HASH_FINALIZE();
 
-    // Under not matched mode, we only display those known hashes that
-    // didn't match any input files. Thus, we don't display anything now.
-    // The lookup is to mark those known hashes that we do encounter
-    if (s->mode & mode_not_matched)
-      is_known_hash(s->hash_result,NULL);
-    else
-      status = display_hash(s);
+#ifdef __MD5DEEP_H
+      static char hex[] = "0123456789abcdef";
+      size_t i;
+      
+      for (i = 0; i < s->hash_length ; ++i) 
+      {
+	s->hash_result[2 * i] = hex[(s->hash_sum[i] >> 4) & 0xf];
+	s->hash_result[2 * i + 1] = hex[s->hash_sum[i] & 0xf];
+      }
+      
+      // Under not matched mode, we only display those known hashes that
+      // didn't match any input files. Thus, we don't display anything now.
+      // The lookup is to mark those known hashes that we do encounter
+      if (s->mode & mode_not_matched)
+	is_known_hash(s->hash_result,NULL);
+      else
+	status = display_hash(s);
 #else
-    display_hash(s);
+      display_hash(s);
 #endif    
+    }
 
     if (s->mode & mode_piecewise)
       done = feof(s->handle);
@@ -398,12 +405,14 @@ int hash_file(state *s, TCHAR *fn)
 
   if ((s->handle = _tfopen(fn,_TEXT("rb"))) != NULL)
   {
-    // We only call the fstat or the ioctl functions if we weren't able to 
-    // determine the file size from the stat function in dig.c:file_type().
-    if (0 == s->total_bytes)
+    // We should have the file size already from the stat functions
+    // called during digging. If for some reason that failed, we'll
+    // try some ioctl calls now to get the full size.
+    if (UNKNOWN_FILE_SIZE == s->total_bytes)
       s->total_bytes = find_file_size(s->handle);
 
-    if (s->mode & mode_size && s->total_bytes > s->size_threshold)
+    // If this file is above the size threshold set by the user, skip it
+    if ((s->mode & mode_size) && (s->total_bytes > s->size_threshold))
     {
       if (s->mode & mode_size_all)
       {
@@ -432,7 +441,6 @@ int hash_file(state *s, TCHAR *fn)
 
     if (s->mode & mode_estimate)
     {
-      // The find file size returns a value of type off_t, so we must cast it
       s->total_megs = s->total_bytes / ONE_MEGABYTE;
       shorten_filename(s->short_name,s->full_name);    
     }    
diff --git a/common/helpers.c b/common/helpers.c
index 34c2e2a..8357968 100644
--- a/common/helpers.c
+++ b/common/helpers.c
@@ -10,10 +10,38 @@
 // WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 //
-// $Id: helpers.c 172 2009-01-16 10:36:59Z jessekornblum $ 
+// $Id: helpers.c 228 2010-03-23 12:09:17Z jessekornblum $ 
 
 #include "main.h"
 
+void setup_expert_mode(state *s, char *arg)
+{
+  unsigned int i = 0;
+
+  while (i < strlen(arg)) {
+    switch (*(arg+i)) {
+    case 'b': // Block Device
+      s->mode |= mode_block;     break;
+    case 'c': // Character Device
+      s->mode |= mode_character; break;
+    case 'p': // Named Pipe
+      s->mode |= mode_pipe;      break;
+    case 'f': // Regular File
+      s->mode |= mode_regular;   break;
+    case 'l': // Symbolic Link
+      s->mode |= mode_symlink;   break;
+    case 's': // Socket
+      s->mode |= mode_socket;    break;
+    case 'd': // Door (Solaris)
+      s->mode |= mode_door;      break;
+    default:
+      print_error(s,"%s: Unrecognized file type: %c",__progname,*(arg+i));
+    }
+    ++i;
+  }
+}
+
+
 uint64_t find_block_size(state *s, char *input_str)
 {
   unsigned char c;
@@ -133,9 +161,13 @@ void generate_filename(state *s, TCHAR *fn, TCHAR *cwd, TCHAR *input)
 int my_basename(TCHAR *str)
 {
   size_t len;
-  TCHAR *tmp = _tcsrchr(str,DIR_SEPARATOR);
+  TCHAR *tmp;
 
-  if (NULL == tmp || NULL == str)
+  if (NULL == str)
+    return TRUE;
+
+  tmp  = _tcsrchr(str,DIR_SEPARATOR);
+  if (NULL == tmp)
     return TRUE;
 
   len = _tcslen(tmp);
@@ -427,7 +459,6 @@ off_t find_dev_size(int fd, int blk_size)
   off_t curr = 0, amount = 0;
   void *buf;
  
-  // RBF - How do we validate the file descriptor here?
   if (blk_size == 0)
     return 0;
   
@@ -475,6 +506,8 @@ off_t find_file_size(FILE *f)
   if (NULL == f)
     return 0;
 
+  // The error checking for this is above. If f is not NULL
+  // fd should be vald.
   int fd = fileno(f);
   struct stat sb;
   
@@ -506,6 +539,10 @@ off_t find_file_size(FILE *f)
   // TODO: Find a way to estimate device sizes on Windows
   // Perhaps an IOTCL_DISK_GET_DRIVE_GEOMETRY_EX would work? 
 
+  // RBF - We don't really have the fseeko and ftello functions
+  // on windows. They are functions like _ftelli64 or some such
+  // RBF - Fix find_file_size for large files on Win32
+
   if ((fseeko(f,0,SEEK_END)))
     return 0;
 
diff --git a/configure b/configure
index 22f1f99..94dad05 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.63 for MD5DEEP 3.4.
+# Generated by GNU Autoconf 2.63 for MD5DEEP 3.6.
 #
 # Report bugs to <research at jessekornblum.com>.
 #
@@ -596,8 +596,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='MD5DEEP'
 PACKAGE_TARNAME='md5deep'
-PACKAGE_VERSION='3.4'
-PACKAGE_STRING='MD5DEEP 3.4'
+PACKAGE_VERSION='3.6'
+PACKAGE_STRING='MD5DEEP 3.6'
 PACKAGE_BUGREPORT='research at jessekornblum.com'
 
 # Factoring default headers for most tests.
@@ -636,7 +636,9 @@ ac_includes_default="\
 # include <unistd.h>
 #endif"
 
-ac_subst_vars='LTLIBOBJS
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
 EXTRA_HASHDEEP
 LIBOBJS
 host_os
@@ -1293,7 +1295,7 @@ 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 MD5DEEP 3.4 to adapt to many kinds of systems.
+\`configure' configures MD5DEEP 3.6 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1363,7 +1365,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of MD5DEEP 3.4:";;
+     short | recursive ) echo "Configuration of MD5DEEP 3.6:";;
    esac
   cat <<\_ACEOF
 
@@ -1451,7 +1453,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-MD5DEEP configure 3.4
+MD5DEEP configure 3.6
 generated by GNU Autoconf 2.63
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1465,7 +1467,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by MD5DEEP $as_me 3.4, which was
+It was created by MD5DEEP $as_me 3.6, which was
 generated by GNU Autoconf 2.63.  Invocation command line was
 
   $ $0 $@
@@ -1833,7 +1835,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-am__api_version='1.10'
+am__api_version='1.11'
 
 ac_aux_dir=
 for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
@@ -1964,16 +1966,33 @@ $as_echo_n "checking whether build environment is sane... " >&6; }
 # Just in case
 sleep 1
 echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[\\\"\#\$\&\'\`$am_lf]*)
+    { { $as_echo "$as_me:$LINENO: error: unsafe absolute working directory name" >&5
+$as_echo "$as_me: error: unsafe absolute working directory name" >&2;}
+   { (exit 1); exit 1; }; };;
+esac
+case $srcdir in
+  *[\\\"\#\$\&\'\`$am_lf\ \	]*)
+    { { $as_echo "$as_me:$LINENO: error: unsafe srcdir value: \`$srcdir'" >&5
+$as_echo "$as_me: error: unsafe srcdir value: \`$srcdir'" >&2;}
+   { (exit 1); exit 1; }; };;
+esac
+
 # Do `set' in a subshell so we don't clobber the current shell's
 # arguments.  Must try -L first in case configure is actually a
 # symlink; some systems play weird games with the mod time of symlinks
 # (eg FreeBSD returns the mod time of the symlink's containing
 # directory).
 if (
-   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   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`
+      set X `ls -t "$srcdir/configure" conftest.file`
    fi
    rm -f conftest.file
    if test "$*" != "X $srcdir/configure conftest.file" \
@@ -2017,7 +2036,14 @@ program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
 # expand $ac_aux_dir to an absolute path
 am_aux_dir=`cd $ac_aux_dir && pwd`
 
-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
 # Use eval to expand $SHELL
 if eval "$MISSING --run true"; then
   am_missing_run="$MISSING --run "
@@ -2027,6 +2053,115 @@ else
 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
 fi
 
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:$LINENO: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
 { $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5
 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
 if test -z "$MKDIR_P"; then
@@ -2181,7 +2316,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='md5deep'
- VERSION='3.4'
+ VERSION='3.6'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -2209,108 +2344,6 @@ AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
 
 MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
 
-install_sh=${install_sh-"\$(SHELL) $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
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_STRIP+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:$LINENO: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-fi
-INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
-
 # We need awk for the "check" target.  The system "awk" is bad on
 # some platforms.
 # Always define AMTAR for backward compatibility.
@@ -2333,7 +2366,7 @@ ac_config_commands="$ac_config_commands depfiles"
 am_make=${MAKE-make}
 cat > confinc << 'END'
 am__doit:
-	@echo done
+	@echo this is the am__doit target
 .PHONY: am__doit
 END
 # If we don't find an include directive, just comment out the code.
@@ -2344,24 +2377,24 @@ 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
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
 # 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
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
 fi
 
 
@@ -3350,6 +3383,11 @@ else
   if test "$am_compiler_list" = ""; then
      am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
   fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
   for depmode in $am_compiler_list; do
     # Setup a source with many dependencies, because some compilers
     # like to wrap large dependency lists on column 80 (with \), and
@@ -3367,7 +3405,17 @@ else
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
     case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
     nosideeffect)
       # after this tag, mechanisms are not by side-effect, so they'll
       # only be used when explicitly requested
@@ -3377,19 +3425,23 @@ else
 	break
       fi
       ;;
+    msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
     none) break ;;
     esac
-    # 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} \
+       source=sub/conftest.c object=$am__obj \
        depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
          >/dev/null 2>conftest.err &&
        grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
        grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
        ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
       # icc doesn't choke on unknown options, it will just issue warnings
       # or remarks (even with -Werror).  So we grep stderr for any message
@@ -5092,6 +5144,11 @@ else
   if test "$am_compiler_list" = ""; then
      am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
   fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
   for depmode in $am_compiler_list; do
     # Setup a source with many dependencies, because some compilers
     # like to wrap large dependency lists on column 80 (with \), and
@@ -5109,7 +5166,17 @@ else
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
     case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
     nosideeffect)
       # after this tag, mechanisms are not by side-effect, so they'll
       # only be used when explicitly requested
@@ -5119,19 +5186,23 @@ else
 	break
       fi
       ;;
+    msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
     none) break ;;
     esac
-    # 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} \
+       source=sub/conftest.c object=$am__obj \
        depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
          >/dev/null 2>conftest.err &&
        grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
        grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
        ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
       # icc doesn't choke on unknown options, it will just issue warnings
       # or remarks (even with -Werror).  So we grep stderr for any message
@@ -8417,6 +8488,14 @@ LIBOBJS=$ac_libobjs
 LTLIBOBJS=$ac_ltlibobjs
 
 
+ if test -n "$EXEEXT"; then
+  am__EXEEXT_TRUE=
+  am__EXEEXT_FALSE='#'
+else
+  am__EXEEXT_TRUE='#'
+  am__EXEEXT_FALSE=
+fi
+
 if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
   { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
@@ -8761,7 +8840,7 @@ exec 6>&1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by MD5DEEP $as_me 3.4, which was
+This file was extended by MD5DEEP $as_me 3.6, which was
 generated by GNU Autoconf 2.63.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -8824,7 +8903,7 @@ Report bugs to <bug-autoconf at gnu.org>."
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_version="\\
-MD5DEEP config.status 3.4
+MD5DEEP config.status 3.6
 configured by $0, generated by GNU Autoconf 2.63,
   with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
@@ -9606,27 +9685,28 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
 
 
   case $ac_file$ac_mode in
-    "depfiles":C) test x"$AMDEP_TRUE" != x"" || # Autoconf 2.62 quotes --file arguments for eval, but not when files
-# are listed without --file.  Let's play safe and only enable the eval
-# if we detect the quoting.
-case $CONFIG_FILES in
-*\'*) eval set x "$CONFIG_FILES" ;;
-*)   set x $CONFIG_FILES ;;
-esac
-shift
-for mf
-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.
-  # Grep'ing the whole file is not good either: AIX grep has a line
-  # limit of 2048, but all sed's we know have understand at least 4000.
-  if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-    dirpart=`$as_dirname -- "$mf" ||
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  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.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`$as_dirname -- "$mf" ||
 $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
 	 X"$mf" : 'X\(//\)[^/]' \| \
 	 X"$mf" : 'X\(//\)$' \| \
@@ -9649,28 +9729,28 @@ $as_echo X"$mf" |
 	    q
 	  }
 	  s/.*/./; q'`
-  else
-    continue
-  fi
-  # Extract the definition of DEPDIR, am__include, and am__quote
-  # from the Makefile without running `make'.
-  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-  test -z "$DEPDIR" && continue
-  am__include=`sed -n 's/^am__include = //p' < "$mf"`
-  test -z "am__include" && continue
-  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-  # When using ansi2knr, U may be empty or an underscore; expand it
-  U=`sed -n 's/^U = //p' < "$mf"`
-  # Find all dependency output files, they are included files with
-  # $(DEPDIR) in their names.  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 "
-    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/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" ||
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running `make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # When using ansi2knr, U may be empty or an underscore; expand it
+    U=`sed -n 's/^U = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  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 "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/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_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
 	 X"$file" : 'X\(//\)[^/]' \| \
 	 X"$file" : 'X\(//\)$' \| \
@@ -9693,7 +9773,7 @@ $as_echo X"$file" |
 	    q
 	  }
 	  s/.*/./; q'`
-    { as_dir=$dirpart/$fdir
+      { as_dir=$dirpart/$fdir
   case $as_dir in #(
   -*) as_dir=./$as_dir;;
   esac
@@ -9734,10 +9814,11 @@ $as_echo X"$as_dir" |
   } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
    { (exit 1); exit 1; }; }; }
-    # echo "creating $dirpart/$file"
-    echo '# dummy' > "$dirpart/$file"
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
   done
-done
+}
  ;;
 
   esac
diff --git a/configure.ac b/configure.ac
index cd854be..ba0ff93 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
 AC_PREREQ(2.57)
 
-AC_INIT([MD5DEEP],[3.4],[research at jessekornblum.com])
+AC_INIT([MD5DEEP],[3.6],[research at jessekornblum.com])
 AM_INIT_AUTOMAKE
 #AM_MAINTAINER_MODE
 
diff --git a/hashdeep/Makefile.in b/hashdeep/Makefile.in
index 392ef9d..23d752e 100644
--- a/hashdeep/Makefile.in
+++ b/hashdeep/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
@@ -16,8 +17,9 @@
 
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -42,8 +44,8 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"
-binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
 PROGRAMS = $(bin_PROGRAMS)
 am__objects_1 = hash.$(OBJEXT) dig.$(OBJEXT) cycles.$(OBJEXT) \
 	ui.$(OBJEXT) helpers.$(OBJEXT) md5.$(OBJEXT) sha1.$(OBJEXT) \
@@ -56,12 +58,34 @@ am__DEPENDENCIES_1 =
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
+am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 CCLD = $(CC)
 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
 SOURCES = $(hashdeep_SOURCES) $(EXTRA_hashdeep_SOURCES)
 DIST_SOURCES = $(hashdeep_SOURCES) $(EXTRA_hashdeep_SOURCES)
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 man1dir = $(mandir)/man1
 NROFF = nroff
 MANS = $(man_MANS)
@@ -202,9 +226,9 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  hashdeep/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  hashdeep/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu hashdeep/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu hashdeep/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -222,26 +246,41 @@ $(top_srcdir)/configure:  $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4):  $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
 	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
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	for p in $$list; do echo "$$p $$p"; done | \
+	sed 's/$(EXEEXT)$$//' | \
+	while read p p1; do if test -f $$p; \
+	  then echo "$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+	sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
+	    else { print "f", $$3 "/" $$4, $$1; } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	    test -z "$$files" || { \
+	      echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	      $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	    } \
+	; done
 
 uninstall-binPROGRAMS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(bin_PROGRAMS)'; 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
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+	      -e 's/$$/$(EXEEXT)/' `; \
+	test -n "$$list" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(bindir)" && rm -f $$files
 
 clean-binPROGRAMS:
 	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
@@ -275,202 +314,195 @@ distclean-compile:
 
 .c.o:
 @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 hash.o: ${COMMON_DIR}/hash.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hash.o -MD -MP -MF $(DEPDIR)/hash.Tpo -c -o hash.o `test -f '${COMMON_DIR}/hash.c' || echo '$(srcdir)/'`${COMMON_DIR}/hash.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/hash.Tpo $(DEPDIR)/hash.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/hash.Tpo $(DEPDIR)/hash.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/hash.c' object='hash.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hash.o `test -f '${COMMON_DIR}/hash.c' || echo '$(srcdir)/'`${COMMON_DIR}/hash.c
 
 hash.obj: ${COMMON_DIR}/hash.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hash.obj -MD -MP -MF $(DEPDIR)/hash.Tpo -c -o hash.obj `if test -f '${COMMON_DIR}/hash.c'; then $(CYGPATH_W) '${COMMON_DIR}/hash.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/hash.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/hash.Tpo $(DEPDIR)/hash.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/hash.Tpo $(DEPDIR)/hash.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/hash.c' object='hash.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hash.obj `if test -f '${COMMON_DIR}/hash.c'; then $(CYGPATH_W) '${COMMON_DIR}/hash.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/hash.c'; fi`
 
 dig.o: ${COMMON_DIR}/dig.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dig.o -MD -MP -MF $(DEPDIR)/dig.Tpo -c -o dig.o `test -f '${COMMON_DIR}/dig.c' || echo '$(srcdir)/'`${COMMON_DIR}/dig.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/dig.Tpo $(DEPDIR)/dig.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/dig.Tpo $(DEPDIR)/dig.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/dig.c' object='dig.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dig.o `test -f '${COMMON_DIR}/dig.c' || echo '$(srcdir)/'`${COMMON_DIR}/dig.c
 
 dig.obj: ${COMMON_DIR}/dig.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dig.obj -MD -MP -MF $(DEPDIR)/dig.Tpo -c -o dig.obj `if test -f '${COMMON_DIR}/dig.c'; then $(CYGPATH_W) '${COMMON_DIR}/dig.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/dig.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/dig.Tpo $(DEPDIR)/dig.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/dig.Tpo $(DEPDIR)/dig.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/dig.c' object='dig.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dig.obj `if test -f '${COMMON_DIR}/dig.c'; then $(CYGPATH_W) '${COMMON_DIR}/dig.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/dig.c'; fi`
 
 cycles.o: ${COMMON_DIR}/cycles.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cycles.o -MD -MP -MF $(DEPDIR)/cycles.Tpo -c -o cycles.o `test -f '${COMMON_DIR}/cycles.c' || echo '$(srcdir)/'`${COMMON_DIR}/cycles.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cycles.Tpo $(DEPDIR)/cycles.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/cycles.Tpo $(DEPDIR)/cycles.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/cycles.c' object='cycles.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cycles.o `test -f '${COMMON_DIR}/cycles.c' || echo '$(srcdir)/'`${COMMON_DIR}/cycles.c
 
 cycles.obj: ${COMMON_DIR}/cycles.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cycles.obj -MD -MP -MF $(DEPDIR)/cycles.Tpo -c -o cycles.obj `if test -f '${COMMON_DIR}/cycles.c'; then $(CYGPATH_W) '${COMMON_DIR}/cycles.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/cycles.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cycles.Tpo $(DEPDIR)/cycles.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/cycles.Tpo $(DEPDIR)/cycles.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/cycles.c' object='cycles.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cycles.obj `if test -f '${COMMON_DIR}/cycles.c'; then $(CYGPATH_W) '${COMMON_DIR}/cycles.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/cycles.c'; fi`
 
 ui.o: ${COMMON_DIR}/ui.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ui.o -MD -MP -MF $(DEPDIR)/ui.Tpo -c -o ui.o `test -f '${COMMON_DIR}/ui.c' || echo '$(srcdir)/'`${COMMON_DIR}/ui.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/ui.Tpo $(DEPDIR)/ui.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/ui.Tpo $(DEPDIR)/ui.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/ui.c' object='ui.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ui.o `test -f '${COMMON_DIR}/ui.c' || echo '$(srcdir)/'`${COMMON_DIR}/ui.c
 
 ui.obj: ${COMMON_DIR}/ui.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ui.obj -MD -MP -MF $(DEPDIR)/ui.Tpo -c -o ui.obj `if test -f '${COMMON_DIR}/ui.c'; then $(CYGPATH_W) '${COMMON_DIR}/ui.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/ui.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/ui.Tpo $(DEPDIR)/ui.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/ui.Tpo $(DEPDIR)/ui.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/ui.c' object='ui.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ui.obj `if test -f '${COMMON_DIR}/ui.c'; then $(CYGPATH_W) '${COMMON_DIR}/ui.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/ui.c'; fi`
 
 helpers.o: ${COMMON_DIR}/helpers.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT helpers.o -MD -MP -MF $(DEPDIR)/helpers.Tpo -c -o helpers.o `test -f '${COMMON_DIR}/helpers.c' || echo '$(srcdir)/'`${COMMON_DIR}/helpers.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/helpers.Tpo $(DEPDIR)/helpers.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/helpers.Tpo $(DEPDIR)/helpers.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/helpers.c' object='helpers.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o helpers.o `test -f '${COMMON_DIR}/helpers.c' || echo '$(srcdir)/'`${COMMON_DIR}/helpers.c
 
 helpers.obj: ${COMMON_DIR}/helpers.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT helpers.obj -MD -MP -MF $(DEPDIR)/helpers.Tpo -c -o helpers.obj `if test -f '${COMMON_DIR}/helpers.c'; then $(CYGPATH_W) '${COMMON_DIR}/helpers.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/helpers.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/helpers.Tpo $(DEPDIR)/helpers.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/helpers.Tpo $(DEPDIR)/helpers.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/helpers.c' object='helpers.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o helpers.obj `if test -f '${COMMON_DIR}/helpers.c'; then $(CYGPATH_W) '${COMMON_DIR}/helpers.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/helpers.c'; fi`
 
 md5.o: ${COMMON_DIR}/md5.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT md5.o -MD -MP -MF $(DEPDIR)/md5.Tpo -c -o md5.o `test -f '${COMMON_DIR}/md5.c' || echo '$(srcdir)/'`${COMMON_DIR}/md5.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/md5.Tpo $(DEPDIR)/md5.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/md5.Tpo $(DEPDIR)/md5.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/md5.c' object='md5.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o md5.o `test -f '${COMMON_DIR}/md5.c' || echo '$(srcdir)/'`${COMMON_DIR}/md5.c
 
 md5.obj: ${COMMON_DIR}/md5.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT md5.obj -MD -MP -MF $(DEPDIR)/md5.Tpo -c -o md5.obj `if test -f '${COMMON_DIR}/md5.c'; then $(CYGPATH_W) '${COMMON_DIR}/md5.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/md5.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/md5.Tpo $(DEPDIR)/md5.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/md5.Tpo $(DEPDIR)/md5.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/md5.c' object='md5.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o md5.obj `if test -f '${COMMON_DIR}/md5.c'; then $(CYGPATH_W) '${COMMON_DIR}/md5.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/md5.c'; fi`
 
 sha1.o: ${COMMON_DIR}/sha1.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sha1.o -MD -MP -MF $(DEPDIR)/sha1.Tpo -c -o sha1.o `test -f '${COMMON_DIR}/sha1.c' || echo '$(srcdir)/'`${COMMON_DIR}/sha1.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/sha1.Tpo $(DEPDIR)/sha1.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/sha1.Tpo $(DEPDIR)/sha1.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/sha1.c' object='sha1.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sha1.o `test -f '${COMMON_DIR}/sha1.c' || echo '$(srcdir)/'`${COMMON_DIR}/sha1.c
 
 sha1.obj: ${COMMON_DIR}/sha1.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sha1.obj -MD -MP -MF $(DEPDIR)/sha1.Tpo -c -o sha1.obj `if test -f '${COMMON_DIR}/sha1.c'; then $(CYGPATH_W) '${COMMON_DIR}/sha1.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/sha1.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/sha1.Tpo $(DEPDIR)/sha1.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/sha1.Tpo $(DEPDIR)/sha1.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/sha1.c' object='sha1.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sha1.obj `if test -f '${COMMON_DIR}/sha1.c'; then $(CYGPATH_W) '${COMMON_DIR}/sha1.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/sha1.c'; fi`
 
 sha256.o: ${COMMON_DIR}/sha256.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sha256.o -MD -MP -MF $(DEPDIR)/sha256.Tpo -c -o sha256.o `test -f '${COMMON_DIR}/sha256.c' || echo '$(srcdir)/'`${COMMON_DIR}/sha256.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/sha256.Tpo $(DEPDIR)/sha256.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/sha256.Tpo $(DEPDIR)/sha256.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/sha256.c' object='sha256.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sha256.o `test -f '${COMMON_DIR}/sha256.c' || echo '$(srcdir)/'`${COMMON_DIR}/sha256.c
 
 sha256.obj: ${COMMON_DIR}/sha256.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sha256.obj -MD -MP -MF $(DEPDIR)/sha256.Tpo -c -o sha256.obj `if test -f '${COMMON_DIR}/sha256.c'; then $(CYGPATH_W) '${COMMON_DIR}/sha256.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/sha256.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/sha256.Tpo $(DEPDIR)/sha256.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/sha256.Tpo $(DEPDIR)/sha256.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/sha256.c' object='sha256.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sha256.obj `if test -f '${COMMON_DIR}/sha256.c'; then $(CYGPATH_W) '${COMMON_DIR}/sha256.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/sha256.c'; fi`
 
 tiger.o: ${COMMON_DIR}/tiger.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tiger.o -MD -MP -MF $(DEPDIR)/tiger.Tpo -c -o tiger.o `test -f '${COMMON_DIR}/tiger.c' || echo '$(srcdir)/'`${COMMON_DIR}/tiger.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/tiger.Tpo $(DEPDIR)/tiger.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/tiger.Tpo $(DEPDIR)/tiger.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/tiger.c' object='tiger.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tiger.o `test -f '${COMMON_DIR}/tiger.c' || echo '$(srcdir)/'`${COMMON_DIR}/tiger.c
 
 tiger.obj: ${COMMON_DIR}/tiger.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tiger.obj -MD -MP -MF $(DEPDIR)/tiger.Tpo -c -o tiger.obj `if test -f '${COMMON_DIR}/tiger.c'; then $(CYGPATH_W) '${COMMON_DIR}/tiger.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/tiger.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/tiger.Tpo $(DEPDIR)/tiger.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/tiger.Tpo $(DEPDIR)/tiger.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/tiger.c' object='tiger.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tiger.obj `if test -f '${COMMON_DIR}/tiger.c'; then $(CYGPATH_W) '${COMMON_DIR}/tiger.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/tiger.c'; fi`
 
 whirlpool.o: ${COMMON_DIR}/whirlpool.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT whirlpool.o -MD -MP -MF $(DEPDIR)/whirlpool.Tpo -c -o whirlpool.o `test -f '${COMMON_DIR}/whirlpool.c' || echo '$(srcdir)/'`${COMMON_DIR}/whirlpool.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/whirlpool.Tpo $(DEPDIR)/whirlpool.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/whirlpool.Tpo $(DEPDIR)/whirlpool.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/whirlpool.c' object='whirlpool.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o whirlpool.o `test -f '${COMMON_DIR}/whirlpool.c' || echo '$(srcdir)/'`${COMMON_DIR}/whirlpool.c
 
 whirlpool.obj: ${COMMON_DIR}/whirlpool.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT whirlpool.obj -MD -MP -MF $(DEPDIR)/whirlpool.Tpo -c -o whirlpool.obj `if test -f '${COMMON_DIR}/whirlpool.c'; then $(CYGPATH_W) '${COMMON_DIR}/whirlpool.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/whirlpool.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/whirlpool.Tpo $(DEPDIR)/whirlpool.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/whirlpool.Tpo $(DEPDIR)/whirlpool.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/whirlpool.c' object='whirlpool.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o whirlpool.obj `if test -f '${COMMON_DIR}/whirlpool.c'; then $(CYGPATH_W) '${COMMON_DIR}/whirlpool.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/whirlpool.c'; fi`
-install-man1: $(man1_MANS) $(man_MANS)
+install-man1: $(man_MANS)
 	@$(NORMAL_INSTALL)
 	test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
-	@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
-	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
-	for i in $$l2; do \
-	  case "$$i" in \
-	    *.1*) list="$$list $$i" ;; \
-	  esac; \
+	@list=''; test -n "$(man1dir)" || exit 0; \
+	{ for i in $$list; do echo "$$i"; done; \
+	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+	  sed -n '/\.1[a-z]*$$/p'; \
+	} | while read p; do \
+	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; echo "$$p"; \
+	done | \
+	sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+	sed 'N;N;s,\n, ,g' | { \
+	list=; while read file base inst; do \
+	  if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+	    echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+	    $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+	  fi; \
 	done; \
-	for i in $$list; do \
-	  if test -f $$i; then file=$$i; \
-	  else file=$(srcdir)/$$i; fi; \
-	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-	  case "$$ext" in \
-	    1*) ;; \
-	    *) ext='1' ;; \
-	  esac; \
-	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
-	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-	  echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
-	  $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
-	done
+	for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+	while read files; do \
+	  test -z "$$files" || { \
+	    echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+	    $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+	done; }
+
 uninstall-man1:
 	@$(NORMAL_UNINSTALL)
-	@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
-	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
-	for i in $$l2; do \
-	  case "$$i" in \
-	    *.1*) list="$$list $$i" ;; \
-	  esac; \
-	done; \
-	for i in $$list; do \
-	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-	  case "$$ext" in \
-	    1*) ;; \
-	    *) ext='1' ;; \
-	  esac; \
-	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
-	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-	  echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
-	  rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
-	done
+	@list=''; test -n "$(man1dir)" || exit 0; \
+	files=`{ for i in $$list; do echo "$$i"; done; \
+	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+	  sed -n '/\.1[a-z]*$$/p'; \
+	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+	test -z "$$files" || { \
+	  echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
+	  cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -484,7 +516,7 @@ tags: TAGS
 
 TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
@@ -492,34 +524,52 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	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; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
 distdir: $(DISTFILES)
+	@list='$(MANS)'; if test -n "$$list"; then \
+	  list=`for p in $$list; do \
+	    if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+	    if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+	  if test -n "$$list" && \
+	    grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
+	    echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
+	    grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
+	    echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
+	    echo "       typically \`make maintainer-clean' will remove them" >&2; \
+	    exit 1; \
+	  else :; fi; \
+	else :; fi
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
@@ -535,13 +585,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -572,6 +626,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -592,6 +647,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -600,18 +657,28 @@ install-data-am: install-man
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am: install-binPROGRAMS
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man: install-man1
 
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -651,6 +718,7 @@ uninstall-man: uninstall-man1
 	tags uninstall uninstall-am uninstall-binPROGRAMS \
 	uninstall-man uninstall-man1
 
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/hashdeep/audit.c b/hashdeep/audit.c
index 617901d..0517293 100644
--- a/hashdeep/audit.c
+++ b/hashdeep/audit.c
@@ -1,5 +1,5 @@
 
-// $Id: audit.c 137 2008-07-08 04:41:48Z jessekornblum $ 
+// $Id: audit.c 207 2009-12-22 00:33:33Z jessekornblum $ 
 
 #include "main.h"
 
@@ -109,9 +109,10 @@ int audit_update(state *s)
 
 	if (tmp->data->used != s->hash_round)
 	{
-	  tmp->data->used = s->hash_round;
+
 	  switch (tmp->status) {
 	  case status_match:
+	    tmp->data->used = s->hash_round;
 	    exact_match = TRUE;
 	    break;
     
diff --git a/hashdeep/hashdeep.1 b/hashdeep/hashdeep.1
index f210688..68140a0 100644
--- a/hashdeep/hashdeep.1
+++ b/hashdeep/hashdeep.1
@@ -1,4 +1,4 @@
-.TH HASHDEEP "1" "v3.3 \- 4 Apr 2009" "AFOSI" "United States Air Force"
+.TH HASHDEEP "1" "v3.6 \- 23 Mar 2010" "AFOSI" "United States Air Force"
 
 .SH NAME
 hashdeep \- Compute, compare, or audit multiple message digests
@@ -8,7 +8,7 @@ hashdeep \- Compute, compare, or audit multiple message digests
 -V | -h
 .br
 .B hashdeep
-[-c <alg1>[,<alg2>]] [-k <file>] [-i <size>] [-amxwMXrespblvv] [\fBFILES\fR]
+[-c <alg1>[,<alg2>]] [-k <file>] [-i <size>] [\-o <fbcplsd>] [-amxwMXrespblvv] [\fBFILES\fR]
 
 
 .SH DESCRIPTION
@@ -123,12 +123,35 @@ remaining for each file being processed. Time estimates for files
 larger than 4GB are not available on Windows. This mode may not be
 used with th \-p mode.
 
+
 .TP
 \fB\-i <size> \fR
 Size threshold mode. Only hash files smaller than the given the 
 threshold. Sizes may be specified 
 using multiplers b,k,m,g,t,p, and e.
 
+
+.TP
+\fB\-o\fR <bcpflsd>
+Enables expert mode. Allows the user specify which (and only which) types of
+files are processed. Directory processing is still controlled with the
+\-r flag. The expert mode options allowed are:
+.br
+f \- Regular files
+.br
+b \- Block Devices
+.br
+c \- Character Devices
+.br
+p \- Named Pipes
+.br
+l \- Symbolic Links
+.br
+s \- Sockets
+.br
+d \- Solaris Doors
+
+
 .TP
 \fB\-s\fR
 Enables silent mode. All error messages are supressed.
@@ -182,7 +205,7 @@ Unicode characters in its name by using tab completition or an asterisk
 Returns zero on success, one on error. 
 
 .SH AUTHOR
-hashdeep was written by Jesse Kornblum, md5deep [at] jessekornblum [dot] com.
+hashdeep was written by Jesse Kornblum, research [at] jessekornblum [dott] com.
 
 .SH KNOWN ISSUES
 Using the \-r flag cannot be used to recursively process all files 
@@ -199,8 +222,7 @@ forensic integrity of this program could have serious consequenses on
 people's lives. When submitting a bug report, please include a description
 of the problem, how you found it, and your contact information.
 .PP
-Send bug reports to:
-md5deep [at] jessekornblum [dot] com
+Send bug reports to the author at the address above.
 
 .PP
 .SH COPYRIGHT
diff --git a/hashdeep/hashtable.c b/hashdeep/hashtable.c
index 186e641..dee7bdf 100644
--- a/hashdeep/hashtable.c
+++ b/hashdeep/hashtable.c
@@ -1,7 +1,7 @@
 
 #include "main.h"
 
-/* $Id: hashtable.c 108 2008-03-29 20:32:09Z jessekornblum $ */
+/* $Id: hashtable.c 207 2009-12-22 00:33:33Z jessekornblum $ */
 
 status_t file_data_compare(state *s, file_data_t *a, file_data_t *b)
 {
@@ -202,7 +202,7 @@ hashtable_contains(state *s, hashname_t alg)
   //  print_status("First entry %d", status);
   if (status != status_no_match)
     {
-      //  print_status("hit on first entry %d", status);
+      //      print_status("hit on first entry %d", status);
       ret = (hashtable_entry_t *)malloc(sizeof(hashtable_entry_t));
       ret->next = NULL;
       ret->status = status;
diff --git a/hashdeep/main.c b/hashdeep/main.c
index 31de53e..702f1a9 100644
--- a/hashdeep/main.c
+++ b/hashdeep/main.c
@@ -1,17 +1,17 @@
-
-/* $Id: main.c 161 2008-10-22 21:51:12Z jessekornblum $ */
+// HASHDEEP
+// $Id: main.c 228 2010-03-23 12:09:17Z jessekornblum $
 
 #include "main.h"
 
 
-/* So that the usage message fits in a standard DOS window, this
-   function should produce no more than 22 lines of text. */
+// So that the usage message fits in a standard DOS window, this
+// function should produce no more than 22 lines of text.
 static void usage(state *s)
 {
   hashname_t i;
 
   print_status("%s version %s by %s.",__progname,VERSION,AUTHOR);
-  print_status("%s %s [-c <alg>] [-k <file>] [-amxwMXrespblvv] [-V|-h] [FILES]",CMD_PROMPT,__progname);
+  print_status("%s %s [-c <alg>] [-k <file>] [-amxwMXrespblvv] [-V|-h] [-o <mode>] [FILES]",CMD_PROMPT,__progname);
 
   print_status("");
 
@@ -34,6 +34,7 @@ static void usage(state *s)
   print_status("-b - prints only the bare name of files; all path information is omitted");
   print_status("-l - print relative paths for filenames");
   print_status("-i - only process files smaller than the given threshold");
+  print_status("-o - only process certain types of files. See README/manpage");
   print_status("-v - verbose mode. Use again to be more verbose.");
   print_status("-V - display version number and exit");
 }
@@ -248,10 +249,15 @@ static int process_command_line(state *s, int argc, char **argv)
 {
   int i;
   
-  while ((i=getopt(argc,argv,"I:i:c:MmXxtablk:resp:wvVh")) != -1)
+  while ((i=getopt(argc,argv,"o:I:i:c:MmXxtablk:resp:wvVh")) != -1)
   {
     switch (i)
     {
+    case 'o':
+      s->mode |= mode_expert; 
+      setup_expert_mode(s,optarg);
+      break;
+
     case 'I': 
       s->mode |= mode_size_all;
       // Note no break here;
diff --git a/include/common.h b/include/common.h
index 6875e6f..2541010 100644
--- a/include/common.h
+++ b/include/common.h
@@ -1,5 +1,5 @@
 
-// $Id: common.h 175 2009-01-25 13:33:01Z jessekornblum $ 
+// $Id: common.h 227 2010-03-06 14:46:36Z jessekornblum $ 
 
 #ifndef __COMMON_H
 #define __COMMON_H
@@ -13,7 +13,6 @@
 # define __MSVCRT_VERSION__ 0x0601
 #endif
 
-
 // The version information, VERSION, is defined in config.h 
 
 #define AUTHOR      "Jesse Kornblum"
@@ -130,6 +129,9 @@ NEWLINE, NEWLINE, NEWLINE
 
 #define MAX_TIME_STRING_LENGTH  31
 
+// This denotes when we don't know the file size.
+#define UNKNOWN_FILE_SIZE  -1
+
 // LINE_LENGTH is different between UNIX and WIN32 and is defined below 
 #define MAX_FILENAME_LENGTH   LINE_LENGTH - 41
 
@@ -263,8 +265,9 @@ memset(VAR,0,SIZE * sizeof(TYPE));
 #define mode_timestamp         1<<21
 #define mode_csv               1<<22
 
+#define mode_read_from_file    1<<25
 
-// Modes 23-48 are reserved for future use.
+// Modes 26-48 are reserved for future use.
 //
 // Note that the LL is required to avoid overflows of 32-bit words.
 // LL must be used for any value equal to or above 1<<31. 
@@ -289,7 +292,8 @@ memset(VAR,0,SIZE * sizeof(TYPE));
 
 
 // These are the types of files we can encounter while hashing 
-
+// Note these will be stored in a uint8_t, so should be between
+// zero and 255.
 #define stat_regular    0
 #define stat_directory  1
 #define stat_door       2
@@ -337,6 +341,8 @@ int done_processing_dir(TCHAR *fn);
 // ------------------------------------------------------------------
 // HELPER FUNCTIONS
 // ------------------------------------------------------------------ 
+void setup_expert_mode(state *s, char *arg);
+
 void generate_filename(state *s, TCHAR *fn, TCHAR *cwd, TCHAR *input);
 
 uint64_t find_block_size(state *s, char *input_str);
diff --git a/md5deep/Makefile.in b/md5deep/Makefile.in
index 40dfe7d..9819d84 100644
--- a/md5deep/Makefile.in
+++ b/md5deep/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
@@ -16,8 +17,9 @@
 
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
@@ -43,8 +45,8 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"
-binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
 PROGRAMS = $(bin_PROGRAMS)
 am__objects_1 = hash.$(OBJEXT) dig.$(OBJEXT) cycles.$(OBJEXT) \
 	ui.$(OBJEXT) helpers.$(OBJEXT)
@@ -77,6 +79,7 @@ whirlpooldeep_DEPENDENCIES =
 DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
+am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 CCLD = $(CC)
@@ -86,6 +89,27 @@ SOURCES = $(md5deep_SOURCES) $(sha1deep_SOURCES) $(sha256deep_SOURCES) \
 DIST_SOURCES = $(md5deep_SOURCES) $(sha1deep_SOURCES) \
 	$(sha256deep_SOURCES) $(tigerdeep_SOURCES) \
 	$(whirlpooldeep_SOURCES)
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 man1dir = $(mandir)/man1
 NROFF = nroff
 MANS = $(man_MANS)
@@ -223,9 +247,9 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  md5deep/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  md5deep/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu md5deep/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu md5deep/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -243,26 +267,41 @@ $(top_srcdir)/configure:  $(am__configure_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4):  $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
 	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
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	for p in $$list; do echo "$$p $$p"; done | \
+	sed 's/$(EXEEXT)$$//' | \
+	while read p p1; do if test -f $$p; \
+	  then echo "$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+	sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
+	    else { print "f", $$3 "/" $$4, $$1; } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	    test -z "$$files" || { \
+	      echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	      $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	    } \
+	; done
 
 uninstall-binPROGRAMS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(bin_PROGRAMS)'; 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
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+	      -e 's/$$/$(EXEEXT)/' `; \
+	test -n "$$list" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(bindir)" && rm -f $$files
 
 clean-binPROGRAMS:
 	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
@@ -311,202 +350,195 @@ distclean-compile:
 
 .c.o:
 @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 hash.o: ${COMMON_DIR}/hash.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hash.o -MD -MP -MF $(DEPDIR)/hash.Tpo -c -o hash.o `test -f '${COMMON_DIR}/hash.c' || echo '$(srcdir)/'`${COMMON_DIR}/hash.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/hash.Tpo $(DEPDIR)/hash.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/hash.Tpo $(DEPDIR)/hash.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/hash.c' object='hash.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hash.o `test -f '${COMMON_DIR}/hash.c' || echo '$(srcdir)/'`${COMMON_DIR}/hash.c
 
 hash.obj: ${COMMON_DIR}/hash.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hash.obj -MD -MP -MF $(DEPDIR)/hash.Tpo -c -o hash.obj `if test -f '${COMMON_DIR}/hash.c'; then $(CYGPATH_W) '${COMMON_DIR}/hash.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/hash.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/hash.Tpo $(DEPDIR)/hash.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/hash.Tpo $(DEPDIR)/hash.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/hash.c' object='hash.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hash.obj `if test -f '${COMMON_DIR}/hash.c'; then $(CYGPATH_W) '${COMMON_DIR}/hash.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/hash.c'; fi`
 
 dig.o: ${COMMON_DIR}/dig.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dig.o -MD -MP -MF $(DEPDIR)/dig.Tpo -c -o dig.o `test -f '${COMMON_DIR}/dig.c' || echo '$(srcdir)/'`${COMMON_DIR}/dig.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/dig.Tpo $(DEPDIR)/dig.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/dig.Tpo $(DEPDIR)/dig.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/dig.c' object='dig.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dig.o `test -f '${COMMON_DIR}/dig.c' || echo '$(srcdir)/'`${COMMON_DIR}/dig.c
 
 dig.obj: ${COMMON_DIR}/dig.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dig.obj -MD -MP -MF $(DEPDIR)/dig.Tpo -c -o dig.obj `if test -f '${COMMON_DIR}/dig.c'; then $(CYGPATH_W) '${COMMON_DIR}/dig.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/dig.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/dig.Tpo $(DEPDIR)/dig.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/dig.Tpo $(DEPDIR)/dig.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/dig.c' object='dig.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dig.obj `if test -f '${COMMON_DIR}/dig.c'; then $(CYGPATH_W) '${COMMON_DIR}/dig.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/dig.c'; fi`
 
 cycles.o: ${COMMON_DIR}/cycles.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cycles.o -MD -MP -MF $(DEPDIR)/cycles.Tpo -c -o cycles.o `test -f '${COMMON_DIR}/cycles.c' || echo '$(srcdir)/'`${COMMON_DIR}/cycles.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cycles.Tpo $(DEPDIR)/cycles.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/cycles.Tpo $(DEPDIR)/cycles.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/cycles.c' object='cycles.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cycles.o `test -f '${COMMON_DIR}/cycles.c' || echo '$(srcdir)/'`${COMMON_DIR}/cycles.c
 
 cycles.obj: ${COMMON_DIR}/cycles.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cycles.obj -MD -MP -MF $(DEPDIR)/cycles.Tpo -c -o cycles.obj `if test -f '${COMMON_DIR}/cycles.c'; then $(CYGPATH_W) '${COMMON_DIR}/cycles.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/cycles.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/cycles.Tpo $(DEPDIR)/cycles.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/cycles.Tpo $(DEPDIR)/cycles.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/cycles.c' object='cycles.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cycles.obj `if test -f '${COMMON_DIR}/cycles.c'; then $(CYGPATH_W) '${COMMON_DIR}/cycles.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/cycles.c'; fi`
 
 ui.o: ${COMMON_DIR}/ui.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ui.o -MD -MP -MF $(DEPDIR)/ui.Tpo -c -o ui.o `test -f '${COMMON_DIR}/ui.c' || echo '$(srcdir)/'`${COMMON_DIR}/ui.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/ui.Tpo $(DEPDIR)/ui.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/ui.Tpo $(DEPDIR)/ui.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/ui.c' object='ui.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ui.o `test -f '${COMMON_DIR}/ui.c' || echo '$(srcdir)/'`${COMMON_DIR}/ui.c
 
 ui.obj: ${COMMON_DIR}/ui.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ui.obj -MD -MP -MF $(DEPDIR)/ui.Tpo -c -o ui.obj `if test -f '${COMMON_DIR}/ui.c'; then $(CYGPATH_W) '${COMMON_DIR}/ui.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/ui.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/ui.Tpo $(DEPDIR)/ui.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/ui.Tpo $(DEPDIR)/ui.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/ui.c' object='ui.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ui.obj `if test -f '${COMMON_DIR}/ui.c'; then $(CYGPATH_W) '${COMMON_DIR}/ui.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/ui.c'; fi`
 
 helpers.o: ${COMMON_DIR}/helpers.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT helpers.o -MD -MP -MF $(DEPDIR)/helpers.Tpo -c -o helpers.o `test -f '${COMMON_DIR}/helpers.c' || echo '$(srcdir)/'`${COMMON_DIR}/helpers.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/helpers.Tpo $(DEPDIR)/helpers.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/helpers.Tpo $(DEPDIR)/helpers.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/helpers.c' object='helpers.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o helpers.o `test -f '${COMMON_DIR}/helpers.c' || echo '$(srcdir)/'`${COMMON_DIR}/helpers.c
 
 helpers.obj: ${COMMON_DIR}/helpers.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT helpers.obj -MD -MP -MF $(DEPDIR)/helpers.Tpo -c -o helpers.obj `if test -f '${COMMON_DIR}/helpers.c'; then $(CYGPATH_W) '${COMMON_DIR}/helpers.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/helpers.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/helpers.Tpo $(DEPDIR)/helpers.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/helpers.Tpo $(DEPDIR)/helpers.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/helpers.c' object='helpers.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o helpers.obj `if test -f '${COMMON_DIR}/helpers.c'; then $(CYGPATH_W) '${COMMON_DIR}/helpers.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/helpers.c'; fi`
 
 md5.o: ${COMMON_DIR}/md5.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT md5.o -MD -MP -MF $(DEPDIR)/md5.Tpo -c -o md5.o `test -f '${COMMON_DIR}/md5.c' || echo '$(srcdir)/'`${COMMON_DIR}/md5.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/md5.Tpo $(DEPDIR)/md5.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/md5.Tpo $(DEPDIR)/md5.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/md5.c' object='md5.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o md5.o `test -f '${COMMON_DIR}/md5.c' || echo '$(srcdir)/'`${COMMON_DIR}/md5.c
 
 md5.obj: ${COMMON_DIR}/md5.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT md5.obj -MD -MP -MF $(DEPDIR)/md5.Tpo -c -o md5.obj `if test -f '${COMMON_DIR}/md5.c'; then $(CYGPATH_W) '${COMMON_DIR}/md5.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/md5.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/md5.Tpo $(DEPDIR)/md5.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/md5.Tpo $(DEPDIR)/md5.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/md5.c' object='md5.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o md5.obj `if test -f '${COMMON_DIR}/md5.c'; then $(CYGPATH_W) '${COMMON_DIR}/md5.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/md5.c'; fi`
 
 sha1.o: ${COMMON_DIR}/sha1.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sha1.o -MD -MP -MF $(DEPDIR)/sha1.Tpo -c -o sha1.o `test -f '${COMMON_DIR}/sha1.c' || echo '$(srcdir)/'`${COMMON_DIR}/sha1.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/sha1.Tpo $(DEPDIR)/sha1.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/sha1.Tpo $(DEPDIR)/sha1.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/sha1.c' object='sha1.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sha1.o `test -f '${COMMON_DIR}/sha1.c' || echo '$(srcdir)/'`${COMMON_DIR}/sha1.c
 
 sha1.obj: ${COMMON_DIR}/sha1.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sha1.obj -MD -MP -MF $(DEPDIR)/sha1.Tpo -c -o sha1.obj `if test -f '${COMMON_DIR}/sha1.c'; then $(CYGPATH_W) '${COMMON_DIR}/sha1.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/sha1.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/sha1.Tpo $(DEPDIR)/sha1.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/sha1.Tpo $(DEPDIR)/sha1.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/sha1.c' object='sha1.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sha1.obj `if test -f '${COMMON_DIR}/sha1.c'; then $(CYGPATH_W) '${COMMON_DIR}/sha1.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/sha1.c'; fi`
 
 sha256.o: ${COMMON_DIR}/sha256.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sha256.o -MD -MP -MF $(DEPDIR)/sha256.Tpo -c -o sha256.o `test -f '${COMMON_DIR}/sha256.c' || echo '$(srcdir)/'`${COMMON_DIR}/sha256.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/sha256.Tpo $(DEPDIR)/sha256.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/sha256.Tpo $(DEPDIR)/sha256.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/sha256.c' object='sha256.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sha256.o `test -f '${COMMON_DIR}/sha256.c' || echo '$(srcdir)/'`${COMMON_DIR}/sha256.c
 
 sha256.obj: ${COMMON_DIR}/sha256.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sha256.obj -MD -MP -MF $(DEPDIR)/sha256.Tpo -c -o sha256.obj `if test -f '${COMMON_DIR}/sha256.c'; then $(CYGPATH_W) '${COMMON_DIR}/sha256.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/sha256.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/sha256.Tpo $(DEPDIR)/sha256.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/sha256.Tpo $(DEPDIR)/sha256.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/sha256.c' object='sha256.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sha256.obj `if test -f '${COMMON_DIR}/sha256.c'; then $(CYGPATH_W) '${COMMON_DIR}/sha256.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/sha256.c'; fi`
 
 tiger.o: ${COMMON_DIR}/tiger.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tiger.o -MD -MP -MF $(DEPDIR)/tiger.Tpo -c -o tiger.o `test -f '${COMMON_DIR}/tiger.c' || echo '$(srcdir)/'`${COMMON_DIR}/tiger.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/tiger.Tpo $(DEPDIR)/tiger.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/tiger.Tpo $(DEPDIR)/tiger.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/tiger.c' object='tiger.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tiger.o `test -f '${COMMON_DIR}/tiger.c' || echo '$(srcdir)/'`${COMMON_DIR}/tiger.c
 
 tiger.obj: ${COMMON_DIR}/tiger.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tiger.obj -MD -MP -MF $(DEPDIR)/tiger.Tpo -c -o tiger.obj `if test -f '${COMMON_DIR}/tiger.c'; then $(CYGPATH_W) '${COMMON_DIR}/tiger.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/tiger.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/tiger.Tpo $(DEPDIR)/tiger.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/tiger.Tpo $(DEPDIR)/tiger.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/tiger.c' object='tiger.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tiger.obj `if test -f '${COMMON_DIR}/tiger.c'; then $(CYGPATH_W) '${COMMON_DIR}/tiger.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/tiger.c'; fi`
 
 whirlpool.o: ${COMMON_DIR}/whirlpool.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT whirlpool.o -MD -MP -MF $(DEPDIR)/whirlpool.Tpo -c -o whirlpool.o `test -f '${COMMON_DIR}/whirlpool.c' || echo '$(srcdir)/'`${COMMON_DIR}/whirlpool.c
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/whirlpool.Tpo $(DEPDIR)/whirlpool.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/whirlpool.Tpo $(DEPDIR)/whirlpool.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/whirlpool.c' object='whirlpool.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o whirlpool.o `test -f '${COMMON_DIR}/whirlpool.c' || echo '$(srcdir)/'`${COMMON_DIR}/whirlpool.c
 
 whirlpool.obj: ${COMMON_DIR}/whirlpool.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT whirlpool.obj -MD -MP -MF $(DEPDIR)/whirlpool.Tpo -c -o whirlpool.obj `if test -f '${COMMON_DIR}/whirlpool.c'; then $(CYGPATH_W) '${COMMON_DIR}/whirlpool.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/whirlpool.c'; fi`
- at am__fastdepCC_TRUE@	mv -f $(DEPDIR)/whirlpool.Tpo $(DEPDIR)/whirlpool.Po
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/whirlpool.Tpo $(DEPDIR)/whirlpool.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='${COMMON_DIR}/whirlpool.c' object='whirlpool.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o whirlpool.obj `if test -f '${COMMON_DIR}/whirlpool.c'; then $(CYGPATH_W) '${COMMON_DIR}/whirlpool.c'; else $(CYGPATH_W) '$(srcdir)/${COMMON_DIR}/whirlpool.c'; fi`
-install-man1: $(man1_MANS) $(man_MANS)
+install-man1: $(man_MANS)
 	@$(NORMAL_INSTALL)
 	test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
-	@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
-	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
-	for i in $$l2; do \
-	  case "$$i" in \
-	    *.1*) list="$$list $$i" ;; \
-	  esac; \
+	@list=''; test -n "$(man1dir)" || exit 0; \
+	{ for i in $$list; do echo "$$i"; done; \
+	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+	  sed -n '/\.1[a-z]*$$/p'; \
+	} | while read p; do \
+	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; echo "$$p"; \
+	done | \
+	sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+	sed 'N;N;s,\n, ,g' | { \
+	list=; while read file base inst; do \
+	  if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+	    echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+	    $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+	  fi; \
 	done; \
-	for i in $$list; do \
-	  if test -f $$i; then file=$$i; \
-	  else file=$(srcdir)/$$i; fi; \
-	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-	  case "$$ext" in \
-	    1*) ;; \
-	    *) ext='1' ;; \
-	  esac; \
-	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
-	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-	  echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
-	  $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
-	done
+	for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+	while read files; do \
+	  test -z "$$files" || { \
+	    echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+	    $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+	done; }
+
 uninstall-man1:
 	@$(NORMAL_UNINSTALL)
-	@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
-	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
-	for i in $$l2; do \
-	  case "$$i" in \
-	    *.1*) list="$$list $$i" ;; \
-	  esac; \
-	done; \
-	for i in $$list; do \
-	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-	  case "$$ext" in \
-	    1*) ;; \
-	    *) ext='1' ;; \
-	  esac; \
-	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
-	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-	  echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
-	  rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
-	done
+	@list=''; test -n "$(man1dir)" || exit 0; \
+	files=`{ for i in $$list; do echo "$$i"; done; \
+	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+	  sed -n '/\.1[a-z]*$$/p'; \
+	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+	test -z "$$files" || { \
+	  echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
+	  cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -520,7 +552,7 @@ tags: TAGS
 
 TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
 	unique=`for i in $$list; do \
@@ -528,34 +560,52 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
 	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; nonempty = 1; } \
 	      END { if (nonempty) { for (i in files) print i; }; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
 
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
 distdir: $(DISTFILES)
+	@list='$(MANS)'; if test -n "$$list"; then \
+	  list=`for p in $$list; do \
+	    if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+	    if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+	  if test -n "$$list" && \
+	    grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
+	    echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
+	    grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
+	    echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
+	    echo "       typically \`make maintainer-clean' will remove them" >&2; \
+	    exit 1; \
+	  else :; fi; \
+	else :; fi
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 	list='$(DISTFILES)'; \
@@ -571,13 +621,17 @@ distdir: $(DISTFILES)
 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 	  if test -d $$d/$$file; then \
 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
@@ -608,6 +662,7 @@ clean-generic:
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -628,6 +683,8 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
@@ -636,16 +693,26 @@ install-data-am: install-man
 
 install-dvi: install-dvi-am
 
+install-dvi-am:
+
 install-exec-am: install-binPROGRAMS
 
 install-html: install-html-am
 
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-pdf: install-pdf-am
 
+install-pdf-am:
+
 install-ps: install-ps-am
 
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -697,6 +764,7 @@ update-manpages: md5deep.1
 	cp $< sha256deep.1
 	cp $< tigerdeep.1
 	cp $< whirlpooldeep.1
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/md5deep/main.c b/md5deep/main.c
index 27fab3d..f1b75dd 100644
--- a/md5deep/main.c
+++ b/md5deep/main.c
@@ -9,7 +9,7 @@
 // WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 //
-// $Id: main.c 175 2009-01-25 13:33:01Z jessekornblum $
+// $Id: main.c 228 2010-03-23 12:09:17Z jessekornblum $
 
 #include "main.h"
 
@@ -55,34 +55,6 @@ static void usage(void)
 }
 
 
-static void setup_expert_mode(state *s, char *arg)
-{
-  unsigned int i = 0;
-
-  while (i < strlen(arg)) {
-    switch (*(arg+i)) {
-    case 'b': // Block Device
-      s->mode |= mode_block;     break;
-    case 'c': // Character Device
-      s->mode |= mode_character; break;
-    case 'p': // Named Pipe
-      s->mode |= mode_pipe;      break;
-    case 'f': // Regular File
-      s->mode |= mode_regular;   break;
-    case 'l': // Symbolic Link
-      s->mode |= mode_symlink;   break;
-    case 's': // Socket
-      s->mode |= mode_socket;    break;
-    case 'd': // Door (Solaris)
-      s->mode |= mode_door;      break;
-    default:
-      print_error(s,"%s: Unrecognized file type: %c",__progname,*(arg+i));
-    }
-    ++i;
-  }
-}
-
-
 static void check_flags_okay(state *s)
 {
   sanity_check(s,
@@ -130,9 +102,14 @@ static int process_command_line(state *s, int argc, char **argv)
   
   while ((i = getopt(argc,
 		     argv,
-		     "I:i:M:X:x:m:o:A:a:tnwczsSp:erhvV0lbkqU")) != -1) { 
+		     "f:I:i:M:X:x:m:o:A:a:tnwczsSp:erhvV0lbkqU")) != -1) { 
     switch (i) {
 
+    case 'f':
+      s->input_list = strdup(optarg);
+      s->mode |= mode_read_from_file;
+      break;
+
     case 'I':
       s->mode |= mode_size_all;
       // Note that there is no break here
@@ -319,15 +296,78 @@ static int prepare_windows_command_line(state *s)
 #endif
 
 
+int process_input_list(state *s)
+{
+  TCHAR * t_name;
+  int done = FALSE;
+  FILE * handle = fopen(s->input_list,"rb");
+  char * fn;
+
+  t_name = (TCHAR *)malloc(sizeof(TCHAR) * PATH_MAX);
+  if (NULL == t_name)
+    return TRUE;
+
+  if (NULL == handle)
+  {
+    perror(s->input_list);
+    return TRUE;
+  }
+
+  fn = (char *)malloc(MAX_STRING_LENGTH * sizeof(char));
+  if (NULL == fn)
+  {
+    fclose(handle);
+    return TRUE;
+  }
+
+  while (!done)
+  {
+    if (NULL == fgets(fn, MAX_STRING_LENGTH, handle))
+    {
+      done = TRUE;
+    }
+    else
+    {
+      chop_line(fn);
+
+#ifdef _WIN32
+      // We have to convert value from the file, a char value, into a 
+      // Unicode TCHAR value. We assume that we can only handle parameters
+      // as long as PATH_MAX, regardless of what the user gave us.
+      int t_size = MultiByteToWideChar(CP_ACP,
+				       0,
+				       fn,
+				       lstrlenA(fn),
+				       t_name,
+				       PATH_MAX);
+      if (0 == t_size)
+	return TRUE;
+
+      t_name[t_size] = 0;
+
+      process_win32(s,t_name);
+#else
+      process_normal(s,fn);
+#endif
+    }
+  }
+
+  free(t_name);
+  free(fn);
+  fclose(handle);
+  return FALSE;
+}
+
+
 int main(int argc, char **argv) 
 {
   TCHAR *fn, *cwd;
   state *s;
   int count, status = STATUS_OK;
 
-  /* Because the main() function can handle wchar_t arguments on Win32,
-     we need a way to reference those values. Thus we make a duplciate
-     of the argc and argv values. */ 
+  // Because the main() function can handle wchar_t arguments on Win32,
+  // we need a way to reference those values. Thus we make a duplciate
+  // of the argc and argv values.
 
 #ifndef __GLIBC__
   __progname  = basename(argv[0]);
@@ -362,10 +402,11 @@ int main(int argc, char **argv)
   s->argv = argv;
 #endif
 
-  /* Anything left on the command line at this point is a file
-     or directory we're supposed to process. If there's nothing
-     specified, we should tackle standard input */
-  if (optind == argc)
+  // Anything left on the command line at this point is a file
+  // or directory we're supposed to process. If there's nothing
+  // specified, we should tackle standard input UNLESS the user
+  // has specified a list of input files
+  if (optind == argc && (!(s->mode & mode_read_from_file)))
     hash_stdin(s);
   else
   {
@@ -388,12 +429,15 @@ int main(int argc, char **argv)
       status = process_normal(s,fn);
 #endif
 
-      //      if (status != STATUS_OK)
-      //	return status;
-
       ++count;
     }
 
+    if (s->mode & mode_read_from_file)
+    {
+      process_input_list(s);
+    }
+
+
     free(fn);
     free(cwd);
   }
diff --git a/md5deep/main.h b/md5deep/main.h
index 8c2e7c4..83adada 100644
--- a/md5deep/main.h
+++ b/md5deep/main.h
@@ -1,15 +1,15 @@
-/* MD5DEEP
- *
- * By Jesse Kornblum
- *
- * This is a work of the US Government. In accordance with 17 USC 105,
- * copyright protection is not available for any work of the US Government.
- *
- * 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.
- *
- */
+// MD5DEEP
+//
+// By Jesse Kornblum
+//
+// This is a work of the US Government. In accordance with 17 USC 105,
+// copyright protection is not available for any work of the US Government.
+//
+// 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.
+//
+//
 
 // $Id: main.h,v 1.5 2007/12/08 16:34:50 jessekornblum Exp $
    
@@ -22,7 +22,7 @@
 
 
 
-/* These are the types of files that we can match against */
+// These are the types of files that we can match against 
 #define TYPE_PLAIN        0
 #define TYPE_BSD          1
 #define TYPE_HASHKEEPER   2
@@ -38,26 +38,30 @@
 
 
 
-
-
-
 typedef struct _state {
 
-  /* Basic program state */
+  // Basic program state 
   uint64_t      mode;
   int           return_value;
   time_t        start_time, last_time;
 
-  /* Command line arguments */
+  // Command line arguments 
   TCHAR        **argv;
   int            argc;
+  char          *input_list;
 
-  /* The input file */
+  // The input file 
   int           is_stdin;
   FILE          * handle;
-  // The size of the input file, in megabytes
-  uint64_t      total_megs;
+
+  // The type of file, as report by stat
+  uint8_t       input_type;
+
+  // Size of the input file, in bytes
   uint64_t      total_bytes;
+  // and megabytes
+  uint64_t      total_megs;
+
   uint64_t      bytes_read;
 #ifdef _WIN32
   __time64_t    timestamp;
@@ -66,12 +70,12 @@ typedef struct _state {
 #endif
   char          * time_str;
   
-  /* Lists of known hashes */
+  // Lists of known hashes 
   int           hashes_loaded;
   hashTable     known_hashes;
   uint32_t      expected_hashes;
 
-  /* Size of blocks used in normal hashing */
+  // Size of blocks used in normal hashing 
   uint64_t      block_size;
 
   // Size of blocks used in piecewise hashing
@@ -82,20 +86,20 @@ typedef struct _state {
 
   // These strings are used in hash.c to hold the filename
   TCHAR         * full_name;
-  TCHAR          * short_name;
-  TCHAR          * msg;
+  TCHAR         * short_name;
+  TCHAR         * msg;
 
-  /* Hashing algorithms */
+  // Hashing algorithms 
 
-  /* We don't define hash_string_length, it's just twice this length. 
-     We use a signed value as this gets compared with the output of strlen() */
+  // We don't define hash_string_length, it's just twice this length. 
+  // We use a signed value as this gets compared with the output of strlen() */
   size_t       hash_length;
   
   // Which filetypes this algorithm supports and their position in the file
   uint8_t      h_plain, h_bsd, h_md5deep_size, h_hashkeeper;
   uint8_t      h_ilook, h_ilook3, h_ilook4, h_nsrl15, h_nsrl20, h_encase;
   
-  // Function used to do the actual hashing
+  // Functions used to do the actual hashing
   int ( *hash_init)(void *);
   int ( *hash_update)(void *, unsigned char *, uint64_t );
   int ( *hash_finalize)(void *, unsigned char *);
@@ -104,6 +108,8 @@ typedef struct _state {
   
   unsigned char * hash_sum;
   char          * hash_result;
+
+  // Used in matching operations
   char          * known_fn;
 
 } _state;
@@ -113,25 +119,25 @@ typedef struct _state {
 
 void sanity_check(state *s, int condition, char *msg);
 
-/* ----------------------------------------------------------------
-   PROGRAM ENGINE
-   ---------------------------------------------------------------- */
+// ----------------------------------------------------------------
+// PROGRAM ENGINE
+// ---------------------------------------------------------------- 
 
-/* Hashing functions */
+// Hashing functions 
 int hash_file(state *s, TCHAR *file_name);
 int hash_stdin(state *s);
 
-/* Sets up hashing algorithm and allocates memory */
+// Sets up hashing algorithm and allocates memory 
 int setup_hashing_algorithm(state *s);
 
 
 
 
-/* ----------------------------------------------------------------
-   FILE MATCHING
-   ---------------------------------------------------------------- */
+// ----------------------------------------------------------------
+// FILE MATCHING
+// ---------------------------------------------------------------- 
 
-/* Load a file of known hashes from the disk */
+// Load a file of known hashes from the disk 
 int load_match_file(state *s, char *fn);
 
 int is_known_hash(char *h, char *known_fn);
@@ -141,7 +147,7 @@ int finalize_matching(state *s);
 // Add a single hash to the matching set
 void add_hash(state *s, char *h, char *fn);
 
-/* Functions for file evaluation (files.c) */
+// Functions for file evaluation (files.c) 
 int valid_hash(state *s, char *buf);
 int hash_file_type(state *s, FILE *f);
 int find_hash_in_line(state *s, char *buf, int fileType, char *filename);
@@ -152,35 +158,35 @@ int find_hash_in_line(state *s, char *buf, int fileType, char *filename);
 
 
 
-/* ------------------------------------------------------------------
-   HASH TABLE
-   ------------------------------------------------------------------ */
+// ------------------------------------------------------------------
+// HASH TABLE
+// ------------------------------------------------------------------ 
 
 void hashTableInit(hashTable *knownHashes);
 
-/* Adds the string n to the hashTable, along with the filename fn.
-Returns TRUE if an error occured (i.e. Out of memory) */
+// Adds the string n to the hashTable, along with the filename fn.
+// Returns TRUE if an error occured (i.e. Out of memory) 
 int hashTableAdd(state *s, hashTable *knownHashes, char *n, char *fn);
 
-/* Returns TRUE if the hashTable contains the hash n and stores the
-filename of the known hash in known. Returns FALSE and does not
-alter known if the hashTable does not contain n. This function
-assumes that fn has already been malloc'ed to hold at least 
-PATH_MAX characters */
+// Returns TRUE if the hashTable contains the hash n and stores the
+// filename of the known hash in known. Returns FALSE and does not
+// alter known if the hashTable does not contain n. This function
+// assumes that fn has already been malloc'ed to hold at least 
+// PATH_MAX characters 
 int hashTableContains(hashTable *knownHashes, char *n, char *known);
 
-/* Find any hashes that have not been used. If there are any, and display
-is TRUE, prints them to stdout. Regardless of display, then returns
-TRUE. If there are no unused hashes, returns FALSE. */
+// Find any hashes that have not been used. If there are any, and display
+// is TRUE, prints them to stdout. Regardless of display, then returns
+// TRUE. If there are no unused hashes, returns FALSE. 
 int hashTableDisplayNotMatched(hashTable *t, int display);
 
-/* This function is for debugging */
+// This function is for debugging 
 void hashTableEvaluate(hashTable *knownHashes);
 
 
 
 
-#endif /* __MD5DEEP_H */
+#endif //  ifndef __MD5DEEP_H 
 
 
 
diff --git a/md5deep/match.c b/md5deep/match.c
index bc8ad50..13864c9 100644
--- a/md5deep/match.c
+++ b/md5deep/match.c
@@ -10,7 +10,7 @@
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 //
 //
-// $Id: match.c 188 2009-04-20 10:28:52Z jessekornblum $ 
+// $Id: match.c 228 2010-03-23 12:09:17Z jessekornblum $ 
 
 #include "main.h"
 #include "hashTable.h"
@@ -219,9 +219,8 @@ int load_match_file(state *s, char *fn)
 
 void add_hash(state *s, char *h, char *fn)
 {
-  // RBF - Display error and crash on NULL state or filename?
   if (NULL == s || NULL == h || NULL == fn)
-    return;
+    internal_error("%s: Null values passed into add_hash", __progname);
 
   init_table();
   switch (hashTableAdd(s,&knownHashes,h,fn))
@@ -242,8 +241,7 @@ int is_known_hash(char *h, char *known_fn)
   // We don't check if the known_fn parameter is NULL because
   // that's a legitimate call in hash.c under mode_not_matched
   if (NULL == h)
-    internal_error("%s: Null values passed into is_known_hash",
-		   __progname);
+    internal_error("%s: Null values passed into is_known_hash",__progname);
 
   if (!table_initialized)
     internal_error("%s: Attempt to check hash before table was initialized",
diff --git a/md5deep/md5deep.1 b/md5deep/md5deep.1
index 03fd470..497150a 100644
--- a/md5deep/md5deep.1
+++ b/md5deep/md5deep.1
@@ -1,4 +1,4 @@
-.TH MD5DEEP "1" "v3.4 \- 11 Jun 2009" "AFOSI" "United States Air Force"
+.TH MD5DEEP "1" "v3.6 \- 23 Mar 2010" "AFOSI" "United States Air Force"
 
 .SH NAME
 md5deep \- Compute and compare MD5 message digests
@@ -16,7 +16,7 @@ whirlpooldeep \- Compute and compare Whirlpool message digests
 -v | -V | -h
 .br
 .B md5deep
-[\-m|\-M|\-x|\-X <file>]  [-a|-A <hash>]
+[\-m|\-M|\-x|\-X <file>]  [-a|-A <hash>] [\-f <file>]
 [\-p <size>] [\-i <size>] [\-tnwzresS0lbkq] [\-o <fbcplsd>] [\fBFILES\fR]
 
 .SH DESCRIPTION
@@ -111,6 +111,13 @@ Same as \-a above, but does negative matching.
 This flag may not be used in conjunction with the \-m, \-M, or \-A flags.
 
 .TP
+\fB\-f\fR <file>
+Takes a list of files to be hashed from the specified file. Each
+line is assumed to be a filename. This flag can only be used once
+per invocation. If it's used a second time, the second instance will
+clobber the first.
+
+.TP
 \fB\-w\fR
 During any of the matching modes (\-m,\-M,\-x,or \-X), displays the filename
 of the known hash that matched the input file. 
@@ -248,7 +255,7 @@ be reported to the developer! See the section "Reporting Bugs" below.
 
 
 .SH AUTHOR
-md5deep was written by Jesse Kornblum, md5deep [at] jessekornblum [dot] com.
+md5deep was written by Jesse Kornblum, research [at] jessekornblum [dot] com.
 
 .SH KNOWN ISSUES
 Using the \-r flag cannot be used to recursively process all files 
@@ -261,8 +268,7 @@ forensic integrity of this program could have serious consequenses on
 people's lives. When submitting a bug report, please include a description
 of the problem, how you found it, and your contact information.
 .PP
-Send bug reports to:
-md5deep [at] jessekornblum [dot] com
+Send bug reports to the author at the address above.
 
 .PP
 .SH COPYRIGHT
diff --git a/md5deep/sha1deep.1 b/md5deep/sha1deep.1
index 03fd470..497150a 100644
--- a/md5deep/sha1deep.1
+++ b/md5deep/sha1deep.1
@@ -1,4 +1,4 @@
-.TH MD5DEEP "1" "v3.4 \- 11 Jun 2009" "AFOSI" "United States Air Force"
+.TH MD5DEEP "1" "v3.6 \- 23 Mar 2010" "AFOSI" "United States Air Force"
 
 .SH NAME
 md5deep \- Compute and compare MD5 message digests
@@ -16,7 +16,7 @@ whirlpooldeep \- Compute and compare Whirlpool message digests
 -v | -V | -h
 .br
 .B md5deep
-[\-m|\-M|\-x|\-X <file>]  [-a|-A <hash>]
+[\-m|\-M|\-x|\-X <file>]  [-a|-A <hash>] [\-f <file>]
 [\-p <size>] [\-i <size>] [\-tnwzresS0lbkq] [\-o <fbcplsd>] [\fBFILES\fR]
 
 .SH DESCRIPTION
@@ -111,6 +111,13 @@ Same as \-a above, but does negative matching.
 This flag may not be used in conjunction with the \-m, \-M, or \-A flags.
 
 .TP
+\fB\-f\fR <file>
+Takes a list of files to be hashed from the specified file. Each
+line is assumed to be a filename. This flag can only be used once
+per invocation. If it's used a second time, the second instance will
+clobber the first.
+
+.TP
 \fB\-w\fR
 During any of the matching modes (\-m,\-M,\-x,or \-X), displays the filename
 of the known hash that matched the input file. 
@@ -248,7 +255,7 @@ be reported to the developer! See the section "Reporting Bugs" below.
 
 
 .SH AUTHOR
-md5deep was written by Jesse Kornblum, md5deep [at] jessekornblum [dot] com.
+md5deep was written by Jesse Kornblum, research [at] jessekornblum [dot] com.
 
 .SH KNOWN ISSUES
 Using the \-r flag cannot be used to recursively process all files 
@@ -261,8 +268,7 @@ forensic integrity of this program could have serious consequenses on
 people's lives. When submitting a bug report, please include a description
 of the problem, how you found it, and your contact information.
 .PP
-Send bug reports to:
-md5deep [at] jessekornblum [dot] com
+Send bug reports to the author at the address above.
 
 .PP
 .SH COPYRIGHT
diff --git a/md5deep/sha256deep.1 b/md5deep/sha256deep.1
index 03fd470..497150a 100644
--- a/md5deep/sha256deep.1
+++ b/md5deep/sha256deep.1
@@ -1,4 +1,4 @@
-.TH MD5DEEP "1" "v3.4 \- 11 Jun 2009" "AFOSI" "United States Air Force"
+.TH MD5DEEP "1" "v3.6 \- 23 Mar 2010" "AFOSI" "United States Air Force"
 
 .SH NAME
 md5deep \- Compute and compare MD5 message digests
@@ -16,7 +16,7 @@ whirlpooldeep \- Compute and compare Whirlpool message digests
 -v | -V | -h
 .br
 .B md5deep
-[\-m|\-M|\-x|\-X <file>]  [-a|-A <hash>]
+[\-m|\-M|\-x|\-X <file>]  [-a|-A <hash>] [\-f <file>]
 [\-p <size>] [\-i <size>] [\-tnwzresS0lbkq] [\-o <fbcplsd>] [\fBFILES\fR]
 
 .SH DESCRIPTION
@@ -111,6 +111,13 @@ Same as \-a above, but does negative matching.
 This flag may not be used in conjunction with the \-m, \-M, or \-A flags.
 
 .TP
+\fB\-f\fR <file>
+Takes a list of files to be hashed from the specified file. Each
+line is assumed to be a filename. This flag can only be used once
+per invocation. If it's used a second time, the second instance will
+clobber the first.
+
+.TP
 \fB\-w\fR
 During any of the matching modes (\-m,\-M,\-x,or \-X), displays the filename
 of the known hash that matched the input file. 
@@ -248,7 +255,7 @@ be reported to the developer! See the section "Reporting Bugs" below.
 
 
 .SH AUTHOR
-md5deep was written by Jesse Kornblum, md5deep [at] jessekornblum [dot] com.
+md5deep was written by Jesse Kornblum, research [at] jessekornblum [dot] com.
 
 .SH KNOWN ISSUES
 Using the \-r flag cannot be used to recursively process all files 
@@ -261,8 +268,7 @@ forensic integrity of this program could have serious consequenses on
 people's lives. When submitting a bug report, please include a description
 of the problem, how you found it, and your contact information.
 .PP
-Send bug reports to:
-md5deep [at] jessekornblum [dot] com
+Send bug reports to the author at the address above.
 
 .PP
 .SH COPYRIGHT
diff --git a/md5deep/tigerdeep.1 b/md5deep/tigerdeep.1
index 03fd470..497150a 100644
--- a/md5deep/tigerdeep.1
+++ b/md5deep/tigerdeep.1
@@ -1,4 +1,4 @@
-.TH MD5DEEP "1" "v3.4 \- 11 Jun 2009" "AFOSI" "United States Air Force"
+.TH MD5DEEP "1" "v3.6 \- 23 Mar 2010" "AFOSI" "United States Air Force"
 
 .SH NAME
 md5deep \- Compute and compare MD5 message digests
@@ -16,7 +16,7 @@ whirlpooldeep \- Compute and compare Whirlpool message digests
 -v | -V | -h
 .br
 .B md5deep
-[\-m|\-M|\-x|\-X <file>]  [-a|-A <hash>]
+[\-m|\-M|\-x|\-X <file>]  [-a|-A <hash>] [\-f <file>]
 [\-p <size>] [\-i <size>] [\-tnwzresS0lbkq] [\-o <fbcplsd>] [\fBFILES\fR]
 
 .SH DESCRIPTION
@@ -111,6 +111,13 @@ Same as \-a above, but does negative matching.
 This flag may not be used in conjunction with the \-m, \-M, or \-A flags.
 
 .TP
+\fB\-f\fR <file>
+Takes a list of files to be hashed from the specified file. Each
+line is assumed to be a filename. This flag can only be used once
+per invocation. If it's used a second time, the second instance will
+clobber the first.
+
+.TP
 \fB\-w\fR
 During any of the matching modes (\-m,\-M,\-x,or \-X), displays the filename
 of the known hash that matched the input file. 
@@ -248,7 +255,7 @@ be reported to the developer! See the section "Reporting Bugs" below.
 
 
 .SH AUTHOR
-md5deep was written by Jesse Kornblum, md5deep [at] jessekornblum [dot] com.
+md5deep was written by Jesse Kornblum, research [at] jessekornblum [dot] com.
 
 .SH KNOWN ISSUES
 Using the \-r flag cannot be used to recursively process all files 
@@ -261,8 +268,7 @@ forensic integrity of this program could have serious consequenses on
 people's lives. When submitting a bug report, please include a description
 of the problem, how you found it, and your contact information.
 .PP
-Send bug reports to:
-md5deep [at] jessekornblum [dot] com
+Send bug reports to the author at the address above.
 
 .PP
 .SH COPYRIGHT
diff --git a/md5deep/whirlpooldeep.1 b/md5deep/whirlpooldeep.1
index 03fd470..497150a 100644
--- a/md5deep/whirlpooldeep.1
+++ b/md5deep/whirlpooldeep.1
@@ -1,4 +1,4 @@
-.TH MD5DEEP "1" "v3.4 \- 11 Jun 2009" "AFOSI" "United States Air Force"
+.TH MD5DEEP "1" "v3.6 \- 23 Mar 2010" "AFOSI" "United States Air Force"
 
 .SH NAME
 md5deep \- Compute and compare MD5 message digests
@@ -16,7 +16,7 @@ whirlpooldeep \- Compute and compare Whirlpool message digests
 -v | -V | -h
 .br
 .B md5deep
-[\-m|\-M|\-x|\-X <file>]  [-a|-A <hash>]
+[\-m|\-M|\-x|\-X <file>]  [-a|-A <hash>] [\-f <file>]
 [\-p <size>] [\-i <size>] [\-tnwzresS0lbkq] [\-o <fbcplsd>] [\fBFILES\fR]
 
 .SH DESCRIPTION
@@ -111,6 +111,13 @@ Same as \-a above, but does negative matching.
 This flag may not be used in conjunction with the \-m, \-M, or \-A flags.
 
 .TP
+\fB\-f\fR <file>
+Takes a list of files to be hashed from the specified file. Each
+line is assumed to be a filename. This flag can only be used once
+per invocation. If it's used a second time, the second instance will
+clobber the first.
+
+.TP
 \fB\-w\fR
 During any of the matching modes (\-m,\-M,\-x,or \-X), displays the filename
 of the known hash that matched the input file. 
@@ -248,7 +255,7 @@ be reported to the developer! See the section "Reporting Bugs" below.
 
 
 .SH AUTHOR
-md5deep was written by Jesse Kornblum, md5deep [at] jessekornblum [dot] com.
+md5deep was written by Jesse Kornblum, research [at] jessekornblum [dot] com.
 
 .SH KNOWN ISSUES
 Using the \-r flag cannot be used to recursively process all files 
@@ -261,8 +268,7 @@ forensic integrity of this program could have serious consequenses on
 people's lives. When submitting a bug report, please include a description
 of the problem, how you found it, and your contact information.
 .PP
-Send bug reports to:
-md5deep [at] jessekornblum [dot] com
+Send bug reports to the author at the address above.
 
 .PP
 .SH COPYRIGHT

-- 
debian-forensics/md5deep



More information about the forensics-changes mailing list