Imported Upstream version 3.2.1 upstream/3.2.1
authorBdale Garbee <bdale@gag.com>
Sun, 27 Feb 2011 17:55:47 +0000 (10:55 -0700)
committerBdale Garbee <bdale@gag.com>
Sun, 27 Feb 2011 17:55:47 +0000 (10:55 -0700)
164 files changed:
ChangeLog
FULL_VERSION
Makefile.in
NEWS
ReleaseNotes
VERSION
amandad-src/Makefile.in
amar-src/Makefile.in
amplot/Makefile.in
application-src/Makefile.in
application-src/ampgsql.pl
changer-src/Makefile.in
client-src/Makefile.in
client-src/client_util.c
common-src/Makefile.in
common-src/amxml.c
common-src/conffile.c
common-src/fileheader.c
common-src/glib-util.c
common-src/glib-util.h
common-src/svn-info.h
common-src/util.c
common-src/util.h
config/Makefile.in
config/amanda/libs.m4
config/amanda/readline.m4
config/config.h.in
configure
device-src/Makefile.am
device-src/Makefile.in
device-src/amdevcheck.pl
device-src/tape-device.c
device-src/xfer-dest-taper-cacher.c
device-src/xfer-dest-taper-splitter.c
example/Makefile.in
gnulib/Makefile.in
installcheck/Amanda_Changer_disk.pl
installcheck/Amanda_Changer_rait.pl
installcheck/Amanda_Config.pl
installcheck/Amanda_Tapelist.pl
installcheck/Makefile.in
installcheck/amlabel.pl
installcheck/amreport.pl
installcheck/catalogs/bigestimate.cat
man/Makefile.in
man/amaddclient.8
man/amadmin.8
man/amaespipe.8
man/amanda-applications.7
man/amanda-archive-format.5
man/amanda-auth.7
man/amanda-changers.7
man/amanda-client.conf.5
man/amanda-compatibility.7
man/amanda-devices.7
man/amanda-match.7
man/amanda-scripts.7
man/amanda-taperscan.7
man/amanda.8
man/amanda.conf.5
man/amarchiver.8
man/amcheck.8
man/amcheckdb.8
man/amcheckdump.8
man/amcleanup.8
man/amcrypt-ossl-asym.8
man/amcrypt-ossl.8
man/amcrypt.8
man/amcryptsimple.8
man/amdevcheck.8
man/amdump.8
man/amfetchdump.8
man/amflush.8
man/amgetconf.8
man/amgpgcrypt.8
man/amgtar.8
man/amlabel.8
man/amoverview.8
man/ampgsql.8
man/amplot.8
man/amraw.8
man/amrecover.8
man/amreport.8
man/amrestore.8
man/amrmtape.8
man/amsamba.8
man/amserverconfig.8
man/amservice.8
man/amstar.8
man/amstatus.8
man/amsuntar.8
man/amtape.8
man/amtapetype.8
man/amtoc.8
man/amvault.8
man/amzfs-sendrecv.8
man/amzfs-snapshot.8
man/disklist.5
man/script-email.8
man/tapelist.5
man/xml-source/amadmin.8.xml
man/xml-source/amanda.conf.5.xml
man/xml-source/amcheck.8.xml
man/xml-source/amcheckdump.8.xml
man/xml-source/amdevcheck.8.xml
man/xml-source/amdump.8.xml
man/xml-source/amfetchdump.8.xml
man/xml-source/amflush.8.xml
man/xml-source/amgetconf.8.xml
man/xml-source/amlabel.8.xml
man/xml-source/amoverview.8.xml
man/xml-source/amrecover.8.xml
man/xml-source/amreport.8.xml
man/xml-source/amservice.8.xml
man/xml-source/amstatus.8.xml
man/xml-source/amtape.8.xml
man/xml-source/tapelist.5.xml
man/xslt/html.xsl.in
ndmp-src/Makefile.in
oldrecover-src/Makefile.in
packaging/Makefile.in
packaging/deb/rules
packaging/rpm/amanda.spec.src
perl/Amanda/Changer.pm
perl/Amanda/Changer/disk.pm
perl/Amanda/Changer/robot.pm
perl/Amanda/Report.pm
perl/Amanda/Report/human.pm
perl/Amanda/Tapelist.pm
perl/Amanda/Tapelist.swg
perl/Amanda/Taper/Scribe.pm
perl/Amanda/Taper/Worker.pm
perl/Makefile.in
perl/amglue/Makefile.in
po/Makefile.in
recover-src/Makefile.in
recover-src/extract_list.c
server-src/Makefile.in
server-src/amadmin.c
server-src/amcheck-device.pl
server-src/amcheckdump.pl
server-src/amdump.pl
server-src/amflush.c
server-src/amidxtaped.pl
server-src/amlabel.pl
server-src/amoverview.pl
server-src/amreport.pl
server-src/amstatus.pl
server-src/amtape.pl
server-src/amvault.pl
server-src/chunker.c
server-src/cmdline.c
server-src/cmdline.h
server-src/driver.c
server-src/driverio.c
server-src/dumper.c
server-src/find.c
server-src/holding.c
server-src/planner.c
server-src/server_util.c
server-src/tapefile.c
server-src/tapefile.h
xfer-src/Makefile.in
xfer-src/element-glue.c

index bc8ed6698dccc565a528b40a37142ad171d023f0..741a45759fc3bf14470ae75fb7288ee6843578aa 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,253 @@
+2010-12-14  Jean-Louis Martineau <martineau@zmanda.com>
+       * VERSION: 3.2.1
+
+2010-12-14  Jean-Louis Martineau <martineau@zmanda.com>
+       * common-src/ssh-security.c: Use client_port.
+
+2010-12-14  Daniel Néri <dne@mayonnaise.net>
+       * application-src/ampgsql.pl: Don't assume that gtar is configured to
+         use stdin/stdout as default archive.
+
+2010-12-14  Jean-Louis Martineau <martineau@zmanda.com>
+       * server-src/amidxtaped.pl: Don't crash if same-host doesn't match.
+
+2010-12-12  Jean-Louis Martineau <martineau@zmanda.com>
+       * perl/Amanda/Changer/disk.pm: inventory must return the same as
+                                      read_label.
+       * server-src/amtape.pl: Fix for new inventory.
+       * installcheck/Amanda_Changer_disk.pl: Fix for new inventory.
+       * installcheck/Amanda_Changer_rait.pl: Fix for new inventory.
+
+2010-12-11  Daniel Néri <dne@mayonnaise.net>
+       * application-src/ampgsql.pl: Don't assume that gtar is configured to
+         use stdin/stdout as default archive.
+
+2010-12-12  Daniel Néri <dne@mayonnaise.net>
+       * application-src/ampgsql.pl: Use diskname, not devicename, as prefix
+         when checking for properties. Now works as documented in the ampgsql
+         man page.
+
+2010-12-10  David Bogen <bogen@wisc.edu>
+       * server-src/amoverview.pl: fix amoverview's argument parsing
+
+2010-12-10  Jean-Louis Martineau <martineau@zmanda.com>
+       * server-src/amcheck-device.pl: Fix possible hang if
+         Amanda::MainLoop::quit is called before Amanda::MainLoop::run.
+       * perl/Amanda/Changer.pm: Return the error.
+
+2010-12-09  Jean-Louis Martineau <martineau@zmanda.com>
+       * server-src/driver.c: Check if taper is flushing something before
+         moving a dle to directq.
+
+2010-12-09  Jean-Louis Martineau <martineau@zmanda.com>
+       * device-src/xfer-dest-taper-cacher.c: Print why the malloc failed.
+
+2010-12-08  Dustin J. Mitchell <dustin@zmanda.com>
+       * common-src/glib-util.c common-src/glib-util.h: do not define
+         symbol g_slist_free_full, as it exists in glib-2.27 and higher;
+         use slist_free_full, and alias that to g_slist_free_full when
+         building against glib-2.28 or higher.
+       * client-src/client_util.c: make g_slist_free_full_gpointer into
+         a local, static function
+       * common-src/amxml.c common-src/conffile.c recover-src/extract_list.c
+         server-src/amadmin.c server-src/amflush.c server-src/cmdline.c
+         server-src/cmdline.h server-src/find.c server-src/holding.c
+         server-src/planner.c: rename function
+
+2010-12-08  Jean-Louis Martineau <martineau@zmanda.com>
+       * ReleaseNotes, NEWS: Add changes for 3.2.1
+
+2010-12-07 Dan Locks <dwlocks@zmanda.com>
+       *  packaging/rpm/amanda.spec.src: remove manual library requires and
+          set curl vs libcurl based on distro.
+
+2010-12-07  Jean-Louis Martineau <martineau@zmanda.com>
+       * common-src/util.c: s/HAVE_READLINE/HAVE_LIBREADLINE/
+       * config/amanda/readline.m4: s/HAVE_READLINE/HAVE_LIBREADLINE/
+
+2010-12-07  Jean-Louis Martineau <martineau@zmanda.com>
+       * config/amanda/readline.m4: Merge with latest AX_LIB_READLINE.
+       * common-src/util.h: Fix for latest AX_LIB_READLINE.
+
+2010-12-06 Dan Locks <dwlocks@zmanda.com>
+       *  packaging/rpm/amanda.spec.src: remove libtermcap.so.2 requirement
+          for newer distros.
+
+2010-12-06  Jean-Louis Martineau <martineau@zmanda.com>
+       * server-src/server_util.c (internal_server_estimate): Do not use
+         level 0 estimate if is not available.
+
+2010-12-04  Jean-Louis Martineau <martineau@zmanda.com>
+       * server-src/dumper.c: Put them in AMANDA_DBGDIR/log.error
+
+2010-12-03  Jean-Louis Martineau <martineau@zmanda.com>
+       * server-src/dumper.c: Put error message in separate files to
+         reduce the size of the log file.
+
+2010-11-29  Jean-Louis Martineau <martineau@zmanda.com>
+       * man/xml-source/amlabel.8.xml: Typo.
+
+2010-11-26  Jean-Louis Martineau <martineau@zmanda.com>
+       * installcheck/amreport.pl: Fix for previous patch.
+
+2010-11-26  Jean-Louis Martineau <martineau@zmanda.com>
+       * man/xml-source/amadmin.8.xml, man/xml-source/amcheck.8.xml,
+         man/xml-source/amcheckdump.8.xml, man/xml-source/amdevcheck.8.xml,
+         man/xml-source/amdump.8.xml, man/xml-source/amfetchdump.8.xml,
+         man/xml-source/amflush.8.xml, man/xml-source/amgetconf.8.xml,
+         man/xml-source/amlabel.8.xml, man/xml-source/amoverview.8.xml,
+         man/xml-source/amrecover.8.xml, man/xml-source/amreport.8.xml,
+         man/xml-source/amservice.8.xml, man/xml-source/amstatus.8.xml,
+         man/xml-source/amtape.8.xml: Fix synopsis.
+       * device-src/amdevcheck.pl, server-src/amadmin.c,
+         server-src/amcheckdump.pl, server-src/amlabel.pl,
+         server-src/amoverview.pl, server-src/amreport.pl,
+         server-src/amstatus.pl, server-src/amtape.pl: Fix usage.
+
+2010-11-26  Jean-Louis Martineau <martineau@zmanda.com>
+       * common-src/conffile.c: Print configuration option with '-'.
+       * installcheck/Amanda_Config.pl: Fix for '-'.
+
+2010-11-25  Jean-Louis Martineau <martineau@zmanda.com>
+       * perl/make_html.pl: make relative url in index.html.
+
+2010-11-25  Jean-Louis Martineau <martineau@zmanda.com>
+       * perl/make_html.pl: Add amanda version in html headers and footers.
+
+2010-11-25  Jean-Louis Martineau <martineau@zmanda.com>
+       * man/xslt/html.xsl.in: Include Amanda version in HTML headers.
+
+2010-11-22  Jean-Louis Martineau <martineau@zmanda.com>
+       * device-src/Makefile.am: activate-devpay needs gnulib.
+
+2010-11-17  Jean-Louis Martineau <martineau@zmanda.com>
+       * server-src/driver.c: Correctly handle INPUT-ERROR and TAPE-ERROR.
+
+2010-11-17  Jean-Louis Martineau <martineau@zmanda.com>
+       * device-src/xfer-dest-taper-cacher.c,
+         device-src/xfer-dest-taper-splitter.c: Cancel in correct order.
+         Other thread own self->state_mutex while it wait for self->ring* or
+         self->slab*
+
+2010-11-17  Jean-Louis Martineau <martineau@zmanda.com>
+       * device-src/xfer-dest-taper-cacher.c,
+         device-src/xfer-dest-taper-splitter.c: Always call device_finish_file
+         if device_start_file succeed.
+
+2010-11-16 Dan Locks <dwlocks@zmanda.com>
+       *  packaging/rpm/amanda.spec.src: add rhel6 stanza to distro detection
+
+2010-11-16  Jean-Louis Martineau <martineau@zmanda.com>
+       * server-src/find.c: Keep the complete error message.
+
+2010-11-12  Jean-Louis Martineau <martineau@zmanda.com>
+       * server-src/driverio.c: Don't update last_level/consecutive_runs if
+         the dump failed.
+
+2010-11-10  Jean-Louis Martineau <martineau@zmanda.com>
+       * device-src/tape-device.c: Accept LEOM property.
+
+2010-11-10  Jean-Louis Martineau <martineau@zmanda.com>
+       * perl/Amanda/Changer/robot.pm: Fix use of Amanda::Changer->make_error
+
+2010-11-08  Jean-Louis Martineau <martineau@zmanda.com>
+       * server-src/driver.c: Better handling of dump to tape.
+         Set force_flush to 0 as soon as the runq is empty.
+       * server-src/dumper.c: Improving debugging.
+
+2010-11-08  Jean-Louis Martineau <martineau@zmanda.com>
+       * perl/Amanda/Report.pm: Report driver FAIL as FAILED (not missing).
+       * perl/Amanda/Report/human.pm: Do not report driver error if there
+                                      is a try.
+
+2010-11-05  Jean-Louis Martineau <martineau@zmanda.com>
+       * man/xml-source/tapelist.5.xml: Document BARCODE.
+
+2010-11-05  Jean-Louis Martineau <martineau@zmanda.com>
+       * server-src/amdump.pl: Execute subprocess with the config overwrite.
+       * server-src/amvault.pl: Execute subprocess with the config overwrite.
+
+2010-11-04  Jean-Louis Martineau <martineau@zmanda.com>
+       * server-src/amreport.pl: Set date correctly for amvault run.
+       * perl/Amanda/Report/human.pm: Fix warning.
+
+2010-11-04  Jean-Louis Martineau <martineau@zmanda.com>
+       * server-src/tapefile.c: Add barcode in tapelist.
+       * server-src/tapefile.h: Add barcode in tapelist.
+       * perl/Amanda/Tapelist.swg: Add barcode in tapelist.
+       * perl/Amanda/Taper/Scribe.pm: Set the barcode.
+       * server-src/amlabel.pl: Set the barcode.
+       * installcheck/Amanda_Tapelist.pl: Test it.
+       * installcheck/amlabel.pl: Test it.
+
+2010-11-02  Jean-Louis Martineau <martineau@zmanda.com>
+       * common-src/util.c (quote_string_maybe): Don't use match.
+       * common-src/util.c (len_quote_string_maybe): New function.
+       * common-src/util.h (len_quote_string): Define.
+       * server-src/amadmin.c: Don't call find_dump twice.
+       * server-src/find.c (search_logfile): Don't use regex.
+       * server-src/find.c (print_find_result): Use len_quote_string.
+
+2010-11-02  Jean-Louis Martineau <martineau@zmanda.com>
+       * common-src/conffile.c: debug-recovery default to 1.
+       * man/xml-source/amanda.conf.5.xml: Document it.
+
+2010-10-29  Jean-Louis Martineau <martineau@zmanda.com>
+       * server-src/chunker.c: Close listening socket are accepted socket.
+       * xfer-src/element-glue.c: Close listening socket are accepted socket.
+
+2010-10-29  Jean-Louis Martineau <martineau@zmanda.com>
+       * server-src/amflush.c: Open 'amflush' log file in append mode.
+
+2010-10-29  Jean-Louis Martineau <martineau@zmanda.com>
+       * server-src/amdump.pl: Open 'amdump' log file in append mode.
+
+2010-10-28  Jean-Louis Martineau <martineau@zmanda.com>
+       * common-src/conffile.c: Fix quoting in recovery-limit output.
+       * server-src/amadmin.c (disklist_one): Print recovery-limit.
+
+2010-10-28  Jean-Louis Martineau <martineau@zmanda.com>
+       * client-src/client_util.c: Don't free script->result.
+
+2010-10-27  Jean-Louis Martineau <martineau@zmanda.com>
+       * server-src/dumper.c: Typo.
+
+2010-10-26  Jean-Louis Martineau <martineau@zmanda.com>
+       * common-src/fileheader.c (parse_file_header): Print buf.
+       * patching file recover-src/extract_list.c: Read header in multiple
+                                                   block.
+
+2010-10-26  Jean-Louis Martineau <martineau@zmanda.com>
+       * perl/Amanda/Report/human.pm: Use chunker size to find big estimate.
+       * installcheck/catalogs/bigestimate.cat: Fix.
+
+2010-10-25  Jean-Louis Martineau <martineau@zmanda.com>
+       * perl/Amanda/Taper/Worker.pm: Use 4*block_size for
+         device_output_buffer_size if it is not set by the user.
+       * server-src/amcheck-device.pl: Check device_output_buffer_size is at
+         least 2*block_size.
+
+2010-10-25 Dan Locks <dwlocks@zmanda.com>
+       *  config/amanda/libs.m4: update AMANDA_CHECK_CURL to add runtime link
+          flags for all solaris platforms, remove our AC_PATH_PROG for curl-config,
+          and trust LIBCURL_CHECK_CONFIG (which is now fixed)
+
+2010-10-25 Dan Locks <dwlocks@zmanda.com>
+       *  packaging/rpm/amanda.spec.src: exclude sles9 from
+          LDFLAGS=-Wl,--as-needed
+
+2010-10-21 Dan Locks <dwlocks@zmanda.com>
+
+2010-10-20  Jean-Louis Martineau <martineau@zmanda.com>
+       * server-src/amtape.pl: Typo.
+
+2010-10-19 Dan Locks <dwlocks@zmanda.com>
+       *  packaging/deb/rules, packaging/rpm/amanda.spec.src: add
+          -Wl,--as-needed to ./configure invocation in packages
+
+2010-10-19  Jean-Louis Martineau <martineau@zmanda.com>
+       * ReleaseNotes NEWS: amdump --no-taper option.
+
 2010-10-18  Jean-Louis Martineau <martineau@zmanda.com>
        * VERSION: 3.2.0
 
index 944880fa15e85084780c290b929924d3f8b6085f..e4604e3afd0dd7b7ebf8a8064658da22c365f6ef 100644 (file)
@@ -1 +1 @@
-3.2.0
+3.2.1
index 27ec55efe743112df6afac3768c6a62a7c7a9962..f7c87e6f575f155d0e0692d74e0461ea746d9fb6 100644 (file)
@@ -401,7 +401,6 @@ CONFIG_CLOBBER_MY_CONFIG = @CONFIG_CLOBBER_MY_CONFIG@
 CONFIG_DIR = @CONFIG_DIR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CURL_CONFIG = @CURL_CONFIG@
 CYGPATH_W = @CYGPATH_W@
 DD = @DD@
 DEFAULT_AMANDATES_FILE = @DEFAULT_AMANDATES_FILE@
diff --git a/NEWS b/NEWS
index fbb11ecda4ed9da52bb286abe502af57f2556bd9..11c92566b57a8a2fca34666038d7a9f23b0ca1fe 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,19 @@
-Changes in release 3.2.0alpha
+Changes in release 3.2.1
+
+   * barcode are added to the tapelist file.
+   * Faster 'amadmin find', improve speed on many programs.
+   * device-output-buffer-size default to a minimum of 4*block_size.
+   * ssh auth use the client-port
+   * Bug fixed:
+      o "Can't opendata output stream: Connection refused".
+      o Better handling of dump to tape.
+      o Corrupted 'amdump' log file, amstatus not showing correct state.
+      o Execute subprocess with the config overwrite.
+      o tape-device allow to set LEOM.
+      o Crash in robot changer.
+      o Script output property are not sent to application.
+
+Changes in release 3.2.0
 
    * Support for multiple simultaneous writes to storage devices
       o Can write to all available drives in parallel.
@@ -41,6 +56,8 @@ Changes in release 3.2.0alpha
       o chg-rth
       o chg-scsi-chio
       o chg-scsi
+   * Amdump change:
+      o new '--no-taper' option to start the run in degraded mode
    * Amvault is much improved, but still experimental:
       o supports assembling split parts on the source volume and re-splitting
         them on the destination
index d8b494ad146b438f9b266e24c13e0a3ed85eb68f..bab0471665a63685302f60bca4a9fea345371f78 100644 (file)
@@ -1,3 +1,19 @@
+               Release Notes for amanda-3.2.1
+
+* barcode are added to the tapelist file.
+* Faster 'amadmin find', improve speed on many programs.
+* device-output-buffer-size default to a minimum of 4*block_size.
+* ssh auth use the client-port
+* Bug fixed
+   o "Can't opendata output stream: Connection refused" bug.
+   o Better handling of dump to tape.
+   o Corrupted 'amdump' log file, amstatus not showing correct state.
+   o Execute subprocess with the config overwrite.
+   o tape-device allow to set LEOM.
+   o Crash in robot changer.
+   o Script output property are not sent to application.
+
+
                Release Notes for amanda-3.2.0
 
 * Support for multiple simultaneous writes to storage devices
@@ -41,6 +57,8 @@
    o chg-rth
    o chg-scsi-chio
    o chg-scsi
+* Amdump change:
+   o new '--no-taper' option to start the run in degraded mode
 * Amvault is much improved, but still experimental:
    o supports assembling split parts on the source volume and re-splitting
      them on the destination
diff --git a/VERSION b/VERSION
index 944880fa15e85084780c290b929924d3f8b6085f..e4604e3afd0dd7b7ebf8a8064658da22c365f6ef 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-3.2.0
+3.2.1
index 9f4d73cb22abe7a1a03edaa9f0dc7cb93bcdb53b..103bc4d3d394068c93815042c19e832ef5fe74bc 100644 (file)
@@ -381,7 +381,6 @@ CONFIG_CLOBBER_MY_CONFIG = @CONFIG_CLOBBER_MY_CONFIG@
 CONFIG_DIR = @CONFIG_DIR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CURL_CONFIG = @CURL_CONFIG@
 CYGPATH_W = @CYGPATH_W@
 DD = @DD@
 DEFAULT_AMANDATES_FILE = @DEFAULT_AMANDATES_FILE@
index 4cd3661df943795aba42bf120bd46971a850c5c9..03ad8df1b15bf830cf3122563e036fea04e53ea7 100644 (file)
@@ -389,7 +389,6 @@ CONFIG_CLOBBER_MY_CONFIG = @CONFIG_CLOBBER_MY_CONFIG@
 CONFIG_DIR = @CONFIG_DIR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CURL_CONFIG = @CURL_CONFIG@
 CYGPATH_W = @CYGPATH_W@
 DD = @DD@
 DEFAULT_AMANDATES_FILE = @DEFAULT_AMANDATES_FILE@
index 166423bd1a42989603732b80eb4d6b82132a25fc..ec7636ea753187f471e2e9d168a9a5ac7be11948 100644 (file)
@@ -423,7 +423,6 @@ CONFIG_CLOBBER_MY_CONFIG = @CONFIG_CLOBBER_MY_CONFIG@
 CONFIG_DIR = @CONFIG_DIR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CURL_CONFIG = @CURL_CONFIG@
 CYGPATH_W = @CYGPATH_W@
 DD = @DD@
 DEFAULT_AMANDATES_FILE = @DEFAULT_AMANDATES_FILE@
index 80a02599bdd38a318cf153ef8f2bbb5757e0f627..ca75937d58118ffbcaeda0bcbc5679a6ba1cf6cb 100644 (file)
@@ -460,7 +460,6 @@ CONFIG_CLOBBER_MY_CONFIG = @CONFIG_CLOBBER_MY_CONFIG@
 CONFIG_DIR = @CONFIG_DIR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CURL_CONFIG = @CURL_CONFIG@
 CYGPATH_W = @CYGPATH_W@
 DD = @DD@
 DEFAULT_AMANDATES_FILE = @DEFAULT_AMANDATES_FILE@
index e8056d5de12f84ad6879588ba7a2ad681f30185b..b11a8a2dd69003b365173ce6b14c2d462ecc43e3 100644 (file)
@@ -89,10 +89,10 @@ sub new {
             $self->{'props'}->{$pname} = $conf_props->{$pname}->{'values'}->[0];
         }
     }
-    # check for properties like 'foo-pg-host' where the device is 'foo'
-    if ($self->{'args'}->{'device'}) {
+    # check for properties like 'foo-pg-host' where the diskname is 'foo'
+    if ($self->{'args'}->{'disk'}) {
         foreach my $pname (@PROP_NAMES) {
-            my $tmp = "$self->{'args'}->{'device'}-$pname";
+            my $tmp = "$self->{'args'}->{'disk'}-$pname";
             if ($conf_props->{$tmp}) {
                 debug("More than one value for $tmp. Using the first.")
                     if scalar(@{$conf_props->{$tmp}->{'values'}}) > 1;
@@ -491,7 +491,7 @@ sub _get_backup_info {
               # this works!)
                local *TAROUT;
                my $conf = $self->{'args'}->{'config'} || 'NOCONFIG';
-               my $cmd = "$self->{'runtar'} $conf $Amanda::Constants::GNUTAR --create --directory $self->{'props'}->{'pg-archivedir'} $fname | $Amanda::Constants::GNUTAR --extract --to-stdout";
+               my $cmd = "$self->{'runtar'} $conf $Amanda::Constants::GNUTAR --create --file - --directory $self->{'props'}->{'pg-archivedir'} $fname | $Amanda::Constants::GNUTAR --file - --extract --to-stdout";
                debug("running: $cmd");
                open(TAROUT, "$cmd |");
                my ($start, $end, $lab);
@@ -676,13 +676,13 @@ sub _base_backup {
           '--directory', $self->{'props'}->{'pg-archivedir'}, @wal_files);
    } else {
        my $dummydir = $self->_make_dummy_dir();
-       $self->{'done_cb'}->(_run_tar_totals($self,
+       $self->{'done_cb'}->(_run_tar_totals($self, '--file', '-',
            '--directory', $dummydir, "empty-incremental"));
        rmtree($dummydir);
    }
 
    # create the final tar file
-   my $size = _run_tar_totals($self, '--directory', $tmp,
+   my $size = _run_tar_totals($self, '--directory', $tmp, '--file', '-',
        $_ARCHIVE_DIR_TAR, $_DATA_DIR_TAR);
 
    $self->{'state_cb'}->($self, $end_wal);
@@ -719,11 +719,11 @@ sub _incr_backup {
    $self->{'state_cb'}->($self, $max_wal ? $max_wal : $end_wal);
 
    if (@wal_files) {
-       $self->{'done_cb'}->(_run_tar_totals($self,
+       $self->{'done_cb'}->(_run_tar_totals($self, '--file', '-',
            '--directory', $self->{'props'}->{'pg-archivedir'}, @wal_files));
    } else {
        my $dummydir = $self->_make_dummy_dir();
-       $self->{'done_cb'}->(_run_tar_totals($self,
+       $self->{'done_cb'}->(_run_tar_totals($self, '--file', '-',
            '--directory', $dummydir, "empty-incremental"));
        rmtree($dummydir);
    }
@@ -808,6 +808,7 @@ sub command_restore {
    if ($self->{'args'}->{'level'} > 0) {
        debug("extracting incremental backup to $cur_dir/$_ARCHIVE_DIR_RESTORE");
        $status = system($self->{'args'}->{'gnutar-path'}, '--extract',
+          '--file', '-',
           '--ignore-zeros',
           '--exclude', 'empty-incremental',
            '--directory', $_ARCHIVE_DIR_RESTORE) >> 8;
@@ -817,7 +818,7 @@ sub command_restore {
        if (!-d $_DATA_DIR_RESTORE) {
            mkdir($_DATA_DIR_RESTORE) or die("could not create archive WAL directory: $!");
        }
-       $status = system($self->{'args'}->{'gnutar-path'}, '--extract') >> 8;
+       $status = system($self->{'args'}->{'gnutar-path'}, '--extract', '--file', '-',) >> 8;
        (0 == $status) or die("Failed to extract base backup (exit status: $status)");
 
        debug("extracting archive dir to $cur_dir/$_ARCHIVE_DIR_RESTORE");
index b1fe36bcaf91a53c841d1efbaad44b9ffba26241..39e7faa7853369ec4fdb680e2514b46fcab53f83 100644 (file)
@@ -421,7 +421,6 @@ CONFIG_CLOBBER_MY_CONFIG = @CONFIG_CLOBBER_MY_CONFIG@
 CONFIG_DIR = @CONFIG_DIR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CURL_CONFIG = @CURL_CONFIG@
 CYGPATH_W = @CYGPATH_W@
 DD = @DD@
 DEFAULT_AMANDATES_FILE = @DEFAULT_AMANDATES_FILE@
index 41a73fd0977accfade7b66b808ddf80362e52910..1c3aceef2616c41dbe18698a9be2d6da77a2d8ed 100644 (file)
@@ -519,7 +519,6 @@ CONFIG_CLOBBER_MY_CONFIG = @CONFIG_CLOBBER_MY_CONFIG@
 CONFIG_DIR = @CONFIG_DIR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CURL_CONFIG = @CURL_CONFIG@
 CYGPATH_W = @CYGPATH_W@
 DD = @DD@
 DEFAULT_AMANDATES_FILE = @DEFAULT_AMANDATES_FILE@
index 5dc4974f8f31dd586f8f2f79468af9eb53e4a8ab..d7387e852b4ebf84f4f66474db6a53539ac27fb9 100644 (file)
@@ -66,6 +66,13 @@ fixup_relative(
     return newname;
 }
 
+/* GDestroyFunc for a hash table whose values are GSLists contianing malloc'd
+ * strings */
+static void
+destroy_slist_free_full(gpointer list) {
+    slist_free_full((GSList *)list, g_free);
+}
+
 
 static char *
 get_name(
@@ -1009,7 +1016,7 @@ run_client_script(
     script->result = g_new0(client_script_result_t, 1);
     script->result->proplist =
                  g_hash_table_new_full(g_str_hash, g_str_equal,
-                                       &g_free, &g_slist_free_full_gpointer);
+                                       &g_free, &destroy_slist_free_full);
     script->result->output = g_ptr_array_new();
     script->result->err = g_ptr_array_new();
 
@@ -1221,7 +1228,6 @@ run_client_scripts(
            g_ptr_array_free(script->result->err, TRUE);
            script->result->err = NULL;
        }
-       amfree(script->result);
     }
 }
 
index 126c527dc75e414aa9d76a17440f8518bbedc44f..37f864fb2b6eecc13a402008c1f9764b9faa1f8f 100644 (file)
@@ -555,7 +555,6 @@ CONFIG_CLOBBER_MY_CONFIG = @CONFIG_CLOBBER_MY_CONFIG@
 CONFIG_DIR = @CONFIG_DIR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CURL_CONFIG = @CURL_CONFIG@
 CYGPATH_W = @CYGPATH_W@
 DD = @DD@
 DEFAULT_AMANDATES_FILE = @DEFAULT_AMANDATES_FILE@
index fedf5cc985d2e87c1f6729cd1938b211cdc43c28..bf7195ac51b885b012e2d54713959cd82036f1f2 100644 (file)
@@ -86,7 +86,7 @@ free_dle(
     amfree(dle->device);
     amfree(dle->program);
     g_slist_free(dle->estimatelist);
-    g_slist_free_full(dle->levellist);
+    slist_free_full(dle->levellist, g_free);
     amfree(dle->dumpdate);
     amfree(dle->compprog);
     amfree(dle->srv_encrypt);
@@ -104,8 +104,8 @@ free_dle(
                                      scriptlist = scriptlist->next) {
        free_script_data((script_t *)scriptlist->data);
     }
-    g_slist_free_full(dle->scriptlist);
-    g_slist_free_full(dle->directtcp_list);
+    slist_free_full(dle->scriptlist, g_free);
+    slist_free_full(dle->directtcp_list, g_free);
     amfree(dle);
 }
 
index 19d87da4718f099fa7caf5cc50f1491cf607672e..12d9f0392e93f860330ab25b7233c73bc77d65c1 100644 (file)
@@ -226,6 +226,10 @@ static int current_line_num = 0; /* (technically, managed by the parser) */
 /* A static buffer for storing tokens while they are being scanned. */
 static char tkbuf[4096];
 
+/* Return a token formated for output */
+static char *str_keyword(keytab_t *kt);
+
+static char *str_keyword(keytab_t *kt);
 /* Look up the name of the given token in the current keytable */
 static char *get_token_name(tok_t);
 
@@ -1638,7 +1642,7 @@ negative_number: /* look for goto negative_number below sign is set there */
            if (kwp->keyword == NULL)
                str = _("token not");
            else
-               str = kwp->keyword;
+               str = str_keyword(kwp);
            break;
        }
        conf_parserror(_("%s is expected"), str);
@@ -3645,7 +3649,7 @@ read_execute_on(
        case CONF_POST_LEVEL_RECOVER:  val->v.i |= EXECUTE_ON_POST_LEVEL_RECOVER;  break;
        case CONF_INTER_LEVEL_RECOVER: val->v.i |= EXECUTE_ON_INTER_LEVEL_RECOVER; break;
        default:
-       conf_parserror(_("Execute_on expected"));
+       conf_parserror(_("Execute-on expected"));
        }
        get_conftoken(CONF_ANY);
        if (tok != CONF_COMMA) {
@@ -4668,7 +4672,7 @@ config_uninit(void)
           free_val_t(&hd->value[i]);
        }
     }
-    g_slist_free_full(holdinglist);
+    slist_free_full(holdinglist, g_free);
     holdinglist = NULL;
 
     for(dp=dumplist; dp != NULL; dp = dpnext) {
@@ -4754,7 +4758,7 @@ config_uninit(void)
     amfree(config_dir);
     amfree(config_filename);
 
-    g_slist_free_full(seen_filenames);
+    slist_free_full(seen_filenames, g_free);
     seen_filenames = NULL;
 
     config_client = FALSE;
@@ -4837,7 +4841,7 @@ init_defaults(
     conf_init_int      (&conf_data[CNF_REQ_TRIES]            , 3);
     conf_init_int      (&conf_data[CNF_DEBUG_DAYS]           , AMANDA_DEBUG_DAYS);
     conf_init_int      (&conf_data[CNF_DEBUG_AMANDAD]        , 0);
-    conf_init_int      (&conf_data[CNF_DEBUG_RECOVERY]       , 0);
+    conf_init_int      (&conf_data[CNF_DEBUG_RECOVERY]       , 1);
     conf_init_int      (&conf_data[CNF_DEBUG_AMIDXTAPED]     , 0);
     conf_init_int      (&conf_data[CNF_DEBUG_AMINDEXD]       , 0);
     conf_init_int      (&conf_data[CNF_DEBUG_AMRECOVER]      , 0);
@@ -5383,7 +5387,7 @@ free_property_t(
     gpointer p)
 {
     property_t *propery = (property_t *)p;
-    g_slist_free_full(propery->values);
+    slist_free_full(propery->values, g_free);
     amfree(propery);
 }
 
@@ -6508,11 +6512,11 @@ free_val_t(
            break;
 
        case CONFTYPE_IDENTLIST:
-           g_slist_free_full(val->v.identlist);
+           slist_free_full(val->v.identlist, g_free);
            break;
 
        case CONFTYPE_RECOVERY_LIMIT:
-           g_slist_free_full(val->v.recovery_limit.match_pats);
+           slist_free_full(val->v.recovery_limit.match_pats, g_free);
            break;
 
        case CONFTYPE_TIME:
@@ -6833,7 +6837,7 @@ val_t_print_token(
         for(dispstr=dispstrs; *dispstr!=NULL; dispstr++) {
            if (prefix)
                g_fprintf(output, "%s", prefix);
-           g_fprintf(output, format, kt->keyword);
+           g_fprintf(output, format, str_keyword(kt));
            g_fprintf(output, "%s\n", *dispstr);
        }
     } else {
@@ -7122,7 +7126,7 @@ val_t_display_strs(
            buf[0] = stralloc("");
 
        while (iter) {
-           strappend(buf[0], (char *)iter->data);
+           strappend(buf[0], quote_string_always((char *)iter->data));
            strappend(buf[0], " ");
            iter = iter->next;
        }
@@ -7737,7 +7741,7 @@ config_errors(GSList **errstr)
 void
 config_clear_errors(void)
 {
-    g_slist_free_full(cfgerr_errors);
+    slist_free_full(cfgerr_errors, g_free);
 
     cfgerr_errors = NULL;
     cfgerr_level = CFGERR_OK;
@@ -7836,3 +7840,25 @@ amandaify_property_name(
     return ret;
 }
 
+static char keyword_str[1024];
+
+static char *
+str_keyword(
+    keytab_t *kt)
+{
+    char *p = kt->keyword;
+    char *s = keyword_str;
+
+    while(*p != '\0') {
+       if (*p == '_') {
+           *s = '-';
+       } else {
+           *s = *p;
+       }
+       p++;
+       s++;
+    }
+    *s = '\0';
+
+    return keyword_str;
+}
index 32bce0d014412ab9642759390ffe3106b3faafbc..5193837fe55626cc2472fc829381394fa88871d6 100644 (file)
@@ -132,7 +132,7 @@ parse_file_header(
 
     tok = strtok_r(line1, " ", &saveptr);
     if (tok == NULL) {
-        g_debug("Empty amanda header: buflen=%zu lsize=%zu", buflen, lsize);
+        g_debug("Empty amanda header: buflen=%zu lsize=%zu buf='%s'", buflen, lsize, buf);
        strange_header(file, buffer, buflen, _("<Non-empty line>"), tok);
        goto out;
     }
index 7ba6702259e4040867a5ff661d83c008610f3333..91985e500f4efa670c7ee69116af001ae4761a65 100644 (file)
@@ -106,33 +106,19 @@ GValue* g_value_unset_copy(const GValue * from, GValue * to) {
     return to;
 }
 
-void g_list_free_full(GList * list) {
-    GList * cur = list;
-
-    while (cur != NULL) {
-        gpointer data = cur->data;
-        amfree(data);
-        cur = g_list_next(cur);
-    }
-
-    g_list_free(list);
-}
-
-void g_slist_free_full(GSList * list) {
+#if (GLIB_MAJOR_VERSION < 2 || (GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION < 28))
+void slist_free_full(GSList * list, GDestroyNotify free_fn) {
     GSList * cur = list;
 
     while (cur != NULL) {
         gpointer data = cur->data;
-        amfree(data);
+        free_fn(data);
         cur = g_slist_next(cur);
     }
 
     g_slist_free(list);
 }
-
-void g_slist_free_full_gpointer(gpointer list) {
-    g_slist_free_full((GSList *)list);
-}
+#endif
 
 void g_queue_free_full(GQueue * queue) {
     while (!g_queue_is_empty(queue)) {
index 01f1331333dcb09157cc0b2c60d560af8cb2cb95..f687fcd0529f5c08afadfd5f81bbe6b9713c6c54 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007,2008,2009 Zmanda, Inc.  All Rights Reserved.
+ * Copyright (c) 2007, 2008, 2009, 2010 Zmanda, Inc.  All Rights Reserved.
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 as published
@@ -62,11 +62,16 @@ GValue* g_value_unset_init(GValue* val, GType type);
  * Returns its second (reset) argument.*/
 GValue* g_value_unset_copy(const GValue* from, GValue * to);
 
+/* This function is available in glib-2.28.0 and higher; for lower versions
+ * we build our own version with a different name */
+#if (GLIB_MAJOR_VERSION < 2 || (GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION < 28))
+void slist_free_full(GSList * list, GDestroyNotify free_fn);
+#else
+#define slist_free_full(list, free_fn) g_slist_free_full((list), (free_fn))
+#endif
+
 /* These functions all take a GLib container, and call free() on all the
  * pointers in the container before free()ing the container itself. */
-void g_list_free_full(GList * list);
-void g_slist_free_full(GSList * list);
-void g_slist_free_full_gpointer(gpointer list);
 void g_queue_free_full(GQueue * queue);
 void g_ptr_array_free_full(GPtrArray * array);
 
index 153d6c73141829dbc1b9aedc9f8c507e75d97708..657045b6a9658e2fd831b3a166a5cae5d8578b91 100644 (file)
@@ -1,2 +1,2 @@
-#define BUILT_REV "3545"
+#define BUILT_REV "3720"
 #define BUILT_BRANCH "3_2"
index 9ca0b4db604d249ffdbd737e614b49c60cc706df..c6368a2b3546b22227039ddfdbe38103579c7936 100644 (file)
@@ -438,52 +438,129 @@ quote_string_maybe(
 
     if ((str == NULL) || (*str == '\0')) {
        ret = stralloc("\"\"");
-    } else if (!always && (match("[:\'\\\"[:space:][:cntrl:]]", str)) == 0) {
-       /*
-        * String does not need to be quoted since it contains
-        * neither whitespace, control or quote characters.
-        */
-       ret = stralloc(str);
     } else {
-       /*
-        * Allocate maximum possible string length.
-        * (a string of all quotes plus room for leading ", trailing " and NULL)
-        */
-       ret = s = alloc((strlen(str) * 2) + 2 + 1);
-       *(s++) = '"';
-       while (*str != '\0') {
-            if (*str == '\t') {
-                *(s++) = '\\';
-                *(s++) = 't';
-               str++;
-               continue;
-           } else if (*str == '\n') {
-                *(s++) = '\\';
-                *(s++) = 'n';
-               str++;
-               continue;
-           } else if (*str == '\r') {
-                *(s++) = '\\';
-                *(s++) = 'r';
-               str++;
-               continue;
-           } else if (*str == '\f') {
-                *(s++) = '\\';
-                *(s++) = 'f';
-               str++;
-               continue;
-           } else if (*str == '\\') {
-                *(s++) = '\\';
-                *(s++) = '\\';
-               str++;
-               continue;
-           }
-            if (*str == '"')
-                *(s++) = '\\';
-            *(s++) = *(str++);
+       const char *r;
+       for (r = str; *r; r++) {
+           if (*r == ':' || *r == '\'' || *r == '\\' || *r == '\"' ||
+               *r <= ' ' || *r == 0x7F )
+               always = 1;
+       }
+       if (!always) {
+           /*
+            * String does not need to be quoted since it contains
+            * neither whitespace, control or quote characters.
+            */
+           ret = stralloc(str);
+       } else {
+           /*
+            * Allocate maximum possible string length.
+            * (a string of all quotes plus room for leading ", trailing " and
+            *  NULL)
+            */
+           ret = s = alloc((strlen(str) * 2) + 2 + 1);
+           *(s++) = '"';
+           while (*str != '\0') {
+                if (*str == '\t') {
+                    *(s++) = '\\';
+                    *(s++) = 't';
+                   str++;
+                   continue;
+               } else if (*str == '\n') {
+                    *(s++) = '\\';
+                    *(s++) = 'n';
+                   str++;
+                   continue;
+               } else if (*str == '\r') {
+                    *(s++) = '\\';
+                    *(s++) = 'r';
+                   str++;
+                   continue;
+               } else if (*str == '\f') {
+                    *(s++) = '\\';
+                    *(s++) = 'f';
+                   str++;
+                   continue;
+               } else if (*str == '\\') {
+                    *(s++) = '\\';
+                    *(s++) = '\\';
+                   str++;
+                   continue;
+               }
+                if (*str == '"')
+                    *(s++) = '\\';
+                *(s++) = *(str++);
+            }
+            *(s++) = '"';
+            *s = '\0';
         }
-        *(s++) = '"';
-        *s = '\0';
+    }
+    return (ret);
+}
+
+
+int
+len_quote_string_maybe(
+    const char *str,
+    gboolean always)
+{
+    int   ret;
+
+    if ((str == NULL) || (*str == '\0')) {
+       ret = 0;
+    } else {
+       const char *r;
+       for (r = str; *r; r++) {
+           if (*r == ':' || *r == '\'' || *r == '\\' || *r == '\"' ||
+               *r <= ' ' || *r == 0x7F )
+               always = 1;
+       }
+       if (!always) {
+           /*
+            * String does not need to be quoted since it contains
+            * neither whitespace, control or quote characters.
+            */
+           ret = strlen(str);
+       } else {
+           /*
+            * Allocate maximum possible string length.
+            * (a string of all quotes plus room for leading ", trailing " and
+            *  NULL)
+            */
+           ret = 1;
+               while (*str != '\0') {
+                if (*str == '\t') {
+                    ret++;
+                    ret++;
+                   str++;
+                   continue;
+               } else if (*str == '\n') {
+                    ret++;
+                    ret++;
+                   str++;
+                   continue;
+               } else if (*str == '\r') {
+                    ret++;
+                    ret++;
+                   str++;
+                   continue;
+               } else if (*str == '\f') {
+                    ret++;
+                    ret++;
+                   str++;
+                   continue;
+               } else if (*str == '\\') {
+                    ret++;
+                    ret++;
+                   str++;
+                   continue;
+               }
+                if (*str == '"')
+                   ret++;
+               ret++;
+                str++;
+            }
+           ret++;
+       }
     }
     return (ret);
 }
@@ -1027,7 +1104,7 @@ int copy_file(
     return 0;
 }
 
-#ifndef HAVE_READLINE
+#ifndef HAVE_LIBREADLINE
 /*
  * simple readline() replacements, used when we don't have readline
  * support from the system.
index 8c7ea449a2866a39ba57d4e105bab3fa4a9211e9..a0a98e417e780335002a65f4a4db9338db2c3888 100644 (file)
@@ -80,9 +80,11 @@ char *       construct_timestamp(time_t *t);
  * always adds "" around the string */
 #define quote_string(str) quote_string_maybe((str), 0)
 #define quote_string_always(str) quote_string_maybe((str), 1)
+#define len_quote_string(str) len_quote_string_maybe((str), 0);
 
 /*@only@*//*@null@*/char *quote_string_maybe(const char *str, gboolean always);
 /*@only@*//*@null@*/char *unquote_string(const char *str);
+/*@only@*//*@null@*/int   len_quote_string_maybe(const char *str, gboolean always);
 
 /* Split a string into space-delimited words, obeying quoting as created by
  * quote_string.  To keep compatibility with the old split(), this has the
@@ -335,26 +337,34 @@ pcontext_t get_pcontext(void);
  * or prototypes some simple stub functions that are used instead.
  */
 
-#ifdef HAVE_READLINE
-#  ifdef HAVE_READLINE_READLINE_H
+#ifdef HAVE_LIBREADLINE
+#  if defined(HAVE_READLINE_READLINE_H)
 #    include <readline/readline.h>
-#    ifdef HAVE_READLINE_HISTORY_H
-#      include <readline/history.h>
-#    endif
-#  else
-#    ifdef HAVE_READLINE_H
-#      include <readline.h>
-#      ifdef HAVE_HISTORY_H
-#        include <history.h>
-#      endif
-#    endif
-#  endif
-#else
-
-char * readline(const char *prompt);
-void   add_history(const char *line);
-
-#endif
+#  elif defined(HAVE_READLINE_H)
+#    include <readline.h>
+#  else /* !defined(HAVE_READLINE_H) */
+extern char *readline ();
+#  endif /* !defined(HAVE_READLINE_H) */
+   /* char *cmdline = NULL; */
+#else /* !defined(HAVE_LIBREADLINE) */
+  /* use our own readline */
+char * readline(const char *prompt);
+#endif /* HAVE_LIBREADLINE */
+
+#ifdef HAVE_READLINE_HISTORY
+#  if defined(HAVE_READLINE_HISTORY_H)
+#    include <readline/history.h>
+#  elif defined(HAVE_HISTORY_H)
+#    include <history.h>
+#  else /* !defined(HAVE_HISTORY_H) */
+extern void add_history ();
+extern int write_history ();
+extern int read_history ();
+#  endif /* defined(HAVE_READLINE_HISTORY_H) */
+#else /* !defined(HAVE_READLINE_HISTORY) */
+  /* use our own add_history */
+void   add_history(const char *line);
+#endif /* HAVE_READLINE_HISTORY */
 
 char *base64_decode_alloc_string(char *);
 
index 66fecb95d7fc695561f4107133a0e82bc8381cb5..402fe00af79ce4b3b2deec1e161efd3e5170bb8b 100644 (file)
@@ -251,7 +251,6 @@ CONFIG_CLOBBER_MY_CONFIG = @CONFIG_CLOBBER_MY_CONFIG@
 CONFIG_DIR = @CONFIG_DIR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CURL_CONFIG = @CURL_CONFIG@
 CYGPATH_W = @CYGPATH_W@
 DD = @DD@
 DEFAULT_AMANDATES_FILE = @DEFAULT_AMANDATES_FILE@
index 6e27add4cc9fa5e15e9a3a7f148210bdc284224f..0c513ad6cf80e31f546439bbd8461a1cc3101a0d 100644 (file)
 #   the libcurl distribution for details.
 #
 AC_DEFUN([AMANDA_CHECK_LIBCURL], [
-    case "$host" in
-        sparc-sun-solaris2.10) # Solaris 10
-        # curl is not in the LD_LIBRARY_PATH on Solaris 10, so we search
-        # for it in a few common paths; we then extract the -L flags and
-        # translate them to -R flags, as required by the runtime linker.
-        AC_PATH_PROG(CURL_CONFIG, curl-config, [], $LOCSYSPATH:/opt/csw/bin:/usr/local/bin:/opt/local/bin)
-        if test -n "$CURL_CONFIG"; then
-            curlflags=`$CURL_CONFIG --libs 2>/dev/null`
-            for flag in curlflags; do
-                case $flag in
-                    -L*) LDFLAGS="$LDFLAGS "`echo "x$flag" | sed -e 's/^x-L/-R/'`;;
-                esac
-            done
-        fi
-        ;;
-    esac
-
     LIBCURL_CHECK_CONFIG(yes, 7.10.0, HAVE_CURL=yes, HAVE_CURL=no)
     if test x"$HAVE_CURL" = x"yes"; then
        AMANDA_ADD_LIBS($LIBCURL)
        AMANDA_ADD_CPPFLAGS($LIBCURL_CPPFLAGS)
 
        AMANDA_CHECK_TYPE([curl_off_t], [off_t], [curl/curl.h])
+       case "$host" in
+           *sun-solaris2*) # Solaris, all versions.
+           # we extract the -L flags and translate them to -R flags, as required
+           # by the runtime linker.
+           if test -n "$_libcurl_config"; then
+               curlflags=`$_libcurl_config --libs 2>/dev/null`
+               for flag in curlflags; do
+                   case $flag in
+                       -L*) LDFLAGS="$LDFLAGS "`echo "x$flag" | sed -e 's/^x-L/-R/'`;;
+                   esac
+               done
+           fi
+           ;;
+       esac
     fi
+
 ])
 
 # SYNOPSIS
index dbf8be5ed943d088eec73756ce507b50f9ff65be..12d8e4da33e1456cc11d400e868b2c41b84e382d 100644 (file)
 #
 # OVERVIEW
 #
-#   Check for readline support.  Defines HAVE_READLINE if readline
+#   Check for readline support.  Defines HAVE_LIBREADLINE if readline
 #   is available, and also checks for a number of readline headers and
 #   adds readline libraries to READLINE_LIBS.
 #
 #   See common-src/util.{c,h}.
 #
+#
+# Some idea taken from AX_LIB_READLINE:
+# ===========================================================================
+#      http://www.gnu.org/software/autoconf-archive/ax_lib_readline.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_LIB_READLINE
+#
+# DESCRIPTION
+#
+#   Searches for a readline compatible library. If found, defines
+#   `HAVE_LIBREADLINE'. If the found library has the `add_history' function,
+#   sets also `HAVE_READLINE_HISTORY'. Also checks for the locations of the
+#   necessary include files and sets `HAVE_READLINE_H' or
+#   `HAVE_READLINE_READLINE_H' and `HAVE_READLINE_HISTORY_H' or
+#   'HAVE_HISTORY_H' if the corresponding include files exists.
+#
+#   The libraries that may be readline compatible are `libedit',
+#   `libeditline' and `libreadline'. Sometimes we need to link a termcap
+#   library for readline to work, this macro tests these cases too by trying
+#   to link with `libtermcap', `libcurses' or `libncurses' before giving up.
+#
+#   Here is an example of how to use the information provided by this macro
+#   to perform the necessary includes or declarations in a C file:
+#
+#     #ifdef HAVE_LIBREADLINE
+#     #  if defined(HAVE_READLINE_READLINE_H)
+#     #    include <readline/readline.h>
+#     #  elif defined(HAVE_READLINE_H)
+#     #    include <readline.h>
+#     #  else /* !defined(HAVE_READLINE_H) */
+#     extern char *readline ();
+#     #  endif /* !defined(HAVE_READLINE_H) */
+#     char *cmdline = NULL;
+#     #else /* !defined(HAVE_READLINE_READLINE_H) */
+#       /* no readline */
+#     #endif /* HAVE_LIBREADLINE */
+#
+#     #ifdef HAVE_READLINE_HISTORY
+#     #  if defined(HAVE_READLINE_HISTORY_H)
+#     #    include <readline/history.h>
+#     #  elif defined(HAVE_HISTORY_H)
+#     #    include <history.h>
+#     #  else /* !defined(HAVE_HISTORY_H) */
+#     extern void add_history ();
+#     extern int write_history ();
+#     extern int read_history ();
+#     #  endif /* defined(HAVE_READLINE_HISTORY_H) */
+#       /* no history */
+#     #endif /* HAVE_READLINE_HISTORY */
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Ville Laurikari <vl@iki.fi>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 6
+
 AC_DEFUN([AMANDA_CHECK_READLINE], [
-    AC_ARG_WITH(readline,
-    dnl no initial space here, so the results line up properly
+  AC_ARG_WITH(readline,
+  dnl no initial space here, so the results line up properly
 AS_HELP_STRING([--with-readline], [require readline support (for amrecover)])
 AS_HELP_STRING([--without-readline], [don't search for readline]),
-        [ 
-            case "$withval" in
-                y | ye | yes | n | no) : ;;
-                *) AC_MSG_ERROR([*** --with-readline does not take a value])
-            esac
-            want_readline="$withval"
-        ], [
-            want_readline="maybe" # meaning "only if we can find it"
-        ])
+       [
+           case "$withval" in
+               y | ye | yes | n | no) : ;;
+               *) AC_MSG_ERROR([*** --with-readline does not take a value])
+           esac
+           want_readline="$withval"
+       ], [
+           want_readline="maybe" # meaning "only if we can find it"
+]      )
 
-    # unless the user said "no", look for readline.
-    if test x"$want_readline" != x"no"; then
-        # we need a tgetent() somewhere..
-        proceed="false"
-        AC_CHECK_LIB(termcap, tgetent, [
-            READLINE_LIBS="-ltermcap"
-            proceed="true"
-        ], [
-            AC_CHECK_LIB(curses, tgetent, [
-                READLINE_LIBS="-lcurses"
-                proceed="true"
-            ], [
-                AC_CHECK_LIB(ncurses, tgetent, [
-                    READLINE_LIBS="-lncurses"
-                    proceed="true"
-                ])
-            ])
-        ])
 
-        if $proceed; then
-            proceed="false"
-            AC_CHECK_HEADERS( history.h readline.h readline/history.h readline/readline.h, [
-                # found at least one of the headers, so we can proceed.
-                proceed="true"
-            ])
+  # unless the user said "no", look for readline.
+  if test x"$want_readline" != x"no"; then
+    AC_CACHE_CHECK([for a readline compatible library],
+                   ax_cv_lib_readline, [
+      ORIG_LIBS="$LIBS"
+      for readline_lib in readline edit editline; do
+        for termcap_lib in "" termcap curses ncurses; do
+          if test -z "$termcap_lib"; then
+            TRY_LIB="-l$readline_lib"
+          else
+            TRY_LIB="-l$readline_lib -l$termcap_lib"
+          fi
+          LIBS="$ORIG_LIBS $TRY_LIB"
+          AC_TRY_LINK_FUNC(readline, ax_cv_lib_readline="$TRY_LIB")
+          if test -n "$ax_cv_lib_readline"; then
+            break
+          fi
+        done
+        if test -n "$ax_cv_lib_readline"; then
+          break
         fi
+      done
+      if test -z "$ax_cv_lib_readline"; then
+        ax_cv_lib_readline="no"
+      fi
+      LIBS="$ORIG_LIBS"
+    ])
 
-        if $proceed; then
-            proceed="false"
-            AC_CHECK_LIB(readline,readline, [
-                READLINE_LIBS="-lreadline $READLINE_LIBS"
-                proceed="true"
-            ],,$READLINE_LIBS)
-        fi
+    if test "$ax_cv_lib_readline" != "no"; then
+      ORIG_LIBS="$LIBS"
+      LIBS="$LIBS $ax_cv_lib_readline"
+      READLINE_LIBS="$ax_cv_lib_readline"
+      AC_DEFINE(HAVE_LIBREADLINE, 1,
+                [Define if you have a readline compatible library])
+      AC_CHECK_HEADERS(readline.h readline/readline.h)
+      AC_CACHE_CHECK([whether readline supports history],
+                     ax_cv_lib_readline_history, [
+        ax_cv_lib_readline_history="no"
+        AC_TRY_LINK_FUNC(add_history, ax_cv_lib_readline_history="yes")
+      ])
+      if test "$ax_cv_lib_readline_history" = "yes"; then
+        AC_DEFINE(HAVE_READLINE_HISTORY, 1,
+                  [Define if your readline library has \`add_history'])
+        AC_CHECK_HEADERS(history.h readline/history.h)
+      fi
+      LIBS="$ORIG_LIBS"
 
-        if $proceed; then
-            # we have readline!
-            AC_DEFINE(HAVE_READLINE, 1, [System has readline support (headers and libraries)])
-        else
-            # no readline.  if the user *really* wanted it, bail out.
-            if test x"$want_readline" = x"yes"; then
-                AC_MSG_ERROR([*** No readline implementation found.  Try using --with-libraries and --with-includes])
-            fi
-            READLINE_LIBS=""
-        fi
+    else
+      # no readline.  if the user *really* wanted it, bail out.
+      if test x"$want_readline" = x"yes"; then
+       AC_MSG_ERROR([*** No readline implementation found.  Try using --with-libraries and --with-includes])
+      fi
+      READLINE_LIBS=""
     fi
-    AC_SUBST(READLINE_LIBS)
-])
+  fi
+  AC_SUBST(READLINE_LIBS)
+])dnl
index 84f417ee8583f47fe1fcc6c665e782fc27f77df1..ef728b2bc9b81a4e97508f6413fb282bf1bcdd1f 100644 (file)
 /* Define to 1 if you have the `nsl' library (-lnsl). */
 #undef HAVE_LIBNSL
 
+/* Define if you have a readline compatible library */
+#undef HAVE_LIBREADLINE
+
 /* Define to 1 if you have the `resolv' library (-lresolv). */
 #undef HAVE_LIBRESOLV
 
 /* Define to 1 if _Exit is declared even after undefining macros. */
 #undef HAVE_RAW_DECL__EXIT
 
-/* System has readline support (headers and libraries) */
-#undef HAVE_READLINE
-
 /* Define to 1 if you have the <readline.h> header file. */
 #undef HAVE_READLINE_H
 
+/* Define if your readline library has \`add_history' */
+#undef HAVE_READLINE_HISTORY
+
 /* Define to 1 if you have the <readline/history.h> header file. */
 #undef HAVE_READLINE_HISTORY_H
 
index ad35f813ceebbec8d05a8a5468efcb8e2b1ba62d..c2ed61562bc10c311965f902643c8096e3577f65 100755 (executable)
--- a/configure
+++ b/configure
@@ -892,7 +892,6 @@ WANT_S3_DEVICE_TRUE
 LIBCURL
 LIBCURL_CPPFLAGS
 _libcurl_config
-CURL_CONFIG
 POSUB
 INTLLIBS
 LTLIBICONV
@@ -40354,63 +40353,6 @@ _ACEOF
 # Devices
 #
 
-    case "$host" in
-        sparc-sun-solaris2.10) # Solaris 10
-        # curl is not in the LD_LIBRARY_PATH on Solaris 10, so we search
-        # for it in a few common paths; we then extract the -L flags and
-        # translate them to -R flags, as required by the runtime linker.
-        # Extract the first word of "curl-config", so it can be a program name with args.
-set dummy curl-config; ac_word=$2
-{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_path_CURL_CONFIG+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  case $CURL_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_CURL_CONFIG="$CURL_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-as_dummy="$LOCSYSPATH:/opt/csw/bin:/usr/local/bin:/opt/local/bin"
-for as_dir in $as_dummy
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_path_CURL_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-CURL_CONFIG=$ac_cv_path_CURL_CONFIG
-if test -n "$CURL_CONFIG"; then
-  { $as_echo "$as_me:$LINENO: result: $CURL_CONFIG" >&5
-$as_echo "$CURL_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:$LINENO: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-        if test -n "$CURL_CONFIG"; then
-            curlflags=`$CURL_CONFIG --libs 2>/dev/null`
-            for flag in curlflags; do
-                case $flag in
-                    -L*) LDFLAGS="$LDFLAGS "`echo "x$flag" | sed -e 's/^x-L/-R/'`;;
-                esac
-            done
-        fi
-        ;;
-    esac
-
 
 
 
@@ -41056,9 +40998,24 @@ _ACEOF
 fi
 
 
+       case "$host" in
+           *sun-solaris2*) # Solaris, all versions.
+           # we extract the -L flags and translate them to -R flags, as required
+           # by the runtime linker.
+           if test -n "$_libcurl_config"; then
+               curlflags=`$_libcurl_config --libs 2>/dev/null`
+               for flag in curlflags; do
+                   case $flag in
+                       -L*) LDFLAGS="$LDFLAGS "`echo "x$flag" | sed -e 's/^x-L/-R/'`;;
+                   esac
+               done
+           fi
+           ;;
+       esac
     fi
 
 
+
     HAVE_HMAC=yes
 
 { $as_echo "$as_me:$LINENO: checking for HMAC_CTX_init in -lcrypto" >&5
@@ -46648,13 +46605,13 @@ if test "${lt_cv_nm_interface+set}" = set; then
 else
   lt_cv_nm_interface="BSD nm"
   echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:46651: $ac_compile\"" >&5)
+  (eval echo "\"\$as_me:46608: $ac_compile\"" >&5)
   (eval "$ac_compile" 2>conftest.err)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:46654: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval echo "\"\$as_me:46611: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
   (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:46657: output\"" >&5)
+  (eval echo "\"\$as_me:46614: output\"" >&5)
   cat conftest.out >&5
   if $GREP 'External.*some_variable' conftest.out > /dev/null; then
     lt_cv_nm_interface="MS dumpbin"
@@ -47752,7 +47709,7 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 47755 "configure"' > conftest.$ac_ext
+  echo '#line 47712 "configure"' > conftest.$ac_ext
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -49121,11 +49078,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:49124: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:49081: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:49128: \$? = $ac_status" >&5
+   echo "$as_me:49085: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -49445,11 +49402,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:49448: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:49405: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:49452: \$? = $ac_status" >&5
+   echo "$as_me:49409: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -49550,11 +49507,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:49553: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:49510: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:49557: \$? = $ac_status" >&5
+   echo "$as_me:49514: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -49605,11 +49562,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:49608: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:49565: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:49612: \$? = $ac_status" >&5
+   echo "$as_me:49569: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -52410,7 +52367,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 52413 "configure"
+#line 52370 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -52510,7 +52467,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 52513 "configure"
+#line 52470 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -58609,33 +58566,40 @@ $as_echo "$as_me: error: explicit glib" >&2;}
 # Check whether --with-readline was given.
 if test "${with_readline+set}" = set; then
   withval=$with_readline;
-            case "$withval" in
-                y | ye | yes | n | no) : ;;
-                *) { { $as_echo "$as_me:$LINENO: error: *** --with-readline does not take a value" >&5
+           case "$withval" in
+               y | ye | yes | n | no) : ;;
+               *) { { $as_echo "$as_me:$LINENO: error: *** --with-readline does not take a value" >&5
 $as_echo "$as_me: error: *** --with-readline does not take a value" >&2;}
    { (exit 1); exit 1; }; }
-            esac
-            want_readline="$withval"
+           esac
+           want_readline="$withval"
 
 else
 
-            want_readline="maybe" # meaning "only if we can find it"
+           want_readline="maybe" # meaning "only if we can find it"
 
 fi
 
 
-    # unless the user said "no", look for readline.
-    if test x"$want_readline" != x"no"; then
-        # we need a tgetent() somewhere..
-        proceed="false"
-        { $as_echo "$as_me:$LINENO: checking for tgetent in -ltermcap" >&5
-$as_echo_n "checking for tgetent in -ltermcap... " >&6; }
-if test "${ac_cv_lib_termcap_tgetent+set}" = set; then
+
+  # unless the user said "no", look for readline.
+  if test x"$want_readline" != x"no"; then
+    { $as_echo "$as_me:$LINENO: checking for a readline compatible library" >&5
+$as_echo_n "checking for a readline compatible library... " >&6; }
+if test "${ax_cv_lib_readline+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ltermcap  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
+
+      ORIG_LIBS="$LIBS"
+      for readline_lib in readline edit editline; do
+        for termcap_lib in "" termcap curses ncurses; do
+          if test -z "$termcap_lib"; then
+            TRY_LIB="-l$readline_lib"
+          else
+            TRY_LIB="-l$readline_lib -l$termcap_lib"
+          fi
+          LIBS="$ORIG_LIBS $TRY_LIB"
+          cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -58648,11 +58612,11 @@ cat >>conftest.$ac_ext <<_ACEOF
 #ifdef __cplusplus
 extern "C"
 #endif
-char tgetent ();
+char readline ();
 int
 main ()
 {
-return tgetent ();
+return readline ();
   ;
   return 0;
 }
@@ -58678,66 +58642,80 @@ $as_echo "$ac_try_echo") >&5
         test "$cross_compiling" = yes ||
         $as_test_x conftest$ac_exeext
        }; then
-  ac_cv_lib_termcap_tgetent=yes
+  ax_cv_lib_readline="$TRY_LIB"
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       ac_cv_lib_termcap_tgetent=no
+
 fi
 
 rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+          if test -n "$ax_cv_lib_readline"; then
+            break
+          fi
+        done
+        if test -n "$ax_cv_lib_readline"; then
+          break
+        fi
+      done
+      if test -z "$ax_cv_lib_readline"; then
+        ax_cv_lib_readline="no"
+      fi
+      LIBS="$ORIG_LIBS"
+
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_termcap_tgetent" >&5
-$as_echo "$ac_cv_lib_termcap_tgetent" >&6; }
-if test "x$ac_cv_lib_termcap_tgetent" = x""yes; then
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_lib_readline" >&5
+$as_echo "$ax_cv_lib_readline" >&6; }
 
-            READLINE_LIBS="-ltermcap"
-            proceed="true"
+    if test "$ax_cv_lib_readline" != "no"; then
+      ORIG_LIBS="$LIBS"
+      LIBS="$LIBS $ax_cv_lib_readline"
+      READLINE_LIBS="$ax_cv_lib_readline"
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LIBREADLINE 1
+_ACEOF
 
-else
 
-            { $as_echo "$as_me:$LINENO: checking for tgetent in -lcurses" >&5
-$as_echo_n "checking for tgetent in -lcurses... " >&6; }
-if test "${ac_cv_lib_curses_tgetent+set}" = set; then
+
+for ac_header in readline.h readline/readline.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
   $as_echo_n "(cached) " >&6
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
 else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcurses  $LIBS"
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+$as_echo_n "checking $ac_header usability... " >&6; }
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char tgetent ();
-int
-main ()
-{
-return tgetent ();
-  ;
-  return 0;
-}
+$ac_includes_default
+#include <$ac_header>
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
 $as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
+  (eval "$ac_compile") 2>conftest.er1
   ac_status=$?
   grep -v '^ *+' conftest.er1 >conftest.err
   rm -f conftest.er1
@@ -58746,40 +58724,116 @@ $as_echo "$ac_try_echo") >&5
   (exit $ac_status); } && {
         test -z "$ac_c_werror_flag" ||
         test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
-  ac_cv_lib_curses_tgetent=yes
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       ac_cv_lib_curses_tgetent=no
+       ac_header_compiler=no
 fi
 
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+$as_echo_n "checking $ac_header presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
 fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_curses_tgetent" >&5
-$as_echo "$ac_cv_lib_curses_tgetent" >&6; }
-if test "x$ac_cv_lib_curses_tgetent" = x""yes; then
 
-                READLINE_LIBS="-lcurses"
-                proceed="true"
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
 
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
 else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+fi
+as_val=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
 
-                { $as_echo "$as_me:$LINENO: checking for tgetent in -lncurses" >&5
-$as_echo_n "checking for tgetent in -lncurses... " >&6; }
-if test "${ac_cv_lib_ncurses_tgetent+set}" = set; then
+      { $as_echo "$as_me:$LINENO: checking whether readline supports history" >&5
+$as_echo_n "checking whether readline supports history... " >&6; }
+if test "${ax_cv_lib_readline_history+set}" = set; then
   $as_echo_n "(cached) " >&6
 else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lncurses  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
+
+        ax_cv_lib_readline_history="no"
+        cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
@@ -58792,11 +58846,11 @@ cat >>conftest.$ac_ext <<_ACEOF
 #ifdef __cplusplus
 extern "C"
 #endif
-char tgetent ();
+char add_history ();
 int
 main ()
 {
-return tgetent ();
+return add_history ();
   ;
   return 0;
 }
@@ -58822,42 +58876,30 @@ $as_echo "$ac_try_echo") >&5
         test "$cross_compiling" = yes ||
         $as_test_x conftest$ac_exeext
        }; then
-  ac_cv_lib_ncurses_tgetent=yes
+  ax_cv_lib_readline_history="yes"
 else
   $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       ac_cv_lib_ncurses_tgetent=no
+
 fi
 
 rm -rf conftest.dSYM
 rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
       conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ncurses_tgetent" >&5
-$as_echo "$ac_cv_lib_ncurses_tgetent" >&6; }
-if test "x$ac_cv_lib_ncurses_tgetent" = x""yes; then
-
-                    READLINE_LIBS="-lncurses"
-                    proceed="true"
 
 fi
+{ $as_echo "$as_me:$LINENO: result: $ax_cv_lib_readline_history" >&5
+$as_echo "$ax_cv_lib_readline_history" >&6; }
+      if test "$ax_cv_lib_readline_history" = "yes"; then
 
-
-fi
-
-
-fi
-
-
-        if $proceed; then
-            proceed="false"
-
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_READLINE_HISTORY 1
+_ACEOF
 
 
 
-for ac_header in history.h readline.h readline/history.h readline/readline.h
+for ac_header in history.h readline/history.h
 do
 as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
@@ -58998,108 +59040,23 @@ as_val=`eval 'as_val=${'$as_ac_Header'}
 #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
 
-                # found at least one of the headers, so we can proceed.
-                proceed="true"
-
 fi
 
 done
 
-        fi
-
-        if $proceed; then
-            proceed="false"
-            { $as_echo "$as_me:$LINENO: checking for readline in -lreadline" >&5
-$as_echo_n "checking for readline in -lreadline... " >&6; }
-if test "${ac_cv_lib_readline_readline+set}" = set; then
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lreadline $READLINE_LIBS $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char readline ();
-int
-main ()
-{
-return readline ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-        test "$cross_compiling" = yes ||
-        $as_test_x conftest$ac_exeext
-       }; then
-  ac_cv_lib_readline_readline=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_lib_readline_readline=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_readline_readline" >&5
-$as_echo "$ac_cv_lib_readline_readline" >&6; }
-if test "x$ac_cv_lib_readline_readline" = x""yes; then
-
-                READLINE_LIBS="-lreadline $READLINE_LIBS"
-                proceed="true"
-
-fi
-
-        fi
-
-        if $proceed; then
-            # we have readline!
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_READLINE 1
-_ACEOF
+      fi
+      LIBS="$ORIG_LIBS"
 
-        else
-            # no readline.  if the user *really* wanted it, bail out.
-            if test x"$want_readline" = x"yes"; then
-                { { $as_echo "$as_me:$LINENO: error: *** No readline implementation found.  Try using --with-libraries and --with-includes" >&5
+    else
+      # no readline.  if the user *really* wanted it, bail out.
+      if test x"$want_readline" = x"yes"; then
+       { { $as_echo "$as_me:$LINENO: error: *** No readline implementation found.  Try using --with-libraries and --with-includes" >&5
 $as_echo "$as_me: error: *** No readline implementation found.  Try using --with-libraries and --with-includes" >&2;}
    { (exit 1); exit 1; }; }
-            fi
-            READLINE_LIBS=""
-        fi
+      fi
+      READLINE_LIBS=""
     fi
+  fi
 
 
 
index 69fb328ce04dc34c5b48494c0edae27479b5583e..2f0bf727bd67e310bc83edd7b23c08bcf5ebd252 100644 (file)
@@ -72,6 +72,8 @@ noinst_PROGRAMS = $(TESTS)
 
 if WANT_S3_DEVICE
 sbin_PROGRAMS += activate-devpay
+activate_devpay_LDADD = \
+       ../gnulib/libgnu.la
 activate_devpay_SOURCES = activate-devpay.c
 endif
 
index d555a06863c879040e98d9058edc2c0f16e39841..73b24cd0eea8faf249f8f7c3c203987c72ec1ca7 100644 (file)
@@ -361,7 +361,8 @@ am__activate_devpay_SOURCES_DIST = activate-devpay.c
 @WANT_S3_DEVICE_TRUE@am_activate_devpay_OBJECTS =  \
 @WANT_S3_DEVICE_TRUE@  activate-devpay.$(OBJEXT)
 activate_devpay_OBJECTS = $(am_activate_devpay_OBJECTS)
-activate_devpay_LDADD = $(LDADD)
+@WANT_S3_DEVICE_TRUE@activate_devpay_DEPENDENCIES =  \
+@WANT_S3_DEVICE_TRUE@  ../gnulib/libgnu.la
 SCRIPTS = $(sbin_SCRIPTS)
 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/config
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
@@ -438,7 +439,6 @@ CONFIG_CLOBBER_MY_CONFIG = @CONFIG_CLOBBER_MY_CONFIG@
 CONFIG_DIR = @CONFIG_DIR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CURL_CONFIG = @CURL_CONFIG@
 CYGPATH_W = @CYGPATH_W@
 DD = @DD@
 DEFAULT_AMANDATES_FILE = @DEFAULT_AMANDATES_FILE@
@@ -1212,6 +1212,9 @@ libamdevice_la_SOURCES = property.c device.c directtcp-connection.c \
        $(am__append_4) $(am__append_5)
 libamdevice_la_LIBADD = ../common-src/libamanda.la \
        ../xfer-src/libamxfer.la $(am__append_6)
+@WANT_S3_DEVICE_TRUE@activate_devpay_LDADD = \
+@WANT_S3_DEVICE_TRUE@  ../gnulib/libgnu.la
+
 @WANT_S3_DEVICE_TRUE@activate_devpay_SOURCES = activate-devpay.c
 noinst_HEADERS = \
        device.h \
index 9b8ccfe962469e9dffccd78235f7847152138a33..03c50f2dc5e2c79fb906c1cc9a5ef3b41c060760 100644 (file)
@@ -79,7 +79,7 @@ sub print_result {
 
 sub usage {
     print <<EOF;
-Usage: amdevcheck <config> [ <device name> ] [ --properties {prop1,prop2,prop3} ]
+Usage: amdevcheck [--label] [--properties {prop1,prop2,prop3}] [-o configoption]* <config> [<device name>]
 EOF
     exit(1);
 }
index 36498ddf8ce54dce6bc0da4942c371b7d205e7c4..c6b88ced0a30549b4e10b4d042492975eb5d85d9 100644 (file)
@@ -458,6 +458,12 @@ tape_device_base_init (TapeDeviceClass * c)
            PROPERTY_ACCESS_GET_MASK | PROPERTY_ACCESS_SET_BEFORE_START,
            tape_device_get_read_block_size_fn,
            tape_device_set_read_block_size_fn);
+
+    /* add the ability to set LEOM to FALSE, for testing purposes */
+    device_class_register_property(device_class, PROPERTY_LEOM,
+           PROPERTY_ACCESS_GET_MASK | PROPERTY_ACCESS_SET_BEFORE_START,
+           device_simple_property_get_fn,
+           tape_device_set_feature_property_fn);
 }
 
 static gboolean
@@ -510,6 +516,8 @@ tape_device_set_feature_property_fn(Device *p_self, DevicePropertyBase *base,
        self->bsf_after_eom = new_bool;
     else if (base->ID == PROPERTY_NONBLOCKING_OPEN)
        self->nonblocking_open = new_bool;
+    else if (base->ID == PROPERTY_LEOM)
+       self->leom = new_bool;
     else
        return FALSE; /* shouldn't happen */
 
index 99b91d4fe05faf7754c06751229826385da1c380..12bf923169b501a32fbad2047549dd083398dbdc 100644 (file)
@@ -327,9 +327,9 @@ alloc_slab(
        rv->refcount = 1;
        rv->base = g_try_malloc(self->slab_size);
        if (!rv->base) {
-           g_free(rv);
            xfer_cancel_with_error(XFER_ELEMENT(self),
-               _("Could not allocate %zu bytes of memory"), self->slab_size);
+               _("Could not allocate %zu bytes of memory: %s"), self->slab_size, strerror(errno));
+           g_free(rv);
            return NULL;
        }
     }
@@ -878,16 +878,20 @@ device_thread_write_part(
 {
     GTimer *timer = g_timer_new();
     XMsg *msg;
-    slab_source_state src_state;
+    slab_source_state src_state = {0, 0};
     guint64 serial, stop_serial;
     gboolean eof = FALSE;
     int fileno = 0;
+    int failed = 0;
+    int slab_source_set = 0;
 
     self->last_part_successful = FALSE;
     self->bytes_written = 0;
 
-    if (!device_start_file(self->device, self->part_header))
+    if (!device_start_file(self->device, self->part_header)) {
+       failed = 1;
        goto part_done;
+    }
 
     dumpfile_free(self->part_header);
     self->part_header = NULL;
@@ -897,6 +901,7 @@ device_thread_write_part(
 
     if (!slab_source_setup(self, &src_state))
        goto part_done;
+    slab_source_set = 1;
 
     g_timer_start(timer);
 
@@ -906,13 +911,17 @@ device_thread_write_part(
        Slab *slab = slab_source_get(self, &src_state, serial);
        DBG(8, "writing slab %p (serial %ju) to device", slab, serial);
        g_mutex_unlock(self->slab_mutex);
-       if (!slab)
+       if (!slab) {
+           failed = 1;
            goto part_done;
+       }
 
        eof = slab->size < self->slab_size;
 
-       if (!write_slab_to_device(self, slab))
+       if (!write_slab_to_device(self, slab)) {
+           failed = 1;
            goto part_done;
+       }
 
        g_mutex_lock(self->slab_mutex);
        DBG(8, "wrote slab %p to device", slab);
@@ -924,18 +933,22 @@ device_thread_write_part(
     }
     g_mutex_unlock(self->slab_mutex);
 
+part_done:
     /* if we write all of the blocks, but the finish_file fails, then likely
      * there was some buffering going on in the device driver, and the blocks
      * did not all make it to permanent storage -- so it's a failed part. */
-    if (!device_finish_file(self->device))
-       goto part_done;
+    if (self->device->in_file && !device_finish_file(self->device))
+       failed = 1;
 
-    slab_source_free(self, &src_state);
+    if (slab_source_set) {
+       slab_source_free(self, &src_state);
+    }
 
-    self->last_part_successful = TRUE;
-    self->no_more_parts = eof;
+    if (!failed) {
+       self->last_part_successful = TRUE;
+       self->no_more_parts = eof;
+    }
 
-part_done:
     g_timer_stop(timer);
 
     msg = xmsg_new(XFER_ELEMENT(self), XMSG_PART_DONE, 0);
@@ -1211,15 +1224,15 @@ cancel_impl(
 
     /* then signal all of our condition variables, so that threads waiting on them
      * wake up and see elt->cancelled. */
-    g_mutex_lock(self->state_mutex);
-    g_cond_broadcast(self->state_cond);
-    g_mutex_unlock(self->state_mutex);
-
     g_mutex_lock(self->slab_mutex);
     g_cond_broadcast(self->slab_cond);
     g_cond_broadcast(self->slab_free_cond);
     g_mutex_unlock(self->slab_mutex);
 
+    g_mutex_lock(self->state_mutex);
+    g_cond_broadcast(self->state_cond);
+    g_mutex_unlock(self->state_mutex);
+
     return rv;
 }
 
index 7295da389c90301ecfb9222bfd7c6c6a91a18014..561f04dccaead748572865aae8ed20df0d75d668 100644 (file)
@@ -540,18 +540,20 @@ device_thread_write_part(
     g_mutex_unlock(self->ring_mutex);
 part_done:
 
-    if (elt->cancelled) {
-       g_timer_destroy(timer);
-       return NULL;
-    }
-
     /* if we write all of the blocks, but the finish_file fails, then likely
      * there was some buffering going on in the device driver, and the blocks
      * did not all make it to permanent storage -- so it's a failed part.  Note
      * that we try to finish_file even if the part failed, just to be thorough. */
     if (self->device->in_file) {
        if (!device_finish_file(self->device))
-           part_status = PART_FAILED;
+           if (!elt->cancelled) {
+               part_status = PART_FAILED;
+           }
+    }
+
+    if (elt->cancelled) {
+       g_timer_destroy(timer);
+       return NULL;
     }
 
     g_timer_stop(timer);
@@ -737,15 +739,15 @@ cancel_impl(
 
     /* then signal all of our condition variables, so that threads waiting on them
      * wake up and see elt->cancelled. */
-    g_mutex_lock(self->state_mutex);
-    g_cond_broadcast(self->state_cond);
-    g_mutex_unlock(self->state_mutex);
-
     g_mutex_lock(self->ring_mutex);
     g_cond_broadcast(self->ring_add_cond);
     g_cond_broadcast(self->ring_free_cond);
     g_mutex_unlock(self->ring_mutex);
 
+    g_mutex_lock(self->state_mutex);
+    g_cond_broadcast(self->state_cond);
+    g_mutex_unlock(self->state_mutex);
+
     return rv;
 }
 
index f8741e02e9203d5e5c5a037c4b58c6c04e65f0cb..e1f59941bf3b7c0c50a781f136f2270c318e249b 100644 (file)
@@ -349,7 +349,6 @@ CONFIG_CLOBBER_MY_CONFIG = @CONFIG_CLOBBER_MY_CONFIG@
 CONFIG_DIR = @CONFIG_DIR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CURL_CONFIG = @CURL_CONFIG@
 CYGPATH_W = @CYGPATH_W@
 DD = @DD@
 DEFAULT_AMANDATES_FILE = @DEFAULT_AMANDATES_FILE@
index c2bd04baa30a77d5185947484c014cc0a1a3e74f..544d2531cbf299bd596f1f0461cccf5f22390385 100644 (file)
@@ -325,7 +325,6 @@ CONFIG_CLOBBER_MY_CONFIG = @CONFIG_CLOBBER_MY_CONFIG@
 CONFIG_DIR = @CONFIG_DIR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CURL_CONFIG = @CURL_CONFIG@
 CYGPATH_W = @CYGPATH_W@
 DD = @DD@
 DEFAULT_AMANDATES_FILE = @DEFAULT_AMANDATES_FILE@
index 993ee6f004390390b044b7577ac7597136da28db..2b6b3fb3e27b6c383f1389a82e29517ab6847ed2 100644 (file)
@@ -392,15 +392,15 @@ Amanda::MainLoop::run();
 
            is_deeply($inv, [
              { slot => 1, state => Amanda::Changer::SLOT_FULL,
-               device_status => $DEVICE_STATUS_SUCCESS,
+               device_status => $DEVICE_STATUS_VOLUME_UNLABELED,
                f_type => $Amanda::Header::F_EMPTY, label => undef,
                reserved => 0,  current => 1},
              { slot => 2, state => Amanda::Changer::SLOT_FULL,
-               device_status => $DEVICE_STATUS_SUCCESS,
+               device_status => $DEVICE_STATUS_VOLUME_UNLABELED,
                f_type => $Amanda::Header::F_EMPTY, label => undef,
                reserved => 0 },
              { slot => 3, state => Amanda::Changer::SLOT_FULL,
-               device_status => $DEVICE_STATUS_SUCCESS,
+               device_status => $DEVICE_STATUS_VOLUME_UNLABELED,
                f_type => $Amanda::Header::F_EMPTY, label => undef,
                reserved => 0 },
              { slot => 4, state => Amanda::Changer::SLOT_FULL,
@@ -408,7 +408,7 @@ Amanda::MainLoop::run();
                f_type => $Amanda::Header::F_TAPESTART, label => "FOO?BAR",
                reserved => 0 },
              { slot => 5, state => Amanda::Changer::SLOT_FULL,
-               device_status => $DEVICE_STATUS_SUCCESS,
+               device_status => $DEVICE_STATUS_VOLUME_UNLABELED,
                f_type => $Amanda::Header::F_EMPTY, label => undef,
                reserved => 0 },
                ], "inventory finds the labeled tape");
index 1b2618765b2fb799137e80f166e5ec3981cc793a..259c2b5b0925a89375cb6ea150acd5bb78fd5c84 100644 (file)
@@ -268,19 +268,19 @@ sub test_threeway {
        die $err if $err;
 
        is_deeply($inv,  [
-          { state => Amanda::Changer::SLOT_FULL, device_status => $DEVICE_STATUS_SUCCESS,
+          { state => Amanda::Changer::SLOT_FULL, device_status => $DEVICE_STATUS_VOLUME_UNLABELED,
            f_type => $Amanda::Header::F_EMPTY, label => undef, # undef because labels don't match
            reserved => 0,
            slot => '{1,1,1}', import_export => undef },
-          { state => Amanda::Changer::SLOT_FULL, device_status => $DEVICE_STATUS_SUCCESS,
+          { state => Amanda::Changer::SLOT_FULL, device_status => $DEVICE_STATUS_VOLUME_UNLABELED,
            f_type => $Amanda::Header::F_EMPTY, label => undef, # all blank
            reserved => 0,
            slot => '{2,2,2}', import_export => undef },
-          { state => Amanda::Changer::SLOT_FULL, device_status => $DEVICE_STATUS_SUCCESS,
+          { state => Amanda::Changer::SLOT_FULL, device_status => $DEVICE_STATUS_VOLUME_UNLABELED,
            f_type => $Amanda::Header::F_EMPTY, label => undef, # mismatched labels
            reserved => 0,
            slot => '{3,3,3}', import_export => undef },
-          { state => Amanda::Changer::SLOT_FULL, device_status => $DEVICE_STATUS_SUCCESS,
+          { state => Amanda::Changer::SLOT_FULL, device_status => $DEVICE_STATUS_VOLUME_UNLABELED,
            f_type => $Amanda::Header::F_EMPTY, label => undef, # mismatched labels
            reserved => 0,
            slot => '{4,4,4}', import_export => undef } ,
@@ -416,9 +416,9 @@ sub test_normal_inventory {
            slot => '{1,1,1}', import_export => undef },
           { state => Amanda::Changer::SLOT_FULL, device_status => $DEVICE_STATUS_SUCCESS, f_type => $Amanda::Header::F_TAPESTART, label => 'mytape-2', reserved => 0,
            slot => '{2,2,2}', import_export => undef },
-          { state => Amanda::Changer::SLOT_FULL, device_status => $DEVICE_STATUS_SUCCESS, f_type => $Amanda::Header::F_EMPTY, label => undef, reserved => 0,
+          { state => Amanda::Changer::SLOT_FULL, device_status => $DEVICE_STATUS_VOLUME_UNLABELED, f_type => $Amanda::Header::F_EMPTY, label => undef, reserved => 0,
            slot => '{3,3,3}', import_export => undef },
-          { state => Amanda::Changer::SLOT_FULL, device_status => $DEVICE_STATUS_SUCCESS, f_type => $Amanda::Header::F_EMPTY, label => undef, reserved => 0,
+          { state => Amanda::Changer::SLOT_FULL, device_status => $DEVICE_STATUS_VOLUME_UNLABELED, f_type => $Amanda::Header::F_EMPTY, label => undef, reserved => 0,
            slot => '{4,4,4}', import_export => undef } ,
         ], "second inventory is correct");
 
index ef2ea7b23893541273b0fd3ab8a7c28b68c2c53f..349ce1000a82e2b278af457750ef482ee50a754f 100644 (file)
@@ -566,14 +566,14 @@ $dump_filename =~ s/":$//g;
 is($dump_filename, $fn, 
     "config filename is included correctly");
 
-like($dump, qr/DEVICE_PROPERTY\s+"foo" "bar"\n/i,
-    "DEVICE_PROPERTY appears in dump output");
+like($dump, qr/DEVICE-PROPERTY\s+"foo" "bar"\n/i,
+    "DEVICE-PROPERTY appears in dump output");
 
-like($dump, qr/AMRECOVER_CHECK_LABEL\s+(yes|no)/i,
-    "AMRECOVER_CHECK_LABEL has a trailing space");
+like($dump, qr/AMRECOVER-CHECK-LABEL\s+(yes|no)/i,
+    "AMRECOVER-CHECK-LABEL has a trailing space");
 
-like($dump, qr/AMRECOVER_CHECK_LABEL\s+(yes|no)/i,
-    "AMRECOVER_CHECK_LABEL has a trailing space");
+like($dump, qr/AMRECOVER-CHECK-LABEL\s+(yes|no)/i,
+    "AMRECOVER-CHECK-LABEL has a trailing space");
 
 like($dump, qr/EXCLUDE\s+LIST "foo" "bar" "true" "star"/i,
     "EXCLUDE LIST is in the dump");
@@ -583,7 +583,7 @@ like($dump, qr/INCLUDE\s+LIST OPTIONAL "bing" "ting" "string" "fling"/i,
     "INCLUDE LIST is in the dump");
 like($dump, qr/INCLUDE\s+FILE OPTIONAL "rhyme"/i,
     "INCLUDE FILE is in the dump");
-like($dump, qr/RECOVERY_LIMIT.*SAME-HOST/i,
+like($dump, qr/RECOVERY-LIMIT.*SAME-HOST/i,
     "RECOVERY-LIST is in the dump");
 
 ##
index 1b8bb0fb6fb77c2474b582791659ec0ef79b5de3..af0ed86a6b1968fd7fb40c49dc8186a2d873fe0b 100644 (file)
@@ -63,8 +63,8 @@ sub readtapelist {
 
 @lines = (
     "20071111010002 TESTCONF004 reuse\n",
-    "20071110010002 TESTCONF003 reuse\n",
-    "20071109010002 TESTCONF002 reuse #comment 2\n",
+    "20071110010002 TESTCONF003 reuse BARCODE:BAR-003\n",
+    "20071109010002 TESTCONF002 reuse BARCODE:BAR-002 #comment 2\n",
     "20071108010001 TESTCONF001 no-reuse #comment 1\n",
 );
 mktapelist($tapelist, @lines);
@@ -75,13 +75,13 @@ $tl_ok = is_deeply($tl,     {
  lockname => $tapelist . ".lock",
  tles => [
   { 'datestamp' => '20071111010002', 'label' => 'TESTCONF004',
-    'reuse' => 1, 'position' => 1, 'comment' => undef },
+    'reuse' => 1, 'position' => 1, 'barcode' => undef, 'comment' => undef },
   { 'datestamp' => '20071110010002', 'label' => 'TESTCONF003',
-    'reuse' => 1, 'position' => 2, 'comment' => undef },
+    'reuse' => 1, 'position' => 2, 'barcode' => 'BAR-003', 'comment' => undef },
   { 'datestamp' => '20071109010002', 'label' => 'TESTCONF002',
-    'reuse' => 1, 'position' => 3, 'comment' => 'comment 2' },
+    'reuse' => 1, 'position' => 3, 'barcode' => 'BAR-002', 'comment' => 'comment 2' },
   { 'datestamp' => '20071108010001', 'label' => 'TESTCONF001',
-    'reuse' => '', 'position' => 4, 'comment' => 'comment 1' },
+    'reuse' => '', 'position' => 4, 'barcode' => undef, 'comment' => 'comment 1' },
 ] }, "A simple tapelist is parsed correctly");
 
 SKIP: {
@@ -95,7 +95,7 @@ SKIP: {
 
     is_deeply($tl->lookup_tapelabel('TESTCONF002'),
        { 'datestamp' => '20071109010002', 'label' => 'TESTCONF002',
-         'reuse' => 1, 'position' => 3, 'comment' => 'comment 2' },
+         'reuse' => 1, 'position' => 3, 'barcode' => 'BAR-002', 'comment' => 'comment 2' },
        "lookup_tapelabel works");
 
     is_deeply($tl->lookup_tapelabel('TESTCONF009'), undef,
@@ -103,7 +103,7 @@ SKIP: {
 
     is_deeply($tl->lookup_tapepos(4),
        { 'datestamp' => '20071108010001', 'label' => 'TESTCONF001',
-         'reuse' => '', 'position' => 4, 'comment' => 'comment 1' },
+         'reuse' => '', 'position' => 4, 'barcode' => undef, 'comment' => 'comment 1' },
        "lookup_tapepos works");
 
     is_deeply($tl->lookup_tapepos(9), undef,
@@ -111,29 +111,29 @@ SKIP: {
 
     is_deeply($tl->lookup_tapedate('20071110010002'),
        { 'datestamp' => '20071110010002', 'label' => 'TESTCONF003',
-         'reuse' => 1, 'position' => 2, 'comment' => undef },
+         'reuse' => 1, 'position' => 2, 'barcode' => 'BAR-003', 'comment' => undef },
        "lookup_tapedate works");
 
     is_deeply($tl->lookup_tapedate('12345678'), undef,
        "lookup_tapedate returns undef on an unknown datestamp");
 
     # try some edits
-    $tl->add_tapelabel("20080112010203", "TESTCONF007", "seven", 1);
+    $tl->add_tapelabel("20080112010203", "TESTCONF007", "seven", 1, undef, 'BAR-007');
     is(scalar @{$tl->{'tles'}}, 5, "add_tapelabel adds a new element to the tapelist");
 
     is_deeply($tl->lookup_tapepos(1),
        { 'datestamp' => '20080112010203', 'label' => 'TESTCONF007',
-         'reuse' => 1, 'position' => 1, 'comment' => 'seven' },
+         'reuse' => 1, 'position' => 1, 'barcode' => 'BAR-007', 'comment' => 'seven' },
        ".. lookup_tapepos finds it at the beginning");
 
     is_deeply($tl->lookup_tapelabel("TESTCONF007"),
        { 'datestamp' => '20080112010203', 'label' => 'TESTCONF007',
-         'reuse' => 1, 'position' => 1, 'comment' => 'seven' },
+         'reuse' => 1, 'position' => 1, 'barcode' => 'BAR-007', 'comment' => 'seven' },
        ".. lookup_tapelabel finds it");
 
     is_deeply($tl->lookup_tapedate("20080112010203"),
        { 'datestamp' => '20080112010203', 'label' => 'TESTCONF007',
-         'reuse' => 1, 'position' => 1, 'comment' => 'seven' },
+         'reuse' => 1, 'position' => 1, 'barcode' => 'BAR-007', 'comment' => 'seven' },
        ".. lookup_tapedate finds it");
 
     # try some edits
@@ -142,7 +142,7 @@ SKIP: {
 
     is_deeply($tl->lookup_tapelabel("TESTCONF008"),
        { 'datestamp' => '20080112010204', 'label' => 'TESTCONF008',
-         'reuse' => 0, 'position' => 1, 'comment' => 'eight' },
+         'reuse' => 0, 'position' => 1, 'barcode' => undef, 'comment' => 'eight' },
        ".. lookup_tapelabel finds it no-reuse");
 
     $tl->remove_tapelabel("TESTCONF008");
@@ -153,7 +153,7 @@ SKIP: {
 
     is_deeply($tl->lookup_tapepos(4), # used to be in position 5
        { 'datestamp' => '20071108010001', 'label' => 'TESTCONF001',
-         'reuse' => '', 'position' => 4, 'comment' => 'comment 1' },
+         'reuse' => '', 'position' => 4, 'barcode' => undef, 'comment' => 'comment 1' },
        ".. tape positions are adjusted correctly");
 
     is_deeply($tl->lookup_tapelabel("TESTCONF002"), undef,
@@ -194,7 +194,7 @@ is_deeply($tl, {
   lockname => $tapelist . ".lock",
   tles => [
   { 'datestamp' => '2006123456', 'label' => 'FOO',
-    'reuse' => 1, 'position' => 1, 'comment' => undef },
+    'reuse' => 1, 'position' => 1, 'barcode' => undef, 'comment' => undef },
 ] }, "Invalid lines are ignored");
 
 # make sure clear_tapelist is empty
@@ -209,6 +209,6 @@ is_deeply($tl, {
   lockname => $tapelist . ".lock",
   tles => [
   { 'datestamp' => '2006123456', 'label' => 'FOO',
-    'reuse' => 1, 'position' => 1, 'comment' => undef },
+    'reuse' => 1, 'position' => 1, 'barcode' => undef, 'comment' => undef },
 ] }, "reload works");
 
index b011d6733ae97a1d0b3e4572c9717fdabe23bd12..d2c25857060347431e675d9f319b82b08612f6a5 100644 (file)
@@ -362,7 +362,6 @@ CONFIG_CLOBBER_MY_CONFIG = @CONFIG_CLOBBER_MY_CONFIG@
 CONFIG_DIR = @CONFIG_DIR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CURL_CONFIG = @CURL_CONFIG@
 CYGPATH_W = @CYGPATH_W@
 DD = @DD@
 DEFAULT_AMANDATES_FILE = @DEFAULT_AMANDATES_FILE@
index 92f45346672a19cbba4d103ecc1334615b08f4af..9bb9cfb8788a2c501d15615e0f9ec987013722bb 100644 (file)
@@ -79,6 +79,7 @@ like(run_get('amlabel', 'TESTCONF', 'TESTCONF92'),
 $tl->reload();
 is_deeply($tl->{'tles'}->[0], {
        'reuse' => 1,
+       'barcode' => undef,
        'comment' => undef,
        'position' => 1,
        'label' => 'TESTCONF92',
index 345a024dfcd83703b53539da684ed5aacb1adbb3..00faff397e18471cc152b7f71a531559765aceb0 100644 (file)
@@ -207,7 +207,7 @@ like(run_err($amreport, 'TESTCONF-NOSUCH'),
 ok(!run($amreport, 'TESTCONF-NOSUCH', '--help'),
     "amreport --help exits with status 1");
 like($Installcheck::Run::stdout,
-    qr/Usage: amreport conf/,
+    qr/Usage: amreport \[--version\]/,
     "..and prints usage message");
 
 like(run_get($amreport, 'TESTCONF-NOSUCH', '--version'),
index a913ecb4e7d07bba502063dfedbbbbafc7f24f73..7883b75f0ca594ebe673aa931ac6674ec00a496a 100644 (file)
@@ -49,7 +49,7 @@ USAGE BY TAPE:
 
 NOTES:
   big estimate: home.slikon.local /opt/public 0
-                est: 80286112k    out 50917369k
+                est: 80286112k    out 50917370k
 
 
 DUMP SUMMARY:
index 84f72d617cca49c67027d3cf63a5113ac717a4dd..ed09b52e1c5442c8d9c32b46768a9f596844dfc5 100644 (file)
@@ -281,7 +281,6 @@ CONFIG_CLOBBER_MY_CONFIG = @CONFIG_CLOBBER_MY_CONFIG@
 CONFIG_DIR = @CONFIG_DIR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CURL_CONFIG = @CURL_CONFIG@
 CYGPATH_W = @CYGPATH_W@
 DD = @DD@
 DEFAULT_AMANDATES_FILE = @DEFAULT_AMANDATES_FILE@
index 3fa88b07e946fab2276aa12314fa651ef09aee9b..006f348f214e04eada6e53f153b768d7dd58c6fa 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amaddclient
 .\"    Author: Kevin Till <kevin.till@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMADDCLIENT" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMADDCLIENT" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index b08d1da170135c52dcd35a45600dabecc373d0b3..7fd5aede820175dba68c5caaebf89bd746405085 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amadmin
 .\"    Author: James da Silva <jds@amanda.org>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMADMIN" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMADMIN" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
@@ -22,7 +22,7 @@
 amadmin \- administrative interface to control Amanda backups
 .SH "SYNOPSIS"
 .HP \w'\fBamadmin\fR\ 'u
-\fBamadmin\fR \fIconfig\fR \fIcommand\fR [\fIcommand_options\fR...] [\fB\-o\fR\ \fIconfigoption\fR...]
+\fBamadmin\fR [\fB\-o\fR\ \fIconfigoption\fR...] \fIconfig\fR \fIcommand\fR [\fIcommand_options\fR...]
 .SH "DESCRIPTION"
 .PP
 \fBAmadmin\fR
index a201c420573087a6f35e06b1cec45cfa2cd9b36b..a06bfc6c8989ec85cc02471bbdcdf7c0533198fb 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amaespipe
 .\"    Author: Kevin Till <kevin.till@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMAESPIPE" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMAESPIPE" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index 63f47e9cbec3c3aad92470119d4e577020c71cf3..671775a81e32eae30a9c3c3a44c88aa012e621e0 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amanda-applications
 .\"    Author: Jean-Louis Martineau <martineau@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: Miscellanea
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMANDA\-APPLICATIONS" "7" "10/18/2010" "Amanda 3\&.2\&.0" "Miscellanea"
+.TH "AMANDA\-APPLICATIONS" "7" "12/14/2010" "Amanda 3\&.2\&.1" "Miscellanea"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index ae2efdcb0ea4c2ef63cee412d3766bc1bcf80741..a5ba39da798939fa3b8980c873cb335368eb99dc 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amanda-archive-format
 .\"    Author: Dustin J. Mitchell <dustin@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: File formats and conventions
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMANDA\-ARCHIVE\-FOR" "5" "10/18/2010" "Amanda 3\&.2\&.0" "File formats and conventions"
+.TH "AMANDA\-ARCHIVE\-FOR" "5" "12/14/2010" "Amanda 3\&.2\&.1" "File formats and conventions"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index 84e2fef22191cee0495688e74f8a11173cd7eb5c..9f89c18b450354b1304e81eb392fe193cbefe537 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amanda-auth
 .\"    Author: Jean-Louis Martineau <martineau@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: Miscellanea
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMANDA\-AUTH" "7" "10/18/2010" "Amanda 3\&.2\&.0" "Miscellanea"
+.TH "AMANDA\-AUTH" "7" "12/14/2010" "Amanda 3\&.2\&.1" "Miscellanea"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index dd7df7fdbf502d8f09066741152413268772815d..1577369618b3dd0767f57d53d7bcf6faaf2fd529 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amanda-changers
 .\"    Author: Dustin J. Mitchell <dustin@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: Miscellanea
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMANDA\-CHANGERS" "7" "10/18/2010" "Amanda 3\&.2\&.0" "Miscellanea"
+.TH "AMANDA\-CHANGERS" "7" "12/14/2010" "Amanda 3\&.2\&.1" "Miscellanea"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index b7342aaf5e04e639890a78585f13fbb04159f561..6d0bc0b0643dd8ed9481535a853388a6503e02ba 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amanda-client.conf
 .\"    Author: James da Silva <jds@amanda.org>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: File formats and conventions
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMANDA\-CLIENT\&.CON" "5" "10/18/2010" "Amanda 3\&.2\&.0" "File formats and conventions"
+.TH "AMANDA\-CLIENT\&.CON" "5" "12/14/2010" "Amanda 3\&.2\&.1" "File formats and conventions"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index 648e71957f967e9e9cfb555d8108c267bdba1ffb..6839da9ea35baae45101e0dd695ef41ae58633a8 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amanda-compatibility
 .\"    Author: Dustin J. Mitchell <dustin@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: Miscellanea
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMANDA\-COMPATIBILIT" "7" "10/18/2010" "Amanda 3\&.2\&.0" "Miscellanea"
+.TH "AMANDA\-COMPATIBILIT" "7" "12/14/2010" "Amanda 3\&.2\&.1" "Miscellanea"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index 9899670b2fd8b2e4b9d81191669eb3459c4138f5..6ff0a898ae4b5e511e56555fc962496f36854a15 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amanda-devices
 .\"    Author: Ian Turner <ian@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: Miscellanea
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMANDA\-DEVICES" "7" "10/18/2010" "Amanda 3\&.2\&.0" "Miscellanea"
+.TH "AMANDA\-DEVICES" "7" "12/14/2010" "Amanda 3\&.2\&.1" "Miscellanea"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index 34cf1ce33dbad418a5ac366493ecd76b97d746b2..9774c769ab9ffdb2a0a62111e1907efb24a8ef51 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amanda-match
 .\"    Author: Dustin J. Mitchell <dustin@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: Miscellanea
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMANDA\-MATCH" "7" "10/18/2010" "Amanda 3\&.2\&.0" "Miscellanea"
+.TH "AMANDA\-MATCH" "7" "12/14/2010" "Amanda 3\&.2\&.1" "Miscellanea"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index 2e827d658870b95edfd8a29a19486e7f5ec71935..bd432284c1333d69b033d8af2cb6bea71956aec0 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amanda-scripts
 .\"    Author: Jean-Louis Martineau <martineau@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: Miscellanea
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMANDA\-SCRIPTS" "7" "10/18/2010" "Amanda 3\&.2\&.0" "Miscellanea"
+.TH "AMANDA\-SCRIPTS" "7" "12/14/2010" "Amanda 3\&.2\&.1" "Miscellanea"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index a1a0bad12200419108d7abc1ba59523e27a71a53..b4b50825c9aa966ee8d26f74948c9be0ebb4780a 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amanda-taperscan
 .\"    Author: Dustin J. Mitchell <dustin@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: Miscellanea
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMANDA\-TAPERSCAN" "7" "10/18/2010" "Amanda 3\&.2\&.0" "Miscellanea"
+.TH "AMANDA\-TAPERSCAN" "7" "12/14/2010" "Amanda 3\&.2\&.1" "Miscellanea"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index 7841959363c8083a2cbe41ac4b4bcd36f19d1220..ec2d04cb4bcefd2eeffebb64ef4eb68e7ea020d2 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amanda
 .\"    Author: James da Silva <jds@amanda.org>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMANDA" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMANDA" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index b8b452ec8bb7e5c2a61d070de593fd5478b655d3..e326db218969718b21dd0ba457fc2880f5b8c9cd 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amanda.conf
 .\"    Author: James da Silva <jds@amanda.org>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: File formats and conventions
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMANDA\&.CONF" "5" "10/18/2010" "Amanda 3\&.2\&.0" "File formats and conventions"
+.TH "AMANDA\&.CONF" "5" "12/14/2010" "Amanda 3\&.2\&.1" "File formats and conventions"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
@@ -951,6 +951,12 @@ Default:
 \fI0\fR\&. Debug level of the taper process
 .RE
 .PP
+\fBdebug\-recovery\fR \fIint\fR
+.RS 4
+Default:
+\fI1\fR\&. Debug level of all recovery process
+.RE
+.PP
 \fBflush\-threshold\-dumped\fR \fIint\fR
 .RS 4
 Default:
index 8bf0d1f31f9acf85406ad6864080912e2b8effdb..cc2f4b2bae98763e9c111a50d2471e4ad727f488 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amarchiver
 .\"    Author: Dustin J. Mitchell <dustin@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMARCHIVER" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMARCHIVER" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index d0286b246937fb29979230c7232523b76c3c222c..714bac8ed1d59a8186eea20d063a578ac06b708a 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amcheck
 .\"    Author: James da Silva <jds@amanda.org>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMCHECK" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMCHECK" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
@@ -22,7 +22,7 @@
 amcheck \- run Amanda self\-checks
 .SH "SYNOPSIS"
 .HP \w'\fBamcheck\fR\ 'u
-\fBamcheck\fR [\-am] [\-w] [\-sclt] [\-M\ \fIaddress\fR] \fIconfig\fR [\fIhost\fR\ [\fIdisk\fR...]...] [\fB\-o\fR\ \fIconfigoption\fR...]
+\fBamcheck\fR [\-am] [\-w] [\-sclt] [\-M\ \fIaddress\fR] [\fB\-o\fR\ \fIconfigoption\fR...] \fIconfig\fR [\fIhost\fR\ [\fIdisk\fR...]...]
 .SH "DESCRIPTION"
 .PP
 \fBAmcheck\fR
index 654916c72db7c159ff593dd27cd4a5eda4f41ec0..4be4ee8f30c45aaa835b3150bf751a19f4b9957a 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amcheckdb
 .\"    Author: Adrian T. Filipi-Martin <atf3r@cs.virginia.edu>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMCHECKDB" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMCHECKDB" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index 01161513f3b2d3d67811e4e6aef4e12c98a19b16..40f7d747b11a1d56c3f600ec9990f1379040f3be 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amcheckdump
 .\"    Author: Ian Turner <ian@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMCHECKDUMP" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMCHECKDUMP" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
@@ -22,7 +22,7 @@
 amcheckdump \- check the results of an Amanda dump
 .SH "SYNOPSIS"
 .HP \w'\fBamcheckdump\fR\ 'u
-\fBamcheckdump\fR \fIconfig\fR [\-\-timestamp|\-t\ \fItimestamp\fR] [\-\-verbose] [\fB\-o\fR\ \fIconfigoption\fR...]
+\fBamcheckdump\fR [\-\-timestamp|\-t\ \fItimestamp\fR] [\-\-verbose] [\fB\-o\fR\ \fIconfigoption\fR...] \fIconfig\fR
 .SH "DESCRIPTION"
 .PP
 \fBAmcheckdump\fR
index 0d1372c86f351eb10e0265ed52f17adb15da4aef..c33779710dea7d74c33e03b55cd889a57e4d62fc 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amcleanup
 .\"    Author: James da Silva <jds@amanda.org>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMCLEANUP" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMCLEANUP" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index 2e0b3c4acfa5f15292e298a25bb6e0cbbaca059f..5a6c0b07233eadc3a1cba15559fb5d73afd98adb 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amcrypt-ossl-asym
 .\"    Author: Kevin Till <kevin.till@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMCRYPT\-OSSL\-ASYM" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMCRYPT\-OSSL\-ASYM" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index 7db4f3d5b4e07e57a87313d4b785360484cadd91..9022e6000f3e748db394f1f1a7f8e5933a89d256 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amcrypt-ossl
 .\"    Author: Kevin Till <kevin.till@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMCRYPT\-OSSL" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMCRYPT\-OSSL" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index 170dbf61db276d638f2efab77f066fbd85243026..af811b082067280aaf207ff21becb3a03a7eaa33 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amcrypt
 .\"    Author: Kevin Till <kevin.till@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMCRYPT" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMCRYPT" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index 708f64f9d122e0c2764d3151555a6bc19af6d206..accf385214b215c6a9ebcf201e8317ff96edf6af 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amcryptsimple
 .\"    Author: Kevin Till <kevin.till@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMCRYPTSIMPLE" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMCRYPTSIMPLE" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index 089e48a2a7b8a763859e8a53480923ce17056f29..baeb1b5bd0e054fa8fd0af9db7f4ac4dd8811708 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amdevcheck
 .\"    Author: Ian Turner <ian@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMDEVCHECK" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMDEVCHECK" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
@@ -22,7 +22,7 @@
 amdevcheck \- Validate an Amanda device and volume\&.
 .SH "SYNOPSIS"
 .HP \w'\fBamdevcheck\fR\ 'u
-\fBamdevcheck\fR \fIconfig\fR [\fIdevice\-name\fR] [\-\-label] [\-properties\ \fIlist\fR] [\fB\-o\fR\ \fIconfigoption\fR...]
+\fBamdevcheck\fR [\-\-label] [\-properties\ \fIlist\fR] [\fB\-o\fR\ \fIconfigoption\fR...] \fIconfig\fR [\fIdevice\-name\fR]
 .SH "DESCRIPTION"
 .PP
 
index bd2fcd1c785e36ce4c008a39dbfa4b52dc25288b..dc5c0e5fbebf37b473db6cb2086effa3cfabfd21 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amdump
 .\"    Author: James da Silva <jds@amanda.org>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMDUMP" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMDUMP" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
@@ -22,7 +22,7 @@
 amdump \- back up all disks in an Amanda configuration
 .SH "SYNOPSIS"
 .HP \w'\fBamdump\fR\ 'u
-\fBamdump\fR \fIconfig\fR [\fB\-\-no\-taper\fR] [\fIhost\fR\ [\fIdisk\fR...]...] [\fB\-o\fR\ \fIconfigoption\fR...]
+\fBamdump\fR [\fB\-\-no\-taper\fR] [\fB\-o\fR\ \fIconfigoption\fR...] \fIconfig\fR [\fIhost\fR\ [\fIdisk\fR...]...]
 .SH "DESCRIPTION"
 .PP
 \fBAmdump\fR
index 7f7d91a88fd9c5831ba9e0b1df451c3c452b91ee..d5a7b94b89a7b05b91465905357da377000495f5 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amfetchdump
 .\"    Author: John Stange <building@nap.edu>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMFETCHDUMP" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMFETCHDUMP" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
@@ -22,7 +22,7 @@
 amfetchdump \- extract backup images from multiple Amanda tapes\&.
 .SH "SYNOPSIS"
 .HP \w'\fBamfetchdump\fR\ 'u
-\fBamfetchdump\fR [\-phcClawns] [\-d\ \fIdevice\fR] [\-O\ \fIdirectory\fR] [\-b\ \fIblocksize\fR] [\-\-header\-fd\ \fIfd\fR] [\-\-header\-file\ \fIfilename\fR] [\-o\ \fIconfigoption\fR]... \fIconfig\fR \fIhostname\fR [\fIdisk\fR\ [\ \fIdate\fR\ [\ \fIlevel\fR\ [\ \fIhostname\fR\ [\&.\&.\&.]\ ]\ ]\ ]]
+\fBamfetchdump\fR [\-phcClawns] [\-d\ \fIdevice\fR] [\-O\ \fIdirectory\fR] [\-b\ \fIblocksize\fR] [\-\-header\-fd\ \fIfd\fR] [\-\-header\-file\ \fIfilename\fR] [\fB\-o\fR\ \fIconfigoption\fR...] \fIconfig\fR \fIhostname\fR [\fIdisk\fR\ [\ \fIdate\fR\ [\ \fIlevel\fR\ [\ \fIhostname\fR\ [\&.\&.\&.]\ ]\ ]\ ]]
 .SH "DESCRIPTION"
 .PP
 \fBAmfetchdump\fR
index 2cec85aff1ed7c8510022b67ef210eabe91c4e35..d1e81119b67c37a2becad26c091adf095c1ceece 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amflush
 .\"    Author: James da Silva <jds@amanda.org>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMFLUSH" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMFLUSH" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
@@ -22,7 +22,7 @@
 amflush \- flush Amanda backup files from holding disk to tape
 .SH "SYNOPSIS"
 .HP \w'\fBamflush\fR\ 'u
-\fBamflush\fR [\-b] [\-f] [\-s] [\-D\ \fIdatestamp\fR] \fIconfig\fR [\fIhost\fR\ [\fIdisk\fR...]...] [\fB\-o\fR\ \fIconfigoption\fR...]
+\fBamflush\fR [\-b] [\-f] [\-s] [\-D\ \fIdatestamp\fR] [\fB\-o\fR\ \fIconfigoption\fR...] \fIconfig\fR [\fIhost\fR\ [\fIdisk\fR...]...]
 .SH "DESCRIPTION"
 .PP
 \fBAmflush\fR
index a1085d06361fcfdf3e6c2dc8a89462bc7d0c3722..579801621346eeedf1385d8b7480a2d7adc9e806 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amgetconf
 .\"    Author: Jean-Louis Martineau <martineau@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMGETCONF" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMGETCONF" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
@@ -22,7 +22,7 @@
 amgetconf \- look up configuration parameters and manipulate debug logs
 .SH "SYNOPSIS"
 .HP \w'\fBamgetconf\fR\ 'u
-\fBamgetconf\fR [\fI\-l|\-\-list\fR] [\fI\-\-client\fR] [\fI\-\-execute\-where\ client|server\fR] [\fIconfig\fR] \fIparameter\fR [\fB\-o\fR\ \fIconfigoption\fR...]
+\fBamgetconf\fR [\fI\-l|\-\-list\fR] [\fI\-\-client\fR] [\fI\-\-execute\-where\ client|server\fR] [\fB\-o\fR\ \fIconfigoption\fR...] [\fIconfig\fR] \fIparameter\fR
 .SH "DESCRIPTION"
 .PP
 \fBAmgetconf\fR
index 3d2fdaca0e6b7469a59d4a1e0810837626ebdf69..d29603a297b6e6b9d2a0c0633427cad7765bbd26 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amgpgcrypt
 .\"    Author: Kevin Till <kevin.till@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMGPGCRYPT" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMGPGCRYPT" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index 0b2e856643bb5241a0a27560e3b3575296dc20f4..432d82815d3e2064c5b862330786443c5da1931d 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amgtar
 .\"    Author: Jean-Louis Martineau <martineau@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMGTAR" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMGTAR" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index c954d08789e52b921ce5b1b4956c7d719370ea2e..8384170e4c2727b1151e7be9daffc12fa1a2d223 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amlabel
 .\"    Author: James da Silva <jds@amanda.org>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMLABEL" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMLABEL" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
@@ -22,7 +22,7 @@
 amlabel \- label an Amanda tape
 .SH "SYNOPSIS"
 .HP \w'\fBamlabel\fR\ 'u
-\fBamlabel\fR \fIconfig\fR \fIlabel\fR [slot\ \fIslot\fR] [\fB\-f\fR] [\fB\-\-version\fR] [\fB\-o\fR\ \fIconfigoption\fR...]
+\fBamlabel\fR [\fB\-f\fR] [\fB\-\-version\fR] [\fB\-o\fR\ \fIconfigoption\fR...] \fIconfig\fR \fIlabel\fR [slot\ \fIslot\fR]
 .SH "DESCRIPTION"
 .PP
 This command applies a label to an Amanda volume, erasing the volume in the process\&.
index c3207cd143444e3d9198eb3e6170d0a5b395ed49..ce5124805dd7a6fc0319f3527ac7e79ddbc150d7 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amoverview
 .\"    Author: Stefan G. Weichinger <sgw@amanda.org>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMOVERVIEW" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMOVERVIEW" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
@@ -22,7 +22,7 @@
 amoverview \- display file systems processed by Amanda over time
 .SH "SYNOPSIS"
 .HP \w'\fBamoverview\fR\ 'u
-\fBamoverview\fR [[\-\-config\ ]\ \fIconfig\fR] [\-\-hostwidth\ \fIwidth\fR] [\-\-diskwidth\ \fIwidth\fR] [\-\-skipmissed] [\-\-last] [\-\-num0] [\-\-togo0] [\-\-verbose]
+\fBamoverview\fR [\-\-hostwidth\ \fIwidth\fR] [\-\-diskwidth\ \fIwidth\fR] [\-\-skipmissed] [\-\-last] [\-\-num0] [\-\-togo0] [\-\-verbose] [\-\-config\ ]\ \fIconfig\fR 
 .SH "DESCRIPTION"
 .PP
 \fBAmoverview\fR
index 3490b5d682f99bf584c873ea84bb02eeccdec63f..91583529cedad7fec3b604d71b7c153ca252bcdb 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: ampgsql
 .\"    Author: Nikolas Coukouma <atrus@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMPGSQL" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMPGSQL" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index f94fbf587fe7745ca5c5649036dc95efe715d2bd..c809db2c0d4f4fd0bb8394b1c90bf268aae3c5c1 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amplot
 .\"    Author: Olafur Gudmundsson <ogud@tis.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMPLOT" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMPLOT" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index ebb243eefbd2d67d73f3f712e2fe6d4b927a75ca..fdb11aa987a9b971dd3088f2e5cae2f9777ec3f8 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amraw
 .\"    Author: Jean-Louis Martineau <martineau@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMRAW" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMRAW" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index 90bb0b01f368ff1a6f3bec681ee4ed34764a0424..58d81a3dab38ea4a6013d84da974d7a2c06e85f6 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amrecover
 .\"    Author: Alan M. McIvor <alan@kauri.auck.irl.cri.nz>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMRECOVER" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMRECOVER" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
@@ -22,7 +22,7 @@
 amrecover \- Amanda index database browser
 .SH "SYNOPSIS"
 .HP \w'\fBamrecover\fR\ 'u
-\fBamrecover\fR [\-C\ \fIconfig\fR] [\-s\ \fIindex\-server\fR] [\-t\ \fItape\-server\fR] [\-d\ \fItape\-device\fR] [\-h\ \fIhostname\fR] [\-o\ \fIconfigoption\fR]...
+\fBamrecover\fR [\-s\ \fIindex\-server\fR] [\-t\ \fItape\-server\fR] [\-d\ \fItape\-device\fR] [\-h\ \fIhostname\fR] [\fB\-o\fR\ \fIconfigoption\fR...] [\-C\ \fIconfig\fR]
 .SH "DESCRIPTION"
 .PP
 \fBAmrecover\fR
index a0d47901bf4c013db9b3473f20cd462a00de6071..a36acbfffa5a14651cd314be2c6afa294bc0fb96 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amreport
 .\"    Author: Stefan G. Weichinger <sgw@amanda.org>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMREPORT" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMREPORT" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
@@ -22,7 +22,7 @@
 amreport \- generate a formatted output of statistics for an Amanda run
 .SH "SYNOPSIS"
 .HP \w'\fBamreport\fR\ 'u
-\fBamreport\fR [\fIconfig\fR] [\fB\-o\fR\ \fIconfigoption\fR...] [(1)\ \fIcommand\-line options\fR | (2)\ \fIscript options\fR]
+\fBamreport\fR [\fB\-o\fR\ \fIconfigoption\fR...] [(1)\ \fIcommand\-line options\fR | (2)\ \fIscript options\fR] [\fIconfig\fR]
 .it 1 an-trap
 .nr an-no-space-flag 1
 .nr an-break-flag 1
index 3c7c540d1e6b3541abb070d5b4d0128b6210ab87..42190458d3290dfced1f01f93f3367ed4acb4f5f 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amrestore
 .\"    Author: James da Silva <jds@amanda.org>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMRESTORE" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMRESTORE" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index 1f34c1836d63b55d4b7a9bc97896a5d14040515f..1441c76fb52c269730a9496e34b9eddd2853b79d 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amrmtape
 .\"    Author: Adrian T. Filipi-Martin <atf3r@cs.virginia.edu>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMRMTAPE" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMRMTAPE" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index 875c2887e4b079185f17a44bdb2c4afa077ed931..51e430ad8bc5e9fc7637b388d227f50f460ce471 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amsamba
 .\"    Author: Jean-Louis Martineau <martineau@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMSAMBA" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMSAMBA" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index 06d65e065f357231e0975ce570357bb091fb0bf7..b7d34071b676610b919aa3729265e09aec9111d1 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amserverconfig
 .\"    Author: Kevin Till <kevin.till@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMSERVERCONFIG" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMSERVERCONFIG" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index 2ea8396d9d249651f24e39779a41870b68330fa3..e8650f12d62679194709d1a36a854925594aa6bf 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amservice
 .\"    Author: Jean-Louis Martineau <martineau@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMSERVICE" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMSERVICE" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
@@ -22,7 +22,7 @@
 amservice \- run an amanda service on a client
 .SH "SYNOPSIS"
 .HP \w'\fBamservice\fR\ 'u
-\fBamservice\fR \fIhostname\fR \fIauth\fR \fIservice\fR [\-f\ \fIinput_file\fR] [\fB\-o\fR\ \fIconfigoption\fR...]
+\fBamservice\fR [\-f\ \fIinput_file\fR] [\fB\-o\fR\ \fIconfigoption\fR...] \fIhostname\fR \fIauth\fR \fIservice\fR
 .SH "DESCRIPTION"
 .PP
 \fBAmservice\fR
index 067e9dd4477e712c9f5309a8de1d65ad7181ae01..d240d11f41c20b5f2118c6ad89c338e365dc0c50 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amstar
 .\"    Author: Jean-Louis Martineau <martineau@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMSTAR" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMSTAR" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index 1d37ed2da8f4ba2b000263fb118cca7ff7288e18..4ea7141b4ec8bc36263eca3ffa8a5434d425d3af 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amstatus
 .\"    Author: Stefan G. Weichinger <sgw@amanda.org>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMSTATUS" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMSTATUS" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
@@ -22,7 +22,7 @@
 amstatus \- display the state of an Amanda run
 .SH "SYNOPSIS"
 .HP \w'\fBamstatus\fR\ 'u
-\fBamstatus\fR [\-\-config] \fIconfig\fR [\-\-file\ \fIamdumpfile\fR] [\-\-summary] [\-\-dumping] [\-\-waitdumping] [\-\-waittaper] [\-\-dumpingtape] [\-\-writingtape] [\-\-finished] [\-\-failed] [\-\-estimate] [\-\-gestimate] [\-\-stats] [\-\-locale\-independent\-date\-format]
+\fBamstatus\fR [\-\-file\ \fIamdumpfile\fR] [\-\-summary] [\-\-dumping] [\-\-waitdumping] [\-\-waittaper] [\-\-dumpingtape] [\-\-writingtape] [\-\-finished] [\-\-failed] [\-\-estimate] [\-\-gestimate] [\-\-stats] [\-\-locale\-independent\-date\-format] [\-\-config] \fIconfig\fR
 .SH "DESCRIPTION"
 .PP
 \fBAmstatus\fR
index a4392599f90156b899b785f75aab01bd41fc87bc..c5668a0388ad2e4919293fb838ea75d9d628db5b 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amsuntar
 .\"    Author: Satya Ganga <gast@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMSUNTAR" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMSUNTAR" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index 85e2326d3bce8f25e4e5f134da7ef1828592b19c..e2059d2cb9360c6f24762c818b46be04a556c380 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amtape
 .\"    Author: Dustin J. Mitchell <dustin@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMTAPE" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMTAPE" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
@@ -22,7 +22,7 @@
 amtape \- Control Amanda changers
 .SH "SYNOPSIS"
 .HP \w'\fBamtape\fR\ 'u
-\fBamtape\fR \fIconfig\fR \fIsubcommand\fR [\fIsubcommand_options\fR...] [\fB\-o\fR\ \fIconfigoption\fR...]
+\fBamtape\fR [\fB\-o\fR\ \fIconfigoption\fR...] \fIconfig\fR \fIsubcommand\fR [\fIsubcommand_options\fR...]
 .SH "DESCRIPTION"
 .PP
 \fBAmtape\fR
index b014129289bacbe8d54a904d7ce91422b78e3a19..6563ef4cd36db0650f4610d9bbe5476095b9cd23 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amtapetype
 .\"    Author: Dustin J. Mitchell <dustin@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMTAPETYPE" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMTAPETYPE" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index 712455b5e71c41d2a65e3919b6578f6a0e600ee7..2cd8cb7315839b5b3fe6f2058b2b3e5330cdb37f 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amtoc
 .\"    Author: Nicolas Mayencourt <Nicolas.Mayencourt@cui.unige.ch>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMTOC" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMTOC" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index fe6e7c9d64f88ee262d44ebe4f3094acad33b4fb..175209882fd12a076c636a211c080fe4421ed21f 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amvault
 .\"    Author: Dustin J. Mitchell <dustin@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMVAULT" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMVAULT" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index 8d17da791ab27c9b2ec2dc062666f1a21f3de2b1..38c4df8e1388d31538bd9bb80fbd066a54544a0a 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amzfs-sendrecv
 .\"    Author: Jean-Louis Martineau <martineau@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMZFS\-SENDRECV" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMZFS\-SENDRECV" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index 458b491696dabfdf90618e64fa3f06085157c91c..a62b054c089f02be7034f8787765f4e4eaca04de 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: amzfs-snapshot
 .\"    Author: Jean-Louis Martineau <martineau@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "AMZFS\-SNAPSHOT" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "AMZFS\-SNAPSHOT" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index 349d7daac3b4a19221b2531118d341bfd282bba8..652ba8df06528155ef9fe32c7b780116c051f6ab 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: disklist
 .\"    Author: James da Silva <jds@amanda.org>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: File formats and conventions
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "DISKLIST" "5" "10/18/2010" "Amanda 3\&.2\&.0" "File formats and conventions"
+.TH "DISKLIST" "5" "12/14/2010" "Amanda 3\&.2\&.1" "File formats and conventions"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index e1e275a5dda0c865b3c5e61e0c3fbbb83f45cb71..9fbfd0189d2074830354116b34f1496e681b0aeb 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: script-email
 .\"    Author: Jean-Louis Martineau <martineau@zmanda.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: System Administration Commands
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "SCRIPT\-EMAIL" "8" "10/18/2010" "Amanda 3\&.2\&.0" "System Administration Commands"
+.TH "SCRIPT\-EMAIL" "8" "12/14/2010" "Amanda 3\&.2\&.1" "System Administration Commands"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
index ffd848c70ef22bf056e2730f6659a04d4706089b..29088aed23714035b2c9d4a758300e45d9fda89e 100644 (file)
@@ -2,12 +2,12 @@
 .\"     Title: tapelist
 .\"    Author: James da Silva <jds@amanda.org>
 .\" Generator: DocBook XSL Stylesheets vsnapshot_8273 <http://docbook.sf.net/>
-.\"      Date: 10/18/2010
+.\"      Date: 12/14/2010
 .\"    Manual: File formats and conventions
-.\"    Source: Amanda 3.2.0
+.\"    Source: Amanda 3.2.1
 .\"  Language: English
 .\"
-.TH "TAPELIST" "5" "10/18/2010" "Amanda 3\&.2\&.0" "File formats and conventions"
+.TH "TAPELIST" "5" "12/14/2010" "Amanda 3\&.2\&.1" "File formats and conventions"
 .\" -----------------------------------------------------------------
 .\" * set default formatting
 .\" -----------------------------------------------------------------
@@ -27,7 +27,7 @@ The
 file contains the list of tapes in active use\&. This file is not ordinarily ordinarily edited or examined manually\&. Its format may change, or it may be removed altogether, in future versions of Amanda\&. It contains lines of the form:
 .PP
 .nf
-YYYYMMDD label flags [#comment]
+YYYYMMDD label flags [BARCODE:barcode] [#comment]
 .fi
 .PP
 Where
@@ -43,7 +43,7 @@ is one of "reuse" or "no\-reuse" and tells Amanda whether the tape may be reused
 dumps\&. See the
 \fBreuse\fR
 options of
-\fBamadmin\fR(8)\&. The optional comment is prefixed with a \'#\' and continues to the end of the line\&. Amanda will maintain this comment until the tape is overwritten\&. Note that comments are not allowed on blank lines\&.
+\fBamadmin\fR(8)\&. The optional barcode is prefixed with \'BARCODE\' if the volume have a barcode\&. The optional comment is prefixed with a \'#\' and continues to the end of the line\&. Amanda will maintain this comment until the tape is overwritten\&. Note that comments are not allowed on blank lines\&.
 .PP
 The file is sorted such that the most\-recently used tape appears on the first line, and the oldest tape appears on the last line\&.
 .PP
index 7bc1f2f641b48a48d6d6770aab8027cf60fb111a..5d0905a5ef265d4df8fee9e1462396918b93a38c 100644 (file)
 <refsynopsisdiv>
 <cmdsynopsis>
   <command>amadmin</command>    
+    &configoverride.synopsis;
     <arg choice='plain'><replaceable>config</replaceable></arg>
     <arg choice='plain'><replaceable>command</replaceable></arg>
     <arg choice='opt' rep='repeat'><replaceable>command_options</replaceable></arg>
-    &configoverride.synopsis;
 </cmdsynopsis>
 </refsynopsisdiv>
 
index 179722e1c6c33fb7ba25695cc21ff92c0e3fdca2..6964303686c760ddcf3e7d3d3bb331d6f7440eea 100644 (file)
@@ -1230,6 +1230,15 @@ Debug level of the taper process</para>
   </listitem>
   </varlistentry>
 
+  <varlistentry>
+  <term><amkeyword>debug-recovery</amkeyword> <amtype>int</amtype></term>
+  <listitem>
+<para>Default:
+<amdefault>1</amdefault>.
+Debug level of all recovery process</para>
+  </listitem>
+  </varlistentry>
+
   <varlistentry>
   <term><amkeyword>flush-threshold-dumped</amkeyword> <amtype>int</amtype></term>
   <listitem>
index 9b641352d3c726be81acaa652c0cf8d2e1bbc9e1..be04e9bc2d8a616384fd278d0329bf4a72c88fc7 100644 (file)
     <arg choice='opt'>-w</arg>
     <arg choice='opt'>-sclt</arg>
     <arg choice='opt'>-M <replaceable>address</replaceable></arg>
+    &configoverride.synopsis;
     <arg choice='plain'><replaceable>config</replaceable></arg>
     <arg choice='opt' rep='repeat'>
        <arg choice='plain'><replaceable>host</replaceable></arg>
        <arg choice='opt' rep='repeat'><replaceable>disk</replaceable></arg>
     </arg>
-    &configoverride.synopsis;
 </cmdsynopsis>
 </refsynopsisdiv>
 
index 9cbe5dc701b105fb64a3b5b8d49a3ff7d68ac7f8..847318ad07020b8382c6e3df66ec0e8dbbfae47e 100644 (file)
 <refsynopsisdiv>
 <cmdsynopsis>
   <command>amcheckdump</command>    
-    <arg choice='plain'><replaceable>config</replaceable></arg>
     <arg choice='opt'>--timestamp|-t <replaceable>timestamp</replaceable></arg>
     <arg choice='opt'>--verbose</arg>
     &configoverride.synopsis;
+    <arg choice='plain'><replaceable>config</replaceable></arg>
 </cmdsynopsis>
 </refsynopsisdiv>
 
index 9ec94fed0b7f511aab1a5aedba01e4164b1af076..6232e5aac3ad4cffd0ee6bafd5bab95241ca5410 100644 (file)
   <refsynopsisdiv>
     <cmdsynopsis>
       <command>amdevcheck</command>
-      <arg choice='plain'><replaceable>config</replaceable></arg>
-      <group choice='opt'>
-        <arg choice='plain'><replaceable>device-name</replaceable></arg>
-      </group>
       <group choice='opt'>
         <arg choice='plain'>--label</arg>
       </group>
         <arg choice='plain'>-properties <replaceable>list</replaceable></arg>
       </group>
       &configoverride.synopsis;
+      <arg choice='plain'><replaceable>config</replaceable></arg>
+      <group choice='opt'>
+        <arg choice='plain'><replaceable>device-name</replaceable></arg>
+      </group>
     </cmdsynopsis>
   </refsynopsisdiv>
 
index 166ec71925b662e529d826140e3a43b091158a56..bf170da175ef91370a0b168163f2b61e7bd1475d 100644 (file)
 <refsynopsisdiv>
 <cmdsynopsis>
   <command>amdump</command>    
-    <arg choice='plain'><replaceable>config</replaceable></arg>
     <arg choice='opt'><option>--no-taper</option></arg>
+    &configoverride.synopsis;
+    <arg choice='plain'><replaceable>config</replaceable></arg>
     <arg choice='opt' rep='repeat'>
        <arg choice='plain'><replaceable>host</replaceable></arg>
        <arg choice='opt' rep='repeat'><replaceable>disk</replaceable></arg>
     </arg>
-    &configoverride.synopsis;
 </cmdsynopsis>
 </refsynopsisdiv>
 
index f81d191167d6fb6409de4cd9b6655a76dc42adea..863b893be0bd240ccd919854cac7a827526b88a7 100644 (file)
@@ -34,7 +34,7 @@
     <arg choice='opt'>-b <replaceable>blocksize</replaceable></arg>
     <arg choice='opt'>--header-fd <replaceable>fd</replaceable></arg>
     <arg choice='opt'>--header-file <replaceable>filename</replaceable></arg>
-    <arg choice='plain' rep='repeat'><group><arg choice='plain'>-o </arg><replaceable>configoption</replaceable></group></arg>
+    &configoverride.synopsis;
     <arg choice='plain'><replaceable>config</replaceable></arg>
     <arg choice='plain'><replaceable>hostname</replaceable></arg>
     <arg choice='opt'>
index c27261bc0751d1be06b5bad32e4c909d67ed103c..e40611153056e8d18d486b42a46140cbbf7371a3 100644 (file)
     <arg choice='opt'>-f</arg>
     <arg choice='opt'>-s</arg>
     <arg choice='opt'>-D <replaceable>datestamp</replaceable></arg>
+    &configoverride.synopsis;
     <arg choice='plain'><replaceable>config</replaceable></arg>
     <arg choice='opt' rep='repeat'>
        <arg choice='plain'><replaceable>host</replaceable></arg>
        <arg choice='opt' rep='repeat'><replaceable>disk</replaceable></arg>
     </arg>
-    &configoverride.synopsis;
 </cmdsynopsis>
 </refsynopsisdiv>
 
index 31356af0e67d56888e48c8bccbf4b22c4c7e820d..a2b797aa95a12f3811138bb2172963165e24dcea 100644 (file)
@@ -31,9 +31,9 @@
     <arg choice='opt'><replaceable>-l|--list</replaceable></arg>
     <arg choice='opt'><replaceable>--client</replaceable></arg>
     <arg choice='opt'><replaceable>--execute-where client|server</replaceable></arg>
+    &configoverride.synopsis;
     <arg choice='opt'><replaceable>config</replaceable></arg>
     <arg choice='plain'><replaceable>parameter</replaceable></arg>
-    &configoverride.synopsis;
 </cmdsynopsis>
 </refsynopsisdiv>
 
index 3882882520cb7f8bad9d3bf9a7813bfb6abbf14c..66046ac4fc259872538636fb22e4cb3bcb661292 100644 (file)
 <refsynopsisdiv>
 <cmdsynopsis>
   <command>amlabel</command>    
-    <arg choice='plain'><replaceable>config</replaceable></arg>
-    <arg choice='plain'><replaceable>label</replaceable></arg>
-    <arg choice='opt'>slot <replaceable>slot</replaceable></arg>
     <arg><option>-f</option></arg>
     &version.synopsis;
     &configoverride.synopsis;
+    <arg choice='plain'><replaceable>config</replaceable></arg>
+    <arg choice='plain'><replaceable>label</replaceable></arg>
+    <arg choice='opt'>slot <replaceable>slot</replaceable></arg>
 </cmdsynopsis>
 </refsynopsisdiv>
 
index acd3704a2e68ff68254bc2fc456009267e77c383..8d913fd82ba3b8583d2aa1aa1a7226be82b5f348 100644 (file)
@@ -28,7 +28,6 @@
 <refsynopsisdiv>
 <cmdsynopsis>
   <command>amoverview</command>    
-    <arg choice='opt'><arg choice='opt'>--config </arg><arg choice='plain'><replaceable>config</replaceable></arg></arg>
     <arg choice='opt'>--hostwidth <replaceable>width</replaceable></arg>
     <arg choice='opt'>--diskwidth <replaceable>width</replaceable></arg>
     <arg choice='opt'>--skipmissed</arg>
@@ -36,6 +35,7 @@
     <arg choice='opt'>--num0</arg>
     <arg choice='opt'>--togo0</arg>
     <arg choice='opt'>--verbose</arg>
+    <arg choice='plain'><arg choice='opt'>--config </arg> <replaceable>config</replaceable></arg>
 </cmdsynopsis>
 </refsynopsisdiv>
 
index aaef74e48985d1282e931b3a011178626c23f7df..5e8b1bc475e6f7dee05ecb4f044dbc8e46a6fb2e 100644 (file)
 <refsynopsisdiv>
 <cmdsynopsis>
   <command>amrecover</command>    
-    <arg choice='opt'>-C <replaceable>config</replaceable></arg>
     <arg choice='opt'>-s <replaceable>index-server</replaceable></arg>
     <arg choice='opt'>-t <replaceable>tape-server</replaceable></arg>
     <arg choice='opt'>-d <replaceable>tape-device</replaceable></arg>
     <arg choice='opt'>-h <replaceable>hostname</replaceable></arg>
-    <arg choice='plain' rep='repeat'><group><arg choice='plain'>-o </arg><replaceable>configoption</replaceable></group></arg>
+    &configoverride.synopsis;
+    <arg choice='opt'>-C <replaceable>config</replaceable></arg>
 </cmdsynopsis>
 </refsynopsisdiv>
 
index 27defce6a3120a1d6cbe66877d8bc314e5322e8f..3d31fdc2076a37daeee7d65ebac29c8f918d7096 100644 (file)
 <refsynopsisdiv>
 <cmdsynopsis>
   <command>amreport</command>    
-    <arg choice='opt'><replaceable>config</replaceable></arg>
     &configoverride.synopsis;
     <group>
        <synopfragmentref linkend="cmdline">command-line options</synopfragmentref> | <synopfragmentref linkend="script">script options</synopfragmentref>
     </group>
+    <arg choice='opt'><replaceable>config</replaceable></arg>
   <synopfragment id="cmdline">
     <arg choice='opt'>--log=<replaceable>logfile</replaceable></arg>
     <arg choice='opt'>--ps=<replaceable>filename</replaceable></arg>
index 20f0257bdfd9a84505b0a31fda14423f43315ae3..4bd3cd8813da8bab4c518025f9b6a745440f8d3e 100644 (file)
 <refsynopsisdiv>
 <cmdsynopsis>
   <command>amservice</command>    
+    <arg choice='opt'><arg choice='plain'>-f</arg><arg choice='plain'><replaceable>input_file</replaceable></arg></arg>
+    &configoverride.synopsis;
     <arg choice='plain'><replaceable>hostname</replaceable></arg>
     <arg choice='plain'><replaceable>auth</replaceable></arg>
     <arg choice='plain'><replaceable>service</replaceable></arg>
-    <arg choice='opt'><arg choice='plain'>-f</arg><arg choice='plain'><replaceable>input_file</replaceable></arg></arg>
-    &configoverride.synopsis;
 </cmdsynopsis>
 </refsynopsisdiv>
 
index 358741db1fbd49dc57329093c8018031834b1c6e..6e210d8d978100c5a936a73d542df317dae2a1ee 100644 (file)
@@ -29,8 +29,6 @@
 <refsynopsisdiv>
 <cmdsynopsis>
   <command>amstatus</command>    
-    <arg choice='opt'>--config </arg>
-    <arg choice='plain'><replaceable>config</replaceable></arg>
     <arg choice='opt'><arg choice='plain'>--file </arg><arg choice='plain'><replaceable>amdumpfile</replaceable></arg></arg>
     <arg choice='opt'>--summary </arg>
     <arg choice='opt'>--dumping </arg>
@@ -44,6 +42,8 @@
     <arg choice='opt'>--gestimate </arg>
     <arg choice='opt'>--stats </arg>
     <arg choice='opt'>--locale-independent-date-format </arg>
+    <arg choice='opt'>--config </arg>
+    <arg choice='plain'><replaceable>config</replaceable></arg>
 </cmdsynopsis>
 </refsynopsisdiv>
 
index c46679071819b48e79b86ddcdfeb4309d885ecd4..656e0119e07eff9d00255ede67f9b6e2208a4184 100644 (file)
 <refsynopsisdiv>
 <cmdsynopsis>
   <command>amtape</command>    
+    &configoverride.synopsis;
     <arg choice='plain'><replaceable>config</replaceable></arg>
     <arg choice='plain'><replaceable>subcommand</replaceable></arg>
     <arg choice='opt' rep='repeat'><replaceable>subcommand_options</replaceable></arg>
-    &configoverride.synopsis;
 </cmdsynopsis>
 </refsynopsisdiv>
 
index 1399681a6b4d3bfc67a1073a278cc3a53beee183..56683c62a19dbedfdb2059092bfaf0b5df440fe9 100644 (file)
@@ -34,7 +34,7 @@ tapes in active use.  This file is not ordinarily ordinarily edited or examined
 manually.  Its format may change, or it may be removed altogether, in future
 versions of Amanda.  It contains lines of the form:</para>
 
-<para><programlisting>YYYYMMDD label flags [#comment]
+<para><programlisting>YYYYMMDD label flags [BARCODE:barcode] [#comment]
 </programlisting></para>
 
 <para>Where
@@ -51,6 +51,7 @@ remap='B'>dumpcycle</emphasis> dumps.  See the
 <emphasis remap='B'>reuse</emphasis>
 options of
 <manref name="amadmin" vol="8"/>.
+The optional barcode is prefixed with 'BARCODE' if the volume have a barcode.
 The optional comment is prefixed with a '#' and continues to the end of the line.  Amanda
 will maintain this comment until the tape is overwritten.  Note that comments are not
 allowed on blank lines.</para>
index 8eeb15dcf6d98b1ff64378384c64a4fc825643f6..638177f3209518ee6c32cc1fa230580a6c4c7d3c 100644 (file)
   </span>
 </xsl:template>
 
+<xsl:template name="user.header.content">
+  <center>Amanda-@VERSION@</center>
+  <hr />
+</xsl:template>
+
 <xsl:template name="user.footer.content">
   <hr />
   <center>Amanda-@VERSION@</center>
index 9ce11b08e315c6b4002468e0d430df3ddb7b9566..b024d9cc8084e410d258aeadff0d53a2083afe21 100644 (file)
@@ -484,7 +484,6 @@ CONFIG_CLOBBER_MY_CONFIG = @CONFIG_CLOBBER_MY_CONFIG@
 CONFIG_DIR = @CONFIG_DIR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CURL_CONFIG = @CURL_CONFIG@
 CYGPATH_W = @CYGPATH_W@
 DD = @DD@
 DEFAULT_AMANDATES_FILE = @DEFAULT_AMANDATES_FILE@
index 747ec0bdc921efc0eb0ddb796ab951dee19a11a0..2fa3eb6abe18283d7288f4fac2686cbaaa40d60c 100644 (file)
@@ -365,7 +365,6 @@ CONFIG_CLOBBER_MY_CONFIG = @CONFIG_CLOBBER_MY_CONFIG@
 CONFIG_DIR = @CONFIG_DIR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CURL_CONFIG = @CURL_CONFIG@
 CYGPATH_W = @CYGPATH_W@
 DD = @DD@
 DEFAULT_AMANDATES_FILE = @DEFAULT_AMANDATES_FILE@
index 2add4a33db47e8a030e3140963937e2091bd457b..bdc04f24150d222b99e6669de7a30b91db9449fd 100644 (file)
@@ -246,7 +246,6 @@ CONFIG_CLOBBER_MY_CONFIG = @CONFIG_CLOBBER_MY_CONFIG@
 CONFIG_DIR = @CONFIG_DIR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CURL_CONFIG = @CURL_CONFIG@
 CYGPATH_W = @CYGPATH_W@
 DD = @DD@
 DEFAULT_AMANDATES_FILE = @DEFAULT_AMANDATES_FILE@
index 779c5461d2d1f9a272e60c0fa27023d38ccf5f7d..4fbc099919f7e784677d02a2f49c44ad43ee19c7 100755 (executable)
@@ -52,6 +52,7 @@ build-stamp: /sbin/dump /usr/bin/smbclient
                MAKEFLAGS="-j1 " \
                CFLAGS="-pipe " \
                MAILER=/usr/bin/mail \
+               LDFLAGS="-Wl,--as-needed" \
                --quiet \
                --host=$(DEB_HOST_GNU_TYPE) \
                --build=$(DEB_BUILD_GNU_TYPE) \
index 5155879073f8a36c70bd5bd4dec23e1994fa486a..291c44f505c36ec8ed619cedc68efbf32fa46c98 100644 (file)
 
 %{?PKG_CONFIG_PATH:%{echo:PKG_CONFIG_PATH = %{PKG_CONFIG_PATH}}}
 
+# LDFLAGS: newer gnu linkers can use "-Wl,--as-needed", while older ones,
+# like rhel3 and sles9 can't.
+%define LDFLAGS -Wl,--as-needed
+
 # Define which Distribution we are building:
 # Try to detect the distribution we are building:
 %if %{_vendor} == redhat 
         %define disttag fc
         %define distver 3
        %define requires_libtermcap Requires: libtermcap.so.2
+       %define curl curl
     %endif
     %if %(awk '$1 == "Fedora" && $4 ~ /4.*/ { exit 1; }' /etc/redhat-release; echo $?)
         %define dist fedora
         %define disttag fc
         %define distver 4
        %define requires_libtermcap Requires: libtermcap.so.2
+       %define curl curl
     %endif
     %if %(awk '$1 == "Fedora" && $4 ~ /5.*/ { exit 1; }' /etc/redhat-release; echo $?)
         %define dist fedora
         %define disttag fc
         %define distver 5
        %define requires_libtermcap Requires: libtermcap.so.2
+       %define curl curl
     %endif
     %if %(awk '$1 == "Fedora" && $4 ~ /6.*/ { exit 1; }' /etc/redhat-release; echo $?)
         %define dist fedora
         %define disttag fc
         %define distver 6
        %define requires_libtermcap Requires: libtermcap.so.2
+       %define curl curl
     %endif
     %if %(awk '$1 == "Fedora" && $3 ~ /7.*/ { exit 1; }' /etc/redhat-release; echo $?)
         %define dist fedora
         %define disttag fc
         %define distver 7
        %define requires_libtermcap Requires: libtermcap.so.2
+       %define curl curl
     %endif
     # if macro cannot have an empty test and we're just testing the existance
     %if %{?fedora:yes}%{!?fedora:no} == yes
         %define distver %{fedora}
        %if %{distver} <= 8
            %define requires_libtermcap Requires: libtermcap.so.2
+           %define curl curl
+       %endif
+       %if %{distver} >= 9
+           %define curl libcurl
        %endif
         %if %{_host_cpu} == x86_64 && %{_target_cpu} == i686
                 # Do nothing if PKG_CONFIG_PATH was set by the user above.
@@ -86,7 +99,9 @@
         %define distver 3
         %define tarver 1.14
        %define requires_libtermcap Requires: libtermcap.so.2
+       %define curl curl
        %define without_ipv6 --without-ipv6
+       %undefine LDFLAGS
     %endif
     %if %(awk '$1 == "Red" && $7 ~ /4.*/ { exit 1; }' /etc/redhat-release; echo $?)
         %define dist redhat
         %define distver 4
         %define tarver 1.14
        %define requires_libtermcap Requires: libtermcap.so.2
+       %define curl curl
     %endif
     %if %(awk '$1 == "CentOS" && $3 ~ /4.*/ { exit 1; }' /etc/redhat-release; echo $?)
        %define dist redhat
        %define distver 4
        %define tarver 1.14
        %define requires_libtermcap Requires: libtermcap.so.2
+       %define curl curl
     %endif
     %if %(awk '$1 == "Red" && $7 ~ /5.*/ { exit 1; }' /etc/redhat-release; echo $?)
         %define dist redhat
         %define disttag rhel
         %define distver 5
-       %define requires_libtermcap Requires: libtermcap.so.2
+       %define curl curl
     %endif
     %if %(awk '$1 == "CentOS" && $3 ~ /5.*/ { exit 1; }' /etc/redhat-release; echo $?)
         %define dist redhat
         %define disttag rhel
         %define distver 5
-       %define requires_libtermcap Requires: libtermcap.so.2
+       %define curl curl
+    %endif
+    %if %(awk '$1 == "Red" && $7 ~ /6.*/ { exit 1; }' /etc/redhat-release; echo $?)
+        %define dist redhat
+        %define disttag rhel
+        %define distver 6
+       %define curl libcurl
     %endif
     
     # If dist is undefined, we didn't detect.
     %if %(awk '$1 == "SUSE" { exit 1; }' /etc/SuSE-release; echo $?)
         %define disttag %(awk '$1=="SUSE" {$3=="Enterprise" ? TAG="sles" : TAG="suse" ; print TAG}' /etc/SuSE-release)
         %define distver %(awk '$1=="SUSE" {$3=="Enterprise" ? VER=$5 : VER=$3 ; print VER}' /etc/SuSE-release)
+       # Always use quotes in rpm comparisons if values could be interpreted
+       # as integers.
+       %define curl curl
+       %if "%{distver}" == "9"
+           %undefine LDFLAGS
+       %endif
     %endif
 %endif
 
@@ -187,8 +216,8 @@ BuildRequires: readline
 # Note: newer distros have changed most *-devel to lib*-devel, and added a
 # provides tag for backwards compat.
 BuildRequires: readline-devel
-BuildRequires: curl >= 7.10.0
-BuildRequires: curl-devel >= 7.10.0
+BuildRequires: %{curl} >= 7.10.0
+BuildRequires: %{curl}-devel >= 7.10.0
 BuildRequires: openssl
 BuildRequires: openssl-devel
 BuildRequires: perl(ExtUtils::Embed)
@@ -202,10 +231,7 @@ Requires: /usr/sbin/usermod
 Requires: fileutils
 Requires: grep
 Requires: gnuplot
-Requires: libc.so.6
-Requires: libm.so.6
-Requires: libnsl.so.1
-Requires: curl >= 7.10.0
+Requires: %{curl} >= 7.10.0
 Requires: openssl
 Requires: xinetd
 Requires: perl >= 5.6.0
@@ -223,9 +249,6 @@ Requires: grep
 %{?requires_libtermcap}
 %{?requires_initscripts}
 Requires: xinetd
-Requires: libc.so.6
-Requires: libm.so.6
-Requires: libnsl.so.1
 Requires: perl >= 5.6.0
 Requires: tar >= %{tarver}
 Requires: readline
@@ -242,9 +265,6 @@ Group: %{rpm_group}
 Requires: /bin/awk
 Requires: fileutils
 Requires: grep
-Requires: libc.so.6
-Requires: libm.so.6
-Requires: libnsl.so.1
 %{?requires_libtermcap}
 %{?requires_initscripts}
 Requires: xinetd
@@ -348,9 +368,11 @@ Amanda Documentation is available at: http://wiki.zmanda.com/
 # Set PKG_CONFIG_PATH=some/path if some/path was set on the command line, or by 
 # the platform detection bits.
 # without_ipv6 should only be defined on rhel3.
+# LDFLAGS macro is defined except on rhel3.
 ./configure \
         %{?PKG_CONFIG_PATH: PKG_CONFIG_PATH=%PKG_CONFIG_PATH} \
         CFLAGS="%{optflags} -g -pipe" CXXFLAGS="%{optflags}" \
+        %{?LDFLAGS:LDFLAGS="${LDFLAGS} %{?LDFLAGS:%LDFLAGS}"} \
         --quiet \
         --prefix=%{PREFIX} \
         --sysconfdir=%{SYSCONFDIR} \
index 4135986c9d3f240e10f7683d488e236bbcffd21b..9c6e88fd05941f8babc9382378df61311ee68b8a 100644 (file)
@@ -859,6 +859,10 @@ sub _new_from_uri { # (note: this sub is patched by the installcheck)
     die "$pkgname->new did not return an Amanda::Changer object or an Amanda::Changer::Error"
        unless ($rv->isa("Amanda::Changer") or $rv->isa("Amanda::Changer::Error"));
 
+    if ($rv->isa("Amanda::Changer::Error")) {
+       return $rv;
+    }
+
     if ($rv->isa("Amanda::Changer")) {
        # add an instance variable or two
        $rv->{'fatal_error'} = undef;
index e633c451385e6c8715157bbe76011bbe6f76a351..a04fd0def83e370f2cf7d0791d7a3fe61f959f4f 100644 (file)
@@ -189,11 +189,12 @@ sub inventory {
            if ($label) {
                $s->{'label'} = $self->_get_slot_label($slot);
                $s->{'f_type'} = "".$Amanda::Header::F_TAPESTART;
+               $s->{'device_status'} = "".$DEVICE_STATUS_SUCCESS;
            } else {
                $s->{'label'} = undef;
                $s->{'f_type'} = "".$Amanda::Header::F_EMPTY;
+               $s->{'device_status'} = "".$DEVICE_STATUS_VOLUME_UNLABELED;
            }
-           $s->{'device_status'} = "".$DEVICE_STATUS_SUCCESS;
            $s->{'current'} = 1 if $slot eq $current;
            push @inventory, $s;
        }
index 38a10b7a777e53d3687c5f1db6c91ee9a4330993..924b2101b2ca6cf5fbcaa2de72ab1b15f6b10e7d 100644 (file)
@@ -790,13 +790,13 @@ sub get_device { # (overridden by subclasses)
 
     my $device = Amanda::Device->new($device_name);
     if ($device->status != $DEVICE_STATUS_SUCCESS) {
-       return $self->make_error("failed", undef,
+       return Amanda::Changer->make_error("fatal", undef,
                reason => "unknown",
                message => "opening '$device_name': " . $device->error_or_status());
     }
 
     if (my $err = $self->{'config'}->configure_device($device)) {
-       return $self->make_error("failed", undef,
+       return Amanda::Changer->make_error("fatal", undef,
                reason => "unknown",
                message => $err);
     }
index 48bd05a72eb6470ec90b4f032f9b2105dea53b51..94e79e75bc13cc7af8a7374c2da730889a0a89e6 100644 (file)
@@ -1304,13 +1304,16 @@ sub check_missing_fail_strange
 
     foreach my $dle_entry (@dles) {
         my $alldumps = $self->get_dle_info(@$dle_entry, 'dumps');
+       my $driver = $self->get_dle_info(@$dle_entry, 'driver');
        my $planner = $self->get_dle_info(@$dle_entry, 'planner');
 
        if ($planner && $planner->{'status'} eq 'fail') {
            $self->{flags}{dump_failed} = 1;
        } elsif ($planner && $planner->{'status'} eq 'skipped') {
            # We don't want these to be counted as missing below
-       } elsif (!defined $alldumps->{$self->{'run_timestamp'}}) {
+       } elsif (!defined $alldumps->{$self->{'run_timestamp'}} and
+                !$driver and
+                !$planner) {
            $self->{flags}{results_missing} = 1;
            $self->{flags}{exit_status} |= STATUS_MISSING;
        } else {
index 84ff5c3ebb21e3bdf619ec2ed04850583982efce..b40890a3f438b32200ea182170066471c8bac205 100644 (file)
@@ -537,6 +537,7 @@ sub output_error_summaries
 
        if ($report->get_flag('results_missing') and
            !defined($alldumps->{$report->{run_timestamp}}) and
+           !$dle->{driver} and
            !$dle->{planner}) {
            push @missing_failures, "$hostname $qdisk RESULTS MISSING";
        }
@@ -964,14 +965,6 @@ sub output_details
 
                # note: copied & modified from calculate_stats.
                if (
-                      exists $try->{dumper}
-                   && exists $try->{taper}
-                   && defined $try->{taper}->{kb}
-                   && (   $try->{taper}{status} eq 'done'
-                       || $try->{taper}{status} eq 'partial')
-                 ) {
-                   $outsize = $try->{taper}->{kb};
-               } elsif (
                    exists $try->{dumper}
                    && exists $try->{chunker}
                    && defined $try->{chunker}->{kb}
@@ -979,6 +972,14 @@ sub output_details
                        || $try->{chunker}{status} eq 'partial')
                  ) {
                    $outsize = $try->{chunker}->{kb};
+               } elsif (
+                      exists $try->{dumper}
+                   && exists $try->{taper}
+                   && defined $try->{taper}->{kb}
+                   && (   $try->{taper}{status} eq 'done'
+                       || $try->{taper}{status} eq 'partial')
+                 ) {
+                   $outsize = $try->{taper}->{kb};
                }
            }
        }
@@ -993,7 +994,8 @@ sub output_details
             push @$notes,
               "big estimate: $hostname $qdisk $dle->{estimate}{level}",
               sprintf('                est: %.0f%s    out %.0f%s',
-                $est->{ckb}, $disp_unit, $outsize, $disp_unit)
+                $self->tounits($est->{ckb}), $disp_unit,
+               $self->tounits($outsize), $disp_unit)
               if (defined $est->{'ckb'} && ($est->{ckb} * .9 > $outsize)
                 && ($est->{ckb} - $outsize > 1.0e5));
         }
@@ -1167,14 +1169,19 @@ sub get_summary_info
       : $tail_quote_trunc->($disk, $col_spec->[1]->[COLSPEC_WIDTH]);
 
     my $alldumps = $dle_info->{'dumps'};
-    if ($dle_info->{'planner'} &&
-        $dle_info->{'planner'}->{'status'} eq 'fail') {
-       my @rv;
-       push @rv, 'nodump-FAILED';
-       push @rv, $hostname;
-       push @rv, $disk_out;
-       push @rv, ("",) x 9;
-       push @rvs, [@rv];
+    if (($dle_info->{'planner'} &&
+         $dle_info->{'planner'}->{'status'} eq 'fail') or
+       ($dle_info->{'driver'} &&
+         $dle_info->{'driver'}->{'status'} eq 'fail')) {
+       # Do not report driver error if we have a try
+       if (!exists $alldumps->{$report->{'run_timestamp'}}) {
+           my @rv;
+           push @rv, 'nodump-FAILED';
+           push @rv, $hostname;
+           push @rv, $disk_out;
+           push @rv, ("",) x 9;
+           push @rvs, [@rv];
+       }
     } elsif ($dle_info->{'planner'} &&
         $dle_info->{'planner'}->{'status'} eq 'skipped') {
        my @rv;
@@ -1279,7 +1286,7 @@ sub get_summary_info
 
        # sometimes the driver logs an orig_size of -1, which makes the
        # compression percent very large and negative
-       $orig_size = 0 if ($orig_size < 0);
+       $orig_size = 0 if (defined $orig_size && $orig_size < 0);
 
        # pre-format the compression column, with '--' replacing 100% (i.e.,
        # no compression)
index 6a746ba623e6df860027e927dcf3f6f0f716cda0..4a2d28445a8416a6565356d0921a1ccceb26f02c 100644 (file)
@@ -309,7 +309,8 @@ sub remove_tapelabel {
 
 sub add_tapelabel {
     my $self = shift;
-    my ($datestamp, $label, $comment, $reuse) = @_;
+    my ($datestamp, $label, $comment, $reuse, $meta, $barcode) = @_;
+    # $meta is unused
     $reuse = 1 if !defined $reuse;
 
     # prepend this (presumably new) volume to the beginning of the list
@@ -317,6 +318,7 @@ sub add_tapelabel {
        'datestamp' => $datestamp,
        'label' => $label,
        'reuse' => $reuse,
+       'barcode' => $barcode,
        'comment' => $comment,
     };
     $self->_update_positions();
@@ -335,8 +337,9 @@ sub write {
        my $datestamp = $tle->{'datestamp'};
        my $label = $tle->{'label'};
        my $reuse = $tle->{'reuse'} ? 'reuse' : 'no-reuse';
+       my $barcode = (defined $tle->{'barcode'})? (" BARCODE:" . $tle->{'barcode'}) : '';
        my $comment = (defined $tle->{'comment'})? (" #" . $tle->{'comment'}) : '';
-       $result &&= print $fhn "$datestamp $label $reuse$comment\n";
+       $result &&= print $fhn "$datestamp $label $reuse$barcode$comment\n";
     }
     my $result_close = close($fhn);
     $result &&= $result_close;
@@ -388,13 +391,14 @@ sub _read_tapelist {
     my @tles;
     open(my $fh, "<", $self->{'filename'}) or return $self;
     while (my $line = <$fh>) {
-       my ($datestamp, $label, $reuse, $comment)
-           = $line =~ m/^([0-9]*)\s([^\s]*)\s(reuse|no-reuse)\s*(?:\#(.*))?$/mx;
+       my ($datestamp, $label, $reuse, $barcode, $comment)
+           = $line =~ m/^([0-9]*)\s([^\s]*)\s(reuse|no-reuse)\s*(?:BARCODE:([^\s]*))?\s*(?:\#(.*))?$/mx;
        next if !defined $datestamp; # silently filter out bogus lines
        push @tles, {
            'datestamp' => $datestamp,
            'label' => $label,
            'reuse' => ($reuse eq 'reuse'),
+           'barcode' => $barcode,
            'comment' => $comment,
        };
     }
index 510fd29bdd1910480d13233e0fd8104a39176863..84eeee6df103a819c923abb8db53d3e898edc6b2 100644 (file)
@@ -124,7 +124,8 @@ sub remove_tapelabel {
 
 sub add_tapelabel {
     my $self = shift;
-    my ($datestamp, $label, $comment, $reuse) = @_;
+    my ($datestamp, $label, $comment, $reuse, $meta, $barcode) = @_;
+    # $meta is unused
     $reuse = 1 if !defined $reuse;
 
     # prepend this (presumably new) volume to the beginning of the list
@@ -132,6 +133,7 @@ sub add_tapelabel {
        'datestamp' => $datestamp,
        'label' => $label,
        'reuse' => $reuse,
+       'barcode' => $barcode,
        'comment' => $comment,
     };
     $self->_update_positions();
@@ -150,8 +152,9 @@ sub write {
        my $datestamp = $tle->{'datestamp'};
        my $label = $tle->{'label'};
        my $reuse = $tle->{'reuse'} ? 'reuse' : 'no-reuse';
+       my $barcode = (defined $tle->{'barcode'})? (" BARCODE:" . $tle->{'barcode'}) : '';
        my $comment = (defined $tle->{'comment'})? (" #" . $tle->{'comment'}) : '';
-       $result &&= print $fhn "$datestamp $label $reuse$comment\n";
+       $result &&= print $fhn "$datestamp $label $reuse$barcode$comment\n";
     }
     my $result_close = close($fhn);
     $result &&= $result_close;
@@ -203,13 +206,14 @@ sub _read_tapelist {
     my @tles;
     open(my $fh, "<", $self->{'filename'}) or return $self;
     while (my $line = <$fh>) {
-       my ($datestamp, $label, $reuse, $comment)
-           = $line =~ m/^([0-9]*)\s([^\s]*)\s(reuse|no-reuse)\s*(?:\#(.*))?$/mx;
+       my ($datestamp, $label, $reuse, $barcode, $comment)
+           = $line =~ m/^([0-9]*)\s([^\s]*)\s(reuse|no-reuse)\s*(?:BARCODE:([^\s]*))?\s*(?:\#(.*))?$/mx;
        next if !defined $datestamp; # silently filter out bogus lines
        push @tles, {
            'datestamp' => $datestamp,
            'label' => $label,
            'reuse' => ($reuse eq 'reuse'),
+           'barcode' => $barcode,
            'comment' => $comment,
        };
     }
index 3efbbb59607263ab399824fd669a1ca30477aeb5..6447cf992ac42694e81379b2be606494437c2719 100644 (file)
@@ -1205,7 +1205,7 @@ sub _volume_cb  {
     # inform the xdt about this new device before starting it
     $self->{'xdt'}->use_device($device);
 
-    my $result = $self->_device_start($device, $access_mode, $new_label, $is_new);
+    my $result = $self->_device_start($reservation, $access_mode, $new_label, $is_new);
     if ($result == 0) {
        # try reading the label to see whether we erased the tape
        my $erased = 0;
@@ -1281,8 +1281,9 @@ sub _volume_cb  {
 # return a message for others error
 sub _device_start {
     my $self = shift;
-    my ($device, $access_mode, $new_label, $is_new) = @_;
+    my ($reservation, $access_mode, $new_label, $is_new) = @_;
 
+    my $device = $reservation->{'device'};
     my $tl = $self->{'taperscan'}->{'tapelist'};
 
     if (!defined $tl) { # For Mock::Taperscan in installcheck
@@ -1301,7 +1302,7 @@ sub _device_start {
            $tl->unlock();
            return $err;
        } else {
-           $tl->add_tapelabel('0', $new_label, undef, 0);
+           $tl->add_tapelabel('0', $new_label, undef, 0, undef, $reservation->{'barcode'});
            $tl->write();
        }
        $self->dbg("generate new label '$new_label'");
index 9e23fd9ac03c76449e4e2b8ee066d7730b9fcfdc..c114a81eb406cfe369d772e795e49761bb78eb3f 100644 (file)
@@ -610,6 +610,13 @@ sub setup_and_start_dump {
         %get_xfer_dest_args = get_splitting_args_from_config(
                %splitting_args);
        $get_xfer_dest_args{'max_memory'} = getconf($CNF_DEVICE_OUTPUT_BUFFER_SIZE);
+       if (!getconf_seen($CNF_DEVICE_OUTPUT_BUFFER_SIZE)) {
+           my $device = $self->{'scribe'}->get_device();
+           my $block_size4 = $device->block_size * 4;
+           if ($block_size4 > $get_xfer_dest_args{'max_memory'}) {
+               $get_xfer_dest_args{'max_memory'} = $block_size4;
+           }
+       }
        $get_xfer_dest_args{'can_cache_inform'} = ($msgtype eq Amanda::Taper::Protocol::FILE_WRITE);
 
        # if we're unable to fulfill the user's splitting needs, we can still give
index 90090d83f2863d8fb840725525d392b5532aaea5..87aa4abce3656b127b6385340ca25009ec379a1a 100644 (file)
@@ -691,7 +691,6 @@ CONFIG_CLOBBER_MY_CONFIG = @CONFIG_CLOBBER_MY_CONFIG@
 CONFIG_DIR = @CONFIG_DIR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CURL_CONFIG = @CURL_CONFIG@
 CYGPATH_W = @CYGPATH_W@
 DD = @DD@
 DEFAULT_AMANDATES_FILE = @DEFAULT_AMANDATES_FILE@
index 6f7d85bf3d837034f4a3624d865c334e374d6f1c..bf964fedc8e49e93f4a1e05864fbded320da2acf 100644 (file)
@@ -387,7 +387,6 @@ CONFIG_CLOBBER_MY_CONFIG = @CONFIG_CLOBBER_MY_CONFIG@
 CONFIG_DIR = @CONFIG_DIR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CURL_CONFIG = @CURL_CONFIG@
 CYGPATH_W = @CYGPATH_W@
 DD = @DD@
 DEFAULT_AMANDATES_FILE = @DEFAULT_AMANDATES_FILE@
index 4c8869f7d938d58d610cff89f653cb1804aff2d3..47e99e803ead58094f52e2a13d63bbb281b4c3ec 100644 (file)
@@ -247,7 +247,6 @@ CONFIG_CLOBBER_MY_CONFIG = @CONFIG_CLOBBER_MY_CONFIG@
 CONFIG_DIR = @CONFIG_DIR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CURL_CONFIG = @CURL_CONFIG@
 CYGPATH_W = @CYGPATH_W@
 DD = @DD@
 DEFAULT_AMANDATES_FILE = @DEFAULT_AMANDATES_FILE@
index 28060da0e2ebe9c057e3516abf11100892d7a293..f385fb54b67078017b3cef985de47eb6ffc1f7a5 100644 (file)
@@ -365,7 +365,6 @@ CONFIG_CLOBBER_MY_CONFIG = @CONFIG_CLOBBER_MY_CONFIG@
 CONFIG_DIR = @CONFIG_DIR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CURL_CONFIG = @CURL_CONFIG@
 CYGPATH_W = @CYGPATH_W@
 DD = @DD@
 DEFAULT_AMANDATES_FILE = @DEFAULT_AMANDATES_FILE@
index baac50775b4705014b229ac80b813ffb2a5f6e05..9da45bd65065d0fa63867fa94e2b972c60564a1c 100644 (file)
@@ -96,6 +96,9 @@ static char *dump_device_name = NULL;
 static char *errstr;
 static char *amidxtaped_line = NULL;
 extern char *localhost;
+static char header_buf[32768];
+static int  header_size = 0;
+
 
 /* global pid storage for interrupt handler */
 pid_t extract_restore_child_pid = -1;
@@ -2106,6 +2109,7 @@ writer_intermediary(
     ctl_data.bsu           = NULL;
     ctl_data.bytes_read    = 0;
 
+    header_size = 0;
     security_stream_read(amidxtaped_streams[DATAFD].fd,
                         read_amidxtaped_data, &ctl_data);
 
@@ -2289,7 +2293,7 @@ extract_files(void)
        all_level = g_slist_append(all_level, level);
     }
     if (dump_dle) {
-       g_slist_free_full(dump_dle->levellist);
+       slist_free_full(dump_dle->levellist, g_free);
        dump_dle->levellist = all_level;
        run_client_scripts(EXECUTE_ON_PRE_RECOVER, &g_options, dump_dle,
                           stderr);
@@ -2337,7 +2341,7 @@ extract_files(void)
            dump_dle->levellist = g_slist_append(dump_dle->levellist, level);
            run_client_scripts(EXECUTE_ON_INTER_LEVEL_RECOVER, &g_options,
                               dump_dle, stderr);
-           g_slist_free_full(dump_dle->levellist);
+           slist_free_full(dump_dle->levellist, g_free);
            dump_dle->levellist = NULL;
        }
 
@@ -2373,7 +2377,7 @@ extract_files(void)
        if (dump_dle) {
            run_client_scripts(EXECUTE_ON_POST_LEVEL_RECOVER, &g_options,
                               dump_dle, stderr);
-           g_slist_free_full(dump_dle->levellist);
+           slist_free_full(dump_dle->levellist, g_free);
            dump_dle->levellist = NULL;
        }
     }
@@ -2381,7 +2385,7 @@ extract_files(void)
        dump_dle->levellist = all_level;
        run_client_scripts(EXECUTE_ON_POST_RECOVER, &g_options, dump_dle,
                           stderr);
-       g_slist_free_full(dump_dle->levellist);
+       slist_free_full(dump_dle->levellist, g_free);
        all_level = NULL;
        dump_dle->levellist = NULL;
     }
@@ -2687,10 +2691,24 @@ read_amidxtaped_data(
        GPtrArray  *errarray;
        g_option_t  g_options;
        data_path_t data_path_set = DATA_PATH_AMANDA;
+       int to_move;
+
+       to_move = MIN(32768-header_size, size);
+       memcpy(header_buf+header_size, buf, to_move);
+       header_size += to_move;
 
+       g_debug("read header %zd => %d", size, header_size);
+       if (header_size < 32768) {
+            security_stream_read(amidxtaped_streams[DATAFD].fd,
+                                read_amidxtaped_data, cookie);
+           return;
+       } else if (header_size > 32768) {
+           error("header_size is %d\n", header_size);
+       }
+       assert (to_move == size);
        /* parse the file header */
        fh_init(&ctl_data->file);
-       parse_file_header(buf, &ctl_data->file, (size_t)size);
+       parse_file_header(header_buf, &ctl_data->file, (size_t)header_size);
 
        /* call backup_support_option */
        g_options.config = get_config_name();
index 554a5bf8e5dbe94d71ee5cec7f89909a976f01ed..5570746b4605ec238558379449846a2283de32cc 100644 (file)
@@ -544,7 +544,6 @@ CONFIG_CLOBBER_MY_CONFIG = @CONFIG_CLOBBER_MY_CONFIG@
 CONFIG_DIR = @CONFIG_DIR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CURL_CONFIG = @CURL_CONFIG@
 CYGPATH_W = @CYGPATH_W@
 DD = @DD@
 DEFAULT_AMANDATES_FILE = @DEFAULT_AMANDATES_FILE@
index 96e117b41195a1ca5e49288e1174b201c1639831..7930e0bd2dc86cef8d9d700e758530d47db522dc 100644 (file)
@@ -246,7 +246,7 @@ usage(void)
 {
     int i;
 
-    g_fprintf(stderr, _("\nUsage: %s <conf> <command> {<args>} [-o configoption]* ...\n"),
+    g_fprintf(stderr, _("\nUsage: %s [-o configoption]* <conf> <command> {<args>} ...\n"),
            get_pname());
     g_fprintf(stderr, _("    Valid <command>s are:\n"));
     for (i = 0; i < NCMDS; i++)
@@ -1164,15 +1164,37 @@ find(
 
     output_find = find_dump(&diskq); /* Add deleted dump to diskq */
     if(argc-(start_argc-1) > 0) {
+       find_result_t *afind = NULL;
+       find_result_t *afind_next = NULL;
+       find_result_t *new_output_find = NULL;
+       disk_t *dp;
+
        amfree(errstr);
-       free_find_result(&output_find);
        errstr = match_disklist(&diskq, argc-(start_argc-1),
                                        argv+(start_argc-1));
        if (errstr) {
            g_printf("%s", errstr);
            amfree(errstr);
        }
-       output_find = find_dump(NULL);
+       for (afind = output_find; afind; afind = afind_next) {
+           afind_next = afind->next;
+           dp = lookup_disk(afind->hostname, afind->diskname);
+           if (dp->todo) {
+               afind->next = new_output_find;
+               new_output_find = afind;
+           } else {
+               amfree(afind->timestamp);
+               amfree(afind->write_timestamp);
+               amfree(afind->hostname);
+               amfree(afind->diskname);
+               amfree(afind->label);
+               amfree(afind->status);
+               amfree(afind->dump_status);
+               amfree(afind->message);
+               amfree(afind);
+           }
+       }
+       output_find = new_output_find;
     } else if (errstr) {
        g_printf("%s", errstr);
        amfree(errstr);
@@ -1492,7 +1514,7 @@ holding(
                 amfree(dumpstr);
                dumpfile_free_data(&file);
             }
-            g_slist_free_full(file_list);
+            slist_free_full(file_list, g_free);
             break;
 
         case HOLDING_DELETE:
@@ -1510,7 +1532,7 @@ holding(
                     error(_("Could not delete '%s'"), (char *)li->data);
                 }
             }
-            g_slist_free_full(file_list);
+            slist_free_full(file_list, g_free);
             break;
     }
 }
@@ -2069,6 +2091,7 @@ disklist_one(
     sle_t *excl;
     identlist_t pp_scriptlist;
     estimatelist_t  estimates;
+    dumptype_t *dtype = lookup_dumptype(dp->dtype_name);
 
     hp = dp->host;
     ip = hp->netif;
@@ -2264,6 +2287,15 @@ disklist_one(
     g_printf("        skip-incr %s\n", (dp->skip_incr? "YES" : "NO"));
     g_printf("        skip-full %s\n", (dp->skip_full? "YES" : "NO"));
     g_printf("        allow-split %s\n", (dp->allow_split ? "YES" : "NO"));
+    if (dumptype_seen(dtype, DUMPTYPE_RECOVERY_LIMIT)) {
+       char **rl, **r1;
+       rl = val_t_display_strs(dumptype_getconf((dtype),
+                               DUMPTYPE_RECOVERY_LIMIT), 1);
+       for(r1 = rl; *r1 != NULL; r1++) {
+           g_printf("        recovery-limit %s\n", *r1);
+       free(*r1);
+       }
+    }
     g_printf("        spindle %d\n", dp->spindle);
     pp_scriptlist = dp->pp_scriptlist;
     while (pp_scriptlist != NULL) {
@@ -2272,10 +2304,8 @@ disklist_one(
     }
 
     {
-       dumptype_t *dtype;
        char **prop, **p1;;
 
-       dtype = lookup_dumptype(dp->dtype_name);
        prop = val_t_display_strs(dumptype_getconf((dtype), DUMPTYPE_PROPERTY),
                                  0);
        for(p1 = prop; *p1 != NULL; p1++) {
index ba1699f4dfbff53a1d07086e261feecda594ba14..d9689cb9ad8ae55966b8b1fbf1a805dd0c79009b 100644 (file)
@@ -22,7 +22,7 @@ use strict;
 use warnings;
 
 use Amanda::Util qw( :constants );
-use Amanda::Config qw( :init );
+use Amanda::Config qw( :init :getconf );
 use Amanda::Logfile qw( :logtype_t log_add $amanda_log_trace_log );
 use Amanda::Debug;
 use Amanda::Device qw( :constants );
@@ -187,6 +187,13 @@ sub do_check {
            print "WARNING: Media access mode is WRITE_ONLY; dumps may not be recoverable\n";
        }
 
+       if (getconf_seen($CNF_DEVICE_OUTPUT_BUFFER_SIZE)) {
+           my $dobs = getconf($CNF_DEVICE_OUTPUT_BUFFER_SIZE);
+           my $block_size = $res->{'device'}->property_get("BLOCK_SIZE");
+           if ($block_size * 2 > $dobs) {
+               print "WARNING: DEVICE-OUTPUT-BUFFER-SIZE is not at least twice the block size of the device, it should be increased for better throughput\n";
+           }
+       }
        $steps->{'check_overwrite'}->();
     };
 
@@ -225,7 +232,8 @@ sub do_check {
        $finished_cb->();
     };
 }
-do_check(\&Amanda::MainLoop::quit);
+
+Amanda::MainLoop::call_later(\&do_check, \&Amanda::MainLoop::quit);
 Amanda::MainLoop::run();
 Amanda::Util::finish_application();
 exit($exit_status);
index b0074562c06c1352f1315cdbd1adfa7db498144c..95c7fa3426f00ac5b3dfaf20eda15562fb65d163 100644 (file)
@@ -44,7 +44,7 @@ use Amanda::Xfer qw( :constants );
 
 sub usage {
     print <<EOF;
-USAGE: amcheckdump config [ --timestamp|-t timestamp ] [-o configoption]*
+USAGE: amcheckdump [ --timestamp|-t timestamp ] [-o configoption]* <conf>
     amcheckdump validates Amanda dump images by reading them from storage
 volume(s), and verifying archive integrity if the proper tool is locally
 available. amcheckdump does not actually compare the data located in the image
index 383fa85c7ed0356ad8504368ebf2ac6d782b4fcb..4caf7182bdcc8dece102e8b454df86de7b874e9f 100644 (file)
@@ -151,7 +151,7 @@ INFO amdump amdump pid $$
 START driver date $timestamp
 ERROR amdump $msg
 EOF
-    run_subprocess("$sbindir/amreport", $config_name, '--from-amdump', '-l', $fakelogfile);
+    run_subprocess("$sbindir/amreport", $config_name, '--from-amdump', '-l', $fakelogfile, @config_overrides_opts);
     unlink($fakelogfile);
 
     # and we're done here
@@ -164,7 +164,7 @@ sub do_amcleanup {
     # logfiles are still around.  First, try an amcleanup -p to see if
     # the actual processes are already dead
     debug("runing amcleanup -p");
-    run_subprocess("$sbindir/amcleanup", '-p', $config_name);
+    run_subprocess("$sbindir/amcleanup", '-p', $config_name, @config_overrides_opts);
 
     # and check again
     return unless -f $amdump_log_filename || -f $trace_log_filename;
@@ -192,7 +192,8 @@ sub start_logfiles {
     # undef first.. stupid perl.
     debug("beginning amdump log");
     $amdump_log = undef;
-    open($amdump_log, ">", $amdump_log_filename)
+    # Must be opened in append so that all subprocess can write to it.
+    open($amdump_log, ">>", $amdump_log_filename)
        or die("could not open amdump log file '$amdump_log_filename': $!");
 }
 
@@ -261,7 +262,7 @@ sub planner_driver_pipeline {
 
 sub do_amreport {
     debug("running amreport");
-    run_subprocess("$sbindir/amreport", $config_name, '--from-amdump');
+    run_subprocess("$sbindir/amreport", $config_name, '--from-amdump', @config_overrides_opts);
 }
 
 sub roll_trace_logs {
@@ -272,12 +273,12 @@ sub roll_trace_logs {
 
 sub trim_trace_logs {
     debug("trimming old trace logs");
-    run_subprocess("$amlibexecdir/amtrmlog", $config_name);
+    run_subprocess("$amlibexecdir/amtrmlog", $config_name, @config_overrides_opts);
 }
 
 sub trim_indexes {
     debug("trimming old indexes");
-    run_subprocess("$amlibexecdir/amtrmidx", $config_name);
+    run_subprocess("$amlibexecdir/amtrmidx", $config_name, @config_overrides_opts);
 }
 
 sub roll_amdump_logs {
index 4d28e44755118821311cffa1a934d9a8234fa689..66bf6dc10af9e4e8532543b1dc1c1f338e50a949 100644 (file)
@@ -245,7 +245,7 @@ main(
                    stralloc((char *)datestamp->data),
                    g_compare_strings);
        }
-       g_slist_free_full(all_datestamps);
+       slist_free_full(all_datestamps, g_free);
     }
     else {
        /* otherwise, in batch mode, use all datestamps */
@@ -405,9 +405,9 @@ main(
        }
     }
 
-    g_slist_free_full(datestamp_list);
+    slist_free_full(datestamp_list, g_free);
     datestamp_list = NULL;
-    g_slist_free_full(holding_list);
+    slist_free_full(holding_list, g_free);
     holding_list = NULL;
 
     if(redirect) { /* rename errfile */
@@ -599,7 +599,7 @@ pick_datestamp(void)
                }
                chupper = (char)toupper(ch);
                if (chupper < 'A' || chupper > max_char) {
-                   g_slist_free_full(r_datestamp_list);
+                   slist_free_full(r_datestamp_list, g_free);
                    r_datestamp_list = NULL;
                    break;
                }
@@ -607,7 +607,7 @@ pick_datestamp(void)
                                           stralloc(datestamps[chupper - 'A']));
            } while ((ch = *a++) != '\0');
            if (r_datestamp_list && ch == '\0') {
-               g_slist_free_full(datestamp_list);
+               slist_free_full(datestamp_list, g_free);
                datestamp_list = r_datestamp_list;
                break;
            }
@@ -681,7 +681,7 @@ redirect_stderr(void)
 
     fflush(stdout); fflush(stderr);
     errfile = vstralloc(conf_logdir, "/amflush", NULL);
-    if((fderr = open(errfile, O_WRONLY| O_CREAT | O_TRUNC, 0600)) == -1) {
+    if((fderr = open(errfile, O_WRONLY| O_APPEND | O_CREAT | O_TRUNC, 0600)) == -1) {
        error(_("could not open %s: %s"), errfile, strerror(errno));
        /*NOTREACHED*/
     }
index ea22fc28e9f88e564f22fca30f1c73be6f4bc69d..a4f2672fc1c1f96dd215d80382d356534dd7d774 100644 (file)
@@ -429,7 +429,7 @@ sub plan_cb {
     my $peer = $ENV{'AMANDA_AUTHENTICATED_PEER'};
     if (defined $recovery_limit) { # undef -> no recovery limit
        if (!$peer) {
-           warning("a recovery limit is specified for this DLE, but no authenticted ".
+           warning("a recovery limit is specified for this DLE, but no authenticated ".
                    "peer name is available; rejecting request.");
            $self->sendmessage("No matching dumps found");
            return $self->quit();
@@ -442,12 +442,12 @@ sub plan_cb {
                    $matched = 1;
                    last;
                }
-           }
-
-           # otherwise use match_host to allow match expressions
-           if (match_host($rl, $peer)) {
-               $matched = 1;
-               last;
+           } else {
+               # otherwise use match_host to allow match expressions
+               if (match_host($rl, $peer)) {
+                   $matched = 1;
+                   last;
+               }
            }
        }
        if (!$matched) {
index d2fd4fdafdaa7ed7ac03086c97c943a6aac0db19..f9103b8cb1f0d06cbadf0d5257d8376dc60fdeb4 100644 (file)
@@ -42,8 +42,7 @@ my $exit_status = 0;
 my %subcommands;
 
 sub usage {
-    print STDERR "Usage: amlabel <conf> <label> [slot <slot-number>] "
-              . "[-f] [-o configoption]*\n";
+    print STDERR "Usage: amlabel [-f] [-o configoption]* <conf> <label> [slot <slot-number>]\n";
     exit(1);
 }
 
@@ -219,7 +218,7 @@ sub main {
            # update the tapelist
            $tl->reload(1);
            $tl->remove_tapelabel($opt_label);
-           $tl->add_tapelabel("0", $opt_label, undef, 1);
+           $tl->add_tapelabel("0", $opt_label, undef, 1, undef, $res->{'barcode'});
            $tl->write();
 
            print "Success!\n";
index 9990635a68b0bca0bb8470d771521544a9d20f32..20f84b47def913ce160315cd6f738490aeaf28e4 100644 (file)
@@ -31,8 +31,8 @@ use POSIX;
 
 sub Usage {
     print STDERR <<END;
-Usage: $0 [[--config] CONFIG] [--hostwidth width] [--diskwidth width]
-         [-skipmissed] [--last] [--num0] [--togo0] [--verbose]
+Usage: $0 [--hostwidth width] [--diskwidth width] [--skipmissed]
+         [--last] [--num0] [--togo0] [--verbose] [[--config] CONFIG]
 
 This script generates to standard output an overview of the filesystems
 dumped over time and the type of dump done on a particular day, such as
@@ -66,10 +66,12 @@ GetOptions('config=s'               => \$opt_config,
           'verbose'            => \$opt_verbose)
 or Usage();
 
-if(@ARGV == 1) {
-  $opt_config = $ARGV[0];
-} else {
-  Usage();
+unless(defined($opt_config)) {
+    if (@ARGV == 1) {
+       $opt_config = $ARGV[0];
+    } else {
+       Usage();
+    }
 }
 
 #Initialize configuration
index 9264e00aafca8bd1a035c47b475dcbcd77c6ce0a..cb3127579d49bc96a40cc7888c2fca022ba5ebe0 100755 (executable)
@@ -67,7 +67,7 @@ my (@outputs, @output_queue);
 sub usage
 {
     print <<EOF;
-Usage: amreport conf [--version] [--help] [-o configoption]
+Usage: amreport [--version] [--help] [-o configoption] <conf>
   command-line mode options:
     [--log=logfile] [--ps=filename] [--text=filename] [--xml=filename]
     [--print=printer] [--mail-text=recipient]
@@ -363,7 +363,8 @@ sub open_mail_output
 
     my $datestamp =
       $report->get_program_info(
-        $report->get_flag("amflush_run") ? "amflush" : "planner", "start" );
+        $report->get_flag("amflush_run") ? "amflush" : 
+       $report->get_flag("amvault_run") ? "amvault" : "planner", "start" );
 
     $datestamp /= 1000000 if $datestamp > 99999999;
     $datestamp = int($datestamp);
index 80f6c231d1822207b33c22b0ac36f223682600d6..3fe0ebba286d3a5945722bfa1e6a4739f6f8e8c0 100644 (file)
@@ -1563,9 +1563,11 @@ sub busytime() {
 }
 
 sub usage() {
-       print "amstatus [--config] config [--file amdump_file]\n";
+       print "amstatus [--file amdump_file]\n";
        print "         [--summary] [--dumping] [--waitdumping] [--waittaper]\n";
        print "         [--dumpingtape] [--writingtape] [--finished] [--failed]\n";
-       print "         [--estimate] [--gestimate] [--stats] [--date] [--locale-independent-date-format]\n";
+       print "         [--estimate] [--gestimate] [--stats] [--date]\n";
+       print "         [--locale-independent-date-format]\n";
+       print "         [--config] <config>\n";
        exit 0;
 }
index 490a68eace11054322c7929fc8bc00125887375a..df7b176d5025d2f11255b686fc06c7cece0ce1b0 100644 (file)
@@ -49,7 +49,7 @@ sub usage {
     $finished_cb = sub { exit(1); } if (!$finished_cb or !(ref($finished_cb) eq "CODE"));
 
     print STDERR <<EOF;
-Usage: amtape <conf> <command> {<args>} [-o configoption]*
+Usage: amtape [-o configoption]* <conf> <command> {<args>}
   Valid commands are:
 EOF
     local $Text::Wrap::columns = 80 - 20;
@@ -258,11 +258,13 @@ sub {
            my $line = "slot $sl->{slot}:";
            if (!defined($sl->{device_status}) && !defined($sl->{label})) {
                $line .= " unknown state";
-           } elsif ($sl->{'status'} == Amanda::Changer::SLOT_EMPTY) {
+           } elsif ($sl->{'state'} == Amanda::Changer::SLOT_EMPTY) {
                $line .= " empty";
            } else {
                if (defined $sl->{label}) {
                    $line .= " label $sl->{label}";
+               } elsif ($sl->{'device_status'} == $DEVICE_STATUS_VOLUME_UNLABELED) {
+                   $line .= " blank";
                } elsif ($sl->{'device_status'} != $DEVICE_STATUS_SUCCESS) {
                    $line .= "device error";
                } elsif ($sl->{'f_type'} != $Amanda::Header::F_TAPESTART) {
index 5071d42d3e39fd9e201da50647c2daa21cc7856f..ebfc627e92ad496e1b2d9867f92e5e289937f259 100644 (file)
@@ -140,6 +140,7 @@ sub new {
 
        exporting => 0, # is an export in progress?
        call_after_export => undef, # call this when export complete
+       config_overrides_opts => $params{'config_overrides_opts'},
 
        # called when the operation is complete, with the exit
        # status
@@ -619,8 +620,10 @@ sub quit {
            log_add_full($L_FINISH, "driver", "fake driver finish");
            log_add($L_INFO, "pid-done $$");
 
-           debug("invoking amreport..");
-           system("$sbindir/amreport", $self->{'config_name'}, "--from-amdump");
+           my @amreport_cmd = ("$sbindir/amreport", $self->{'config_name'}, "--from-amdump",
+                                @{$self->{'config_overrides_opts'}});
+           debug("invoking amreport (" . join(" ", @amreport_cmd) . ")");
+           system(@amreport_cmd);
 
            debug("rolling logfile..");
            log_rename($self->{'dst_write_timestamp'});
@@ -888,6 +891,7 @@ EOF
 Amanda::Util::setup_application("amvault", "server", $CONTEXT_CMDLINE);
 
 my $config_overrides = new_config_overrides($#ARGV+1);
+my @config_overrides_opts;
 my $opt_quiet = 0;
 my $opt_dry_run = 0;
 my $opt_fulls_only = 0;
@@ -926,7 +930,10 @@ sub add_autolabel {
 
 Getopt::Long::Configure(qw{ bundling });
 GetOptions(
-    'o=s' => sub { add_config_override_opt($config_overrides, $_[1]); },
+    'o=s' => sub {
+       push @config_overrides_opts, "-o" . $_[1];
+       add_config_override_opt($config_overrides, $_[1]);
+    },
     'q|quiet' => \$opt_quiet,
     'n|dry-run' => \$opt_dry_run,
     'fulls-only' => \$opt_fulls_only,
@@ -980,7 +987,8 @@ my $vault = Amvault->new(
     opt_dry_run => $opt_dry_run,
     quiet => $opt_quiet,
     fulls_only => $opt_fulls_only,
-    opt_export => $opt_export);
+    opt_export => $opt_export,
+    config_overrides_opts => \@config_overrides_opts);
 Amanda::MainLoop::call_later(sub { $vault->run($exit_cb) });
 Amanda::MainLoop::run();
 
index bbf8676653fe4f2b747b5e93d8d7a93b2196a316..0c4c2b0a0c1f79c293d7f7dc72d277ebdef76aba 100644 (file)
@@ -96,8 +96,8 @@ static ssize_t write_tapeheader(int, dumpfile_t *);
 static void databuf_init(struct databuf *, int, char *, off_t, off_t);
 static int databuf_flush(struct databuf *);
 
-static int startup_chunker(char *, off_t, off_t, struct databuf *, int *);
-static int do_chunk(int, struct databuf *, int);
+static int startup_chunker(char *, off_t, off_t, struct databuf *, int *, int *);
+static int do_chunk(int, struct databuf *, int, int);
 
 /* we use a function pointer for full_write, so that we can "shim" in
  * full_write_with_fake_enospc for testing */
@@ -122,6 +122,7 @@ main(
     config_overrides_t *cfg_ovr = NULL;
     char *cfg_opt = NULL;
     char *m;
+    int header_socket;
     int data_socket;
 
     /*
@@ -307,13 +308,13 @@ main(
            }
 
            if ((header_fd = startup_chunker(filename, use, chunksize, &db,
-                                            &data_socket)) < 0) {
+                                            &header_socket, &data_socket)) < 0) {
                q = quote_string(vstrallocf(_("[chunker startup failed: %s]"), errstr));
                putresult(TRYAGAIN, "%s %s\n", handle, q);
                error("startup_chunker failed: %s", errstr);
            }
            command_in_transit = NULL;
-           if (header_fd >= 0 && do_chunk(header_fd, &db, data_socket)) {
+           if (header_fd >= 0 && do_chunk(header_fd, &db, header_socket, data_socket)) {
                char kb_str[NUM_STR_SIZE];
                char kps_str[NUM_STR_SIZE];
                double rt;
@@ -430,6 +431,7 @@ startup_chunker(
     off_t              use,
     off_t              chunksize,
     struct databuf *   db,
+    int                *headersocket,
     int                *datasocket)
 {
     int header_fd, outfd;
@@ -475,7 +477,6 @@ startup_chunker(
        aclose(data_socket);
        return -1;
     }
-    aclose(header_socket);
 
     tmp_filename = vstralloc(filename, ".tmp", NULL);
     pc = strrchr(tmp_filename, '/');
@@ -505,6 +506,7 @@ startup_chunker(
     amfree(tmp_filename);
     databuf_init(db, outfd, filename, use, chunksize);
     db->filename_seq++;
+    *headersocket = header_socket;
     *datasocket = data_socket;
     return header_fd;
 }
@@ -513,6 +515,7 @@ static int
 do_chunk(
     int                        header_fd,
     struct databuf *   db,
+    int                 header_socket,
     int                 data_socket)
 {
     size_t nread;
@@ -531,6 +534,8 @@ do_chunk(
      * chunk code will rewrite it.
      */
     nread = full_read(header_fd, header_buf, SIZEOF(header_buf));
+    aclose(header_fd);
+    aclose(header_socket);
     if (nread != sizeof(header_buf)) {
        if(errno != 0) {
            errstr = vstrallocf(_("cannot read header: %s"), strerror(errno));
@@ -568,7 +573,6 @@ do_chunk(
        aclose(data_socket);
        return 0;
     }
-    aclose(data_socket);
 
     /*
      * We've written the file header.  Now, just write data until the
@@ -579,12 +583,16 @@ do_chunk(
        db->datain += nread;
        while(db->dataout < db->datain) {
            if(!databuf_flush(db)) {
+               aclose(data_fd);
+               aclose(data_socket);
                return 0;
            }
        }
     }
     while(db->dataout < db->datain) {
        if(!databuf_flush(db)) {
+           aclose(data_fd);
+           aclose(data_socket);
            return 0;
        }
     }
@@ -592,6 +600,8 @@ do_chunk(
        dumpsize += (off_t)1;                   /* count partial final KByte */
        filesize += (off_t)1;
     }
+    aclose(data_fd);
+    aclose(data_socket);
     return 1;
 }
 
index d29a4f33d0cb6cad3717ca6a0272865fbaa2db51..28a842f73158997ebd24db81912d8a22c2dbfe88 100644 (file)
@@ -247,7 +247,7 @@ cmdline_match_holding(
        dumpfile_free_data(&file);
     }
 
-    g_slist_free_full(holding_files);
+    slist_free_full(holding_files, g_free);
 
     return matching_files;
 }
index bd62e74bbb158ae23f2965a8785cb1d550cf4647..2806c1ad80a434dc068becd7421b4f57896651a8 100644 (file)
@@ -158,7 +158,7 @@ cmdline_format_dumpspec_components(
  * the dumpspec list contains a dumpspec with all blank
  * entries, all holding files are returned.
  *
- * Free the resulting list with g_slist_free_full()
+ * Free the resulting list with slist_free_full()
  *
  * @param dumpspec_list: a list of dumpspecs
  * @returns: a list of holding disk filenames.
index 9a0bb27bceba68fa9c80773cb6c6e0cbf4587458..6b257c5d7679b23f986817b86eebc97c89f40424 100644 (file)
@@ -499,31 +499,9 @@ main(
        headqueue_disk(&directq, diskp);
     }
 
-    /* handle any remaining dumps by dumping directly to tape, if possible */
-    while(!empty(directq) && taper_fd > 0) {
-       time_t  sleep_time  = 100000000;
-       disk_t *sleep_diskp = NULL;
-       time_t  now         = time(0);
-
-       /* Find one we can do immediately or the sonner */
-       for (diskp = directq.head; diskp != NULL; diskp = diskp->next) {
-           if (diskp->to_holdingdisk == HOLD_REQUIRED ||
-               degraded_mode) {
-               sleep_time = 0;
-               sleep_diskp = diskp;
-           } else if (diskp->host->start_t - now < sleep_time &&
-                      diskp->start_t -now < sleep_time) {
-               if (diskp->host->start_t > diskp->start_t)
-                   sleep_time = diskp->host->start_t - now;
-               else
-                   sleep_time = diskp->start_t - now;
-               sleep_diskp = diskp;
-           }
-       }
-       diskp = sleep_diskp;
-       if (sleep_time > 0)
-           sleep(sleep_time);
-       remove_disk(&directq, diskp);
+    /* log error for any remaining dumps */
+    while(!empty(directq)) {
+       diskp = dequeue_disk(&directq);
 
        if (diskp->to_holdingdisk == HOLD_REQUIRED) {
            char *qname = quote_string(diskp->name);
@@ -538,7 +516,7 @@ main(
            log_add(L_FAIL, "%s %s %s %d [%s]",
                diskp->host->hostname, qname, sched(diskp)->datestamp,
                sched(diskp)->level,
-               _("can't dump in degraded mode"));
+               _("can't dump in non degraded mode"));
            amfree(qname);
        }
        else {
@@ -555,10 +533,6 @@ main(
        }
     }
 
-    /* fill up the tape or start new one for taperflush */
-    startaflush();
-    event_loop(0);
-
     short_dump_state();                                /* for amstatus */
 
     g_printf(_("driver: QUITTING time %s telling children to quit\n"),
@@ -1038,12 +1012,13 @@ allow_dump_dle(
     } else if (!taper && (holdp =
        find_diskspace(sched(diskp)->est_size, cur_idle, NULL)) == NULL) {
        *cur_idle = max(*cur_idle, IDLE_NO_DISKSPACE);
-       if (empty(tapeq) && dumper_to_holding == 0 && rq != &directq) {
+       if (empty(tapeq) && dumper_to_holding == 0 && rq != &directq && all_taper_idle()) {
            remove_disk(rq, diskp);
            if (diskp->to_holdingdisk != HOLD_REQUIRED) {
                enqueue_disk(&directq, diskp);
                diskp->to_holdingdisk = HOLD_NEVER;
            }
+           if (empty(*rq)) force_flush = 1;
        }
     } else if (client_constrained(diskp)) {
        free_assignedhd(holdp);
@@ -1326,6 +1301,7 @@ start_some_dumps(
                dumper_cmd(dumper, PORT_DUMP, diskp, NULL);
            }
            diskp->host->start_t = now + 15;
+           if (empty(*rq)) force_flush = 1;
 
            if (result_argv)
                g_strfreev(result_argv);
@@ -1607,6 +1583,9 @@ handle_taper_result(
 
            if (strcmp(result_argv[2], "INPUT-ERROR") == 0) {
                taper->input_error = newstralloc(taper->input_error, result_argv[4]);
+               taper->result = FAILED;
+               amfree(qname);
+               break;
            } else if (strcmp(result_argv[2], "INPUT-GOOD") != 0) {
                taper->tape_error = newstralloc(taper->tape_error,
                                               _("Taper protocol error"));
@@ -1620,6 +1599,9 @@ handle_taper_result(
            if (strcmp(result_argv[3], "TAPE-ERROR") == 0) {
                taper->state &= ~TAPER_STATE_TAPE_STARTED;
                taper->tape_error = newstralloc(taper->tape_error, result_argv[5]);
+               taper->result = FAILED;
+               amfree(qname);
+               break;
            } else if (strcmp(result_argv[3], "TAPE-GOOD") != 0) {
                taper->state &= ~TAPER_STATE_TAPE_STARTED;
                taper->tape_error = newstralloc(taper->tape_error,
@@ -1657,6 +1639,9 @@ handle_taper_result(
 
            if (strcmp(result_argv[2], "INPUT-ERROR") == 0) {
                taper->input_error = newstralloc(taper->input_error, result_argv[5]);
+               taper->result = FAILED;
+               amfree(qname);
+               break;
            } else if (strcmp(result_argv[2], "INPUT-GOOD") != 0) {
                taper->tape_error = newstralloc(taper->tape_error,
                                               _("Taper protocol error"));
@@ -1670,6 +1655,9 @@ handle_taper_result(
            if (strcmp(result_argv[3], "TAPE-ERROR") == 0) {
                taper->state &= ~TAPER_STATE_TAPE_STARTED;
                taper->tape_error = newstralloc(taper->tape_error, result_argv[6]);
+               taper->result = FAILED;
+               amfree(qname);
+               break;
            } else if (strcmp(result_argv[3], "TAPE-GOOD") != 0) {
                taper->state &= ~TAPER_STATE_TAPE_STARTED;
                taper->tape_error = newstralloc(taper->tape_error,
@@ -2114,6 +2102,7 @@ dumper_taper_result(
     dp->inprogress = 0;
     deallocate_bandwidth(dp->host->netif, sched(dp)->est_kps);
     taper->dumper = NULL;
+    taper->disk = NULL;
     sched(dp)->dumper = NULL;
     sched(dp)->taper = NULL;
     start_some_dumps(&runq);
@@ -2759,7 +2748,7 @@ read_flush(
            continue;
        }
 
-       if(file.dumplevel < 0 || file.dumplevel > 9) {
+       if (file.dumplevel < 0 || file.dumplevel > 399) {
            log_add(L_INFO, _("%s: ignoring file with bogus dump level %d."),
                    destname, file.dumplevel);
            amfree(destname);
@@ -2825,6 +2814,8 @@ read_flush(
     if (!nodump) {
        schedule_ev_read = event_register((event_id_t)0, EV_READFD,
                                          read_schedule, NULL);
+    } else {
+       force_flush = 1;
     }
 }
 
@@ -3137,6 +3128,7 @@ read_schedule(
        log_add(L_WARNING, _("WARNING: got empty schedule from planner"));
     if(need_degraded==1) start_degraded_mode(&runq);
     schedule_done = 1;
+    if (empty(runq)) force_flush = 1;
     start_some_dumps(&runq);
     startaflush();
 }
@@ -3805,13 +3797,9 @@ tape_action(
     }
 
     // when to start a flush
-    // We don't start a flush if taper_tape_started == 1 && dump_to_disk_terminated && force_flush == 0,
-    // it is a criteria need to exit the first event_loop without flushing everything to tape,
-    // they will be flush in another event_loop.
     if (taper->state & TAPER_STATE_IDLE) {
        if (!degraded_mode && (!empty(tapeq) || !empty(directq)) &&
-           (((taper->state & TAPER_STATE_TAPE_STARTED) &&
-             force_flush == 1) ||                              // if tape already started and force_flush
+           (taper->state & TAPER_STATE_TAPE_STARTED ||         // tape already started 
              !empty(roomq) ||                                  // holding disk constraint
              idle_reason == IDLE_NO_DISKSPACE ||               // holding disk constraint
              (my_flush_threshold_dumped < tapeq_size &&                // flush-threshold-dumped &&
index ea08d31e0ab0e8e68ab1141595ea6b1b2349f0a6..1cfb530dddd5d78b53c1142fb29bdb284af7d00c 100644 (file)
@@ -1010,7 +1010,7 @@ update_info_dumper(
 
     if (origsize >= (off_t)0 && level == info.last_level) {
        info.consecutive_runs++;
-    } else if (origsize >= (off_t)0 || level < info.last_level) {
+    } else if (origsize >= (off_t)0) {
        info.last_level = level;
        info.consecutive_runs = 1;
     }
index 996c9ddf46c947b87a606b9d87d3e4880f7678f6..13c8b65fdc8d6a7799aafc76645fe7536a6bab80 100644 (file)
@@ -122,6 +122,8 @@ static time_t conf_dtimeout;
 static int indexfderror;
 static int set_datafd;
 static char *dle_str = NULL;
+static char *errfname = NULL;
+static int   errf_lines = 0;
 
 static dumpfile_t file;
 
@@ -162,7 +164,7 @@ static void process_dumpeof(void);
 static void    process_dumpline(const char *);
 static void    add_msg_data(const char *, size_t);
 static void    parse_info_line(char *);
-static void    log_msgout(logtype_t);
+static int     log_msgout(logtype_t);
 static char *  dumper_get_security_conf (char *, void *);
 
 static int     runcompress(int, pid_t *, comp_t, char *);
@@ -905,6 +907,7 @@ bad_line:
        break;
     }
     g_fprintf(errf, "%s\n", str);
+    errf_lines++;
     amfree(buf);
 }
 
@@ -992,24 +995,33 @@ add_msg_data(
 }
 
 
-static void
+static int
 log_msgout(
     logtype_t  typ)
 {
     char *line;
+    int   count = 0;
 
     fflush(errf);
     if (fseeko(errf, 0L, SEEK_SET) < 0) {
        dbprintf(_("log_msgout: warning - seek failed: %s\n"), strerror(errno));
     }
     while ((line = agets(errf)) != NULL) {
+       if (errf_lines >= 100 && count >= 20)
+           break;
        if (line[0] != '\0') {
                log_add(typ, "%s", line);
        }
        amfree(line);
+       count++;
+    }
+    amfree(line);
+
+    if (errf_lines >= 100) {
+       log_add(typ, "Look in the '%s' file for full error messages", errfname);
     }
 
-    afclose(errf);
+    return errf_lines < 100;
 }
 
 /* ------------- */
@@ -1157,13 +1169,14 @@ do_dump(
     char *indexfile_tmp = NULL;
     char *indexfile_real = NULL;
     char level_str[NUM_STR_SIZE];
+    char *time_str;
     char *fn;
     char *q;
     times_t runtime;
     double dumptime;   /* Time dump took in secs */
-    char *errfname = NULL;
     pid_t indexpid = -1;
     char *m;
+    int to_unlink = 1;
 
     startclock();
 
@@ -1174,23 +1187,29 @@ do_dump(
     fh_init(&file);
 
     g_snprintf(level_str, SIZEOF(level_str), "%d", level);
+    time_str = get_timestamp_from_time(0);
     fn = sanitise_filename(diskname);
+    errf_lines = 0;
     errfname = newvstralloc(errfname,
-                           AMANDA_TMPDIR,
-                           "/", hostname,
+                           AMANDA_DBGDIR,
+                           "/log.error", NULL);
+    mkdir(errfname, 0700);
+    errfname = newvstralloc(errfname,
+                           AMANDA_DBGDIR,
+                           "/log.error/", hostname,
                            ".", fn,
                            ".", level_str,
+                           ".", time_str,
                            ".errout",
                            NULL);
     amfree(fn);
+    amfree(time_str);
     if((errf = fopen(errfname, "w+")) == NULL) {
        errstr = newvstrallocf(errstr, "errfile open \"%s\": %s",
                              errfname, strerror(errno));
        amfree(errfname);
        goto failed;
     }
-    unlink(errfname);                          /* so it goes away on close */
-    amfree(errfname);
 
     if (streams[INDEXFD].fd != NULL) {
        indexfile_real = getindexfname(hostname, diskname, dumper_timestamp, level);
@@ -1298,13 +1317,19 @@ do_dump(
     case 1:
        log_start_multiline();
        log_add(L_STRANGE, "%s %s %d [%s]", hostname, qdiskname, level, errstr);
-       log_msgout(L_STRANGE);
+       to_unlink = log_msgout(L_STRANGE);
        log_end_multiline();
 
        break;
     }
 
-    if (errf) afclose(errf);
+    if (errf)
+       afclose(errf);
+    if (errfname) {
+       if (to_unlink)
+           unlink(errfname);
+       amfree(errfname);
+    }
 
     if (data_path == DATA_PATH_AMANDA)
        aclose(db->fd);
@@ -1398,11 +1423,17 @@ failed:
     log_add(L_FAIL, _("%s %s %s %d [%s]"), hostname, qdiskname, dumper_timestamp,
            level, errstr);
     if (errf) {
-       log_msgout(L_FAIL);
+       to_unlink = log_msgout(L_FAIL);
     }
     log_end_multiline();
 
-    if (errf) afclose(errf);
+    if (errf)
+       afclose(errf);
+    if (errfname) {
+       if (to_unlink)
+           unlink(errfname);
+       amfree(errfname);
+    }
 
     if (indexfile_tmp) {
        unlink(indexfile_tmp);
@@ -1484,7 +1515,7 @@ read_mesgfd(
                                   STREAM_BUFSIZE, 0, NULL, 0);
            if (db->fd == -1) {
                errstr = newvstrallocf(errstr,
-                                      _("Can't opendata output stream: %s"),
+                                      _("Can't open data output stream: %s"),
                                       strerror(errno));
                dump_result = 2;
                stop_dump();
@@ -1771,7 +1802,7 @@ stop_dump(void)
     cmdargs = get_pending_cmd();
     if (cmdargs) {
        if (cmdargs->cmd != ABORT) {
-           error(_("beurk"));
+           error(_("beurk %d"), cmdargs->cmd);
        }
        amfree(errstr);
        errstr = stralloc(cmdargs->argv[1]);
index dadbd5738ba0f7b6d844f25d5816ad13177f7ce6..74b712c464865e9f3a3f177c750a8c5a7ac9d961 100644 (file)
@@ -40,7 +40,8 @@
 #include "cmdline.h"
 
 int find_match(char *host, char *disk);
-char *find_nicedate(char *datestamp);
+static char *find_nicedate(char *datestamp);
+static int len_find_nicedate(char *datestamp);
 static int find_compare(const void *, const void *);
 static int parse_taper_datestamp_log(char *logline, char **datestamp, char **level);
 static gboolean logfile_has_tape(char * label, char * datestamp,
@@ -287,7 +288,7 @@ search_holding_disk(
        dumpfile_free_data(&file);
     }
 
-    g_slist_free_full(holding_file_list);
+    slist_free_full(holding_file_list, g_free);
 }
 
 static int
@@ -402,10 +403,9 @@ print_find_result(
     for(output_find_result=output_find;
        output_find_result;
        output_find_result=output_find_result->next) {
-       char *qdiskname;
        char *s;
 
-       len=strlen(find_nicedate(output_find_result->timestamp));
+       len=len_find_nicedate(output_find_result->timestamp);
        if((int)len > max_len_datestamp)
            max_len_datestamp=(int)len;
 
@@ -413,16 +413,12 @@ print_find_result(
        if((int)len > max_len_hostname)
            max_len_hostname = (int)len;
 
-       qdiskname=quote_string(output_find_result->diskname);
-       len=strlen(qdiskname);
-       amfree(qdiskname);
+       len = len_quote_string(output_find_result->diskname);
        if((int)len > max_len_diskname)
            max_len_diskname = (int)len;
 
         if (output_find_result->label != NULL) {
-            char *qlabel = quote_string(output_find_result->label);
-            len=strlen(qlabel);
-            amfree(qlabel);
+           len = len_quote_string(output_find_result->label);
             if((int)len > max_len_label)
                 max_len_label = (int)len;
         }
@@ -540,7 +536,7 @@ find_match(
     return (dp && dp->todo);
 }
 
-char *
+static char *
 find_nicedate(
     char *datestamp)
 {
@@ -576,6 +572,17 @@ find_nicedate(
     return nice;
 }
 
+static int
+len_find_nicedate(
+    char *datestamp)
+{
+    if(strlen(datestamp) <= 8) {
+       return 10;
+    } else {
+       return 19;
+    }
+}
+
 static int
 parse_taper_datestamp_log(
     char *logline,
@@ -695,7 +702,7 @@ search_logfile(
     char *number;
     int fileno;
     char *current_label = stralloc("");
-    char *rest;
+    char *rest, *rest_undo;
     char *ck_label=NULL;
     int level = 0;
     off_t filenum;
@@ -709,9 +716,6 @@ search_logfile(
     find_result_t *a_part_find;
     gboolean right_label = FALSE;
     gboolean found_something = FALSE;
-    regex_t regex;
-    int reg_result;
-    regmatch_t pmatch[4];
     double sec;
     off_t kb;
     off_t orig_kb;
@@ -886,69 +890,82 @@ search_logfile(
                continue;
            }
            rest = s - 1;
-           if((s = strchr(s, '\n')) != NULL) {
-               *s = '\0';
-           }
-
-           /* extract sec, kb, kps, orig-kb from 'rest', if present.  This isn't the stone age
-            * anymore, so we'll just do it the easy way (a regex) */
-           bzero(&regex, sizeof(regex));
-           reg_result = regcomp(&regex,
-                   "\\[sec ([0-9.]+) kb ([0-9]+) kps [0-9.]+ orig-kb ([0-9]+)\\]", REG_EXTENDED);
-           if (reg_result != 0) {
-               error("Error compiling regular expression for parsing log lines");
-               /* NOTREACHED */
-           }
-
-           /* an error here just means the line wasn't found -- not fatal. */
-           reg_result = regexec(&regex, rest, sizeof(pmatch)/sizeof(*pmatch), pmatch, 0);
-           if (reg_result == 0) {
-               char *str;
-
-               str = find_regex_substring(rest, pmatch[1]);
-               sec = atof(str);
-               amfree(str);
-
-               str = find_regex_substring(rest, pmatch[2]);
-               kb = OFF_T_ATOI(str);
-               amfree(str);
-
-               str = find_regex_substring(rest, pmatch[3]);
-               orig_kb = OFF_T_ATOI(str);
-               amfree(str);
-           } else {
-               regfree(&regex);
-               bzero(&regex, sizeof(regex));
-               /* the .* at the end of this captures the old {wr: .. } statistics */
-               reg_result = regcomp(&regex,
-                   "\\[sec ([0-9.]+) kb ([0-9]+) kps [0-9.]+.*\\]", REG_EXTENDED);
-               if (reg_result != 0) {
-                   error("Error compiling regular expression for parsing log lines");
-                   /* NOTREACHED */
+           skip_non_whitespace(s, ch);
+           rest_undo = s - 1;
+           *rest_undo = '\0';
+           if (strcmp(rest, "[sec") == 0) {
+               skip_whitespace(s, ch);
+               if(ch == '\0') {
+                   g_printf(_("strange log line in %s \"%s\"\n"),
+                            logfile, curstr);
+                   continue;
+               }
+               sec = atof(s - 1);
+               skip_non_whitespace(s, ch);
+               skip_whitespace(s, ch);
+               rest = s - 1;
+               skip_non_whitespace(s, ch);
+               rest_undo = s - 1;
+               *rest_undo = '\0';
+               if (strcmp(rest, "kb") != 0) {
+                   g_printf(_("Bstrange log line in %s \"%s\"\n"),
+                            logfile, curstr);
+                   continue;
                }
 
-               /* an error here just means the line wasn't found -- not fatal. */
-               reg_result = regexec(&regex, rest, sizeof(pmatch)/sizeof(*pmatch), pmatch, 0);
-               if (reg_result == 0) {
-                   char *str;
-
-                   str = find_regex_substring(rest, pmatch[1]);
-                   sec = atof(str);
-                   amfree(str);
+               skip_whitespace(s, ch);
+               if (ch == '\0') {
+                    g_printf(_("strange log line in %s \"%s\"\n"),
+                             logfile, curstr);
+                    continue;
+               }
+               kb = atof(s - 1);
+               skip_non_whitespace(s, ch);
+               skip_whitespace(s, ch);
+               rest = s - 1;
+               skip_non_whitespace(s, ch);
+               rest_undo = s - 1;
+               *rest_undo = '\0';
+               if (strcmp(rest, "kps") != 0) {
+                   g_printf(_("Cstrange log line in %s \"%s\"\n"),
+                            logfile, curstr);
+                   continue;
+               }
 
-                   str = find_regex_substring(rest, pmatch[2]);
-                   kb = OFF_T_ATOI(str);
-                   amfree(str);
+               skip_whitespace(s, ch);
+               if (ch == '\0') {
+                   g_printf(_("strange log line in %s \"%s\"\n"),
+                            logfile, curstr);
+                   continue;
+               }
+               /* kps = atof(s - 1); */
+               skip_non_whitespace(s, ch);
+               skip_whitespace(s, ch);
+               rest = s - 1;
+               skip_non_whitespace(s, ch);
+               rest_undo = s - 1;
+               *rest_undo = '\0';
+               if (strcmp(rest, "orig-kb") != 0) {
                    orig_kb = 0;
                } else {
-                   sec = 0;
-                   kb = 0;
-                   orig_kb = 0;
+
+                   skip_whitespace(s, ch);
+                   if(ch == '\0') {
+                       g_printf(_("strange log line in %s \"%s\"\n"),
+                                logfile, curstr);
+                       continue;
+                   }
+                   orig_kb = atof(s - 1);
                }
+           } else {
+               sec = 0;
+               kb = 0;
+               orig_kb = 0;
+               *rest_undo = ' ';
            }
-           if (strncmp(rest, "error ", 6) == 0) rest += 6;
-           if (strncmp(rest, "config ", 7) == 0) rest += 7;
-           regfree(&regex);
+
+           if (strncmp(rest, "error", 5) == 0) rest += 6;
+           if (strncmp(rest, "config", 6) == 0) rest += 7;
 
            dp = lookup_disk(host,disk);
            if ( dp == NULL ) {
index 15286bd3a432760d2577a2811aece707efce90b0..26766316dac233c22ef30bfac247730bb65e8324 100644 (file)
@@ -558,7 +558,7 @@ holding_get_files_for_flush(
        dumpfile_free_data(&file);
     }
 
-    if (file_list) g_slist_free_full(file_list);
+    if (file_list) slist_free_full(file_list, g_free);
 
     return result_list;
 }
@@ -584,7 +584,7 @@ holding_get_all_datestamps(void)
        dumpfile_free_data(&dfile);
     }
 
-    g_slist_free_full(all_files);
+    slist_free_full(all_files, g_free);
 
     return datestamps;
 }
index fd18d8428c165ca3a1687b45490525d3534f21ec..e2c1497c76f221d5eedcb5aca31423de0c06d9a9 100644 (file)
@@ -462,7 +462,7 @@ main(
            amfree(qhname);
            dumpfile_free_data(&file);
        }
-       g_slist_free_full(holding_list);
+       slist_free_full(holding_list, g_free);
        holding_list = NULL;
     }
     g_fprintf(stderr, _("ENDFLUSH\n"));
index 515eea59a84d261e1b37ee180f00eb09d4e6a623..24a91ff9625ac2af1a2ea47b9ecdf3422a4eaa23 100644 (file)
@@ -514,8 +514,10 @@ internal_server_estimate(
            size = (gint64)10000;
            if (size > tapetype_get_length(tape)/2)
                size = tapetype_get_length(tape)/2;
-           if (size > level0_size/2)
-               size = level0_size/2;
+           if (level0_size > 0 && dp->strategy != DS_NOFULL) {
+               if (size > level0_size/2)
+                   size = level0_size/2;
+           }
            *stats = 0;
        }
     }
@@ -548,10 +550,18 @@ internal_server_estimate(
            size = (gint64)100000;
            if (size > tapetype_get_length(tape)/2)
                size = tapetype_get_length(tape)/2;
-           if (size > level0_size/2)
-               size = level0_size/2;
+           if (level0_size > 0 && dp->strategy != DS_NOFULL) {
+               if (size > level0_size/2)
+                   size = level0_size/2;
+           }
            *stats = 0;
        }
+    } else {
+       char *conf_tapetype = getconf_str(CNF_TAPETYPE);
+       tapetype_t *tape = lookup_tapetype(conf_tapetype);
+       size = (gint64)100000;
+       if (size > tapetype_get_length(tape)/2)
+           size = tapetype_get_length(tape)/2;
     }
 
     return size;
index d3afe12bbfd42bb467554ad395c48578e3f1b581..406a0c426ee6e1d5340b3030799101d6c562b61b 100644 (file)
@@ -102,6 +102,8 @@ write_tapelist(
        g_fprintf(tapef, "%s %s", tp->datestamp, tp->label);
        if(tp->reuse) g_fprintf(tapef, " reuse");
        else g_fprintf(tapef, " no-reuse");
+       if (tp->barcode)
+           g_fprintf(tapef, " BARCODE:%s", tp->barcode);
        if (tp->comment)
            g_fprintf(tapef, " #%s", tp->comment);
        g_fprintf(tapef, "\n");
@@ -396,6 +398,16 @@ parse_tapeline(
        s[-1] = '\0';
        skip_whitespace(s, ch);
     }
+    if (strncmp_const(s - 1, "BARCODE:") == 0) {
+       s1 = s - 1 + 8;
+       skip_non_whitespace(s, ch);
+       s[-1] = '\0';
+       skip_whitespace(s, ch);
+       tp->barcode = stralloc(s1);
+    } else {
+       tp->barcode = NULL;
+    }
+
 
     if (*(s - 1) == '#') {
        tp->comment = stralloc(s); /* skip leading '#' */
index c1b3b659e7733588d3987e23bb616bb5931c5f05..960edfb68171908583b1e44d7f5798fd6e43baeb 100644 (file)
@@ -40,6 +40,7 @@ typedef struct tape_s {
     char * datestamp;
     int reuse;
     char *label;
+    char *barcode;
     char *comment;
 } tape_t;
 
index 0f01227ef60bc9289192c0e5bf244b4ae57d53a8..4dd0add20e9c78399907360ce9d36b4779200ebb 100644 (file)
@@ -388,7 +388,6 @@ CONFIG_CLOBBER_MY_CONFIG = @CONFIG_CLOBBER_MY_CONFIG@
 CONFIG_DIR = @CONFIG_DIR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
-CURL_CONFIG = @CURL_CONFIG@
 CYGPATH_W = @CYGPATH_W@
 DD = @DD@
 DEFAULT_AMANDATES_FILE = @DEFAULT_AMANDATES_FILE@
index 271369c516b598dbc29421e3c3a97bca196ad9d6..ce71f113b5a581f89c9f58a2db415ca5923b5888 100644 (file)
@@ -1141,10 +1141,10 @@ finalize_impl(
     /* close our pipes and fd's if they're still open */
     if (self->pipe[0] != -1) close(self->pipe[0]);
     if (self->pipe[1] != -1) close(self->pipe[1]);
-    if (self->input_listen_socket != -1) close(self->input_listen_socket);
-    if (self->output_listen_socket != -1) close(self->output_listen_socket);
     if (self->input_data_socket != -1) close(self->input_data_socket);
     if (self->output_data_socket != -1) close(self->output_data_socket);
+    if (self->input_listen_socket != -1) close(self->input_listen_socket);
+    if (self->output_listen_socket != -1) close(self->output_listen_socket);
     if (self->read_fd != -1) close(self->read_fd);
     if (self->write_fd != -1) close(self->write_fd);