diff -ruN tarsnap-autoconf-1.0.32/Makefile.in tarsnap-autoconf-1.0.33/Makefile.in
--- tarsnap-autoconf-1.0.32/Makefile.in	2012-02-22 04:10:55.000000000 -0800
+++ tarsnap-autoconf-1.0.33/Makefile.in	2012-08-10 00:05:26.000000000 -0700
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.12.2 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# Copyright (C) 1994-2012 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.
@@ -18,6 +17,23 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -56,8 +72,13 @@
 subdir = .
 DIST_COMMON = $(am__configure_deps) $(dist_man_MANS) \
 	$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-	$(srcdir)/config.h.in $(top_srcdir)/configure COPYING \
-	config.aux/compile config.aux/config.guess \
+	$(srcdir)/config.h.in $(top_srcdir)/config.aux/compile \
+	$(top_srcdir)/config.aux/config.guess \
+	$(top_srcdir)/config.aux/config.sub \
+	$(top_srcdir)/config.aux/depcomp \
+	$(top_srcdir)/config.aux/install-sh \
+	$(top_srcdir)/config.aux/missing $(top_srcdir)/configure \
+	COPYING config.aux/compile config.aux/config.guess \
 	config.aux/config.sub config.aux/depcomp config.aux/install-sh \
 	config.aux/missing
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -125,6 +146,7 @@
 	lib/util/lib_libtarsnap_a-hexlink.$(OBJEXT) \
 	lib/util/lib_libtarsnap_a-humansize.$(OBJEXT) \
 	lib/util/lib_libtarsnap_a-memlimit.$(OBJEXT) \
+	lib/util/lib_libtarsnap_a-monoclock.$(OBJEXT) \
 	lib/util/lib_libtarsnap_a-readpass.$(OBJEXT) \
 	lib/util/lib_libtarsnap_a-sigquit.$(OBJEXT) \
 	lib/util/lib_libtarsnap_a-tvmath.$(OBJEXT) \
@@ -361,6 +383,11 @@
 	$(am__tarsnap_SOURCES_DIST) $(tarsnap_keygen_SOURCES) \
 	$(tarsnap_keymgmt_SOURCES) $(tarsnap_keyregen_SOURCES) \
 	$(tarsnap_recrypt_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -382,6 +409,12 @@
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 man1dir = $(mandir)/man1
 man5dir = $(mandir)/man5
 NROFF = nroff
@@ -389,16 +422,24 @@
 DATA = $(sysconf_DATA)
 ETAGS = etags
 CTAGS = ctags
+CSCOPE = cscope
+AM_RECURSIVE_TARGETS = cscope
 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)"; }; }
+  if test -d "$(distdir)"; then \
+    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+      && rm -rf "$(distdir)" \
+      || { sleep 5 && rm -rf "$(distdir)"; }; \
+  else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
 DIST_ARCHIVES = $(distdir).tar.gz
 GZIP_ENV = --best
+DIST_TARGETS = dist-gzip
 distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
 distcleancheck_listfiles = find . -type f -print
 ACLOCAL = @ACLOCAL@
 AMTAR = @AMTAR@
@@ -627,6 +668,7 @@
 		lib/util/hexlink.c			\
 		lib/util/humansize.c			\
 		lib/util/memlimit.c			\
+		lib/util/monoclock.c			\
 		lib/util/readpass.c			\
 		lib/util/sigquit.c			\
 		lib/util/tvmath.c			\
@@ -803,7 +845,7 @@
 
 .SUFFIXES:
 .SUFFIXES: .c .o .obj
-am--refresh:
+am--refresh: Makefile
 	@:
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
@@ -839,10 +881,8 @@
 $(am__aclocal_m4_deps):
 
 config.h: stamp-h1
-	@if test ! -f $@; then \
-	  rm -f stamp-h1; \
-	  $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
-	else :; fi
+	@if test ! -f $@; then rm -f stamp-h1; else :; fi
+	@if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
 
 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
 	@rm -f stamp-h1
@@ -1034,6 +1074,8 @@
 	lib/util/$(am__dirstamp) lib/util/$(DEPDIR)/$(am__dirstamp)
 lib/util/lib_libtarsnap_a-memlimit.$(OBJEXT):  \
 	lib/util/$(am__dirstamp) lib/util/$(DEPDIR)/$(am__dirstamp)
+lib/util/lib_libtarsnap_a-monoclock.$(OBJEXT):  \
+	lib/util/$(am__dirstamp) lib/util/$(DEPDIR)/$(am__dirstamp)
 lib/util/lib_libtarsnap_a-readpass.$(OBJEXT):  \
 	lib/util/$(am__dirstamp) lib/util/$(DEPDIR)/$(am__dirstamp)
 lib/util/lib_libtarsnap_a-sigquit.$(OBJEXT): lib/util/$(am__dirstamp) \
@@ -1045,7 +1087,7 @@
 lib/$(am__dirstamp):
 	@$(MKDIR_P) lib
 	@: > lib/$(am__dirstamp)
-lib/libtarsnap.a: $(lib_libtarsnap_a_OBJECTS) $(lib_libtarsnap_a_DEPENDENCIES) lib/$(am__dirstamp)
+lib/libtarsnap.a: $(lib_libtarsnap_a_OBJECTS) $(lib_libtarsnap_a_DEPENDENCIES) $(EXTRA_lib_libtarsnap_a_DEPENDENCIES) lib/$(am__dirstamp)
 	-rm -f lib/libtarsnap.a
 	$(lib_libtarsnap_a_AR) lib/libtarsnap.a $(lib_libtarsnap_a_OBJECTS) $(lib_libtarsnap_a_LIBADD)
 	$(RANLIB) lib/libtarsnap.a
@@ -1199,14 +1241,17 @@
 libarchive/libarchive_libarchive_a-filter_fork_windows.$(OBJEXT):  \
 	libarchive/$(am__dirstamp) \
 	libarchive/$(DEPDIR)/$(am__dirstamp)
-libarchive/libarchive.a: $(libarchive_libarchive_a_OBJECTS) $(libarchive_libarchive_a_DEPENDENCIES) libarchive/$(am__dirstamp)
+libarchive/libarchive.a: $(libarchive_libarchive_a_OBJECTS) $(libarchive_libarchive_a_DEPENDENCIES) $(EXTRA_libarchive_libarchive_a_DEPENDENCIES) libarchive/$(am__dirstamp)
 	-rm -f libarchive/libarchive.a
 	$(libarchive_libarchive_a_AR) libarchive/libarchive.a $(libarchive_libarchive_a_OBJECTS) $(libarchive_libarchive_a_LIBADD)
 	$(RANLIB) libarchive/libarchive.a
 install-binPROGRAMS: $(bin_PROGRAMS)
 	@$(NORMAL_INSTALL)
-	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
 	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+	fi; \
 	for p in $$list; do echo "$$p $$p"; done | \
 	sed 's/$(EXEEXT)$$//' | \
 	while read p p1; do if test -f $$p; \
@@ -1379,7 +1424,7 @@
 	tar/$(DEPDIR)/$(am__dirstamp)
 tar/tarsnap-bsdtar_cygwin.$(OBJEXT): tar/$(am__dirstamp) \
 	tar/$(DEPDIR)/$(am__dirstamp)
-tarsnap$(EXEEXT): $(tarsnap_OBJECTS) $(tarsnap_DEPENDENCIES) 
+tarsnap$(EXEEXT): $(tarsnap_OBJECTS) $(tarsnap_DEPENDENCIES) $(EXTRA_tarsnap_DEPENDENCIES) 
 	@rm -f tarsnap$(EXEEXT)
 	$(tarsnap_LINK) $(tarsnap_OBJECTS) $(tarsnap_LDADD) $(LIBS)
 keygen/$(am__dirstamp):
@@ -1390,7 +1435,7 @@
 	@: > keygen/$(DEPDIR)/$(am__dirstamp)
 keygen/tarsnap_keygen-keygen.$(OBJEXT): keygen/$(am__dirstamp) \
 	keygen/$(DEPDIR)/$(am__dirstamp)
-tarsnap-keygen$(EXEEXT): $(tarsnap_keygen_OBJECTS) $(tarsnap_keygen_DEPENDENCIES) 
+tarsnap-keygen$(EXEEXT): $(tarsnap_keygen_OBJECTS) $(tarsnap_keygen_DEPENDENCIES) $(EXTRA_tarsnap_keygen_DEPENDENCIES) 
 	@rm -f tarsnap-keygen$(EXEEXT)
 	$(tarsnap_keygen_LINK) $(tarsnap_keygen_OBJECTS) $(tarsnap_keygen_LDADD) $(LIBS)
 keymgmt/$(am__dirstamp):
@@ -1401,7 +1446,7 @@
 	@: > keymgmt/$(DEPDIR)/$(am__dirstamp)
 keymgmt/tarsnap_keymgmt-keymgmt.$(OBJEXT): keymgmt/$(am__dirstamp) \
 	keymgmt/$(DEPDIR)/$(am__dirstamp)
-tarsnap-keymgmt$(EXEEXT): $(tarsnap_keymgmt_OBJECTS) $(tarsnap_keymgmt_DEPENDENCIES) 
+tarsnap-keymgmt$(EXEEXT): $(tarsnap_keymgmt_OBJECTS) $(tarsnap_keymgmt_DEPENDENCIES) $(EXTRA_tarsnap_keymgmt_DEPENDENCIES) 
 	@rm -f tarsnap-keymgmt$(EXEEXT)
 	$(tarsnap_keymgmt_LINK) $(tarsnap_keymgmt_OBJECTS) $(tarsnap_keymgmt_LDADD) $(LIBS)
 keyregen/$(am__dirstamp):
@@ -1412,7 +1457,7 @@
 	@: > keyregen/$(DEPDIR)/$(am__dirstamp)
 keyregen/tarsnap_keyregen-keyregen.$(OBJEXT):  \
 	keyregen/$(am__dirstamp) keyregen/$(DEPDIR)/$(am__dirstamp)
-tarsnap-keyregen$(EXEEXT): $(tarsnap_keyregen_OBJECTS) $(tarsnap_keyregen_DEPENDENCIES) 
+tarsnap-keyregen$(EXEEXT): $(tarsnap_keyregen_OBJECTS) $(tarsnap_keyregen_DEPENDENCIES) $(EXTRA_tarsnap_keyregen_DEPENDENCIES) 
 	@rm -f tarsnap-keyregen$(EXEEXT)
 	$(tarsnap_keyregen_LINK) $(tarsnap_keyregen_OBJECTS) $(tarsnap_keyregen_LDADD) $(LIBS)
 recrypt/$(am__dirstamp):
@@ -1462,168 +1507,31 @@
 tar/storage/tarsnap_recrypt-storage_transaction.$(OBJEXT):  \
 	tar/storage/$(am__dirstamp) \
 	tar/storage/$(DEPDIR)/$(am__dirstamp)
-tarsnap-recrypt$(EXEEXT): $(tarsnap_recrypt_OBJECTS) $(tarsnap_recrypt_DEPENDENCIES) 
+tarsnap-recrypt$(EXEEXT): $(tarsnap_recrypt_OBJECTS) $(tarsnap_recrypt_DEPENDENCIES) $(EXTRA_tarsnap_recrypt_DEPENDENCIES) 
 	@rm -f tarsnap-recrypt$(EXEEXT)
 	$(tarsnap_recrypt_LINK) $(tarsnap_recrypt_OBJECTS) $(tarsnap_recrypt_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
-	-rm -f keygen/tarsnap_keygen-keygen.$(OBJEXT)
-	-rm -f keymgmt/tarsnap_keymgmt-keymgmt.$(OBJEXT)
-	-rm -f keyregen/tarsnap_keyregen-keyregen.$(OBJEXT)
-	-rm -f lib/crypto/lib_libtarsnap_a-crypto_aesctr.$(OBJEXT)
-	-rm -f lib/crypto/lib_libtarsnap_a-crypto_dh.$(OBJEXT)
-	-rm -f lib/crypto/lib_libtarsnap_a-crypto_dh_group14.$(OBJEXT)
-	-rm -f lib/crypto/lib_libtarsnap_a-crypto_entropy.$(OBJEXT)
-	-rm -f lib/crypto/lib_libtarsnap_a-crypto_file.$(OBJEXT)
-	-rm -f lib/crypto/lib_libtarsnap_a-crypto_hash.$(OBJEXT)
-	-rm -f lib/crypto/lib_libtarsnap_a-crypto_keys.$(OBJEXT)
-	-rm -f lib/crypto/lib_libtarsnap_a-crypto_keys_server.$(OBJEXT)
-	-rm -f lib/crypto/lib_libtarsnap_a-crypto_keys_subr.$(OBJEXT)
-	-rm -f lib/crypto/lib_libtarsnap_a-crypto_passwd_to_dh.$(OBJEXT)
-	-rm -f lib/crypto/lib_libtarsnap_a-crypto_rsa.$(OBJEXT)
-	-rm -f lib/crypto/lib_libtarsnap_a-crypto_scrypt-@SCRYPTVER@.$(OBJEXT)
-	-rm -f lib/crypto/lib_libtarsnap_a-crypto_session.$(OBJEXT)
-	-rm -f lib/crypto/lib_libtarsnap_a-crypto_verify_bytes.$(OBJEXT)
-	-rm -f lib/crypto/lib_libtarsnap_a-sha256.$(OBJEXT)
-	-rm -f lib/datastruct/lib_libtarsnap_a-patricia.$(OBJEXT)
-	-rm -f lib/datastruct/lib_libtarsnap_a-rwhashtab.$(OBJEXT)
-	-rm -f lib/keyfile/lib_libtarsnap_a-keyfile.$(OBJEXT)
-	-rm -f lib/netpacket/lib_libtarsnap_a-netpacket_delete.$(OBJEXT)
-	-rm -f lib/netpacket/lib_libtarsnap_a-netpacket_directory.$(OBJEXT)
-	-rm -f lib/netpacket/lib_libtarsnap_a-netpacket_hmac.$(OBJEXT)
-	-rm -f lib/netpacket/lib_libtarsnap_a-netpacket_op.$(OBJEXT)
-	-rm -f lib/netpacket/lib_libtarsnap_a-netpacket_read.$(OBJEXT)
-	-rm -f lib/netpacket/lib_libtarsnap_a-netpacket_register.$(OBJEXT)
-	-rm -f lib/netpacket/lib_libtarsnap_a-netpacket_transaction.$(OBJEXT)
-	-rm -f lib/netpacket/lib_libtarsnap_a-netpacket_write.$(OBJEXT)
-	-rm -f lib/netproto/lib_libtarsnap_a-netproto.$(OBJEXT)
-	-rm -f lib/netproto/lib_libtarsnap_a-netproto_connect.$(OBJEXT)
-	-rm -f lib/netproto/lib_libtarsnap_a-netproto_keyexchange.$(OBJEXT)
-	-rm -f lib/netproto/lib_libtarsnap_a-netproto_packet.$(OBJEXT)
-	-rm -f lib/network/lib_libtarsnap_a-network_buf.$(OBJEXT)
-	-rm -f lib/network/lib_libtarsnap_a-network_connect.$(OBJEXT)
-	-rm -f lib/network/lib_libtarsnap_a-network_cork.$(OBJEXT)
-	-rm -f lib/network/lib_libtarsnap_a-network_select.$(OBJEXT)
-	-rm -f lib/network/lib_libtarsnap_a-network_writeq.$(OBJEXT)
-	-rm -f lib/scryptenc/lib_libtarsnap_a-scryptenc.$(OBJEXT)
-	-rm -f lib/scryptenc/lib_libtarsnap_a-scryptenc_cpuperf.$(OBJEXT)
-	-rm -f lib/util/lib_libtarsnap_a-asprintf.$(OBJEXT)
-	-rm -f lib/util/lib_libtarsnap_a-b64encode.$(OBJEXT)
-	-rm -f lib/util/lib_libtarsnap_a-dirutil.$(OBJEXT)
-	-rm -f lib/util/lib_libtarsnap_a-entropy.$(OBJEXT)
-	-rm -f lib/util/lib_libtarsnap_a-getfstype.$(OBJEXT)
-	-rm -f lib/util/lib_libtarsnap_a-hexify.$(OBJEXT)
-	-rm -f lib/util/lib_libtarsnap_a-hexlink.$(OBJEXT)
-	-rm -f lib/util/lib_libtarsnap_a-humansize.$(OBJEXT)
-	-rm -f lib/util/lib_libtarsnap_a-memlimit.$(OBJEXT)
-	-rm -f lib/util/lib_libtarsnap_a-readpass.$(OBJEXT)
-	-rm -f lib/util/lib_libtarsnap_a-sigquit.$(OBJEXT)
-	-rm -f lib/util/lib_libtarsnap_a-tvmath.$(OBJEXT)
-	-rm -f lib/util/lib_libtarsnap_a-warnp.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_check_magic.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_entry.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_entry_copy_stat.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_entry_link_resolver.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_entry_stat.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_entry_strmode.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_read.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_read_data_into_fd.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_read_disk.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_read_disk_entry_from_file.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_read_disk_set_standard_lookup.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_read_extract.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_read_open_fd.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_read_open_file.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_read_open_filename.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_read_open_memory.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_read_support_compression_all.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_read_support_compression_bzip2.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_read_support_compression_compress.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_read_support_compression_gzip.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_read_support_compression_none.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_read_support_compression_program.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_read_support_compression_xz.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_read_support_format_all.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_read_support_format_ar.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_read_support_format_cpio.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_read_support_format_empty.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_read_support_format_iso9660.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_read_support_format_mtree.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_read_support_format_tar.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_read_support_format_zip.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_string.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_string_sprintf.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_util.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_virtual.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_windows.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_write.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_write_disk.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_write_disk_set_standard_lookup.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_write_open_fd.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_write_open_file.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_write_open_filename.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_write_open_memory.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_write_set_compression_none.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_write_set_format_pax.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-archive_write_set_format_ustar.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-filter_fork.$(OBJEXT)
-	-rm -f libarchive/libarchive_libarchive_a-filter_fork_windows.$(OBJEXT)
-	-rm -f recrypt/tarsnap_recrypt-recrypt.$(OBJEXT)
-	-rm -f tar/ccache/tarsnap-ccache_entry.$(OBJEXT)
-	-rm -f tar/ccache/tarsnap-ccache_read.$(OBJEXT)
-	-rm -f tar/ccache/tarsnap-ccache_write.$(OBJEXT)
-	-rm -f tar/chunks/tarsnap-chunks_delete.$(OBJEXT)
-	-rm -f tar/chunks/tarsnap-chunks_directory.$(OBJEXT)
-	-rm -f tar/chunks/tarsnap-chunks_read.$(OBJEXT)
-	-rm -f tar/chunks/tarsnap-chunks_stats.$(OBJEXT)
-	-rm -f tar/chunks/tarsnap-chunks_stats_internal.$(OBJEXT)
-	-rm -f tar/chunks/tarsnap-chunks_transaction.$(OBJEXT)
-	-rm -f tar/chunks/tarsnap-chunks_write.$(OBJEXT)
-	-rm -f tar/chunks/tarsnap_recrypt-chunks_delete.$(OBJEXT)
-	-rm -f tar/chunks/tarsnap_recrypt-chunks_directory.$(OBJEXT)
-	-rm -f tar/chunks/tarsnap_recrypt-chunks_stats.$(OBJEXT)
-	-rm -f tar/chunks/tarsnap_recrypt-chunks_stats_internal.$(OBJEXT)
-	-rm -f tar/chunks/tarsnap_recrypt-chunks_transaction.$(OBJEXT)
-	-rm -f tar/chunks/tarsnap_recrypt-chunks_write.$(OBJEXT)
-	-rm -f tar/glue/tarsnap-archive_multitape.$(OBJEXT)
-	-rm -f tar/glue/tarsnap-tape.$(OBJEXT)
-	-rm -f tar/multitape/tarsnap-chunkify.$(OBJEXT)
-	-rm -f tar/multitape/tarsnap-multitape_chunkiter.$(OBJEXT)
-	-rm -f tar/multitape/tarsnap-multitape_delete.$(OBJEXT)
-	-rm -f tar/multitape/tarsnap-multitape_fsck.$(OBJEXT)
-	-rm -f tar/multitape/tarsnap-multitape_metadata.$(OBJEXT)
-	-rm -f tar/multitape/tarsnap-multitape_metaindex.$(OBJEXT)
-	-rm -f tar/multitape/tarsnap-multitape_nuke.$(OBJEXT)
-	-rm -f tar/multitape/tarsnap-multitape_read.$(OBJEXT)
-	-rm -f tar/multitape/tarsnap-multitape_recover.$(OBJEXT)
-	-rm -f tar/multitape/tarsnap-multitape_stats.$(OBJEXT)
-	-rm -f tar/multitape/tarsnap-multitape_transaction.$(OBJEXT)
-	-rm -f tar/multitape/tarsnap-multitape_write.$(OBJEXT)
-	-rm -f tar/multitape/tarsnap_recrypt-multitape_metadata.$(OBJEXT)
-	-rm -f tar/multitape/tarsnap_recrypt-multitape_transaction.$(OBJEXT)
-	-rm -f tar/storage/tarsnap-storage_delete.$(OBJEXT)
-	-rm -f tar/storage/tarsnap-storage_directory.$(OBJEXT)
-	-rm -f tar/storage/tarsnap-storage_read.$(OBJEXT)
-	-rm -f tar/storage/tarsnap-storage_transaction.$(OBJEXT)
-	-rm -f tar/storage/tarsnap-storage_write.$(OBJEXT)
-	-rm -f tar/storage/tarsnap_recrypt-storage_delete.$(OBJEXT)
-	-rm -f tar/storage/tarsnap_recrypt-storage_directory.$(OBJEXT)
-	-rm -f tar/storage/tarsnap_recrypt-storage_read.$(OBJEXT)
-	-rm -f tar/storage/tarsnap_recrypt-storage_transaction.$(OBJEXT)
-	-rm -f tar/storage/tarsnap_recrypt-storage_write.$(OBJEXT)
-	-rm -f tar/tarsnap-bsdtar.$(OBJEXT)
-	-rm -f tar/tarsnap-bsdtar_cygwin.$(OBJEXT)
-	-rm -f tar/tarsnap-bsdtar_windows.$(OBJEXT)
-	-rm -f tar/tarsnap-cmdline.$(OBJEXT)
-	-rm -f tar/tarsnap-getdate.$(OBJEXT)
-	-rm -f tar/tarsnap-matching.$(OBJEXT)
-	-rm -f tar/tarsnap-read.$(OBJEXT)
-	-rm -f tar/tarsnap-siginfo.$(OBJEXT)
-	-rm -f tar/tarsnap-subst.$(OBJEXT)
-	-rm -f tar/tarsnap-tree.$(OBJEXT)
-	-rm -f tar/tarsnap-util.$(OBJEXT)
-	-rm -f tar/tarsnap-write.$(OBJEXT)
+	-rm -f keygen/*.$(OBJEXT)
+	-rm -f keymgmt/*.$(OBJEXT)
+	-rm -f keyregen/*.$(OBJEXT)
+	-rm -f lib/crypto/*.$(OBJEXT)
+	-rm -f lib/datastruct/*.$(OBJEXT)
+	-rm -f lib/keyfile/*.$(OBJEXT)
+	-rm -f lib/netpacket/*.$(OBJEXT)
+	-rm -f lib/netproto/*.$(OBJEXT)
+	-rm -f lib/network/*.$(OBJEXT)
+	-rm -f lib/scryptenc/*.$(OBJEXT)
+	-rm -f lib/util/*.$(OBJEXT)
+	-rm -f libarchive/*.$(OBJEXT)
+	-rm -f recrypt/*.$(OBJEXT)
+	-rm -f tar/*.$(OBJEXT)
+	-rm -f tar/ccache/*.$(OBJEXT)
+	-rm -f tar/chunks/*.$(OBJEXT)
+	-rm -f tar/glue/*.$(OBJEXT)
+	-rm -f tar/multitape/*.$(OBJEXT)
+	-rm -f tar/storage/*.$(OBJEXT)
 
 distclean-compile:
 	-rm -f *.tab.c
@@ -1677,6 +1585,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@lib/util/$(DEPDIR)/lib_libtarsnap_a-hexlink.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@lib/util/$(DEPDIR)/lib_libtarsnap_a-humansize.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@lib/util/$(DEPDIR)/lib_libtarsnap_a-memlimit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@lib/util/$(DEPDIR)/lib_libtarsnap_a-monoclock.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@lib/util/$(DEPDIR)/lib_libtarsnap_a-readpass.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@lib/util/$(DEPDIR)/lib_libtarsnap_a-sigquit.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@lib/util/$(DEPDIR)/lib_libtarsnap_a-tvmath.Po@am__quote@
@@ -2445,6 +2354,20 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_libtarsnap_a_CFLAGS) $(CFLAGS) -c -o lib/util/lib_libtarsnap_a-memlimit.obj `if test -f 'lib/util/memlimit.c'; then $(CYGPATH_W) 'lib/util/memlimit.c'; else $(CYGPATH_W) '$(srcdir)/lib/util/memlimit.c'; fi`
 
+lib/util/lib_libtarsnap_a-monoclock.o: lib/util/monoclock.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_libtarsnap_a_CFLAGS) $(CFLAGS) -MT lib/util/lib_libtarsnap_a-monoclock.o -MD -MP -MF lib/util/$(DEPDIR)/lib_libtarsnap_a-monoclock.Tpo -c -o lib/util/lib_libtarsnap_a-monoclock.o `test -f 'lib/util/monoclock.c' || echo '$(srcdir)/'`lib/util/monoclock.c
+@am__fastdepCC_TRUE@	$(am__mv) lib/util/$(DEPDIR)/lib_libtarsnap_a-monoclock.Tpo lib/util/$(DEPDIR)/lib_libtarsnap_a-monoclock.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='lib/util/monoclock.c' object='lib/util/lib_libtarsnap_a-monoclock.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) $(lib_libtarsnap_a_CFLAGS) $(CFLAGS) -c -o lib/util/lib_libtarsnap_a-monoclock.o `test -f 'lib/util/monoclock.c' || echo '$(srcdir)/'`lib/util/monoclock.c
+
+lib/util/lib_libtarsnap_a-monoclock.obj: lib/util/monoclock.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_libtarsnap_a_CFLAGS) $(CFLAGS) -MT lib/util/lib_libtarsnap_a-monoclock.obj -MD -MP -MF lib/util/$(DEPDIR)/lib_libtarsnap_a-monoclock.Tpo -c -o lib/util/lib_libtarsnap_a-monoclock.obj `if test -f 'lib/util/monoclock.c'; then $(CYGPATH_W) 'lib/util/monoclock.c'; else $(CYGPATH_W) '$(srcdir)/lib/util/monoclock.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) lib/util/$(DEPDIR)/lib_libtarsnap_a-monoclock.Tpo lib/util/$(DEPDIR)/lib_libtarsnap_a-monoclock.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='lib/util/monoclock.c' object='lib/util/lib_libtarsnap_a-monoclock.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) $(lib_libtarsnap_a_CFLAGS) $(CFLAGS) -c -o lib/util/lib_libtarsnap_a-monoclock.obj `if test -f 'lib/util/monoclock.c'; then $(CYGPATH_W) 'lib/util/monoclock.c'; else $(CYGPATH_W) '$(srcdir)/lib/util/monoclock.c'; fi`
+
 lib/util/lib_libtarsnap_a-readpass.o: lib/util/readpass.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_libtarsnap_a_CFLAGS) $(CFLAGS) -MT lib/util/lib_libtarsnap_a-readpass.o -MD -MP -MF lib/util/$(DEPDIR)/lib_libtarsnap_a-readpass.Tpo -c -o lib/util/lib_libtarsnap_a-readpass.o `test -f 'lib/util/readpass.c' || echo '$(srcdir)/'`lib/util/readpass.c
 @am__fastdepCC_TRUE@	$(am__mv) lib/util/$(DEPDIR)/lib_libtarsnap_a-readpass.Tpo lib/util/$(DEPDIR)/lib_libtarsnap_a-readpass.Po
@@ -3986,11 +3909,18 @@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tarsnap_recrypt_CFLAGS) $(CFLAGS) -c -o tar/storage/tarsnap_recrypt-storage_transaction.obj `if test -f 'tar/storage/storage_transaction.c'; then $(CYGPATH_W) 'tar/storage/storage_transaction.c'; else $(CYGPATH_W) '$(srcdir)/tar/storage/storage_transaction.c'; fi`
 install-man1: $(dist_man_MANS)
 	@$(NORMAL_INSTALL)
-	test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
-	@list=''; test -n "$(man1dir)" || exit 0; \
-	{ for i in $$list; do echo "$$i"; done; \
-	l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \
-	  sed -n '/\.1[a-z]*$$/p'; \
+	@list1=''; \
+	list2='$(dist_man_MANS)'; \
+	test -n "$(man1dir)" \
+	  && test -n "`echo $$list1$$list2`" \
+	  || exit 0; \
+	echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+	$(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+	{ for i in $$list1; do echo "$$i"; done;  \
+	if test -n "$$list2"; then \
+	  for i in $$list2; do echo "$$i"; done \
+	    | sed -n '/\.1[a-z]*$$/p'; \
+	fi; \
 	} | while read p; do \
 	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
 	  echo "$$d$$p"; echo "$$p"; \
@@ -4019,16 +3949,21 @@
 	  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; }
+	dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
 install-man5: $(dist_man_MANS)
 	@$(NORMAL_INSTALL)
-	test -z "$(man5dir)" || $(MKDIR_P) "$(DESTDIR)$(man5dir)"
-	@list=''; test -n "$(man5dir)" || exit 0; \
-	{ for i in $$list; do echo "$$i"; done; \
-	l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \
-	  sed -n '/\.5[a-z]*$$/p'; \
+	@list1=''; \
+	list2='$(dist_man_MANS)'; \
+	test -n "$(man5dir)" \
+	  && test -n "`echo $$list1$$list2`" \
+	  || exit 0; \
+	echo " $(MKDIR_P) '$(DESTDIR)$(man5dir)'"; \
+	$(MKDIR_P) "$(DESTDIR)$(man5dir)" || exit 1; \
+	{ for i in $$list1; do echo "$$i"; done;  \
+	if test -n "$$list2"; then \
+	  for i in $$list2; do echo "$$i"; done \
+	    | sed -n '/\.5[a-z]*$$/p'; \
+	fi; \
 	} | while read p; do \
 	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
 	  echo "$$d$$p"; echo "$$p"; \
@@ -4057,13 +3992,14 @@
 	  sed -n '/\.5[a-z]*$$/p'; \
 	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
 	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
-	test -z "$$files" || { \
-	  echo " ( cd '$(DESTDIR)$(man5dir)' && rm -f" $$files ")"; \
-	  cd "$(DESTDIR)$(man5dir)" && rm -f $$files; }
+	dir='$(DESTDIR)$(man5dir)'; $(am__uninstall_files_from_dir)
 install-sysconfDATA: $(sysconf_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(sysconfdir)" || $(MKDIR_P) "$(DESTDIR)$(sysconfdir)"
 	@list='$(sysconf_DATA)'; test -n "$(sysconfdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(sysconfdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(sysconfdir)" || exit 1; \
+	fi; \
 	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  echo "$$d$$p"; \
@@ -4077,9 +4013,7 @@
 	@$(NORMAL_UNINSTALL)
 	@list='$(sysconf_DATA)'; test -n "$(sysconfdir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(sysconfdir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(sysconfdir)" && rm -f $$files
+	dir='$(DESTDIR)$(sysconfdir)'; $(am__uninstall_files_from_dir)
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -4130,8 +4064,32 @@
 	  && $(am__cd) $(top_srcdir) \
 	  && gtags -i $(GTAGS_ARGS) "$$here"
 
+cscope: cscope.files
+	test ! -s cscope.files \
+	  || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+
+clean-cscope:
+	-rm -f cscope.files
+
+cscope.files: clean-cscope  cscopelist
+
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+	list='$(SOURCES) $(HEADERS) $(LISP)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
 distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+	-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
 
 distdir: $(DISTFILES)
 	@list='$(MANS)'; if test -n "$$list"; then \
@@ -4140,10 +4098,10 @@
 	    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; \
+	    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; \
+	    echo "       typically 'make maintainer-clean' will remove them" >&2; \
 	    exit 1; \
 	  else :; fi; \
 	else :; fi
@@ -4187,36 +4145,36 @@
 	|| chmod -R a+r "$(distdir)"
 dist-gzip: distdir
 	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-	$(am__remove_distdir)
+	$(am__post_remove_distdir)
 
 dist-bzip2: distdir
-	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
-	$(am__remove_distdir)
+	tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+	$(am__post_remove_distdir)
 
-dist-lzma: distdir
-	tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
-	$(am__remove_distdir)
+dist-lzip: distdir
+	tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+	$(am__post_remove_distdir)
 
 dist-xz: distdir
-	tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
-	$(am__remove_distdir)
+	tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+	$(am__post_remove_distdir)
 
 dist-tarZ: distdir
 	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
-	$(am__remove_distdir)
+	$(am__post_remove_distdir)
 
 dist-shar: distdir
 	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
-	$(am__remove_distdir)
+	$(am__post_remove_distdir)
 
 dist-zip: distdir
 	-rm -f $(distdir).zip
 	zip -rq $(distdir).zip $(distdir)
-	$(am__remove_distdir)
+	$(am__post_remove_distdir)
 
-dist dist-all: distdir
-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-	$(am__remove_distdir)
+dist dist-all:
+	$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+	$(am__post_remove_distdir)
 
 # This target untars the dist file and tries a VPATH configuration.  Then
 # it guarantees that the distribution is self-contained by making another
@@ -4227,8 +4185,8 @@
 	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
 	*.tar.bz2*) \
 	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
-	*.tar.lzma*) \
-	  lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+	*.tar.lz*) \
+	  lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
 	*.tar.xz*) \
 	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
 	*.tar.Z*) \
@@ -4238,7 +4196,7 @@
 	*.zip*) \
 	  unzip $(distdir).zip ;;\
 	esac
-	chmod -R a-w $(distdir); chmod a+w $(distdir)
+	chmod -R a-w $(distdir); chmod u+w $(distdir)
 	mkdir $(distdir)/_build
 	mkdir $(distdir)/_inst
 	chmod a-w $(distdir)
@@ -4248,6 +4206,7 @@
 	  && am__cwd=`pwd` \
 	  && $(am__cd) $(distdir)/_build \
 	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
 	    $(DISTCHECK_CONFIGURE_FLAGS) \
 	  && $(MAKE) $(AM_MAKEFLAGS) \
 	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
@@ -4271,13 +4230,21 @@
 	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
 	  && cd "$$am__cwd" \
 	  || exit 1
-	$(am__remove_distdir)
+	$(am__post_remove_distdir)
 	@(echo "$(distdir) archives ready for distribution: "; \
 	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
 	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
 distuninstallcheck:
-	@$(am__cd) '$(distuninstallcheck_dir)' \
-	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+	@test -n '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: trying to run $@ with an empty' \
+	       '$$(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	$(am__cd) '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
 	   || { echo "ERROR: files left after uninstall:" ; \
 	        if test -n "$(DESTDIR)"; then \
 	          echo "  (check DESTDIR support)"; \
@@ -4310,10 +4277,15 @@
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -4443,22 +4415,23 @@
 .MAKE: all install-am install-strip
 
 .PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \
-	clean-binPROGRAMS clean-generic clean-noinstLIBRARIES ctags \
-	dist dist-all dist-bzip2 dist-gzip dist-lzma dist-shar \
-	dist-tarZ dist-xz dist-zip distcheck distclean \
-	distclean-compile distclean-generic distclean-hdr \
-	distclean-tags distcleancheck distdir distuninstallcheck dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-binPROGRAMS install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-man1 install-man5 install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip install-sysconfDATA \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
-	uninstall-am uninstall-binPROGRAMS uninstall-man \
-	uninstall-man1 uninstall-man5 uninstall-sysconfDATA
+	clean-binPROGRAMS clean-cscope clean-generic \
+	clean-noinstLIBRARIES cscope cscopelist ctags dist dist-all \
+	dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ dist-xz \
+	dist-zip distcheck distclean distclean-compile \
+	distclean-generic distclean-hdr distclean-tags distcleancheck \
+	distdir distuninstallcheck dvi dvi-am html html-am info \
+	info-am install install-am install-binPROGRAMS install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-man1 install-man5 \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip install-sysconfDATA installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
+	ps ps-am tags uninstall uninstall-am uninstall-binPROGRAMS \
+	uninstall-man uninstall-man1 uninstall-man5 \
+	uninstall-sysconfDATA
 
 
 # Use the right version of the man pages depending on whether we have mdoc
diff -ruN tarsnap-autoconf-1.0.32/config.aux/compile tarsnap-autoconf-1.0.33/config.aux/compile
--- tarsnap-autoconf-1.0.32/config.aux/compile	2012-02-22 04:10:55.000000000 -0800
+++ tarsnap-autoconf-1.0.33/config.aux/compile	2012-08-10 00:05:26.000000000 -0700
@@ -1,10 +1,9 @@
 #! /bin/sh
-# Wrapper for compilers which do not understand `-c -o'.
+# Wrapper for compilers which do not understand '-c -o'.
 
-scriptversion=2009-10-06.20; # UTC
+scriptversion=2012-03-05.13; # UTC
 
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009  Free Software
-# Foundation, Inc.
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
 # Written by Tom Tromey <tromey@cygnus.com>.
 #
 # This program is free software; you can redistribute it and/or modify
@@ -29,21 +28,219 @@
 # bugs to <bug-automake@gnu.org> or send patches to
 # <automake-patches@gnu.org>.
 
+nl='
+'
+
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" ""	$nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+  file=$1
+  case $file in
+    / | /[!/]*) # absolute file, and not a UNC file
+      if test -z "$file_conv"; then
+	# lazily determine how to convert abs files
+	case `uname -s` in
+	  MINGW*)
+	    file_conv=mingw
+	    ;;
+	  CYGWIN*)
+	    file_conv=cygwin
+	    ;;
+	  *)
+	    file_conv=wine
+	    ;;
+	esac
+      fi
+      case $file_conv/,$2, in
+	*,$file_conv,*)
+	  ;;
+	mingw/*)
+	  file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+	  ;;
+	cygwin/*)
+	  file=`cygpath -m "$file" || echo "$file"`
+	  ;;
+	wine/*)
+	  file=`winepath -w "$file" || echo "$file"`
+	  ;;
+      esac
+      ;;
+  esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+  func_file_conv "$1"
+  if test -z "$lib_path"; then
+    lib_path=$file
+  else
+    lib_path="$lib_path;$file"
+  fi
+  linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+  lib=$1
+  found=no
+  save_IFS=$IFS
+  IFS=';'
+  for dir in $lib_path $LIB
+  do
+    IFS=$save_IFS
+    if $shared && test -f "$dir/$lib.dll.lib"; then
+      found=yes
+      lib=$dir/$lib.dll.lib
+      break
+    fi
+    if test -f "$dir/$lib.lib"; then
+      found=yes
+      lib=$dir/$lib.lib
+      break
+    fi
+  done
+  IFS=$save_IFS
+
+  if test "$found" != yes; then
+    lib=$lib.lib
+  fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+  # Assume a capable shell
+  lib_path=
+  shared=:
+  linker_opts=
+  for arg
+  do
+    if test -n "$eat"; then
+      eat=
+    else
+      case $1 in
+	-o)
+	  # configure might choose to run compile as 'compile cc -o foo foo.c'.
+	  eat=1
+	  case $2 in
+	    *.o | *.[oO][bB][jJ])
+	      func_file_conv "$2"
+	      set x "$@" -Fo"$file"
+	      shift
+	      ;;
+	    *)
+	      func_file_conv "$2"
+	      set x "$@" -Fe"$file"
+	      shift
+	      ;;
+	  esac
+	  ;;
+	-I)
+	  eat=1
+	  func_file_conv "$2" mingw
+	  set x "$@" -I"$file"
+	  shift
+	  ;;
+	-I*)
+	  func_file_conv "${1#-I}" mingw
+	  set x "$@" -I"$file"
+	  shift
+	  ;;
+	-l)
+	  eat=1
+	  func_cl_dashl "$2"
+	  set x "$@" "$lib"
+	  shift
+	  ;;
+	-l*)
+	  func_cl_dashl "${1#-l}"
+	  set x "$@" "$lib"
+	  shift
+	  ;;
+	-L)
+	  eat=1
+	  func_cl_dashL "$2"
+	  ;;
+	-L*)
+	  func_cl_dashL "${1#-L}"
+	  ;;
+	-static)
+	  shared=false
+	  ;;
+	-Wl,*)
+	  arg=${1#-Wl,}
+	  save_ifs="$IFS"; IFS=','
+	  for flag in $arg; do
+	    IFS="$save_ifs"
+	    linker_opts="$linker_opts $flag"
+	  done
+	  IFS="$save_ifs"
+	  ;;
+	-Xlinker)
+	  eat=1
+	  linker_opts="$linker_opts $2"
+	  ;;
+	-*)
+	  set x "$@" "$1"
+	  shift
+	  ;;
+	*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+	  func_file_conv "$1"
+	  set x "$@" -Tp"$file"
+	  shift
+	  ;;
+	*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+	  func_file_conv "$1" mingw
+	  set x "$@" "$file"
+	  shift
+	  ;;
+	*)
+	  set x "$@" "$1"
+	  shift
+	  ;;
+      esac
+    fi
+    shift
+  done
+  if test -n "$linker_opts"; then
+    linker_opts="-link$linker_opts"
+  fi
+  exec "$@" $linker_opts
+  exit 1
+}
+
+eat=
+
 case $1 in
   '')
-     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
      exit 1;
      ;;
   -h | --h*)
     cat <<\EOF
 Usage: compile [--help] [--version] PROGRAM [ARGS]
 
-Wrapper for compilers which do not understand `-c -o'.
-Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
 arguments, and rename the output as expected.
 
 If you are trying to build a whole package this is not the
-right script to run: please start by reading the file `INSTALL'.
+right script to run: please start by reading the file 'INSTALL'.
 
 Report bugs to <bug-automake@gnu.org>.
 EOF
@@ -53,11 +250,13 @@
     echo "compile $scriptversion"
     exit $?
     ;;
+  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+    func_cl_wrapper "$@"      # Doesn't return...
+    ;;
 esac
 
 ofile=
 cfile=
-eat=
 
 for arg
 do
@@ -66,8 +265,8 @@
   else
     case $1 in
       -o)
-	# configure might choose to run compile as `compile cc -o foo foo.c'.
-	# So we strip `-o arg' only if arg is an object.
+	# configure might choose to run compile as 'compile cc -o foo foo.c'.
+	# So we strip '-o arg' only if arg is an object.
 	eat=1
 	case $2 in
 	  *.o | *.obj)
@@ -94,10 +293,10 @@
 done
 
 if test -z "$ofile" || test -z "$cfile"; then
-  # If no `-o' option was seen then we might have been invoked from a
+  # If no '-o' option was seen then we might have been invoked from a
   # pattern rule where we don't need one.  That is ok -- this is a
   # normal compilation that the losing compiler can handle.  If no
-  # `.c' file was seen then we are probably linking.  That is also
+  # '.c' file was seen then we are probably linking.  That is also
   # ok.
   exec "$@"
 fi
@@ -106,7 +305,7 @@
 cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
 
 # Create the lock directory.
-# Note: use `[/\\:.-]' here to ensure that we don't use the same name
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
 # that we are using for the .o file.  Also, base the name on the expected
 # object file name, since that is what matters with a parallel build.
 lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
diff -ruN tarsnap-autoconf-1.0.32/config.aux/depcomp tarsnap-autoconf-1.0.33/config.aux/depcomp
--- tarsnap-autoconf-1.0.32/config.aux/depcomp	2012-02-22 04:10:55.000000000 -0800
+++ tarsnap-autoconf-1.0.33/config.aux/depcomp	2012-08-10 00:05:26.000000000 -0700
@@ -1,10 +1,9 @@
 #! /bin/sh
 # depcomp - compile a program generating dependencies as side-effects
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2012-03-27.16; # UTC
 
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
-# Software Foundation, Inc.
+# Copyright (C) 1999-2012 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -28,7 +27,7 @@
 
 case $1 in
   '')
-     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
      exit 1;
      ;;
   -h | --h*)
@@ -40,11 +39,11 @@
 
 Environment variables:
   depmode     Dependency tracking mode.
-  source      Source file read by `PROGRAMS ARGS'.
-  object      Object file output by `PROGRAMS ARGS'.
+  source      Source file read by 'PROGRAMS ARGS'.
+  object      Object file output by 'PROGRAMS ARGS'.
   DEPDIR      directory where to store dependencies.
   depfile     Dependency file to output.
-  tmpdepfile  Temporary file to use when outputing dependencies.
+  tmpdepfile  Temporary file to use when outputting dependencies.
   libtool     Whether libtool is used (yes/no).
 
 Report bugs to <bug-automake@gnu.org>.
@@ -57,6 +56,12 @@
     ;;
 esac
 
+# A tabulation character.
+tab='	'
+# A newline character.
+nl='
+'
+
 if test -z "$depmode" || test -z "$source" || test -z "$object"; then
   echo "depcomp: Variables source, object and depmode must be set" 1>&2
   exit 1
@@ -90,10 +95,24 @@
    # This is just like msvisualcpp but w/o cygpath translation.
    # Just convert the backslash-escaped backslashes to single forward
    # slashes to satisfy depend.m4
-   cygpath_u="sed s,\\\\\\\\,/,g"
+   cygpath_u='sed s,\\\\,/,g'
    depmode=msvisualcpp
 fi
 
+if test "$depmode" = msvc7msys; then
+   # This is just like msvc7 but w/o cygpath translation.
+   # Just convert the backslash-escaped backslashes to single forward
+   # slashes to satisfy depend.m4
+   cygpath_u='sed s,\\\\,/,g'
+   depmode=msvc7
+fi
+
+if test "$depmode" = xlc; then
+   # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations.
+   gccflag=-qmakedep=gcc,-MF
+   depmode=gcc
+fi
+
 case "$depmode" in
 gcc3)
 ## gcc 3 implements dependency tracking that does exactly what
@@ -148,20 +167,21 @@
 ## The second -e expression handles DOS-style file names with drive letters.
   sed -e 's/^[^:]*: / /' \
       -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the `deleted header file' problem.
+## This next piece of magic avoids the "deleted header file" problem.
 ## The problem is that when a header file which appears in a .P file
 ## is deleted, the dependency causes make to die (because there is
 ## typically no way to rebuild the header).  We avoid this by adding
 ## dummy dependencies for each header file.  Too bad gcc doesn't do
 ## this for us directly.
-  tr ' ' '
-' < "$tmpdepfile" |
-## Some versions of gcc put a space before the `:'.  On the theory
+  tr ' ' "$nl" < "$tmpdepfile" |
+## Some versions of gcc put a space before the ':'.  On the theory
 ## that the space means something, we add a space to the output as
-## well.
+## well.  hp depmode also adds that space, but also prefixes the VPATH
+## to the object.  Take care to not repeat it in the output.
 ## Some versions of the HPUX 10.20 sed can't process this invocation
 ## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+    sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+      | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -193,18 +213,15 @@
     # clever and replace this with sed code, as IRIX sed won't handle
     # lines with more than a fixed number of characters (4096 in
     # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
-    # the IRIX cc adds comments like `#:fec' to the end of the
+    # the IRIX cc adds comments like '#:fec' to the end of the
     # dependency line.
-    tr ' ' '
-' < "$tmpdepfile" \
+    tr ' ' "$nl" < "$tmpdepfile" \
     | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
-    tr '
-' ' ' >> "$depfile"
+    tr "$nl" ' ' >> "$depfile"
     echo >> "$depfile"
 
     # The second pass generates a dummy entry for each header file.
-    tr ' ' '
-' < "$tmpdepfile" \
+    tr ' ' "$nl" < "$tmpdepfile" \
    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
    >> "$depfile"
   else
@@ -216,10 +233,17 @@
   rm -f "$tmpdepfile"
   ;;
 
+xlc)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
 aix)
   # The C for AIX Compiler uses -M and outputs the dependencies
   # in a .u file.  In older versions, this file always lives in the
-  # current directory.  Also, the AIX compiler puts `$object:' at the
+  # current directory.  Also, the AIX compiler puts '$object:' at the
   # start of each line; $object doesn't have directory information.
   # Version 6 uses the directory in both cases.
   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
@@ -249,12 +273,11 @@
     test -f "$tmpdepfile" && break
   done
   if test -f "$tmpdepfile"; then
-    # Each line is of the form `foo.o: dependent.h'.
+    # Each line is of the form 'foo.o: dependent.h'.
     # Do two passes, one to just change these to
-    # `$object: dependent.h' and one to simply `dependent.h:'.
+    # '$object: dependent.h' and one to simply 'dependent.h:'.
     sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-    # That's a tab and a space in the [].
-    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+    sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
   else
     # The sourcefile does not contain any dependencies, so just
     # store a dummy comment line, to avoid errors with the Makefile
@@ -265,23 +288,26 @@
   ;;
 
 icc)
-  # Intel's C compiler understands `-MD -MF file'.  However on
-  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+  # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'.
+  # However on
+  #    $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c
   # ICC 7.0 will fill foo.d with something like
   #    foo.o: sub/foo.c
   #    foo.o: sub/foo.h
-  # which is wrong.  We want:
+  # which is wrong.  We want
   #    sub/foo.o: sub/foo.c
   #    sub/foo.o: sub/foo.h
   #    sub/foo.c:
   #    sub/foo.h:
   # ICC 7.1 will output
   #    foo.o: sub/foo.c sub/foo.h
-  # and will wrap long lines using \ :
+  # and will wrap long lines using '\':
   #    foo.o: sub/foo.c ... \
   #     sub/foo.h ... \
   #     ...
-
+  # tcc 0.9.26 (FIXME still under development at the moment of writing)
+  # will emit a similar output, but also prepend the continuation lines
+  # with horizontal tabulation characters.
   "$@" -MD -MF "$tmpdepfile"
   stat=$?
   if test $stat -eq 0; then :
@@ -290,15 +316,21 @@
     exit $stat
   fi
   rm -f "$depfile"
-  # Each line is of the form `foo.o: dependent.h',
-  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Each line is of the form 'foo.o: dependent.h',
+  # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
   # Do two passes, one to just change these to
-  # `$object: dependent.h' and one to simply `dependent.h:'.
-  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
-  # Some versions of the HPUX 10.20 sed can't process this invocation
-  # correctly.  Breaking it into two sed invocations is a workaround.
-  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
-    sed -e 's/$/ :/' >> "$depfile"
+  # '$object: dependent.h' and one to simply 'dependent.h:'.
+  sed -e "s/^[ $tab][ $tab]*/  /" -e "s,^[^:]*:,$object :," \
+    < "$tmpdepfile" > "$depfile"
+  sed '
+    s/[ '"$tab"'][ '"$tab"']*/ /g
+    s/^ *//
+    s/ *\\*$//
+    s/^[^:]*: *//
+    /^$/d
+    /:$/d
+    s/$/ :/
+  ' < "$tmpdepfile" >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -334,7 +366,7 @@
   done
   if test -f "$tmpdepfile"; then
     sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
-    # Add `dependent.h:' lines.
+    # Add 'dependent.h:' lines.
     sed -ne '2,${
 	       s/^ *//
 	       s/ \\*$//
@@ -349,9 +381,9 @@
 
 tru64)
    # The Tru64 compiler uses -MD to generate dependencies as a side
-   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+   # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
    # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
-   # dependencies in `foo.d' instead, so we check for that too.
+   # dependencies in 'foo.d' instead, so we check for that too.
    # Subdirectories are respected.
    dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
    test "x$dir" = "x$object" && dir=
@@ -397,14 +429,59 @@
    done
    if test -f "$tmpdepfile"; then
       sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-      # That's a tab and a space in the [].
-      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+      sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
    else
       echo "#dummy" > "$depfile"
    fi
    rm -f "$tmpdepfile"
    ;;
 
+msvc7)
+  if test "$libtool" = yes; then
+    showIncludes=-Wc,-showIncludes
+  else
+    showIncludes=-showIncludes
+  fi
+  "$@" $showIncludes > "$tmpdepfile"
+  stat=$?
+  grep -v '^Note: including file: ' "$tmpdepfile"
+  if test "$stat" = 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  # The first sed program below extracts the file names and escapes
+  # backslashes for cygpath.  The second sed program outputs the file
+  # name when reading, but also accumulates all include files in the
+  # hold buffer in order to output them again at the end.  This only
+  # works with sed implementations that can handle large buffers.
+  sed < "$tmpdepfile" -n '
+/^Note: including file:  *\(.*\)/ {
+  s//\1/
+  s/\\/\\\\/g
+  p
+}' | $cygpath_u | sort -u | sed -n '
+s/ /\\ /g
+s/\(.*\)/'"$tab"'\1 \\/p
+s/.\(.*\) \\/\1:/
+H
+$ {
+  s/.*/'"$tab"'/
+  G
+  p
+}' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvc7msys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
 #nosideeffect)
   # This comment above is used by automake to tell side-effect
   # dependency tracking mechanisms from slower ones.
@@ -422,7 +499,7 @@
     shift
   fi
 
-  # Remove `-o $object'.
+  # Remove '-o $object'.
   IFS=" "
   for arg
   do
@@ -442,15 +519,14 @@
   done
 
   test -z "$dashmflag" && dashmflag=-M
-  # Require at least two characters before searching for `:'
+  # Require at least two characters before searching for ':'
   # in the target name.  This is to cope with DOS-style filenames:
-  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
   "$@" $dashmflag |
-    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
+    sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
   rm -f "$depfile"
   cat < "$tmpdepfile" > "$depfile"
-  tr ' ' '
-' < "$tmpdepfile" | \
+  tr ' ' "$nl" < "$tmpdepfile" | \
 ## Some versions of the HPUX 10.20 sed can't process this invocation
 ## correctly.  Breaking it into two sed invocations is a workaround.
     sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
@@ -503,9 +579,10 @@
   touch "$tmpdepfile"
   ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
   rm -f "$depfile"
-  cat < "$tmpdepfile" > "$depfile"
-  sed '1,2d' "$tmpdepfile" | tr ' ' '
-' | \
+  # makedepend may prepend the VPATH from the source file name to the object.
+  # No need to regex-escape $object, excess matching of '.' is harmless.
+  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
+  sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
 ## Some versions of the HPUX 10.20 sed can't process this invocation
 ## correctly.  Breaking it into two sed invocations is a workaround.
     sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
@@ -525,7 +602,7 @@
     shift
   fi
 
-  # Remove `-o $object'.
+  # Remove '-o $object'.
   IFS=" "
   for arg
   do
@@ -594,8 +671,8 @@
   sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
   rm -f "$depfile"
   echo "$object : \\" > "$depfile"
-  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
-  echo "	" >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
+  echo "$tab" >> "$depfile"
   sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
diff -ruN tarsnap-autoconf-1.0.32/config.aux/install-sh tarsnap-autoconf-1.0.33/config.aux/install-sh
--- tarsnap-autoconf-1.0.32/config.aux/install-sh	2012-02-22 04:10:55.000000000 -0800
+++ tarsnap-autoconf-1.0.33/config.aux/install-sh	2012-08-10 00:05:26.000000000 -0700
@@ -1,7 +1,7 @@
 #!/bin/sh
 # install - install a program, script, or datafile
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2011-11-20.07; # UTC
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
@@ -35,7 +35,7 @@
 # FSF changes to this file are in the public domain.
 #
 # Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
+# 'make' implicit rules from creating a file called install from it
 # when there is no Makefile.
 #
 # This script is compatible with the BSD install script, but was written
@@ -156,6 +156,10 @@
     -s) stripcmd=$stripprog;;
 
     -t) dst_arg=$2
+	# Protect names problematic for 'test' and other utilities.
+	case $dst_arg in
+	  -* | [=\(\)!]) dst_arg=./$dst_arg;;
+	esac
 	shift;;
 
     -T) no_target_directory=true;;
@@ -186,6 +190,10 @@
     fi
     shift # arg
     dst_arg=$arg
+    # Protect names problematic for 'test' and other utilities.
+    case $dst_arg in
+      -* | [=\(\)!]) dst_arg=./$dst_arg;;
+    esac
   done
 fi
 
@@ -194,13 +202,17 @@
     echo "$0: no input file specified." >&2
     exit 1
   fi
-  # It's OK to call `install-sh -d' without argument.
+  # It's OK to call 'install-sh -d' without argument.
   # This can happen when creating conditional directories.
   exit 0
 fi
 
 if test -z "$dir_arg"; then
-  trap '(exit $?); exit' 1 2 13 15
+  do_exit='(exit $ret); exit $ret'
+  trap "ret=129; $do_exit" 1
+  trap "ret=130; $do_exit" 2
+  trap "ret=141; $do_exit" 13
+  trap "ret=143; $do_exit" 15
 
   # Set umask so as not to create temps with too-generous modes.
   # However, 'strip' requires both read and write access to temps.
@@ -228,9 +240,9 @@
 
 for src
 do
-  # Protect names starting with `-'.
+  # Protect names problematic for 'test' and other utilities.
   case $src in
-    -*) src=./$src;;
+    -* | [=\(\)!]) src=./$src;;
   esac
 
   if test -n "$dir_arg"; then
@@ -252,12 +264,7 @@
       echo "$0: no destination specified." >&2
       exit 1
     fi
-
     dst=$dst_arg
-    # Protect names starting with `-'.
-    case $dst in
-      -*) dst=./$dst;;
-    esac
 
     # If destination is a directory, append the input filename; won't work
     # if double slashes aren't ignored.
@@ -347,7 +354,7 @@
 	      if test -z "$dir_arg" || {
 		   # Check for POSIX incompatibilities with -m.
 		   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
-		   # other-writeable bit of parent directory when it shouldn't.
+		   # other-writable bit of parent directory when it shouldn't.
 		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
 		   ls_ld_tmpdir=`ls -ld "$tmpdir"`
 		   case $ls_ld_tmpdir in
@@ -385,7 +392,7 @@
 
       case $dstdir in
 	/*) prefix='/';;
-	-*) prefix='./';;
+	[-=\(\)!]*) prefix='./';;
 	*)  prefix='';;
       esac
 
@@ -403,7 +410,7 @@
 
       for d
       do
-	test -z "$d" && continue
+	test X"$d" = X && continue
 
 	prefix=$prefix$d
 	if test -d "$prefix"; then
diff -ruN tarsnap-autoconf-1.0.32/config.aux/missing tarsnap-autoconf-1.0.33/config.aux/missing
--- tarsnap-autoconf-1.0.32/config.aux/missing	2012-02-22 04:10:55.000000000 -0800
+++ tarsnap-autoconf-1.0.33/config.aux/missing	2012-08-10 00:05:26.000000000 -0700
@@ -1,10 +1,9 @@
 #! /bin/sh
 # Common stub for a few missing GNU programs while installing.
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2012-01-06.18; # UTC
 
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
-# 2008, 2009 Free Software Foundation, Inc.
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
 # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
 
 # This program is free software; you can redistribute it and/or modify
@@ -26,7 +25,7 @@
 # the same distribution terms that you use for the rest of that program.
 
 if test $# -eq 0; then
-  echo 1>&2 "Try \`$0 --help' for more information"
+  echo 1>&2 "Try '$0 --help' for more information"
   exit 1
 fi
 
@@ -34,7 +33,7 @@
 sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
 sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
 
-# In the cases where this matters, `missing' is being run in the
+# In the cases where this matters, 'missing' is being run in the
 # srcdir already.
 if test -f configure.ac; then
   configure_ac=configure.ac
@@ -65,7 +64,7 @@
     echo "\
 $0 [OPTION]... PROGRAM [ARGUMENT]...
 
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+Handle 'PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
 error status if there is no known handling for PROGRAM.
 
 Options:
@@ -74,21 +73,20 @@
   --run           try to run the given command, and emulate it if it fails
 
 Supported PROGRAM values:
-  aclocal      touch file \`aclocal.m4'
-  autoconf     touch file \`configure'
-  autoheader   touch file \`config.h.in'
+  aclocal      touch file 'aclocal.m4'
+  autoconf     touch file 'configure'
+  autoheader   touch file 'config.h.in'
   autom4te     touch the output file, or create a stub one
-  automake     touch all \`Makefile.in' files
-  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
-  flex         create \`lex.yy.c', if possible, from existing .c
+  automake     touch all 'Makefile.in' files
+  bison        create 'y.tab.[ch]', if possible, from existing .[ch]
+  flex         create 'lex.yy.c', if possible, from existing .c
   help2man     touch the output file
-  lex          create \`lex.yy.c', if possible, from existing .c
+  lex          create 'lex.yy.c', if possible, from existing .c
   makeinfo     touch the output file
-  tar          try tar, gnutar, gtar, then tar without non-portable flags
-  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
+  yacc         create 'y.tab.[ch]', if possible, from existing .[ch]
 
-Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
-\`g' are ignored when checking the name.
+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
+'g' are ignored when checking the name.
 
 Send bug reports to <bug-automake@gnu.org>."
     exit $?
@@ -100,8 +98,8 @@
     ;;
 
   -*)
-    echo 1>&2 "$0: Unknown \`$1' option"
-    echo 1>&2 "Try \`$0 --help' for more information"
+    echo 1>&2 "$0: Unknown '$1' option"
+    echo 1>&2 "Try '$0 --help' for more information"
     exit 1
     ;;
 
@@ -122,22 +120,13 @@
     # Not GNU programs, they don't have --version.
     ;;
 
-  tar*)
-    if test -n "$run"; then
-       echo 1>&2 "ERROR: \`tar' requires --run"
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       exit 1
-    fi
-    ;;
-
   *)
     if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
        # We have it, but it failed.
        exit 1
     elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
        # Could not run --version or --help.  This is probably someone
-       # running `$TOOL --version' or `$TOOL --help' to check whether
+       # running '$TOOL --version' or '$TOOL --help' to check whether
        # $TOOL exists and not knowing $TOOL uses missing.
        exit 1
     fi
@@ -149,27 +138,27 @@
 case $program in
   aclocal*)
     echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
-         to install the \`Automake' and \`Perl' packages.  Grab them from
+WARNING: '$1' is $msg.  You should only need it if
+         you modified 'acinclude.m4' or '${configure_ac}'.  You might want
+         to install the Automake and Perl packages.  Grab them from
          any GNU archive site."
     touch aclocal.m4
     ;;
 
   autoconf*)
     echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`${configure_ac}'.  You might want to install the
-         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
+WARNING: '$1' is $msg.  You should only need it if
+         you modified '${configure_ac}'.  You might want to install the
+         Autoconf and GNU m4 packages.  Grab them from any GNU
          archive site."
     touch configure
     ;;
 
   autoheader*)
     echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
-         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
+WARNING: '$1' is $msg.  You should only need it if
+         you modified 'acconfig.h' or '${configure_ac}'.  You might want
+         to install the Autoconf and GNU m4 packages.  Grab them
          from any GNU archive site."
     files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
     test -z "$files" && files="config.h"
@@ -186,9 +175,9 @@
 
   automake*)
     echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
-         You might want to install the \`Automake' and \`Perl' packages.
+WARNING: '$1' is $msg.  You should only need it if
+         you modified 'Makefile.am', 'acinclude.m4' or '${configure_ac}'.
+         You might want to install the Automake and Perl packages.
          Grab them from any GNU archive site."
     find . -type f -name Makefile.am -print |
 	   sed 's/\.am$/.in/' |
@@ -197,10 +186,10 @@
 
   autom4te*)
     echo 1>&2 "\
-WARNING: \`$1' is needed, but is $msg.
+WARNING: '$1' is needed, but is $msg.
          You might have modified some files without having the
          proper tools for further handling them.
-         You can get \`$1' as part of \`Autoconf' from any GNU
+         You can get '$1' as part of Autoconf from any GNU
          archive site."
 
     file=`echo "$*" | sed -n "$sed_output"`
@@ -220,13 +209,13 @@
 
   bison*|yacc*)
     echo 1>&2 "\
-WARNING: \`$1' $msg.  You should only need it if
-         you modified a \`.y' file.  You may need the \`Bison' package
+WARNING: '$1' $msg.  You should only need it if
+         you modified a '.y' file.  You may need the Bison package
          in order for those modifications to take effect.  You can get
-         \`Bison' from any GNU archive site."
+         Bison from any GNU archive site."
     rm -f y.tab.c y.tab.h
     if test $# -ne 1; then
-        eval LASTARG="\${$#}"
+        eval LASTARG=\${$#}
 	case $LASTARG in
 	*.y)
 	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
@@ -250,13 +239,13 @@
 
   lex*|flex*)
     echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified a \`.l' file.  You may need the \`Flex' package
+WARNING: '$1' is $msg.  You should only need it if
+         you modified a '.l' file.  You may need the Flex package
          in order for those modifications to take effect.  You can get
-         \`Flex' from any GNU archive site."
+         Flex from any GNU archive site."
     rm -f lex.yy.c
     if test $# -ne 1; then
-        eval LASTARG="\${$#}"
+        eval LASTARG=\${$#}
 	case $LASTARG in
 	*.l)
 	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
@@ -273,10 +262,10 @@
 
   help2man*)
     echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
+WARNING: '$1' is $msg.  You should only need it if
 	 you modified a dependency of a manual page.  You may need the
-	 \`Help2man' package in order for those modifications to take
-	 effect.  You can get \`Help2man' from any GNU archive site."
+	 Help2man package in order for those modifications to take
+	 effect.  You can get Help2man from any GNU archive site."
 
     file=`echo "$*" | sed -n "$sed_output"`
     test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
@@ -291,12 +280,12 @@
 
   makeinfo*)
     echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified a \`.texi' or \`.texinfo' file, or any other file
+WARNING: '$1' is $msg.  You should only need it if
+         you modified a '.texi' or '.texinfo' file, or any other file
          indirectly affecting the aspect of the manual.  The spurious
-         call might also be the consequence of using a buggy \`make' (AIX,
-         DU, IRIX).  You might want to install the \`Texinfo' package or
-         the \`GNU make' package.  Grab either from any GNU archive site."
+         call might also be the consequence of using a buggy 'make' (AIX,
+         DU, IRIX).  You might want to install the Texinfo package or
+         the GNU make package.  Grab either from any GNU archive site."
     # The file to touch is that specified with -o ...
     file=`echo "$*" | sed -n "$sed_output"`
     test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
@@ -318,49 +307,14 @@
     touch $file
     ;;
 
-  tar*)
-    shift
-
-    # We have already tried tar in the generic part.
-    # Look for gnutar/gtar before invocation to avoid ugly error
-    # messages.
-    if (gnutar --version > /dev/null 2>&1); then
-       gnutar "$@" && exit 0
-    fi
-    if (gtar --version > /dev/null 2>&1); then
-       gtar "$@" && exit 0
-    fi
-    firstarg="$1"
-    if shift; then
-	case $firstarg in
-	*o*)
-	    firstarg=`echo "$firstarg" | sed s/o//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-	case $firstarg in
-	*h*)
-	    firstarg=`echo "$firstarg" | sed s/h//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-    fi
-
-    echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
-         You may want to install GNU tar or Free paxutils, or check the
-         command line arguments."
-    exit 1
-    ;;
-
   *)
     echo 1>&2 "\
-WARNING: \`$1' is needed, and is $msg.
+WARNING: '$1' is needed, and is $msg.
          You might have modified some files without having the
-         proper tools for further handling them.  Check the \`README' file,
+         proper tools for further handling them.  Check the 'README' file,
          it often tells you about the needed prerequisites for installing
          this package.  You may also peek at any GNU archive site, in case
-         some other package would contain this missing \`$1' program."
+         some other package would contain this missing '$1' program."
     exit 1
     ;;
 esac
diff -ruN tarsnap-autoconf-1.0.32/config.h.in tarsnap-autoconf-1.0.33/config.h.in
--- tarsnap-autoconf-1.0.32/config.h.in	2012-02-22 04:10:54.000000000 -0800
+++ tarsnap-autoconf-1.0.33/config.h.in	2012-08-10 00:05:25.000000000 -0700
@@ -730,6 +730,11 @@
 /* Version number of package */
 #undef VERSION
 
+/* Enable large inode numbers on Mac OS X 10.5.  */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif
+
 /* Number of bits in a file offset, on hosts where this is settable. */
 #undef _FILE_OFFSET_BITS
 
diff -ruN tarsnap-autoconf-1.0.32/configure tarsnap-autoconf-1.0.33/configure
--- tarsnap-autoconf-1.0.32/configure	2012-02-22 04:10:56.000000000 -0800
+++ tarsnap-autoconf-1.0.33/configure	2012-08-10 00:05:27.000000000 -0700
@@ -1,13 +1,11 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for tarsnap 1.0.32.
+# Generated by GNU Autoconf 2.69 for tarsnap 1.0.33.
 #
 # Report bugs to <cperciva@tarsnap.com>.
 #
 #
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
-# Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
 #
 #
 # This configure script is free software; the Free Software Foundation
@@ -136,6 +134,31 @@
 # CDPATH.
 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
 if test "x$CONFIG_SHELL" = x; then
   as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
   emulate sh
@@ -169,7 +192,8 @@
 else
   exitcode=1; echo positional parameters were not saved.
 fi
-test x\$exitcode = x0 || exit 1"
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
   as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
   as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
   eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
@@ -214,21 +238,25 @@
 
 
       if test "x$CONFIG_SHELL" != x; then :
-  # We cannot yet assume a decent shell, so we have to provide a
-	# neutralization value for shells without unset; and this also
-	# works around shells that cannot unset nonexistent variables.
-	# Preserve -v and -x to the replacement shell.
-	BASH_ENV=/dev/null
-	ENV=/dev/null
-	(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-	export CONFIG_SHELL
-	case $- in # ((((
-	  *v*x* | *x*v* ) as_opts=-vx ;;
-	  *v* ) as_opts=-v ;;
-	  *x* ) as_opts=-x ;;
-	  * ) as_opts= ;;
-	esac
-	exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+  export CONFIG_SHELL
+             # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
 fi
 
     if test x$as_have_required = xno; then :
@@ -331,6 +359,14 @@
 
 
 } # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
 # as_fn_append VAR VALUE
 # ----------------------
 # Append the text in VALUE to the end of the definition contained in VAR. Take
@@ -452,6 +488,10 @@
   chmod +x "$as_me.lineno" ||
     { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
 
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
   # Don't try to exec as it changes $[0], causing all sort of problems
   # (the dirname of $[0] is not the place where we might find the
   # original and so on.  Autoconf is especially sensitive to this).
@@ -486,16 +526,16 @@
     # ... but there are two gotchas:
     # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
     # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
+    # In both cases, we have to default to `cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
+      as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
     as_ln_s=ln
   else
-    as_ln_s='cp -p'
+    as_ln_s='cp -pR'
   fi
 else
-  as_ln_s='cp -p'
+  as_ln_s='cp -pR'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
@@ -507,28 +547,8 @@
   as_mkdir_p=false
 fi
 
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-	test -d "$1/.";
-      else
-	case $1 in #(
-	-*)set "./$1";;
-	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-	???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -560,8 +580,8 @@
 # Identity of this package.
 PACKAGE_NAME='tarsnap'
 PACKAGE_TARNAME='tarsnap'
-PACKAGE_VERSION='1.0.32'
-PACKAGE_STRING='tarsnap 1.0.32'
+PACKAGE_VERSION='1.0.33'
+PACKAGE_STRING='tarsnap 1.0.33'
 PACKAGE_BUGREPORT='cperciva@tarsnap.com'
 PACKAGE_URL=''
 
@@ -623,6 +643,7 @@
 am__fastdepCC_FALSE
 am__fastdepCC_TRUE
 CCDEPMODE
+am__nodep
 AMDEPBACKSLASH
 AMDEP_FALSE
 AMDEP_TRUE
@@ -1192,8 +1213,6 @@
 if test "x$host_alias" != x; then
   if test "x$build_alias" = x; then
     cross_compiling=maybe
-    $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
-    If a cross compiler is detected then cross compile mode will be used" >&2
   elif test "x$build_alias" != "x$host_alias"; then
     cross_compiling=yes
   fi
@@ -1279,7 +1298,7 @@
   # 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 tarsnap 1.0.32 to adapt to many kinds of systems.
+\`configure' configures tarsnap 1.0.33 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1350,7 +1369,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of tarsnap 1.0.32:";;
+     short | recursive ) echo "Configuration of tarsnap 1.0.33:";;
    esac
   cat <<\_ACEOF
 
@@ -1358,10 +1377,13 @@
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors
-  --enable-maintainer-mode  enable make rules and dependencies not useful
-			  (and sometimes confusing) to the casual installer
+  --enable-dependency-tracking
+                          do not reject slow dependency extractors
+  --disable-dependency-tracking
+                          speeds up one-time build
+  --enable-maintainer-mode
+                          enable make rules and dependencies not useful (and
+                          sometimes confusing) to the casual installer
   --enable-sse2           use optimized SSE2 code
   --disable-xattr         Disable Extended Attributes support (default: check)
   --disable-acl           Disable ACL support (default: check)
@@ -1450,10 +1472,10 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-tarsnap configure 1.0.32
-generated by GNU Autoconf 2.68
+tarsnap configure 1.0.33
+generated by GNU Autoconf 2.69
 
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
@@ -1730,7 +1752,7 @@
 	 test ! -s conftest.err
        } && test -s conftest$ac_exeext && {
 	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
+	 test -x conftest$ac_exeext
        }; then :
   ac_retval=0
 else
@@ -1998,7 +2020,8 @@
 main ()
 {
 static int test_array [1 - 2 * !(0 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1))];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
 
   ;
   return 0;
@@ -2014,7 +2037,8 @@
 {
 static int test_array [1 - 2 * !(($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1)
 		 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 2))];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
 
   ;
   return 0;
@@ -2071,7 +2095,8 @@
 main ()
 {
 static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
 
   ;
   return 0;
@@ -2117,7 +2142,8 @@
 main ()
 {
 static int test_array [1 - 2 * !(($2) >= 0)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
 
   ;
   return 0;
@@ -2133,7 +2159,8 @@
 main ()
 {
 static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
 
   ;
   return 0;
@@ -2159,7 +2186,8 @@
 main ()
 {
 static int test_array [1 - 2 * !(($2) < 0)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
 
   ;
   return 0;
@@ -2175,7 +2203,8 @@
 main ()
 {
 static int test_array [1 - 2 * !(($2) >= $ac_mid)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
 
   ;
   return 0;
@@ -2209,7 +2238,8 @@
 main ()
 {
 static int test_array [1 - 2 * !(($2) <= $ac_mid)];
-test_array [0] = 0
+test_array [0] = 0;
+return test_array [0];
 
   ;
   return 0;
@@ -2281,8 +2311,8 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by tarsnap $as_me 1.0.32, which was
-generated by GNU Autoconf 2.68.  Invocation command line was
+It was created by tarsnap $as_me 1.0.33, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
 
@@ -2774,7 +2804,7 @@
   program_prefix=${target_alias}-
 
 # Must follow AC_CONFIG macros above...
-am__api_version='1.11'
+am__api_version='1.12'
 
 # Find a good install program.  We prefer a C program (faster),
 # so one script is as good as another.  But avoid the broken or
@@ -2813,7 +2843,7 @@
     # by default.
     for ac_prog in ginstall scoinst install; do
       for ac_exec_ext in '' $ac_executable_extensions; do
-	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+	if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
 	  if test $ac_prog = install &&
 	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
 	    # AIX install.  It has an incompatible calling convention.
@@ -2871,9 +2901,6 @@
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
 $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='
@@ -2884,32 +2911,40 @@
 esac
 case $srcdir in
   *[\\\"\#\$\&\'\`$am_lf\ \	]*)
-    as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
 esac
 
-# Do `set' in a subshell so we don't clobber the current shell's
+# Do 'set' in a subshell so we don't clobber the current shell's
 # arguments.  Must try -L first in case configure is actually a
 # symlink; some systems play weird games with the mod time of symlinks
 # (eg FreeBSD returns the mod time of the symlink's containing
 # directory).
 if (
-   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-   if test "$*" = "X"; then
-      # -L didn't work.
-      set X `ls -t "$srcdir/configure" conftest.file`
-   fi
-   rm -f conftest.file
-   if test "$*" != "X $srcdir/configure conftest.file" \
-      && test "$*" != "X conftest.file $srcdir/configure"; then
-
-      # If neither matched, then we have a broken ls.  This can happen
-      # if, for instance, CONFIG_SHELL is bash and it inherits a
-      # broken ls alias from the environment.  This has actually
-      # happened.  Such a system could not be considered "sane".
-      as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
-alias in your environment" "$LINENO" 5
-   fi
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$*" = "X"; then
+	# -L didn't work.
+	set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$*" != "X $srcdir/configure conftest.file" \
+	&& test "$*" != "X conftest.file $srcdir/configure"; then
 
+	# If neither matched, then we have a broken ls.  This can happen
+	# if, for instance, CONFIG_SHELL is bash and it inherits a
+	# broken ls alias from the environment.  This has actually
+	# happened.  Such a system could not be considered "sane".
+	as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment" "$LINENO" 5
+     fi
+     if test "$2" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
    test "$2" = conftest.file
    )
 then
@@ -2921,6 +2956,16 @@
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+
+rm -f conftest.file
+
 test "$program_prefix" != NONE &&
   program_transform_name="s&^&$program_prefix&;$program_transform_name"
 # Use a double $ so make ignores it.
@@ -2947,8 +2992,8 @@
   am_missing_run="$MISSING --run "
 else
   am_missing_run=
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
 fi
 
 if test x"${install_sh}" != xset; then
@@ -2960,10 +3005,10 @@
   esac
 fi
 
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'.  However `strip' might not be the right
+# 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.
+# 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.
@@ -2982,7 +3027,7 @@
   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
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_STRIP="${ac_tool_prefix}strip"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3022,7 +3067,7 @@
   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
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_STRIP="strip"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3073,7 +3118,7 @@
   test -z "$as_dir" && as_dir=.
     for ac_prog in mkdir gmkdir; do
 	 for ac_exec_ext in '' $ac_executable_extensions; do
-	   { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+	   as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
 	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
 	     'mkdir (GNU coreutils) '* | \
 	     'mkdir (coreutils) '* | \
@@ -3102,12 +3147,6 @@
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
 $as_echo "$MKDIR_P" >&6; }
 
-mkdir_p="$MKDIR_P"
-case $mkdir_p in
-  [\\/$]* | ?:[\\/]*) ;;
-  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-
 for ac_prog in gawk mawk nawk awk
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -3126,7 +3165,7 @@
   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
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_AWK="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3212,7 +3251,7 @@
 
 # Define the identity of the package.
  PACKAGE='tarsnap'
- VERSION='1.0.32'
+ VERSION='1.0.33'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3240,13 +3279,19 @@
 
 MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
 
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+mkdir_p='$(MKDIR_P)'
+
 # We need awk for the "check" target.  The system "awk" is bad on
 # some platforms.
-# Always define AMTAR for backward compatibility.
+# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
 
-AMTAR=${AMTAR-"${am_missing_run}tar"}
-
-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
 
 
 
@@ -3263,7 +3308,7 @@
 _ACEOF
 
 
-$as_echo "#define TARVERSION \"1.0.32\"" >>confdefs.h
+$as_echo "#define TARVERSION \"1.0.33\"" >>confdefs.h
 
 
 $as_echo "#define TSSERVER \"betatest\"" >>confdefs.h
@@ -3332,7 +3377,7 @@
   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
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3372,7 +3417,7 @@
   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
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="gcc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3425,7 +3470,7 @@
   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
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}cc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3466,7 +3511,7 @@
   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
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
        ac_prog_rejected=yes
        continue
@@ -3524,7 +3569,7 @@
   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
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -3568,7 +3613,7 @@
   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
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="$ac_prog"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -4014,8 +4059,7 @@
 /* end confdefs.h.  */
 #include <stdarg.h>
 #include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
 /* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
 struct buf { int x; };
 FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -4118,7 +4162,7 @@
 _am_result=none
 # First try GNU make style include.
 echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
+# 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
@@ -4151,6 +4195,7 @@
 if test "x$enable_dependency_tracking" != xno; then
   am_depcomp="$ac_aux_dir/depcomp"
   AMDEPBACKSLASH='\'
+  am__nodep='_no'
 fi
  if test "x$enable_dependency_tracking" != xno; then
   AMDEP_TRUE=
@@ -4173,8 +4218,9 @@
   # We make a subdir and do the tests there.  Otherwise we can end up
   # making bogus files that we don't know about and never remove.  For
   # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
   # using a relative directory.
@@ -4208,16 +4254,16 @@
     : > sub/conftest.c
     for i in 1 2 3 4 5 6; do
       echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # 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
+    # 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
@@ -4226,16 +4272,16 @@
       test "$am__universal" = false || continue
       ;;
     nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
       if test "x$enable_dependency_tracking" = xyes; then
 	continue
       else
 	break
       fi
       ;;
-    msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
       # not run yet.  These depmodes are late enough in the game, and
       # so weak that their functioning should not be impacted.
       am__obj=conftest.${OBJEXT-o}
@@ -4432,7 +4478,7 @@
   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
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -4472,7 +4518,7 @@
   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
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_RANLIB="ranlib"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -4524,7 +4570,7 @@
   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
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_STRIP="${ac_tool_prefix}strip"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -4564,7 +4610,7 @@
   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
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_STRIP="strip"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
@@ -4756,7 +4802,7 @@
     for ac_prog in grep ggrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+      as_fn_executable_p "$ac_path_GREP" || continue
 # Check for GNU ac_path_GREP and select it if it is found.
   # Check for GNU $ac_path_GREP
 case `"$ac_path_GREP" --version 2>&1` in
@@ -4822,7 +4868,7 @@
     for ac_prog in egrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
       ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+      as_fn_executable_p "$ac_path_EGREP" || continue
 # Check for GNU ac_path_EGREP and select it if it is found.
   # Check for GNU $ac_path_EGREP
 case `"$ac_path_EGREP" --version 2>&1` in
@@ -5029,8 +5075,8 @@
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-#	  define __EXTENSIONS__ 1
-	  $ac_includes_default
+#         define __EXTENSIONS__ 1
+          $ac_includes_default
 int
 main ()
 {
@@ -6469,11 +6515,11 @@
 int
 main ()
 {
-/* FIXME: Include the comments suggested by Paul. */
+
 #ifndef __cplusplus
-  /* Ultrix mips cc rejects this.  */
+  /* Ultrix mips cc rejects this sort of thing.  */
   typedef int charset[2];
-  const charset cs;
+  const charset cs = { 0, 0 };
   /* SunOS 4.1.1 cc rejects this.  */
   char const *const *pcpcc;
   char **ppc;
@@ -6490,8 +6536,9 @@
   ++pcpcc;
   ppc = (char**) pcpcc;
   pcpcc = (char const *const *) ppc;
-  { /* SCO 3.2v4 cc rejects this.  */
-    char *t;
+  { /* SCO 3.2v4 cc rejects this sort of thing.  */
+    char tx;
+    char *t = &tx;
     char const *s = 0 ? (char *) 0 : (char const *) 0;
 
     *t++ = 0;
@@ -6507,10 +6554,10 @@
     iptr p = 0;
     ++p;
   }
-  { /* AIX XL C 1.02.0.0 rejects this saying
+  { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
        "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
-    struct s { int j; const int *ap[3]; };
-    struct s *b; b->j = 5;
+    struct s { int j; const int *ap[3]; } bx;
+    struct s *b = &bx; b->j = 5;
   }
   { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
     const int foo = 10;
@@ -6789,12 +6836,14 @@
 
 # We need int64_t, uint64_t, intmax_t, and uintmax_t
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
-$as_echo_n "checking for long long int... " >&6; }
-if ${ac_cv_type_long_long_int+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5
+$as_echo_n "checking for unsigned long long int... " >&6; }
+if ${ac_cv_type_unsigned_long_long_int+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  ac_cv_type_unsigned_long_long_int=yes
+     if test "x${ac_cv_prog_cc_c99-no}" = xno; then
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
   /* For now, do not test the preprocessor; as of 2007 there are too many
@@ -6827,37 +6876,64 @@
 
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  			if test "$cross_compiling" = yes; then :
+
+else
+  ac_cv_type_unsigned_long_long_int=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5
+$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; }
+  if test $ac_cv_type_unsigned_long_long_int = yes; then
+
+$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
+
+  fi
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
+$as_echo_n "checking for long long int... " >&6; }
+if ${ac_cv_type_long_long_int+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
   ac_cv_type_long_long_int=yes
+      if test "x${ac_cv_prog_cc_c99-no}" = xno; then
+	ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
+	if test $ac_cv_type_long_long_int = yes; then
+	  	  	  	  if test "$cross_compiling" = yes; then :
+  :
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <limits.h>
-	       #ifndef LLONG_MAX
-	       # define HALF \
-			(1LL << (sizeof (long long int) * CHAR_BIT - 2))
-	       # define LLONG_MAX (HALF - 1 + HALF)
-	       #endif
+		 #ifndef LLONG_MAX
+		 # define HALF \
+			  (1LL << (sizeof (long long int) * CHAR_BIT - 2))
+		 # define LLONG_MAX (HALF - 1 + HALF)
+		 #endif
 int
 main ()
 {
 long long int n = 1;
-	       int i;
-	       for (i = 0; ; i++)
-		 {
-		   long long int m = n << i;
-		   if (m >> i != n)
-		     return 1;
-		   if (LLONG_MAX / 2 < m)
-		     break;
-		 }
-	       return 0;
+		 int i;
+		 for (i = 0; ; i++)
+		   {
+		     long long int m = n << i;
+		     if (m >> i != n)
+		       return 1;
+		     if (LLONG_MAX / 2 < m)
+		       break;
+		   }
+		 return 0;
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_run "$LINENO"; then :
-  ac_cv_type_long_long_int=yes
+
 else
   ac_cv_type_long_long_int=no
 fi
@@ -6865,11 +6941,8 @@
   conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
-else
-  ac_cv_type_long_long_int=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
+	fi
+      fi
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5
 $as_echo "$ac_cv_type_long_long_int" >&6; }
@@ -6910,60 +6983,6 @@
 esac
 
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5
-$as_echo_n "checking for unsigned long long int... " >&6; }
-if ${ac_cv_type_unsigned_long_long_int+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-  /* For now, do not test the preprocessor; as of 2007 there are too many
-	 implementations with broken preprocessors.  Perhaps this can
-	 be revisited in 2012.  In the meantime, code should not expect
-	 #if to work with literals wider than 32 bits.  */
-      /* Test literals.  */
-      long long int ll = 9223372036854775807ll;
-      long long int nll = -9223372036854775807LL;
-      unsigned long long int ull = 18446744073709551615ULL;
-      /* Test constant expressions.   */
-      typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
-		     ? 1 : -1)];
-      typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
-		     ? 1 : -1)];
-      int i = 63;
-int
-main ()
-{
-/* Test availability of runtime routines for shift and division.  */
-      long long int llmax = 9223372036854775807ll;
-      unsigned long long int ullmax = 18446744073709551615ull;
-      return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
-	      | (llmax / ll) | (llmax % ll)
-	      | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
-	      | (ullmax / ull) | (ullmax % ull));
-  ;
-  return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_type_unsigned_long_long_int=yes
-else
-  ac_cv_type_unsigned_long_long_int=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5
-$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; }
-  if test $ac_cv_type_unsigned_long_long_int = yes; then
-
-$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
-
-  fi
-
-
 
   ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "$ac_includes_default"
 if test "x$ac_cv_type_uintmax_t" = xyes; then :
@@ -8383,6 +8402,8 @@
 esac
 rm -rf conftest*
   fi
+
+
 fi
 
 
@@ -8519,6 +8540,14 @@
 LTLIBOBJS=$ac_ltlibobjs
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
  if test -n "$EXEEXT"; then
   am__EXEEXT_TRUE=
   am__EXEEXT_FALSE='#'
@@ -8845,16 +8874,16 @@
     # ... but there are two gotchas:
     # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
     # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-    # In both cases, we have to default to `cp -p'.
+    # In both cases, we have to default to `cp -pR'.
     ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -p'
+      as_ln_s='cp -pR'
   elif ln conf$$.file conf$$ 2>/dev/null; then
     as_ln_s=ln
   else
-    as_ln_s='cp -p'
+    as_ln_s='cp -pR'
   fi
 else
-  as_ln_s='cp -p'
+  as_ln_s='cp -pR'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
@@ -8914,28 +8943,16 @@
   as_mkdir_p=false
 fi
 
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-	test -d "$1/.";
-      else
-	case $1 in #(
-	-*)set "./$1";;
-	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
-	???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -8956,8 +8973,8 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by tarsnap $as_me 1.0.32, which was
-generated by GNU Autoconf 2.68.  Invocation command line was
+This file was extended by tarsnap $as_me 1.0.33, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -9022,11 +9039,11 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-tarsnap config.status 1.0.32
-configured by $0, generated by GNU Autoconf 2.68,
+tarsnap config.status 1.0.33
+configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
@@ -9117,7 +9134,7 @@
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 if \$ac_cs_recheck; then
-  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
   shift
   \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
   CONFIG_SHELL='$SHELL'
@@ -9763,7 +9780,7 @@
     # 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
+    # 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.
@@ -9797,21 +9814,19 @@
       continue
     fi
     # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running `make'.
+    # 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
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
       # Make sure the directory exists.
       test -f "$dirpart/$file" && continue
       fdir=`$as_dirname -- "$file" ||
diff -ruN tarsnap-autoconf-1.0.32/lib/Makefile tarsnap-autoconf-1.0.33/lib/Makefile
--- tarsnap-autoconf-1.0.32/lib/Makefile	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/lib/Makefile	2012-08-10 00:05:23.000000000 -0700
@@ -80,6 +80,7 @@
 SRCS	+=	hexlink.c
 SRCS	+=	humansize.c
 SRCS	+=	memlimit.c
+SRCS	+=	monoclock.c
 SRCS	+=	readpass.c
 SRCS	+=	sigquit.c
 SRCS	+=	tvmath.c
diff -ruN tarsnap-autoconf-1.0.32/lib/crypto/crypto_scrypt-nosse.c tarsnap-autoconf-1.0.33/lib/crypto/crypto_scrypt-nosse.c
--- tarsnap-autoconf-1.0.32/lib/crypto/crypto_scrypt-nosse.c	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/lib/crypto/crypto_scrypt-nosse.c	2012-08-10 00:05:23.000000000 -0700
@@ -252,7 +252,7 @@
 		errno = EFBIG;
 		goto err0;
 	}
-	if (((N & (N - 1)) != 0) || (N == 0)) {
+	if (((N & (N - 1)) != 0) || (N < 2)) {
 		errno = EINVAL;
 		goto err0;
 	}
diff -ruN tarsnap-autoconf-1.0.32/lib/crypto/crypto_scrypt-sse.c tarsnap-autoconf-1.0.33/lib/crypto/crypto_scrypt-sse.c
--- tarsnap-autoconf-1.0.32/lib/crypto/crypto_scrypt-sse.c	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/lib/crypto/crypto_scrypt-sse.c	2012-08-10 00:05:23.000000000 -0700
@@ -280,7 +280,7 @@
 		errno = EFBIG;
 		goto err0;
 	}
-	if (((N & (N - 1)) != 0) || (N == 0)) {
+	if (((N & (N - 1)) != 0) || (N < 2)) {
 		errno = EINVAL;
 		goto err0;
 	}
diff -ruN tarsnap-autoconf-1.0.32/lib/datastruct/rwhashtab.c tarsnap-autoconf-1.0.33/lib/datastruct/rwhashtab.c
--- tarsnap-autoconf-1.0.32/lib/datastruct/rwhashtab.c	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/lib/datastruct/rwhashtab.c	2012-08-10 00:05:23.000000000 -0700
@@ -173,6 +173,18 @@
 }
 
 /**
+ * rwhashtab_getsize(table):
+ * Return the number of entries in the table.
+ */
+size_t
+rwhashtab_getsize(RWHASHTAB * H)
+{
+
+	/* Just extract the value and return it. */
+	return (H->numentries);
+}
+
+/**
  * rwhashtab_insert(table, record):
  * Insert the provided record into the hash table.  Returns (-1) on error,
  * 0 on success, and 1 if the table already contains a record with the same
diff -ruN tarsnap-autoconf-1.0.32/lib/datastruct/rwhashtab.h tarsnap-autoconf-1.0.33/lib/datastruct/rwhashtab.h
--- tarsnap-autoconf-1.0.32/lib/datastruct/rwhashtab.h	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/lib/datastruct/rwhashtab.h	2012-08-10 00:05:23.000000000 -0700
@@ -18,6 +18,12 @@
 RWHASHTAB * rwhashtab_init(size_t, size_t);
 
 /**
+ * rwhashtab_getsize(table):
+ * Return the number of entries in the table.
+ */
+size_t rwhashtab_getsize(RWHASHTAB *);
+
+/**
  * rwhashtab_insert(table, record):
  * Insert the provided record into the hash table.  Returns (-1) on error,
  * 0 on success, and 1 if the table already contains a record with the same
diff -ruN tarsnap-autoconf-1.0.32/lib/netpacket/netpacket.h tarsnap-autoconf-1.0.33/lib/netpacket/netpacket.h
--- tarsnap-autoconf-1.0.32/lib/netpacket/netpacket.h	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/lib/netpacket/netpacket.h	2012-08-10 00:05:23.000000000 -0700
@@ -89,7 +89,7 @@
 /**
  * netpacket_transaction_start(NPC, machinenum, operation, snonce, cnonce,
  *     state, callback):
- * Construct and send a NETPACKET_TRANSACTION_GETNONCE packet asking to
+ * Construct and send a NETPACKET_TRANSACTION_START packet asking to
  * start a transaction; the transaction is a write transaction if
  * ${operation} is 0, a delete transaction if ${operation} is 1, or a fsck
  * transaction if ${operation} is 2.
diff -ruN tarsnap-autoconf-1.0.32/lib/netpacket/netpacket_op.c tarsnap-autoconf-1.0.33/lib/netpacket/netpacket_op.c
--- tarsnap-autoconf-1.0.32/lib/netpacket/netpacket_op.c	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/lib/netpacket/netpacket_op.c	2012-08-10 00:05:23.000000000 -0700
@@ -6,6 +6,7 @@
 #include <string.h>
 
 #include "crypto.h"
+#include "monoclock.h"
 #include "netpacket_internal.h"
 #include "netproto.h"
 #include "sysendian.h"
@@ -253,10 +254,8 @@
 	 * Warn the user that we're waiting, if we haven't already printed a
 	 * warning message recently.
 	 */
-	if (gettimeofday(&tp, NULL)) {
-		warnp("gettimeofday");
+	if (monoclock_get(&tp))
 		goto err0;
-	}
 	if ((nseconds >= (tarsnap_opt_noisy_warnings ? 1 : 30)) &&
 	    ((tp.tv_sec > next_connlost_warning.tv_sec) ||
 	        ((tp.tv_sec == next_connlost_warning.tv_sec) &&
diff -ruN tarsnap-autoconf-1.0.32/lib/netpacket/netpacket_transaction.c tarsnap-autoconf-1.0.33/lib/netpacket/netpacket_transaction.c
--- tarsnap-autoconf-1.0.32/lib/netpacket/netpacket_transaction.c	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/lib/netpacket/netpacket_transaction.c	2012-08-10 00:05:23.000000000 -0700
@@ -44,7 +44,7 @@
 /**
  * netpacket_transaction_start(NPC, machinenum, operation, snonce, cnonce,
  *     state, callback):
- * Construct and send a NETPACKET_TRANSACTION_GETNONCE packet asking to
+ * Construct and send a NETPACKET_TRANSACTION_START packet asking to
  * start a transaction; the transaction is a write transaction if
  * ${operation} is 0, a delete transaction if ${operation} is 1, or a fsck
  * transaction if ${operation} is 2.
diff -ruN tarsnap-autoconf-1.0.32/lib/netproto/netproto.h tarsnap-autoconf-1.0.33/lib/netproto/netproto.h
--- tarsnap-autoconf-1.0.32/lib/netproto/netproto.h	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/lib/netproto/netproto.h	2012-08-10 00:05:23.000000000 -0700
@@ -43,8 +43,8 @@
  * netproto_readpacket(C, callback_getbuf, callback_done, cookie):
  * Read a packet from the connection.  Once the type and length of the
  * packet is known, call callback_getbuf(cookie, type, buf, buflen); once
- * the packet is read or fails, call callback(cookie, status), where status
- * is a NETPROTO_STATUS_* value.
+ * the packet is read or fails, call callback_done(cookie, status), where
+ * status is a NETPROTO_STATUS_* value.
  */
 int netproto_readpacket(NETPROTO_CONNECTION *,
     int(void *, uint8_t, uint8_t **, size_t),
diff -ruN tarsnap-autoconf-1.0.32/lib/netproto/netproto_packet.c tarsnap-autoconf-1.0.33/lib/netproto/netproto_packet.c
--- tarsnap-autoconf-1.0.32/lib/netproto/netproto_packet.c	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/lib/netproto/netproto_packet.c	2012-08-10 00:05:23.000000000 -0700
@@ -295,8 +295,8 @@
  * netproto_readpacket(C, callback_getbuf, callback_done, cookie):
  * Read a packet from the connection.  Once the type and length of the
  * packet is known, call callback_getbuf(cookie, type, buf, buflen); once
- * the packet is read or fails, call callback(cookie, status), where status
- * is a NETPROTO_STATUS_* value.
+ * the packet is read or fails, call callback_done(cookie, status), where
+ * status is a NETPROTO_STATUS_* value.
  */
 int netproto_readpacket(NETPROTO_CONNECTION * C,
     int (* callback_getbuf)(void *, uint8_t, uint8_t **, size_t),
diff -ruN tarsnap-autoconf-1.0.32/lib/network/network_buf.c tarsnap-autoconf-1.0.33/lib/network/network_buf.c
--- tarsnap-autoconf-1.0.32/lib/network/network_buf.c	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/lib/network/network_buf.c	2012-08-10 00:05:23.000000000 -0700
@@ -149,7 +149,7 @@
 		goto docallback;
 	}
 	if (tv_lt(&C->timeout_max, &timeo))
-		memcpy(&timeo, &C->timeout_max, sizeof(struct timeval)); 
+		memcpy(&timeo, &C->timeout_max, sizeof(struct timeval));
 	if (network_register(C->fd, C->netop, &timeo, callback_buf, C)) {
 		status = NETWORK_STATUS_ERR;
 		goto docallback;
@@ -221,7 +221,7 @@
 	/* Set up the callback. */
 	memcpy(&timeo, to1, sizeof(struct timeval));
 	if (tv_lt(to0, &timeo))
-		memcpy(&timeo, to0, sizeof(struct timeval)); 
+		memcpy(&timeo, to0, sizeof(struct timeval));
 	if (network_register(fd, netop, &timeo, callback_buf, C))
 		goto err1;
 
diff -ruN tarsnap-autoconf-1.0.32/lib/network/network_select.c tarsnap-autoconf-1.0.33/lib/network/network_select.c
--- tarsnap-autoconf-1.0.32/lib/network/network_select.c	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/lib/network/network_select.c	2012-08-10 00:05:23.000000000 -0700
@@ -8,6 +8,7 @@
 #include <stdlib.h>
 #include <string.h>
 
+#include "monoclock.h"
 #include "network_internal.h"
 #include "tvmath.h"
 #include "warnp.h"
@@ -160,7 +161,7 @@
 		return;
 
 	/* If we can't get the current time, do nothing. */
-	if (gettimeofday(&tnow, NULL))
+	if (monoclock_get(&tnow))
 		return;
 
 	/* Figure out how long it has been since the clock started. */
@@ -190,7 +191,7 @@
 	/* Is the clock already running? */
 	if ((select_rettime.tv_sec == 0) &&
 	    (select_rettime.tv_usec == 0)) {
-		gettimeofday(&select_rettime, NULL);
+		monoclock_get(&select_rettime);
 	}
 }
 
@@ -485,10 +486,8 @@
 
 restart:
 	/* Get current time. */
-	if (gettimeofday(&curtime, NULL)) {
-		warnp("gettimeofday()");
+	if (monoclock_get(&curtime))
 		goto err0;
-	}
 
 	/*
 	 * Figure out how long it has been since we last added tokens to the
@@ -620,10 +619,8 @@
 	selectstats_startclock();
 
 	/* Get current time so that we can detect timeouts. */
-	if (gettimeofday(&curtime, NULL)) {
-		warnp("gettimeofday()");
+	if (monoclock_get(&curtime))
 		goto err0;
-	}
 
 	/*
 	 * Scan the descriptors in decreasing order, just in case maxfd is
diff -ruN tarsnap-autoconf-1.0.32/lib/util/monoclock.c tarsnap-autoconf-1.0.33/lib/util/monoclock.c
--- tarsnap-autoconf-1.0.32/lib/util/monoclock.c	1969-12-31 16:00:00.000000000 -0800
+++ tarsnap-autoconf-1.0.33/lib/util/monoclock.c	2012-08-10 00:05:23.000000000 -0700
@@ -0,0 +1,41 @@
+#include <sys/time.h>
+
+#include <time.h>
+
+#include "warnp.h"
+
+#include "monoclock.h"
+
+/**
+ * monoclock_get(tv):
+ * Store the current time in ${tv}.  If CLOCK_MONOTONIC is available, use
+ * that clock; otherwise, use gettimeofday(2).
+ */
+int
+monoclock_get(struct timeval * tv)
+{
+#ifdef CLOCK_MONOTONIC
+	struct timespec tp;
+#endif
+
+#ifdef CLOCK_MONOTONIC
+	if (clock_gettime(CLOCK_MONOTONIC, &tp)) {
+		warnp("clock_gettime(CLOCK_MONOTONIC)");
+		goto err0;
+	}
+	tv->tv_sec = tp.tv_sec;
+	tv->tv_usec = tp.tv_nsec / 1000;
+#else
+	if (gettimeofday(tv, NULL)) {
+		warnp("gettimeofday");
+		goto err0;
+	}
+#endif
+
+	/* Success! */
+	return (0);
+
+err0:
+	/* Failure! */
+	return (-1);
+}
diff -ruN tarsnap-autoconf-1.0.32/lib/util/monoclock.h tarsnap-autoconf-1.0.33/lib/util/monoclock.h
--- tarsnap-autoconf-1.0.32/lib/util/monoclock.h	1969-12-31 16:00:00.000000000 -0800
+++ tarsnap-autoconf-1.0.33/lib/util/monoclock.h	2012-08-10 00:05:23.000000000 -0700
@@ -0,0 +1,13 @@
+#ifndef _MONOCLOCK_H_
+#define _MONOCLOCK_H_
+
+#include <sys/time.h>
+
+/**
+ * monoclock_get(tv):
+ * Store the current time in ${tv}.  If CLOCK_MONOTONIC is available, use
+ * that clock; otherwise, use gettimeofday(2).
+ */
+int monoclock_get(struct timeval *);
+
+#endif /* !_MONOCLOCK_H_ */
diff -ruN tarsnap-autoconf-1.0.32/lib/util/readpass.c tarsnap-autoconf-1.0.33/lib/util/readpass.c
--- tarsnap-autoconf-1.0.32/lib/util/readpass.c	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/lib/util/readpass.c	2012-08-10 00:05:23.000000000 -0700
@@ -38,7 +38,7 @@
 #define MAXPASSLEN 2048
 
 /**
- * tarsnap_getpass(passwd, prompt, confirmprompt, devtty)
+ * tarsnap_readpass(passwd, prompt, confirmprompt, devtty)
  * If ${devtty} is non-zero, read a password from /dev/tty if possible; if
  * not, read from stdin.  If reading from a tty (either /dev/tty or stdin),
  * disable echo and prompt the user by printing ${prompt} to stderr.  If
diff -ruN tarsnap-autoconf-1.0.32/lib/util/readpass.h tarsnap-autoconf-1.0.33/lib/util/readpass.h
--- tarsnap-autoconf-1.0.32/lib/util/readpass.h	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/lib/util/readpass.h	2012-08-10 00:05:23.000000000 -0700
@@ -30,7 +30,7 @@
 #define _READPASS_H_
 
 /**
- * tarsnap_getpass(passwd, prompt, confirmprompt, devtty)
+ * tarsnap_readpass(passwd, prompt, confirmprompt, devtty)
  * If ${devtty} is non-zero, read a password from /dev/tty if possible; if
  * not, read from stdin.  If reading from a tty (either /dev/tty or stdin),
  * disable echo and prompt the user by printing ${prompt} to stderr.  If
diff -ruN tarsnap-autoconf-1.0.32/lib/util/tvmath.c tarsnap-autoconf-1.0.33/lib/util/tvmath.c
--- tarsnap-autoconf-1.0.32/lib/util/tvmath.c	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/lib/util/tvmath.c	2012-08-10 00:05:23.000000000 -0700
@@ -2,23 +2,22 @@
 
 #include <sys/time.h>
 
+#include "monoclock.h"
 #include "warnp.h"
 
 #include "tvmath.h"
 
 /**
  * tvmath_addctime(tv):
- * Set tv += gettimeofday.
+ * Set tv += monoclock.
  */
 int
 tvmath_addctime(struct timeval * tv)
 {
 	struct timeval tnow;
 
-	if (gettimeofday(&tnow, NULL)) {
-		warnp("gettimeofday");
+	if (monoclock_get(&tnow))
 		goto err0;
-	}
 	tv->tv_sec += tnow.tv_sec;
 	tv->tv_usec += tnow.tv_usec;
 	if (tv->tv_usec >= 1000000) {
@@ -36,17 +35,15 @@
 
 /**
  * tvmath_subctime(tv):
- * Set tv -= gettimeofday.
+ * Set tv -= monoclock.
  */
 int
 tvmath_subctime(struct timeval * tv)
 {
 	struct timeval tnow;
 
-	if (gettimeofday(&tnow, NULL)) {
-		warnp("gettimeofday");
+	if (monoclock_get(&tnow))
 		goto err0;
-	}
 	tv->tv_sec -= tnow.tv_sec;
 	tv->tv_usec -= tnow.tv_usec;
 	if (tv->tv_usec < 0) {
@@ -64,17 +61,15 @@
 
 /**
  * tvmath_rsubctime(tv):
- * Set tv = gettimeofday - tv.
+ * Set tv = monoclock - tv.
  */
 int
 tvmath_rsubctime(struct timeval * tv)
 {
 	struct timeval tnow;
 
-	if (gettimeofday(&tnow, NULL)) {
-		warnp("gettimeofday");
+	if (monoclock_get(&tnow))
 		goto err0;
-	}
 	tv->tv_sec = tnow.tv_sec - tv->tv_sec;
 	tv->tv_usec = tnow.tv_usec - tv->tv_usec;
 	if (tv->tv_usec < 0) {
diff -ruN tarsnap-autoconf-1.0.32/lib/util/tvmath.h tarsnap-autoconf-1.0.33/lib/util/tvmath.h
--- tarsnap-autoconf-1.0.32/lib/util/tvmath.h	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/lib/util/tvmath.h	2012-08-10 00:05:23.000000000 -0700
@@ -5,19 +5,19 @@
 
 /**
  * tvmath_addctime(tv):
- * Set tv += gettimeofday.
+ * Set tv += monoclock.
  */
 int tvmath_addctime(struct timeval *);
 
 /**
  * tvmath_subctime(tv):
- * Set tv -= gettimeofday.
+ * Set tv -= monoclock.
  */
 int tvmath_subctime(struct timeval *);
 
 /**
  * tvmath_rsubctime(tv):
- * Set tv = gettimeofday - tv.
+ * Set tv = monoclock - tv.
  */
 int tvmath_rsubctime(struct timeval *);
 
diff -ruN tarsnap-autoconf-1.0.32/libarchive/archive_read_disk_set_standard_lookup.c tarsnap-autoconf-1.0.33/libarchive/archive_read_disk_set_standard_lookup.c
--- tarsnap-autoconf-1.0.32/libarchive/archive_read_disk_set_standard_lookup.c	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/libarchive/archive_read_disk_set_standard_lookup.c	2012-08-10 00:05:23.000000000 -0700
@@ -83,7 +83,7 @@
  * a simple cache to accelerate such lookups---into the archive_read_disk
  * object.  This is in a separate file because getpwuid()/getgrgid()
  * can pull in a LOT of library code (including NIS/LDAP functions, which
- * pull in DNS resolveers, etc).  This can easily top 500kB, which makes
+ * pull in DNS resolvers, etc).  This can easily top 500kB, which makes
  * it inappropriate for some space-constrained applications.
  *
  * Applications that are size-sensitive may want to just use the
diff -ruN tarsnap-autoconf-1.0.32/libarchive/archive_write_disk_set_standard_lookup.c tarsnap-autoconf-1.0.33/libarchive/archive_write_disk_set_standard_lookup.c
--- tarsnap-autoconf-1.0.32/libarchive/archive_write_disk_set_standard_lookup.c	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/libarchive/archive_write_disk_set_standard_lookup.c	2012-08-10 00:05:23.000000000 -0700
@@ -67,7 +67,7 @@
  * a simple cache to accelerate such lookups---into the archive_write_disk
  * object.  This is in a separate file because getpwnam()/getgrnam()
  * can pull in a LOT of library code (including NIS/LDAP functions, which
- * pull in DNS resolveers, etc).  This can easily top 500kB, which makes
+ * pull in DNS resolvers, etc).  This can easily top 500kB, which makes
  * it inappropriate for some space-constrained applications.
  *
  * Applications that are size-sensitive may want to just use the
diff -ruN tarsnap-autoconf-1.0.32/pkg/debian/changelog tarsnap-autoconf-1.0.33/pkg/debian/changelog
--- tarsnap-autoconf-1.0.32/pkg/debian/changelog	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/pkg/debian/changelog	2012-08-10 00:05:23.000000000 -0700
@@ -1,3 +1,11 @@
+tarsnap (1.0.33) unstable; urgency=low
+
+  * New version of tarsnap brings reduced memory usage on systems with a
+    large amount of stored data; faster operation for --fsck and when
+    deleting or printing statistics for multiple archives; and corrects
+    a bug in the handling of the --newerXXX option.
+
+ -- Colin Percival <cperciva@tarsnap.com>  Wed, 1 Aug 2002 23:52:10 +0000
 tarsnap (1.0.32) unstable; urgency=low
 
   * New version of tarsnap fixes a bug which made the --nodump option
diff -ruN tarsnap-autoconf-1.0.32/pkg/debian/control tarsnap-autoconf-1.0.33/pkg/debian/control
--- tarsnap-autoconf-1.0.32/pkg/debian/control	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/pkg/debian/control	2012-08-10 00:05:23.000000000 -0700
@@ -9,5 +9,5 @@
 Architecture: any
 Depends: ${shlibs:Depends}
 Description: tarsnap is an online encrypted snapshotted backup service
- Tarsnap is an encrypted snapshotted online backup service for BSD, 
+ Tarsnap is an encrypted snapshotted online backup service for BSD,
  Linux, OpenSolaris, and OS X.
diff -ruN tarsnap-autoconf-1.0.32/tar/bsdtar.c tarsnap-autoconf-1.0.33/tar/bsdtar.c
--- tarsnap-autoconf-1.0.32/tar/bsdtar.c	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/tar/bsdtar.c	2012-08-10 00:05:23.000000000 -0700
@@ -999,12 +999,11 @@
 	"  --cachedir <directory>  Cache directory\n"
 	"  -v    Verbose\n"
 	"  -w    Interactive\n"
-	"Create: %p -c [options] [<file> | <dir> | @<archive> | -C <dir> ]\n"
+	"Create: %p -c [options] [<file> | <dir> | @@<archive> | -C <dir>] ...\n"
 	"  <file>, <dir>  add these items to archive\n"
 	"  --exclude <pattern>  Skip files that match pattern\n"
 	"  -C <dir>  Change to <dir> before processing remaining files\n"
-	"  @<filename>  Add entries from archive <filename>\n"
-	"  @@ <archive>  Add entries from tarsnap archive <archive>\n"
+	"  @@<archive>  Add entries from tarsnap archive <archive>\n"
 	"List: %p -t [options] [<patterns>]\n"
 	"  <patterns>  If specified, list only entries that match\n"
 	"Extract: %p -x [options] [<patterns>]\n"
diff -ruN tarsnap-autoconf-1.0.32/tar/ccache/ccache_entry.c tarsnap-autoconf-1.0.33/tar/ccache/ccache_entry.c
--- tarsnap-autoconf-1.0.32/tar/ccache/ccache_entry.c	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/tar/ccache/ccache_entry.c	2012-08-10 00:05:23.000000000 -0700
@@ -64,7 +64,7 @@
 		}
 
 		/* Make sure we don't overflow. */
-		if (nchalloc_new > 
+		if (nchalloc_new >
 		    SIZE_MAX / sizeof(struct chunkheader)) {
 			errno = ENOMEM;
 			goto err0;
diff -ruN tarsnap-autoconf-1.0.32/tar/chunks/chunks.h tarsnap-autoconf-1.0.33/tar/chunks/chunks.h
--- tarsnap-autoconf-1.0.32/tar/chunks/chunks.h	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/tar/chunks/chunks.h	2012-08-10 00:05:23.000000000 -0700
@@ -19,6 +19,13 @@
 CHUNKS_R * chunks_read_init(STORAGE_R *, size_t);
 
 /**
+ * chunks_read_cache(C, hash):
+ * Using the read cookie ${C}, tell the storage layer to cache the chunk with
+ * HMAC ${hash} after it is read.
+ */
+int chunks_read_cache(CHUNKS_R *, const uint8_t *);
+
+/**
  * chunks_read_chunk(C, hash, len, zlen, buf, quiet):
  * Using the read cookie ${C}, read the chunk with HMAC ${hash}
  * into ${buf}; it should have length ${len} and compressed size ${zlen}.
@@ -101,6 +108,12 @@
 CHUNKS_D * chunks_delete_start(const char *, STORAGE_D *);
 
 /**
+ * chunks_delete_getdirsz(C):
+ * Return the number of entries in the chunks directory associated with ${C}.
+ */
+size_t chunks_delete_getdirsz(CHUNKS_D *);
+
+/**
  * chunks_delete_chunk(C, hash):
  * Delete the chunk with HMAC ${hash} as part of the delete transaction
  * associated with the cookie ${C}.  Note that chunks are actually
@@ -178,6 +191,12 @@
 CHUNKS_S * chunks_stats_init(const char *);
 
 /**
+ * chunks_stats_getdirsz(C):
+ * Return the number of entries in the chunks directory associated with ${C}.
+ */
+size_t chunks_stats_getdirsz(CHUNKS_S *);
+
+/**
  * chunks_stats_printglobal(stream, C):
  * Print global statistics relating to a set of archives.
  */
diff -ruN tarsnap-autoconf-1.0.32/tar/chunks/chunks_delete.c tarsnap-autoconf-1.0.33/tar/chunks/chunks_delete.c
--- tarsnap-autoconf-1.0.32/tar/chunks/chunks_delete.c	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/tar/chunks/chunks_delete.c	2012-08-10 00:05:23.000000000 -0700
@@ -12,7 +12,7 @@
 
 struct chunks_delete_internal {
 	RWHASHTAB * HT;			/* Hash table of struct chunkdata. */
-	struct chunkdata * dir;		/* On-disk directory entries. */
+	void * dir;			/* On-disk directory entries. */
 	char * path;			/* Path to cache directory. */
 	STORAGE_D * S;			/* Storage layer cookie. */
 	struct chunkstats stats_total;	/* All archives, w/ multiplicity. */
@@ -46,7 +46,7 @@
 
 	/* Read the existing chunk directory. */
 	if ((C->HT = chunks_directory_read(cachepath, &C->dir,
-	    &C->stats_unique, &C->stats_total, &C->stats_extra, 0)) == NULL)
+	    &C->stats_unique, &C->stats_total, &C->stats_extra, 0, 0)) == NULL)
 		goto err2;
 
 	/* Zero "new chunks" and "this tape" statistics. */
@@ -67,6 +67,18 @@
 }
 
 /**
+ * chunks_delete_getdirsz(C):
+ * Return the number of entries in the chunks directory associated with ${C}.
+ */
+size_t
+chunks_delete_getdirsz(CHUNKS_D * C)
+{
+
+	/* Get the value from the hash table. */
+	return (rwhashtab_getsize(C->HT));
+}
+
+/**
  * chunks_delete_chunk(C, hash):
  * Delete the chunk with HMAC ${hash} as part of the delete transaction
  * associated with the cookie ${C}.  Note that chunks are actually
@@ -85,14 +97,16 @@
 	}
 
 	/* Update statistics. */
-	chunks_stats_add(&C->stats_total, ch->len, ch->zlen, -1);
-	chunks_stats_add(&C->stats_tape, ch->len, ch->zlen, 1);
+	chunks_stats_add(&C->stats_total, ch->len,
+	    ch->zlen_flags & CHDATA_ZLEN, -1);
+	chunks_stats_add(&C->stats_tape, ch->len,
+	    ch->zlen_flags & CHDATA_ZLEN, 1);
 	ch->ncopies -= 1;
 
 	/* If the chunk is not marked as CHDATA_CTAPE... */
-	if ((ch->flags & CHDATA_CTAPE) == 0) {
+	if ((ch->zlen_flags & CHDATA_CTAPE) == 0) {
 		/* ... add that flag... */
-		ch->flags |= CHDATA_CTAPE;
+		ch->zlen_flags |= CHDATA_CTAPE;
 
 		/* ... decrement the reference counter... */
 		ch->nrefs -= 1;
@@ -100,9 +114,9 @@
 		/* ... and delete the chunk if the refcount is now zero. */
 		if (ch->nrefs == 0) {
 			chunks_stats_add(&C->stats_unique, ch->len,
-			    ch->zlen, -1);
+			    ch->zlen_flags & CHDATA_ZLEN, -1);
 			chunks_stats_add(&C->stats_freed, ch->len,
-			    ch->zlen, 1);
+			    ch->zlen_flags & CHDATA_ZLEN, 1);
 
 			if (storage_delete_file(C->S, 'c', hash))
 				goto err0;
diff -ruN tarsnap-autoconf-1.0.32/tar/chunks/chunks_directory.c tarsnap-autoconf-1.0.33/tar/chunks/chunks_directory.c
--- tarsnap-autoconf-1.0.32/tar/chunks/chunks_directory.c	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/tar/chunks/chunks_directory.c	2012-08-10 00:05:23.000000000 -0700
@@ -59,7 +59,7 @@
 	/* Convert to on-disk format. */
 	memcpy(che.hash, ch->hash, 32);
 	le32enc(che.len, ch->len);
-	le32enc(che.zlen, ch->zlen);
+	le32enc(che.zlen, ch->zlen_flags & CHDATA_ZLEN);
 	le32enc(che.nrefs, ch->nrefs);
 	le32enc(che.ncopies, ch->ncopies);
 
@@ -84,7 +84,7 @@
 
 	(void)cookie; 	/* Unused. */
 
-	if (ch->flags & CHDATA_MALLOC)
+	if (ch->zlen_flags & CHDATA_MALLOC)
 		free(rec);
 
 	return (0);
@@ -92,7 +92,7 @@
 
 /**
  * chunks_directory_read(cachepath, dir, stats_unique, stats_all, stats_extra,
- *     mustexist):
+ *     mustexist, statstape):
  * Read stats_extra statistics (statistics on non-chunks which are stored)
  * and the chunk directory (if present) from "${cachepath}/directory" into
  * memory allocated and assigned to ${*dir}; and return a hash table
@@ -100,18 +100,20 @@
  * statistics for all the chunks listed in the directory (counting
  * multiplicity) and populate stats_unique with statistics reflecting the
  * unique chunks.  If ${mustexist}, error out if the directory does not exist.
+ * If ${statstape}, allocate struct chunkdata_statstape records instead.
  */
 RWHASHTAB *
-chunks_directory_read(const char * cachepath, struct chunkdata ** dir,
+chunks_directory_read(const char * cachepath, void ** dir,
     struct chunkstats * stats_unique, struct chunkstats * stats_all,
-    struct chunkstats * stats_extra, int mustexist)
+    struct chunkstats * stats_extra, int mustexist, int statstape)
 {
 	struct chunkdata_external che;
 	struct chunkstats_external cse;
 	struct stat sb;
 	RWHASHTAB * HT;
 	char * s;
-	struct chunkdata * p;
+	struct chunkdata * p = NULL;
+	struct chunkdata_statstape * ps = NULL;
 	FILE * f;
 	size_t numchunks;
 
@@ -177,19 +179,25 @@
 	    sizeof(struct chunkdata_external);
 
 	/* Make sure we don't get an integer overflow. */
-	if (numchunks >= SIZE_MAX / sizeof(struct chunkdata)) {
+	if (numchunks >= SIZE_MAX / sizeof(struct chunkdata_statstape)) {
 		warn0("on-disk directory is too large: %s", s);
 		goto err2;
 	}
 
 	/*
 	 * Allocate memory to ${*dir} large enough to store a struct
-	 * chunkdata for each struct chunkdata_external in
-	 * ${cachepath}/directory.
+	 * chunkdata or struct chunkdata_statstape for each struct
+	 * chunkdata_external in ${cachepath}/directory.
 	 */
-	if ((p = malloc(numchunks * sizeof(struct chunkdata))) == NULL)
+	if (statstape) {
+		ps = malloc(numchunks * sizeof(struct chunkdata_statstape));
+		*dir = ps;
+	} else {
+		p = malloc(numchunks * sizeof(struct chunkdata));
+		*dir = p;
+	}
+	if (*dir == NULL)
 		goto err2;
-	*dir = p;
 
 	/* Open the directory file. */
 	if ((f = fopen(s, "r")) == NULL) {
@@ -208,6 +216,10 @@
 
 	/* Read the chunk structures. */
 	for (; numchunks != 0; numchunks--) {
+		/* Set p to point at the struct chunkdata. */
+		if (statstape)
+			p = &ps->d;
+
 		/* Read the file one record at a time... */
 		if (fread(&che, sizeof(che), 1, f) != 1) {
 			warnp("fread(%s)", s);
@@ -217,27 +229,29 @@
 		/* ... creating struct chunkdata records... */
 		memcpy(p->hash, che.hash, 32);
 		p->len = le32dec(che.len);
-		p->zlen = le32dec(che.zlen);
+		p->zlen_flags = le32dec(che.zlen);
 		p->nrefs = le32dec(che.nrefs);
 		p->ncopies = le32dec(che.ncopies);
-		p->flags = 0;
 
 		/* ... inserting them into the hash table... */
 		if (rwhashtab_insert(HT, p))
 			goto err4;
 
 		/* ... and updating the statistics. */
-		chunks_stats_add(stats_unique, p->len, p->zlen, 1);
-		chunks_stats_add(stats_all, p->len, p->zlen, p->ncopies);
+		chunks_stats_add(stats_unique, p->len, p->zlen_flags, 1);
+		chunks_stats_add(stats_all, p->len, p->zlen_flags, p->ncopies);
 
 		/* Sanity check. */
-		if ((p->len == 0) || (p->zlen == 0) || (p->nrefs == 0)) {
+		if ((p->len == 0) || (p->zlen_flags == 0) || (p->nrefs == 0)) {
 			warn0("on-disk directory is corrupt: %s", s);
 			goto err4;
 		}
 
 		/* Move to next record. */
-		p++;
+		if (statstape)
+			ps++;
+		else
+			p++;
 	}
 	if (fclose(f)) {
 		warnp("fclose(%s)", s);
@@ -339,7 +353,7 @@
  * elements, and ${dir}.
  */
 void
-chunks_directory_free(RWHASHTAB * HT, struct chunkdata * dir)
+chunks_directory_free(RWHASHTAB * HT, void * dir)
 {
 
 	/* Free records in the hash table. */
diff -ruN tarsnap-autoconf-1.0.32/tar/chunks/chunks_internal.h tarsnap-autoconf-1.0.33/tar/chunks/chunks_internal.h
--- tarsnap-autoconf-1.0.32/tar/chunks/chunks_internal.h	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/tar/chunks/chunks_internal.h	2012-08-10 00:05:23.000000000 -0700
@@ -9,19 +9,25 @@
 #include "rwhashtab.h"
 
 /* Chunk metadata structure was allocated by malloc(3). */
-#define	CHDATA_MALLOC	(1 << 0)
+#define	CHDATA_MALLOC	((uint32_t)(1) << 30)
 /* Chunk belongs to the current tape. */
-#define CHDATA_CTAPE	(1 << 1)
+#define CHDATA_CTAPE	((uint32_t)(1) << 31)
+#define CHDATA_FLAGS	(0xc0000000)
+#define CHDATA_ZLEN	(~CHDATA_FLAGS)
 
 /* In-core chunk metadata structure. */
 struct chunkdata {
 	uint8_t hash[32];	/* HMAC of chunk. */
-	size_t len;		/* Length of chunk. */
-	size_t zlen;		/* Compressed length of chunk. */
-	size_t nrefs;		/* Number of existing tapes using this. */
-	size_t ncopies;		/* Number of copies of this chunk. */
-	size_t ncopies_ctape;	/* Used by chunks_stats only. */
-	int flags;		/* See CHDATA_* flags. */
+	uint32_t len;		/* Length of chunk. */
+	uint32_t zlen_flags;	/* Compressed length of chunk | flags. */
+	uint32_t nrefs;		/* Number of existing tapes using this. */
+	uint32_t ncopies;	/* Number of copies of this chunk. */
+};
+
+/* In-core chunk metadata structure used by statstape. */
+struct chunkdata_statstape {
+	struct chunkdata d;
+	uint32_t ncopies_ctape;	/* Used by chunks_stats only. */
 };
 
 /* Chunk statistics structure. */
@@ -33,7 +39,7 @@
 
 /**
  * chunks_directory_read(cachepath, dir, stats_unique, stats_all, stats_extra,
- *     mustexist):
+ *     mustexist, statstape):
  * Read stats_extra statistics (statistics on non-chunks which are stored)
  * and the chunk directory (if present) from "${cachepath}/directory" into
  * memory allocated and assigned to ${*dir}; and return a hash table
@@ -41,9 +47,10 @@
  * statistics for all the chunks listed in the directory (counting
  * multiplicity) and populate stats_unique with statistics reflecting the
  * unique chunks.  If ${mustexist}, error out if the directory does not exist.
+ * If ${statstape}, allocate struct chunkdata_statstape records instead.
  */
-RWHASHTAB * chunks_directory_read(const char *, struct chunkdata **,
-    struct chunkstats *, struct chunkstats *, struct chunkstats *, int);
+RWHASHTAB * chunks_directory_read(const char *, void **,
+    struct chunkstats *, struct chunkstats *, struct chunkstats *, int, int);
 
 /**
  * chunks_directory_write(cachepath, HT, stats_extra, suff):
@@ -59,7 +66,7 @@
  * Free the hash table ${HT} of struct chunkdata records, all of its
  * elements, and ${dir}.
  */
-void chunks_directory_free(RWHASHTAB *, struct chunkdata *);
+void chunks_directory_free(RWHASHTAB *, void *);
 
 /**
  * chunks_directory_commit(cachepath, osuff, nsuff):
diff -ruN tarsnap-autoconf-1.0.32/tar/chunks/chunks_read.c tarsnap-autoconf-1.0.33/tar/chunks/chunks_read.c
--- tarsnap-autoconf-1.0.32/tar/chunks/chunks_read.c	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/tar/chunks/chunks_read.c	2012-08-10 00:05:23.000000000 -0700
@@ -69,6 +69,19 @@
 }
 
 /**
+ * chunks_read_cache(C, hash):
+ * Using the read cookie ${C}, tell the storage layer to cache the chunk with
+ * HMAC ${hash} after it is read.
+ */
+int
+chunks_read_cache(CHUNKS_R * C, const uint8_t * hash)
+{
+
+	/* Pass the message on to the storage layer. */
+	return (storage_read_cache(C->S, 'c', hash));
+}
+
+/**
  * chunks_read_chunk(C, hash, len, zlen, buf, quiet):
  * Using the read cookie ${C}, read the chunk with HMAC ${hash}
  * into ${buf}; it should have length ${len} and compressed size ${zlen}.
diff -ruN tarsnap-autoconf-1.0.32/tar/chunks/chunks_stats.c tarsnap-autoconf-1.0.33/tar/chunks/chunks_stats.c
--- tarsnap-autoconf-1.0.32/tar/chunks/chunks_stats.c	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/tar/chunks/chunks_stats.c	2012-08-10 00:05:23.000000000 -0700
@@ -12,8 +12,8 @@
 #include "chunks.h"
 
 struct chunks_stats_internal {
-	RWHASHTAB * HT;		/* Hash table of struct chunkdata. */
-	struct chunkdata * dir;	/* On-disk directory entries. */
+	RWHASHTAB * HT;		/* Hash table of struct chunkdata_statstape. */
+	struct chunkdata_statstape * dir;	/* On-disk directory entries. */
 	char * cachepath;	/* Path to cache directory. */
 	struct chunkstats stats_total;	/* All archives, w/ multiplicity. */
 	struct chunkstats stats_unique;	/* All archives, w/o multiplicity. */
@@ -29,16 +29,17 @@
 
 /**
  * callback_zero(rec, cookie):
- * Mark the struct chunkdata ${rec} as being not used in the current archive.
+ * Mark the struct chunkdata_statstape ${rec} as being not used in the current
+ * archive.
  */
 static int
 callback_zero(void * rec, void * cookie)
 {
-	struct chunkdata * ch = rec;
+	struct chunkdata_statstape * ch = rec;
 
 	(void)cookie;	/* UNUSED */
 
-	ch->flags &= ~CHDATA_CTAPE;
+	ch->d.zlen_flags &= ~CHDATA_CTAPE;
 	ch->ncopies_ctape = 0;
 
 	/* Success! */
@@ -52,13 +53,13 @@
 static int
 callback_add(void * rec, void * cookie)
 {
-	struct chunkdata * ch = rec;
+	struct chunkdata_statstape * ch = rec;
 
 	(void)cookie;	/* UNUSED */
 
-	ch->ncopies += ch->ncopies_ctape;
-	if (ch->flags & CHDATA_CTAPE)
-		ch->nrefs += 1;
+	ch->d.ncopies += ch->ncopies_ctape;
+	if (ch->d.zlen_flags & CHDATA_CTAPE)
+		ch->d.nrefs += 1;
 
 	/* Success! */
 	return (0);
@@ -66,22 +67,22 @@
 
 /**
  * callback_delete(rec, cookie):
- * If the reference count of the struct chunkdata ${rec} is zero, delete
- * the chunk using the storage layer delete cookie ${cookie}.
+ * If the reference count of the struct chunkdata_statstape ${rec} is zero,
+ * delete the chunk using the storage layer delete cookie ${cookie}.
  */
 static int
 callback_delete(void * rec, void * cookie)
 {
-	struct chunkdata * ch = rec;
+	struct chunkdata_statstape * ch = rec;
 	STORAGE_D * S = cookie;
 	char hashbuf[65];
 
-	if (ch->nrefs)
+	if (ch->d.nrefs)
 		goto done;
 
-	hexify(ch->hash, hashbuf, 32);
+	hexify(ch->d.hash, hashbuf, 32);
 	fprintf(stdout, "  Removing unreferenced chunk file: %s\n", hashbuf);
-	if (storage_delete_file(S, 'c', ch->hash))
+	if (storage_delete_file(S, 'c', ch->d.hash))
 		goto err0;
 
 done:
@@ -119,21 +120,21 @@
 	if (storage_directory_read(machinenum, 'c', 0, &flist, &nfiles))
 		goto err2;
 
-	/* Construct a chunkdata structure for each file. */
-	if (nfiles > SIZE_MAX / sizeof(struct chunkdata)) {
+	/* Construct a chunkdata_statstape structure for each file. */
+	if (nfiles > SIZE_MAX / sizeof(struct chunkdata_statstape)) {
 		errno = ENOMEM;
 		free(flist);
 		goto err2;
 	}
-	if ((C->dir = malloc(nfiles * sizeof(struct chunkdata))) == NULL) {
+	if ((C->dir =
+	    malloc(nfiles * sizeof(struct chunkdata_statstape))) == NULL) {
 		free(flist);
 		goto err2;
 	}
 	for (file = 0; file < nfiles; file++) {
-		memcpy(C->dir[file].hash, &flist[file * 32], 32);
-		C->dir[file].len = C->dir[file].zlen = 0;
-		C->dir[file].nrefs = C->dir[file].ncopies = 0;
-		C->dir[file].flags = 0;
+		memcpy(C->dir[file].d.hash, &flist[file * 32], 32);
+		C->dir[file].d.len = C->dir[file].d.zlen_flags = 0;
+		C->dir[file].d.nrefs = C->dir[file].d.ncopies = 0;
 	}
 
 	/* Free the file list. */
@@ -232,6 +233,7 @@
 chunks_stats_init(const char * cachepath)
 {
 	struct chunks_stats_internal * C;
+	void * dir;
 
 	/* Allocate memory. */
 	if ((C = malloc(sizeof(struct chunks_stats_internal))) == NULL)
@@ -242,9 +244,10 @@
 		goto err1;
 
 	/* Read directory. */
-	if ((C->HT = chunks_directory_read(cachepath, &C->dir,
-	    &C->stats_unique, &C->stats_total, &C->stats_extra, 1)) == NULL)
+	if ((C->HT = chunks_directory_read(cachepath, &dir,
+	    &C->stats_unique, &C->stats_total, &C->stats_extra, 1, 1)) == NULL)
 		goto err2;
+	C->dir = dir;
 
 	/* Success! */
 	return (C);
@@ -259,6 +262,18 @@
 }
 
 /**
+ * chunks_stats_getdirsz(C):
+ * Return the number of entries in the chunks directory associated with ${C}.
+ */
+size_t
+chunks_stats_getdirsz(CHUNKS_S * C)
+{
+
+	/* Get the value from the hash table. */
+	return (rwhashtab_getsize(C->HT));
+}
+
+/**
  * chunks_stats_printglobal(stream, C):
  * Print global statistics relating to a set of archives.
  */
@@ -312,28 +327,28 @@
 chunks_stats_addchunk(CHUNKS_S * C, const uint8_t * hash,
     size_t len, size_t zlen)
 {
-	struct chunkdata * ch;
+	struct chunkdata_statstape * ch;
 
 	/* If the chunk is not in ${S}->HT, error out. */
 	if ((ch = rwhashtab_read(C->HT, hash)) == NULL)
 		goto notpresent;
 
 	/* Record the lengths if necessary. */
-	if (ch->nrefs == 0 && ch->ncopies_ctape == 0) {
-		ch->len = len;
-		ch->zlen = zlen;
+	if (ch->d.nrefs == 0 && ch->ncopies_ctape == 0) {
+		ch->d.len = len;
+		ch->d.zlen_flags = zlen | (ch->d.zlen_flags & CHDATA_FLAGS);
 	}
 
 	/* Update "current tape" statistics. */
 	chunks_stats_add(&C->stats_tape, len, zlen, 1);
 
 	/* Update "data unique to this archive" statistics. */
-	if ((ch->nrefs <= 1) && ((ch->flags & CHDATA_CTAPE) == 0))
+	if ((ch->d.nrefs <= 1) && ((ch->d.zlen_flags & CHDATA_CTAPE) == 0))
 		chunks_stats_add(&C->stats_tapeu, len, zlen, 1);
 
 	/* Chunk is in current archive. */
 	ch->ncopies_ctape += 1;
-	ch->flags |= CHDATA_CTAPE;
+	ch->d.zlen_flags |= CHDATA_CTAPE;
 
 	/* Success! */
 	return (0);
diff -ruN tarsnap-autoconf-1.0.32/tar/chunks/chunks_write.c tarsnap-autoconf-1.0.33/tar/chunks/chunks_write.c
--- tarsnap-autoconf-1.0.32/tar/chunks/chunks_write.c	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/tar/chunks/chunks_write.c	2012-08-10 00:05:23.000000000 -0700
@@ -19,7 +19,7 @@
 	uint8_t * zbuf;			/* Buffer for compression. */
 	size_t zbuflen;			/* Length of zbuf. */
 	RWHASHTAB * HT;			/* Hash table of struct chunkdata. */
-	struct chunkdata * dir;		/* On-disk directory entries. */
+	void * dir;			/* On-disk directory entries. */
 	char * path;			/* Path to cache directory. */
 	STORAGE_W * S;			/* Storage layer cookie. */
 	int dryrun;			/* Nonzero if this is a dry run. */
@@ -73,7 +73,7 @@
 
 	/* Read the existing chunk directory (if one exists). */
 	if ((C->HT = chunks_directory_read(cachepath, &C->dir,
-	    &C->stats_unique, &C->stats_total, &C->stats_extra, 0)) == NULL)
+	    &C->stats_unique, &C->stats_total, &C->stats_extra, 0, 0)) == NULL)
 		goto err3;
 
 	/* Zero "new chunks" and "this tape" statistics. */
@@ -113,14 +113,16 @@
 
 	/* If the chunk is in ${C}->HT, return the compressed length. */
 	if ((ch = rwhashtab_read(C->HT, hash)) != NULL) {
-		chunks_stats_add(&C->stats_total, ch->len, ch->zlen, 1);
-		chunks_stats_add(&C->stats_tape, ch->len, ch->zlen, 1);
+		chunks_stats_add(&C->stats_total, ch->len,
+		    ch->zlen_flags & CHDATA_ZLEN, 1);
+		chunks_stats_add(&C->stats_tape, ch->len,
+		    ch->zlen_flags & CHDATA_ZLEN, 1);
 		ch->ncopies += 1;
-		if ((ch->flags & CHDATA_CTAPE) == 0) {
+		if ((ch->zlen_flags & CHDATA_CTAPE) == 0) {
 			ch->nrefs += 1;
-			ch->flags |= CHDATA_CTAPE;
+			ch->zlen_flags |= CHDATA_CTAPE;
 		}
-		return (ch->zlen);
+		return (ch->zlen_flags & CHDATA_ZLEN);
 	}
 
 	/* Compress the chunk. */
@@ -157,20 +159,19 @@
 	/* ... fill in the chunk parameters... */
 	memcpy(ch->hash, hash, 32);
 	ch->len = buflen;
-	ch->zlen = zlen;
+	ch->zlen_flags = zlen | CHDATA_MALLOC | CHDATA_CTAPE;
 	ch->nrefs = 1;
 	ch->ncopies = 1;
-	ch->flags = CHDATA_MALLOC | CHDATA_CTAPE;
 
 	/* ... and insert it into the hash table. */
 	if (rwhashtab_insert(C->HT, ch))
 		goto err0;
 
 	/* Update statistics. */
-	chunks_stats_add(&C->stats_total, ch->len, ch->zlen, 1);
-	chunks_stats_add(&C->stats_unique, ch->len, ch->zlen, 1);
-	chunks_stats_add(&C->stats_tape, ch->len, ch->zlen, 1);
-	chunks_stats_add(&C->stats_new, ch->len, ch->zlen, 1);
+	chunks_stats_add(&C->stats_total, ch->len, zlen, 1);
+	chunks_stats_add(&C->stats_unique, ch->len, zlen, 1);
+	chunks_stats_add(&C->stats_tape, ch->len, zlen, 1);
+	chunks_stats_add(&C->stats_new, ch->len, zlen, 1);
 
 	/* Success! */
 	return (zlen);
@@ -210,12 +211,14 @@
 	 * transaction and return 0.
 	 */
 	if ((ch = rwhashtab_read(C->HT, hash)) != NULL) {
-		chunks_stats_add(&C->stats_total, ch->len, ch->zlen, 1);
-		chunks_stats_add(&C->stats_tape, ch->len, ch->zlen, 1);
+		chunks_stats_add(&C->stats_total, ch->len,
+		    ch->zlen_flags & CHDATA_ZLEN, 1);
+		chunks_stats_add(&C->stats_tape, ch->len,
+		    ch->zlen_flags & CHDATA_ZLEN, 1);
 		ch->ncopies += 1;
-		if ((ch->flags & CHDATA_CTAPE) == 0) {
+		if ((ch->zlen_flags & CHDATA_CTAPE) == 0) {
 			ch->nrefs += 1;
-			ch->flags |= CHDATA_CTAPE;
+			ch->zlen_flags |= CHDATA_CTAPE;
 		}
 
 		return (0);
diff -ruN tarsnap-autoconf-1.0.32/tar/glue/tape.c tarsnap-autoconf-1.0.33/tar/glue/tape.c
--- tarsnap-autoconf-1.0.32/tar/glue/tape.c	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/tar/glue/tape.c	2012-08-10 00:05:23.000000000 -0700
@@ -16,19 +16,34 @@
 void
 tarsnap_mode_d(struct bsdtar *bsdtar)
 {
+	TAPE_D * d;
 	size_t i;
 
+	/* Prepare for deletes. */
+	if ((d = deletetape_init(bsdtar->machinenum)) == NULL)
+		goto err1;
+
+	/* Delete archives. */
 	for (i = 0; i < bsdtar->ntapes; i++) {
 		if (bsdtar->verbose && (bsdtar->ntapes > 1))
 			fprintf(stderr, "Deleting archive \"%s\"\n",
 			    bsdtar->tapenames[i]);
-		if (deletetape(bsdtar->machinenum, bsdtar->cachedir,
+		if (deletetape(d, bsdtar->machinenum, bsdtar->cachedir,
 		    bsdtar->tapenames[i], bsdtar->option_print_stats,
-		    bsdtar->ntapes > 1 ? 1 : 0)) {
-			bsdtar_warnc(bsdtar, 0, "Error deleting archive");
-			exit(1);
-		}
+		    bsdtar->ntapes > 1 ? 1 : 0))
+			goto err1;
 	}
+
+	/* We've finished deleting archives. */
+	deletetape_free(d);
+
+	/* Success! */
+	return;
+
+err1:
+	/* Failure! */
+	bsdtar_warnc(bsdtar, 0, "Error deleting archive");
+	exit(1);
 }
 
 /*
diff -ruN tarsnap-autoconf-1.0.32/tar/multitape/multitape.h tarsnap-autoconf-1.0.33/tar/multitape/multitape.h
--- tarsnap-autoconf-1.0.32/tar/multitape/multitape.h	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/tar/multitape/multitape.h	2012-08-10 00:05:23.000000000 -0700
@@ -7,6 +7,7 @@
 
 typedef struct multitape_read_internal TAPE_R;
 typedef struct multitape_write_internal TAPE_W;
+typedef struct multitape_delete_internal TAPE_D;
 typedef struct multitape_stats_internal TAPE_S;
 
 struct chunkheader;
@@ -124,12 +125,24 @@
 void writetape_free(TAPE_W *);
 
 /**
- * deletetape(machinenum, cachedir, tapename, printstats, withname):
+ * deletetape_init(machinenum):
+ * Return a cookie which can be passed to deletetape.
+ */
+TAPE_D * deletetape_init(uint64_t);
+
+/**
+ * deletetape(d, machinenum, cachedir, tapename, printstats, withname):
  * Delete the specified tape, and print statistics to stderr if requested.
  * If ${withname} is non-zero, print statistics with the archive name, not
  * just as "This archive".
  */
-int deletetape(uint64_t, const char *, const char *, int, int);
+int deletetape(TAPE_D *, uint64_t, const char *, const char *, int, int);
+
+/**
+ * deletetape_free(d):
+ * Free the delete cookie ${d}.
+ */
+void deletetape_free(TAPE_D *);
 
 /**
  * statstape_open(machinenum, cachedir):
diff -ruN tarsnap-autoconf-1.0.32/tar/multitape/multitape_chunkiter.c tarsnap-autoconf-1.0.33/tar/multitape/multitape_chunkiter.c
--- tarsnap-autoconf-1.0.32/tar/multitape/multitape_chunkiter.c	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/tar/multitape/multitape_chunkiter.c	2012-08-10 00:05:23.000000000 -0700
@@ -91,6 +91,10 @@
 			goto err3;
 		}
 
+		/* We want to cache this chunk after reading it. */
+		if (chunks_read_cache(CR, ch->hash))
+			goto err2;
+
 		/* Read the chunk into buffer. */
 		if ((rc = chunks_read_chunk(CR, ch->hash, chunklen, chunkzlen,
 		    ibuf + ibuflen, quiet)) != 0)
diff -ruN tarsnap-autoconf-1.0.32/tar/multitape/multitape_delete.c tarsnap-autoconf-1.0.33/tar/multitape/multitape_delete.c
--- tarsnap-autoconf-1.0.32/tar/multitape/multitape_delete.c	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/tar/multitape/multitape_delete.c	2012-08-10 00:05:23.000000000 -0700
@@ -1,6 +1,7 @@
 #include "bsdtar_platform.h"
 
 #include <stdint.h>
+#include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
 
@@ -11,6 +12,11 @@
 
 #include "multitape.h"
 
+/* Cookie created by deletetape_init and passed to other functions. */
+struct multitape_delete_internal {
+	STORAGE_R * S;	/* Storage read cookie. */
+};
+
 static int callback_delete(void *, struct chunkheader *);
 
 /**
@@ -27,19 +33,46 @@
 }
 
 /**
- * deletetape(machinenum, cachedir, tapename, printstats, withname):
+ * deletetape_init(machinenum):
+ * Return a cookie which can be passed to deletetape.
+ */
+TAPE_D *
+deletetape_init(uint64_t machinenum)
+{
+	struct multitape_delete_internal * d;
+
+	/* Allocate memory. */
+	if ((d = malloc(sizeof(struct multitape_delete_internal))) == NULL)
+		goto err0;
+
+	/* Obtain a storage layer read cookie. */
+	if ((d->S = storage_read_init(machinenum)) == NULL)
+		goto err1;
+
+	/* Success! */
+	return (d);
+
+err1:
+	free(d);
+err0:
+	/* Failure!  */
+	return (NULL);
+}
+
+/**
+ * deletetape(d, machinenum, cachedir, tapename, printstats, withname):
  * Delete the specified tape, and print statistics to stderr if requested.
  * If ${withname} is non-zero, print statistics with the archive name, not
  * just as "This archive".
  */
 int
-deletetape(uint64_t machinenum, const char * cachedir,
+deletetape(TAPE_D * d, uint64_t machinenum, const char * cachedir,
     const char * tapename, int printstats, int withname)
 {
 	struct tapemetadata tmd;
 	CHUNKS_D * C;		/* Chunk layer delete cookie. */
 	STORAGE_D * S;		/* Storage layer delete cookie. */
-	STORAGE_R * SR;		/* Storage layer read cookie. */
+	STORAGE_R * SR = d->S;		/* Storage layer read cookie. */
 	int lockfd;
 	uint8_t lastseq[32];
 	uint8_t seqnum[32];
@@ -59,43 +92,43 @@
 	/* Obtain storage and chunk layer cookies. */
 	if ((S = storage_delete_start(machinenum, lastseq, seqnum)) == NULL)
 		goto err1;
-	if ((SR = storage_read_init(machinenum)) == NULL)
-		goto err2;
 	if ((C = chunks_delete_start(cachedir, S)) == NULL)
-		goto err3;
+		goto err2;
+
+	/* Cache up to 100 bytes of blocks per chunk in the directory. */
+	storage_read_cache_limit(SR, 100 * chunks_delete_getdirsz(C));
 
 	/* Read archive metadata. */
 	if (multitape_metadata_get_byname(SR, NULL, &tmd, tapename, 0))
-		goto err4;
+		goto err3;
 
 	/* Delete chunks. */
 	if (multitape_chunkiter_tmd(SR, NULL, &tmd, callback_delete, C, 0))
-		goto err5;
+		goto err4;
 
 	/* Delete archive index. */
 	if (multitape_metaindex_delete(S, C, &tmd))
-		goto err5;
+		goto err4;
 
 	/* Delete archive metadata. */
 	if (multitape_metadata_delete(S, C, &tmd))
-		goto err5;
+		goto err4;
 
 	/* Free tape metadata. */
 	multitape_metadata_free(&tmd);
 
 	/* Ask the storage layer to flush all pending deletes. */
 	if (storage_delete_flush(S))
-		goto err4;
+		goto err3;
 
 	/* Print statistics if they were requested. */
 	if ((printstats != 0) &&
 	    chunks_delete_printstats(stderr, C, withname ? tapename : NULL))
-		goto err4;
+		goto err3;
 
 	/* Close storage and chunk layer cookies. */
 	if (chunks_delete_end(C))
-		goto err3;
-	storage_read_free(SR);
+		goto err2;
 	if (storage_delete_end(S))
 		goto err1;
 
@@ -109,12 +142,10 @@
 	/* Success! */
 	return (0);
 
-err5:
-	multitape_metadata_free(&tmd);
 err4:
-	chunks_delete_free(C);
+	multitape_metadata_free(&tmd);
 err3:
-	storage_read_free(SR);
+	chunks_delete_free(C);
 err2:
 	storage_delete_free(S);
 err1:
@@ -123,3 +154,18 @@
 	/* Failure! */
 	return (-1);
 }
+
+/**
+ * deletetape_free(d):
+ * Free the delete cookie ${d}.
+ */
+void
+deletetape_free(TAPE_D * d)
+{
+
+	/* Close the storage layer read cookie. */
+	storage_read_free(d->S);
+
+	/* Free the multitape layer delete cookie. */
+	free(d);
+}
diff -ruN tarsnap-autoconf-1.0.32/tar/multitape/multitape_fsck.c tarsnap-autoconf-1.0.33/tar/multitape/multitape_fsck.c
--- tarsnap-autoconf-1.0.32/tar/multitape/multitape_fsck.c	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/tar/multitape/multitape_fsck.c	2012-08-10 00:05:23.000000000 -0700
@@ -370,6 +370,9 @@
 	/* Report status. */
 	fprintf(stdout, "Phase 4: Verifying archive completeness\n");
 
+	/* Cache up to 100 bytes of blocks per chunk in the directory. */
+	storage_read_cache_limit(SR, 100 * chunks_stats_getdirsz(C));
+
 	/* Iterate through the archives. */
 	for (file = 0; file < nmdat; file++) {
 		/* Print progress. */
diff -ruN tarsnap-autoconf-1.0.32/tar/multitape/multitape_stats.c tarsnap-autoconf-1.0.33/tar/multitape/multitape_stats.c
--- tarsnap-autoconf-1.0.32/tar/multitape/multitape_stats.c	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/tar/multitape/multitape_stats.c	2012-08-10 00:05:23.000000000 -0700
@@ -126,6 +126,9 @@
 	if (storage_directory_read(d->machinenum, 'm', 0, &flist, &nfiles))
 		goto err0;
 
+	/* Cache up to 100 bytes of blocks per chunk in the directory. */
+	storage_read_cache_limit(d->SR, 100 * chunks_stats_getdirsz(d->C));
+
 	/* Iterate through the files. */
 	for (file = 0; file < nfiles; file++) {
 		/* Zero archive statistics. */
@@ -260,6 +263,9 @@
 {
 	struct tapemetadata tmd;
 
+	/* Cache up to 100 bytes of blocks per chunk in the directory. */
+	storage_read_cache_limit(d->SR, 100 * chunks_stats_getdirsz(d->C));
+
 	/* Zero archive statistics. */
 	chunks_stats_zeroarchive(d->C);
 
diff -ruN tarsnap-autoconf-1.0.32/tar/storage/storage.h tarsnap-autoconf-1.0.33/tar/storage/storage.h
--- tarsnap-autoconf-1.0.32/tar/storage/storage.h	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/tar/storage/storage.h	2012-08-10 00:05:23.000000000 -0700
@@ -20,6 +20,21 @@
 STORAGE_R * storage_read_init(uint64_t);
 
 /**
+ * storage_read_cache(S, class, name):
+ * Add the file ${name} from class ${class} into the cache for the read cookie
+ * ${S} returned from storage_read_init.  The data will not be fetched yet;
+ * but any future fetch will look in the cache first and will store the block
+ * in the cache if it needs to be fetched.
+ */
+int storage_read_cache(STORAGE_R *, char, const uint8_t[32]);
+
+/**
+ * storage_read_cache_limit(S, size):
+ * Set a limit of ${size} bytes on the cache associated with read cookie {S}.
+ */
+void storage_read_cache_limit(STORAGE_R *, size_t);
+
+/**
  * storage_read_file(S, buf, buflen, class, name):
  * Read the file ${name} from class ${class} using the read cookie ${S}
  * returned from storage_read_init into the buffer ${buf} of length ${buflen}.
diff -ruN tarsnap-autoconf-1.0.32/tar/storage/storage_read.c tarsnap-autoconf-1.0.33/tar/storage/storage_read.c
--- tarsnap-autoconf-1.0.32/tar/storage/storage_read.c	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/tar/storage/storage_read.c	2012-08-10 00:05:23.000000000 -0700
@@ -1,5 +1,6 @@
 #include "bsdtar_platform.h"
 
+#include <assert.h>
 #include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
@@ -7,6 +8,7 @@
 #include "crypto.h"
 #include "netpacket.h"
 #include "netproto.h"
+#include "rwhashtab.h"
 #include "storage_internal.h"
 #include "sysendian.h"
 #include "warnp.h"
@@ -15,9 +17,23 @@
 
 struct storage_read_internal {
 	NETPACKET_CONNECTION * NPC;
+	RWHASHTAB * cache;
+	struct read_file_cached * cache_mru;	/* Most recently used. */
+	struct read_file_cached * cache_lru;	/* LRU of !evicted files. */
+	size_t cachesz;
+	size_t cachemaxsz;
 	uint64_t machinenum;
 };
 
+struct read_file_cached {
+	uint8_t classname[33];
+	uint8_t * buf;				/* NULL if !inqueue. */
+	size_t buflen;
+	struct read_file_cached * next_lru;	/* Less recently used. */
+	struct read_file_cached * next_mru;	/* More recently used. */
+	int inqueue;
+};
+
 struct read_file_internal {
 	int done;
 	int status;
@@ -28,6 +44,7 @@
 struct read_file_cookie {
 	int (*callback)(void *, int, uint8_t *, size_t);
 	void * cookie;
+	struct storage_read_internal * S;
 	uint64_t machinenum;
 	uint8_t class;
 	uint8_t name[32];
@@ -41,6 +58,95 @@
 static int callback_read_file(void *, int, uint8_t *, size_t);
 
 /**
+ * cache_lru_remove(S, CF):
+ * Remove ${CF} from its current position in the LRU queue for ${S}.
+ */
+static void
+cache_lru_remove(STORAGE_R * S, struct read_file_cached * CF)
+{
+
+	/* Sanity check: We should be in the queue. */
+	assert(CF->inqueue);
+
+	/* Our LRU file is now someone else's LRU file. */
+	if (CF->next_mru != NULL)
+		CF->next_mru->next_lru = CF->next_lru;
+	else
+		S->cache_mru = CF->next_lru;
+
+	/* Our MRU file is now someone else's MRU file. */
+	if (CF->next_lru != NULL)
+		CF->next_lru->next_mru = CF->next_mru;
+	else
+		S->cache_lru = CF->next_mru;
+
+	/* We're no longer in the queue. */
+	CF->inqueue = 0;
+	S->cachesz -= CF->buflen;
+
+	/* We no longer have an MRU or LRU file. */
+	CF->next_mru = NULL;
+	CF->next_lru = NULL;
+}
+
+/**
+ * cache_lru_add(S, CF):
+ * Record ${CF} as the most recently used cached file in ${S}.
+ */
+static void
+cache_lru_add(STORAGE_R * S, struct read_file_cached * CF)
+{
+
+	/* Sanity check: We should not be in the queue yet. */
+	assert(CF->inqueue == 0);
+
+	/* Nobody is more recently used than us... */
+	CF->next_mru = NULL;
+
+	/* ... the formerly MRU file is less recently used than us... */
+	CF->next_lru = S->cache_mru;
+
+	/* ... we're more recently used than any formerly MRU file... */
+	if (CF->next_lru != NULL)
+		CF->next_lru->next_mru = CF;
+
+	/* ... and more recently used than nothing... */
+	if (S->cache_lru == NULL)
+		S->cache_lru = CF;
+
+	/* ... and we're now the MRU file. */
+	S->cache_mru = CF;
+
+	/* We're now in the queue. */
+	CF->inqueue = 1;
+	S->cachesz += CF->buflen;
+}
+
+/**
+ * cache_prune(S):
+ * Prune the cache for ${S} down to size.
+ */
+static void
+cache_prune(STORAGE_R * S)
+{
+	struct read_file_cached * CF;
+
+	/* While the cache is too big... */
+	while (S->cachesz > S->cachemaxsz) {
+		/* Find the LRU cached file. */
+		CF = S->cache_lru;
+
+		/* Remove this file from the LRU list. */
+		cache_lru_remove(S, CF);
+
+		/* Free its data. */
+		free(CF->buf);
+		CF->buf = NULL;
+		CF->buflen = 0;
+	}
+}
+
+/**
  * storage_read_init(machinenum):
  * Prepare for read operations.  Note that since reads are non-transactional,
  * this could be a no-op aside from storing the machine number.
@@ -54,9 +160,20 @@
 	if ((S = malloc(sizeof(struct storage_read_internal))) == NULL)
 		goto err0;
 
+	/* Create a hash table for cached blocks. */
+	if ((S->cache = rwhashtab_init(offsetof(struct read_file_cached,
+	    classname), 33)) == NULL)
+		goto err1;
+
+	/* No cached data yet. */
+	S->cache_lru = NULL;
+	S->cache_mru = NULL;
+	S->cachesz = 0;
+	S->cachemaxsz = (size_t)(-1);
+
 	/* Open netpacket connection. */
 	if ((S->NPC = netpacket_open(USERAGENT)) == NULL)
-		goto err1;
+		goto err2;
 
 	/* Store machine number. */
 	S->machinenum = machinenum;
@@ -64,6 +181,8 @@
 	/* Success! */
 	return (S);
 
+err2:
+	rwhashtab_free(S->cache);
 err1:
 	free(S);
 err0:
@@ -72,6 +191,97 @@
 }
 
 /**
+ * storage_read_cache(S, class, name):
+ * Add the file ${name} from class ${class} into the cache for the read cookie
+ * ${S} returned from storage_read_init.  The data will not be fetched yet;
+ * but any future fetch will look in the cache first and will store the block
+ * in the cache if it needs to be fetched.
+ */
+int
+storage_read_cache(STORAGE_R * S, char class, const uint8_t name[32])
+{
+	uint8_t classname[33];
+	struct read_file_cached * CF;
+
+	/* Prune the cache if necessary. */
+	cache_prune(S);
+
+	/* Is this file already marked as needing to be cached? */
+	classname[0] = class;
+	memcpy(&classname[1], name, 32);
+	if ((CF = rwhashtab_read(S->cache, classname)) != NULL) {
+		/* If we're in the linked list, remove ourselves from it. */
+		if (CF->inqueue)
+			cache_lru_remove(S, CF);
+
+		/* Insert ourselves at the head of the list. */
+		cache_lru_add(S, CF);
+
+		/* That's all we need to do. */
+		goto done;
+	}
+
+	/* Allocate a structure. */
+	if ((CF = malloc(sizeof(struct read_file_cached))) == NULL)
+		goto err0;
+	memcpy(CF->classname, classname, 33);
+	CF->buf = NULL;
+	CF->buflen = 0;
+	CF->inqueue = 0;
+
+	/* Add it to the cache. */
+	if (rwhashtab_insert(S->cache, CF))
+		goto err1;
+
+	/* Add it to the LRU queue. */
+	cache_lru_add(S, CF);
+
+done:
+	/* Success! */
+	return (0);
+
+err1:
+	free(CF);
+err0:
+	/* Failure! */
+	return (-1);
+}
+
+/**
+ * storage_read_cache_limit(S, size):
+ * Set a limit of ${size} bytes on the cache associated with read cookie {S}.
+ */
+void
+storage_read_cache_limit(STORAGE_R * S, size_t size)
+{
+
+	/* Record the new size limit. */
+	S->cachemaxsz = size;
+}
+
+/* Look for a file in the cache. */
+static void
+storage_read_cache_find(STORAGE_R * S, char class, const uint8_t name[32],
+    uint8_t ** buf, size_t * buflen)
+{
+	uint8_t classname[33];
+	struct read_file_cached * CF;
+
+	/* Haven't found it yet. */
+	*buf = NULL;
+	*buflen = 0;
+
+	/* Search for a cache entry. */
+	classname[0] = class;
+	memcpy(&classname[1], name, 32);
+	if ((CF = rwhashtab_read(S->cache, classname)) != NULL) {
+		/* Found it! */
+		*buf = CF->buf;
+		*buflen = CF->buflen;
+	}
+}
+
+/**
  * storage_read_file(S, buf, buflen, class, name):
  * Read the file ${name} from class ${class} using the read cookie ${S}
  * returned from storage_read_init into the buffer ${buf} of length ${buflen}.
@@ -83,6 +293,23 @@
     char class, const uint8_t name[32])
 {
 	struct read_file_internal C;
+	uint8_t * cached_buf;
+	size_t cached_buflen;
+
+	/* Can we serve this from our cache? */
+	storage_read_cache_find(S, class, name, &cached_buf, &cached_buflen);
+	if (cached_buf != NULL) {
+		if (buflen != cached_buflen) {
+			/* Bad length. */
+			C.status = 2;
+			goto done;
+		} else {
+			/* Good length, copy data out. */
+			C.status = 0;
+			memcpy(buf, cached_buf, buflen);
+			goto done;
+		}
+	}
 
 	/* Initialize structure. */
 	C.buf = buf;
@@ -96,6 +323,7 @@
 	if (network_spin(&C.done))
 		goto err0;
 
+done:
 	/* Return status code from server. */
 	return (C.status);
 
@@ -115,6 +343,22 @@
     size_t * buflen, char class, const uint8_t name[32])
 {
 	struct read_file_internal C;
+	uint8_t * cached_buf;
+	size_t cached_buflen;
+
+	/* Can we serve this from our cache? */
+	storage_read_cache_find(S, class, name, &cached_buf, &cached_buflen);
+	if (cached_buf != NULL) {
+		/* Allocate a buffer and copy data out. */
+		if ((*buf = malloc(cached_buflen)) == NULL)
+			goto err0;
+		memcpy(*buf, cached_buf, cached_buflen);
+		*buflen = cached_buflen;
+
+		/* Data is good. */
+		C.status = 0;
+		goto done;
+	}
 
 	/* Initialize structure. */
 	C.buf = NULL;
@@ -134,6 +378,7 @@
 		*buflen = C.buflen;
 	}
 
+done:
 	/* Return status code. */
 	return (C.status);
 
@@ -170,6 +415,7 @@
 		goto err0;
 	C->callback = callback;
 	C->cookie = cookie;
+	C->S = S;
 	C->machinenum = S->machinenum;
 	C->class = class;
 	memcpy(C->name, name, 32);
@@ -215,6 +461,8 @@
     size_t packetlen)
 {
 	struct read_file_cookie * C = cookie;
+	struct read_file_cached * CF;
+	uint8_t classname[33];
 	uint32_t filelen;
 	int sc;
 	int rc;
@@ -296,6 +544,22 @@
 				free(C->buf);
 			goto err0;
 		}
+
+		/* Should we cache this data? */
+		classname[0] = C->class;
+		memcpy(&classname[1], C->name, 32);
+		if (((CF = rwhashtab_read(C->S->cache, classname)) != NULL) &&
+		    (CF->inqueue != 0) && (CF->buf == NULL)) {
+			/* Make a copy of this buffer if we can. */
+			if ((CF->buf = malloc(C->buflen)) != NULL) {
+				/* Copy in data and data length. */
+				CF->buflen = C->buflen;
+				memcpy(CF->buf, C->buf, C->buflen);
+
+				/* We've got more data cached now. */
+				C->S->cachesz += CF->buflen;
+			}
+		}
 	}
 
 	/*
@@ -343,6 +607,22 @@
 	return (0);
 }
 
+/* Free a cache entry. */
+static int
+callback_cache_free(void * record, void * cookie)
+{
+	struct read_file_cached * CF = record;
+
+	(void)cookie; /* UNUSED */
+
+	/* Free the buffer and the structure. */
+	free(CF->buf);
+	free(CF);
+
+	/* Success! */
+	return (0);
+}
+
 /**
  * storage_read_free(S):
  * Close the read cookie ${S} and free any allocated memory.
@@ -354,6 +634,12 @@
 	/* Close netpacket connection. */
 	netpacket_close(S->NPC);
 
+	/* Free contents of cache. */
+	rwhashtab_foreach(S->cache, callback_cache_free, NULL);
+
+	/* Free cache. */
+	rwhashtab_free(S->cache);
+
 	/* Free memory. */
 	free(S);
 }
diff -ruN tarsnap-autoconf-1.0.32/tar/tarsnap.1-man.in tarsnap-autoconf-1.0.33/tar/tarsnap.1-man.in
--- tarsnap-autoconf-1.0.32/tar/tarsnap.1-man.in	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/tar/tarsnap.1-man.in	2012-08-10 00:05:23.000000000 -0700
@@ -850,7 +850,7 @@
 .ad l
 Upon receipt of the
 .BR SIGQUIT
-signal or 
+signal or
 ua
 Q,
 or if the bandwidth limit specified via a
diff -ruN tarsnap-autoconf-1.0.32/tar/tarsnap.1-mdoc.in tarsnap-autoconf-1.0.33/tar/tarsnap.1-mdoc.in
--- tarsnap-autoconf-1.0.32/tar/tarsnap.1-mdoc.in	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/tar/tarsnap.1-mdoc.in	2012-08-10 00:05:23.000000000 -0700
@@ -770,7 +770,7 @@
 .Sh INTERRUPTING ARCHIVAL
 Upon receipt of the
 .Dv SIGQUIT
-signal or 
+signal or
 .ua
 Q,
 or if the bandwidth limit specified via a
diff -ruN tarsnap-autoconf-1.0.32/tar/write.c tarsnap-autoconf-1.0.33/tar/write.c
--- tarsnap-autoconf-1.0.32/tar/write.c	2012-02-22 04:10:53.000000000 -0800
+++ tarsnap-autoconf-1.0.33/tar/write.c	2012-08-10 00:05:23.000000000 -0700
@@ -764,6 +764,9 @@
 			break;
 		}
 
+		if (bsdtar->option_no_subdirs)
+			descend = 0;
+
 		/*
 		 * If the user did not specify --insane-filesystems, do not
 		 * cross into a new filesystem which is known to be synthetic.
@@ -810,8 +813,15 @@
 		 * In -u mode, check that the file is newer than what's
 		 * already in the archive; in all modes, obey --newerXXX flags.
 		 */
-		if (!new_enough(bsdtar, name, st))
+		if (!new_enough(bsdtar, name, st)) {
+			if (!descend)
+				continue;
+			if (bsdtar->option_interactive &&
+			    !yes("add '%s'", name))
+				continue;
+			tree_descend(tree);
 			continue;
+		}
 
 		archive_entry_free(entry);
 		entry = archive_entry_new();
@@ -885,7 +895,7 @@
 			continue;
 
 		/* Note: if user vetoes, we won't descend. */
-		if (descend && !bsdtar->option_no_subdirs)
+		if (descend)
 			tree_descend(tree);
 
 		/*
