[pkg-bacula-commits] [bacula] 01/01: update to upstream 5.2.13

Carsten Leonhardt cl-guest at moszumanska.debian.org
Sun Jul 19 22:01:12 UTC 2015


This is an automated email from the git hooks/post-receive script.

cl-guest pushed a commit to branch master
in repository bacula.

commit a151b47b0ac8fb034bba52dd077e2dfa824a89b3
Author: Carsten Leonhardt <leo at debian.org>
Date:   Mon Jul 20 00:00:08 2015 +0200

    update to upstream 5.2.13
---
 .gitignore                                         |    4 +
 ChangeLog                                          |  421 +-
 Makefile.in                                        |    8 +-
 ReleaseNotes                                       |  436 +-
 autoconf/Make.common.in                            |    1 +
 autoconf/acconfig.h                                |   11 +-
 autoconf/aclocal.m4                                |    1 +
 autoconf/bacula-macros/db.m4                       |  109 +-
 autoconf/bacula-macros/os.m4                       |   11 +
 autoconf/config.h.in                               |   62 +-
 autoconf/config.h.in.save                          |  155 +-
 autoconf/configure.in                              |  219 +-
 autoconf/libtool/ltdl.m4                           |  810 ++++
 configure                                          |  847 +++-
 examples/autochangers/chio-changer-openbsd         |  134 +
 examples/autochangers/locking-mtx-changer          |    2 +-
 examples/devices/DDS4.conf                         |    4 +-
 examples/devices/Exabyte.conf                      |    2 +-
 examples/devices/HP-autoloader.conf                |    2 +-
 examples/devices/LTO-2.conf                        |    4 +-
 examples/devices/LTO-3.conf                        |    4 +-
 examples/devices/LTO-4.conf                        |    4 +-
 examples/devices/OnStream.conf                     |    2 +-
 examples/devices/two-drive-autoloader.conf         |    2 +-
 kernstodo                                          | 1391 ------
 manpages/bacula-sd.8                               |    2 +-
 manpages/bacula-tray-monitor.1                     |    4 +-
 manpages/bacula.8                                  |    4 +-
 manpages/bat.1                                     |    2 +-
 manpages/bcopy.8                                   |    4 +-
 manpages/bextract.8                                |    4 +-
 manpages/bls.8                                     |    4 +-
 manpages/bpluginfo.8                               |  120 +
 manpages/bregex.8                                  |    2 +-
 manpages/bscan.8                                   |    4 +-
 manpages/bsmtp.1                                   |   39 +-
 manpages/btape.8                                   |    2 +-
 manpages/bwild.8                                   |    8 +-
 manpages/dbcheck.8                                 |   87 +-
 platforms/Makefile.in                              |    2 +-
 platforms/hurd/Makefile.in                         |   88 +
 platforms/hurd/bacula-dir.in                       |   73 +
 platforms/hurd/bacula-fd.in                        |   73 +
 platforms/hurd/bacula-sd.in                        |   73 +
 platforms/suse/bacula-dir.in                       |   10 +-
 platforms/suse/bacula-fd.in                        |   10 +-
 platforms/suse/bacula-sd.in                        |    8 +-
 platforms/systemd/Makefile.in                      |   17 +-
 platforms/systemd/bacula-dir.service.in            |    4 +-
 platforms/systemd/bacula-fd.service.in             |    4 +-
 platforms/systemd/bacula-sd.service.in             |    4 +-
 platforms/systemd/bacula.conf.in                   |    2 +
 po/LINGUAS                                         |    1 +
 po/POTFILES.in                                     |   47 +-
 po/bacula.pot                                      | 4234 +++++++++--------
 po/de.po                                           | 4434 +++++++++---------
 po/es.po                                           | 4367 +++++++++---------
 po/fr.po                                           | 4352 +++++++++---------
 po/{bacula.pot => nl.po}                           | 4850 +++++++++++---------
 po/sv.po                                           | 4234 +++++++++--------
 po/uk.po                                           | 4410 +++++++++---------
 release/clean                                      |    4 +
 release/makeall                                    |    2 +-
 release/makedocsrel                                |    1 +
 release/pushtags                                   |    3 +-
 scripts/logrotate.in                               |    2 +-
 scripts/logwatch/logfile.bacula.conf.in            |    2 +-
 src/baconfig.h                                     |   23 +-
 src/cats/Makefile.in                               |   12 +-
 src/cats/bdb_mysql.h                               |    7 +
 src/cats/bvfs.c                                    |   64 +-
 src/cats/bvfs.h                                    |    2 +-
 src/cats/cats.h                                    |   10 +-
 src/cats/create_sqlite3_database.in                |    7 +-
 src/cats/dbi.c                                     |   12 +-
 src/cats/ingres.c                                  |   12 +-
 src/cats/make_catalog_backup.pl.in                 |    9 +-
 src/cats/make_mysql_tables.in                      |    3 +-
 src/cats/make_postgresql_tables.in                 |    3 +-
 src/cats/mysql.c                                   |   62 +-
 src/cats/postgresql.c                              |   12 +-
 src/cats/sql.c                                     |    7 +-
 src/cats/sql_cmds.c                                |  181 +-
 src/cats/sql_cmds.h                                |    3 +
 src/cats/sql_create.c                              |   35 +-
 src/cats/sql_find.c                                |    4 +-
 src/cats/sql_get.c                                 |    4 +-
 src/cats/sql_glue.c                                |    4 +
 src/cats/sql_update.c                              |    7 +-
 src/cats/sqlite.c                                  |   12 +-
 src/cats/update_mysql_tables.in                    |    8 +-
 src/cats/update_postgresql_tables.in               |    3 +
 src/cats/update_sqlite3_tables.in                  |    6 +-
 src/console/conio.c                                |   23 +-
 src/dird/admin.c                                   |   14 +-
 src/dird/autoprune.c                               |   12 +-
 src/dird/backup.c                                  |    7 +-
 src/dird/bacula-dir.conf.in                        |    4 +-
 src/dird/catreq.c                                  |   23 +-
 src/dird/dird.c                                    |  246 +-
 src/dird/dird_conf.c                               |   29 +
 src/dird/dird_conf.h                               |    1 +
 src/dird/getmsg.c                                  |    2 +-
 src/dird/job.c                                     |   13 +-
 src/dird/jobq.c                                    |    5 +-
 src/dird/migrate.c                                 |    5 +-
 src/dird/mountreq.c                                |   41 +-
 src/dird/msgchan.c                                 |   19 +-
 src/dird/newvol.c                                  |    9 +-
 src/dird/next_vol.c                                |   46 +-
 src/dird/protos.h                                  |   18 +-
 src/dird/pythondir.c                               |    1 -
 src/dird/recycle.c                                 |   13 +-
 src/dird/restore.c                                 |    3 +
 src/dird/ua_acl.c                                  |    2 +-
 src/dird/ua_cmds.c                                 |  168 +-
 src/dird/ua_dotcmds.c                              |   12 +-
 src/dird/ua_label.c                                |   70 +-
 src/dird/ua_output.c                               |   11 +-
 src/dird/ua_prune.c                                |   18 +-
 src/dird/ua_purge.c                                |    9 +-
 src/dird/ua_restore.c                              |    9 +-
 src/dird/ua_run.c                                  |   50 +-
 src/dird/ua_select.c                               |    7 +-
 src/dird/ua_status.c                               |    5 +-
 src/dird/ua_tree.c                                 |   17 +-
 src/dird/ua_update.c                               |    8 +-
 src/dird/vbackup.c                                 |    6 +-
 src/filed/Makefile.in                              |   14 +-
 src/filed/accurate.c                               |    4 +
 src/filed/acl.c                                    |  162 +-
 src/filed/backup.c                                 |   30 +-
 src/filed/fd_plugins.c                             |  370 +-
 src/filed/fd_plugins.h                             |   15 +-
 src/filed/heartbeat.c                              |   36 +-
 src/filed/job.c                                    |   72 +-
 src/filed/protos.h                                 |    1 +
 src/filed/restore.c                                |    6 +
 src/filed/xattr.c                                  |  555 ++-
 src/filed/xattr.h                                  |    4 +-
 src/findlib/Makefile.in                            |    1 +
 src/findlib/bfile.c                                |   10 +-
 src/findlib/find.c                                 |   33 +-
 src/findlib/find.h                                 |    2 +
 src/findlib/find_one.c                             |   27 +-
 src/findlib/mkpath.c                               |    4 +
 src/findlib/protos.h                               |    1 +
 src/jcr.h                                          |   15 +-
 src/lib/Makefile.in                                |   41 +-
 src/lib/bnet.c                                     |  118 +-
 src/lib/bnet_server.c                              |   53 +-
 src/lib/bsock.c                                    |   66 +-
 src/lib/bsys.c                                     |  101 +-
 src/lib/crc32.c                                    |    6 +
 src/lib/daemon.c                                   |   21 +-
 src/lib/devlock.h                                  |    2 +-
 src/lib/jcr.c                                      |    6 +
 src/lib/lex.c                                      |   14 +-
 src/lib/lex.h                                      |    6 +-
 src/lib/message.c                                  |  117 +-
 src/lib/message.h                                  |    5 +-
 src/lib/mntent_cache.c                             |   17 +-
 src/lib/mutex_list.h                               |    2 +-
 src/lib/parse_conf.h                               |    1 +
 src/lib/plugins.c                                  |    2 +-
 src/lib/protos.h                                   |    6 +-
 src/lib/rblist.c                                   |   11 +-
 src/lib/rwlock.c                                   |    5 +
 src/lib/rwlock.h                                   |    1 +
 src/lib/signal.c                                   |   23 +-
 src/lib/workq.c                                    |    4 +-
 src/plugins/fd/Makefile.in                         |   14 +-
 src/plugins/fd/bpipe-fd.c                          |   15 +-
 src/plugins/fd/example-plugin-fd.c                 |   18 +-
 .../fd/{delta-test-fd.c => test-deltaseq-fd.c}     |    0
 src/plugins/fd/test-plugin-fd.c                    |  259 +-
 src/qt-console/bat.pro.in                          |    6 +-
 src/qt-console/bcomm/dircomm.cpp                   |   18 +-
 src/qt-console/bcomm/dircomm.h                     |    1 +
 src/qt-console/console/console.cpp                 |   37 +-
 src/qt-console/images/bat_icon.icns                |  Bin 0 -> 125067 bytes
 src/qt-console/main.cpp                            |   12 +-
 src/qt-console/select/textinput.ui                 |   72 +-
 src/qt-console/util/fmtwidgetitem.cpp              |    2 +-
 src/stored/acquire.c                               |  142 +-
 src/stored/append.c                                |   57 +-
 src/stored/askdir.c                                |  139 +-
 src/stored/autochanger.c                           |   58 +-
 src/stored/bcopy.c                                 |   24 +-
 src/stored/block.c                                 |  132 +-
 src/stored/block.h                                 |    9 +-
 src/stored/bls.c                                   |   10 +-
 src/stored/bscan.c                                 |    4 +
 src/stored/btape.c                                 |   90 +-
 src/stored/butil.c                                 |   10 +-
 src/stored/dev.c                                   |  165 +-
 src/stored/dev.h                                   |  100 +-
 src/stored/device.c                                |   24 +-
 src/stored/dircmd.c                                |  117 +-
 src/stored/dvd.c                                   |   26 +-
 src/stored/job.c                                   |    9 +-
 src/stored/label.c                                 |  133 +-
 src/stored/lock.c                                  |  286 +-
 src/stored/mac.c                                   |   22 +-
 src/stored/mount.c                                 |   47 +-
 src/stored/parse_bsr.c                             |    3 +-
 src/stored/protos.h                                |   19 +-
 src/stored/read_record.c                           |   50 +-
 src/stored/record.c                                |  400 +-
 src/stored/record.h                                |   18 +-
 src/stored/reserve.c                               |   21 +-
 src/stored/sd_plugins.c                            |    4 +-
 src/stored/spool.c                                 |   29 +-
 src/stored/status.c                                |  232 +-
 src/stored/stored.c                                |   89 +-
 src/stored/stored.h                                |    4 +-
 src/stored/vol_mgr.c                               |  228 +-
 src/stored/vol_mgr.h                               |  100 +
 src/stored/wait.c                                  |    4 +-
 src/streams.h                                      |    7 +
 src/tools/Makefile.in                              |   21 +-
 src/tools/assert_macro.h                           |  166 +
 src/tools/bpluginfo.c                              |  637 +++
 src/tools/bsmtp.c                                  |  176 +-
 src/tools/timelimit.1                              |  217 +
 src/tools/timelimit.c                              |  537 +++
 src/version.h                                      |   13 +-
 src/win32/compat/compat.cpp                        |   15 +
 src/win32/compat/mingwconfig.h                     |    6 +-
 src/win32/compat/netinet/tcp.h                     |    0
 src/win32/compat/winconfig.h                       |  641 ---
 src/win32/filed/plugins/exchange-fd.c              |    8 +-
 src/win32/filed/vss.cpp                            |   21 +-
 src/win32/filed/vss.h                              |   11 +-
 src/win32/filed/vss_generic.cpp                    |  502 +-
 src/win32/winapi.h                                 |    3 +-
 updatedb/update_mysql_tables_10_to_11.in           |    4 +-
 updatedb/update_mysql_tables_11_to_12.in           |    6 +-
 updatedb/update_mysql_tables_12_to_14.in           |    8 +-
 updatedb/update_postgresql_tables_10_to_11.in      |    2 +-
 240 files changed, 26391 insertions(+), 19540 deletions(-)

diff --git a/.gitignore b/.gitignore
index 07fc982..d558258 100644
--- a/.gitignore
+++ b/.gitignore
@@ -194,6 +194,7 @@ scripts/Makefile
 scripts/bacula
 scripts/btraceback
 scripts/fd
+scripts/reset-storageid
 scripts/startit
 scripts/startmysql
 scripts/stopit
@@ -379,6 +380,7 @@ src/plugins/dir/*.o
 src/plugins/dir/*.so
 src/plugins/dir/main
 src/plugins/dir/Makefile
+src/plugins/dir/.libs
 
 # src/plugins/fd/
 src/plugins/fd/*.o
@@ -479,6 +481,7 @@ src/qt-console/tray-monitor/Makefile.mingw32
 src/qt-console/tray-monitor/Makefile.mingw32.Debug
 src/qt-console/tray-monitor/Makefile.mingw32.Release
 src/qt-console/tray-monitor/debug/
+src/qt-console/tray-monitor/release/
 src/qt-console/tray-monitor/moc/
 src/qt-console/tray-monitor/tray-monitor.conf
 src/qt-console/tray-monitor/tray-monitor.pro
@@ -538,6 +541,7 @@ src/tools/bregtest
 src/tools/grow
 src/tools/.libs
 src/tools/bvfs_test
+src/tools/bpluginfo
 
 # src/tray-monitor/
 src/tray-monitor/tray-monitor.conf
diff --git a/ChangeLog b/ChangeLog
index 0153672..0e175d0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,423 @@
-              Changelog on version 5.2.6
+              Changelog on version 5.2.13
+
+
+Release version 5.2.13
+
+19Feb13
+ - Fix build/configure problems with bpluginfo.c
+ - Add missing vol_mgr.h file
+ - Add timer to run_multiple
+
+18Feb13
+ - Refactor lock_volumes so most lock a vol rather than globally
+ - Add virtualfull-extreme test
+
+17Feb13
+ - Apply patch for chio-changer-openbsd from bug #1984 -- Implements listall
+ - Add bat Mac patch from bug #1953
+
+16Feb13
+ - Fix bug #1812 cannot run Copy/Migrate jobs from bat
+ - Fix loading of bat translations. Patch from bug #1890
+ - Fix text input in bat. Fixe bug #1965
+ - Remove Device from show command as it is not used or updated
+
+13Feb13
+ - Fix #1982 update enabled keyword in help command
+
+08Feb13
+ - Fix update_postgresql_tables 10 to 11
+
+30Jan13
+ - Clean after building doc binaries requested by Willem vd Akker for Debian 
+  build
+
+29Jan13
+ - Remove unused method
+ - Require Qt version 4.8.4
+ - Fix bug #1955 that OK to run? does not retry on bad response
+ - Backport new lock calls + debug for SD
+
+26Jan13
+ - Remove old todo
+
+09Jan13
+ - Fix bug #1975 new label ignored when first is duplicate.
+
+31Dec12
+ - Require Qt 4.8.1 to build bat
+
+27Dec12
+ - Make compile of timelimit a bit more portable
+
+26Dec12
+ - Tweek turn off prune-test
+ - Pull src/lib changes from master
+ - Pull SD files from master
+
+25Dec12
+ - Turn off prune-test
+ - Add logdir and bsrdir to regression config
+ - Add bsrdir and logdir to regress-config
+ - Rebuild configure
+ - Changed default directories from /var/bacula to /opt/bacula
+ - Fix patches from master
+ - Make spool size max message more explicit
+ - Display more info when maximum spool size is reached
+
+23Dec12
+ - Fix TERM defs for Solaris 11 in conio.c
+
+21Dec12
+ - Force DEVELOPER on during regression setup
+
+14Dec12
+ - Allow group to cd to sysconfdir
+
+09Dec12
+ - Make sysconfdir belong to Bacula user/group and exclude others
+
+07Dec12
+ - Fix Virtual Full file close bug -- race condition
+ - Enhance mount message to include read/append
+
+06Dec12
+ - Improve vol_mgr swap messages
+ - Add Jmsg7 and Jmsg8
+ - Enhance output of Using Device to include for read/write
+
+04Dec12
+ - Add jobid to Pmsg output
+
+29Nov12
+ - Fix bug #1959 input validation on delete of jobs.
+
+24Nov12
+ - Fix bug #1956 Authorization Errors false
+
+23Nov12
+ - Add workaround for #5507 where autoprune and reload are in deadlock
+
+21Nov12
+ - Allow conf file quoted strings to be used in a list
+ - Make bfgets handle very long lines
+ - Backport from Enterprise
+
+17Nov12
+ - Avoid seg fault by checking for NULL client -- reported by Arno
+
+10Nov12
+ - Final fix of bug #1943
+
+08Nov12
+ - Fix bug #1948 MailOnSuccess get executed on error.
+
+07Nov12
+ - Fix missing index on Media table
+
+06Nov12
+ - Fix bug #1943 no message storage on closed database connection.
+ - Fix bug #1946 Fix problem with MySQL with big Base jobs.
+
+02Nov12
+ - Reduce wait time in regression RunScripts
+ - Attempt to indicate timed out tests
+ - Implement a timeout on regression tests of 15 minutes
+ - Fix #5346 .bvfs_lsfiles and .bvfs_restore to handle deleted files
+
+01Nov12
+ - Fix spooldata, accurate and ingnoreduplicate run argument
+
+21Oct12
+ - Add remote regress test script
+
+16Oct12
+ - Fix messages segfault
+
+10Oct12
+ - Recompile configure.in
+ - Implement feature request #1939
+
+07Oct12
+ - fix #1938 about PATH_MAX on hurd
+ - fix #1938 about MAXPATHLEN on hurd
+
+05Oct12
+ - Fix bug #1937 OpenBSD autochanger example script
+
+25Sep12
+ - Fix #4996 about MaxRunTime canceling the job too early
+
+19Sep12
+ - Fix bug #1934 Wrong values at media list in BAT
+
+18Sep12
+ - Fix race condition in close_msg that causes seg fault
+
+16Sep12
+ - Fix double unlink
+ - More tests for freeing NULL pointers
+
+14Sep12
+ - Add MaximumConcurrentReadJobs directive to Storage resource
+
+03Sep12
+ - Add ujobid to .bvfs_get_jobids
+
+28Aug12
+ - Do not try to strip RestoreObject during attribute encoding
+ - Avoid problem when stripping a relative path
+
+16Jul12
+ - Fix #4513 about HIDDEN attribute set to parent directory during restore
+
+Bugs fixed/closed since last release:
+1812 1890 1934 1937 1938 1939 1943 1946 1948 1953 1955 1956 1959 1965 1975 1982 1984 4513 4996 5346 5507
+
+
+Version 5.2.12
+
+13Sep12
+ - Fix accurate option in the estimate command
+  - Fix bug #1932 director crash.
+
+Version 5.2.11
+
+10Sep12
+ - Add JobId to SD debug output
+ - Commit batch session every 800,000 files
+ - Simplify safer delete code using a single regex
+
+08Sep12
+ - Clean up error message generation during update attributes -- should fix bug 
+  #1823
+ - Eliminate heartbeat error messages. Fixes bug #1925
+
+07Sep12
+ - Set bsrdir default to workingdir
+ - Recompile configure.in
+ - Apply patch from bug #1911 to implement --with-logdir
+
+06Sep12
+ - Add chio-changer-openbsd submitted in bug #1903
+ - mysql database install/update scripts patch. Fixes bug #1901
+ - Delegate uid/gid changing to systemd. Fixes bug #1905
+
+05Sep12
+ - Fix bug #1906
+ - Fix manpage errors, fixes bug #1907
+ - Final fix for #1859 missed one query.
+
+30Aug12
+ - bpluginfo - Utility tool display various information
+
+19Aug12
+ - Backport more master code
+ - Fix Makefile.in so that testfind builds with acl dependency
+
+18Aug12
+ - Make dump_resource respect console ACL's
+ - Backport more from master
+
+17Aug12
+ - backport code from master
+
+16Aug12
+ - Fix #1923 about MySQL 4 support for BVFS
+
+05Jul12
+ - Fix #1902 about bad status slots output
+ - Fix Sigma Copy bug #4377
+
+03Jul12
+ - Fix bsmtp
+ - Reset bsmtp to only send to IPv4 mailhosts.
+
+Bugs fixed/closed since last release:
+1823 1859 1901 1902 1903 1905 1906 1907 1911 1923 1925 4377
+
+
+Version 5.2.10
+
+27Jun12
+ - Add extra test for unsupported Protocol Families.
+
+26Jun12
+ - Fix inet_pton call.
+ - Real fix of bug #1897 5.2.9 breaks IPv6 connectivity
+ - Fix bug #1891 wrong daemon name printed with -? option
+ - Fix bug #1859 INSERT INTO Counters fails
+
+25Jun12
+ - First try at fixing bug #1897 5.2.9 breaks IPv6 connectivity
+
+23Jun12
+ - Convert write_rec_to_block() to a state machine
+
+18Jun12
+ - Fix bat from eating all Dir connections -- fixes bug #1872
+ - Back port fixes from BEE to fix Windows bug #1892
+
+15Jun12
+ - Add block checksum flag to version.h
+ - Add block checksum debug code
+ - Fix bug #1893 dbcheck -B gives rwl_writelock error.
+
+13Jun12
+ - Remove restriction of network buffer size being multiple of a tape block
+
+11Jun12
+ - Recompile configure.in
+ - Add rudimentary support for saving AFS acls.
+
+04Jun12
+ - Send level before the fileset in estimate_cmd() like in backup()
+
+Bugs fixed/closed since last release:
+1859 1872 1891 1892 1893 1897
+
+
+Version 5.2.9
+11Jun12
+ - Remove patch: Apply readline without TERM_LIB dependency patch from bug #1871
+
+Version 5.2.8
+
+10Jun12
+ - Apply readline without TERM_LIB dependency patch from bug #1871
+ - Ensure cancel status is set for canceled duplicate jobs -- partial fix for 
+   bug #1851
+ - Enhance Win32 error messages -- fixes bug #1879
+
+09Jun12
+ - Apply patch from bug 1876 to permit dot commands in a runscript
+ - Remove config variables from examples/devices fixes bug #1884
+ - Add more debug code for bug 1885
+ - Add more debug to block.c when read rejected
+ - Fail job that attempts to read from closed device -- reported in bug 1885 but 
+   not fixed
+ - Detect Python 2.7 fixes bug #1888
+ - Recompile configure
+ - Apply systemd patch from bug #1886
+
+08Jun12
+ - Rewrite some SD subroutines as class members
+
+05Jun12
+ - New overhaul of xattr code.
+
+03Jun12
+ - Use IPPROTO_TCP for SOL_TCP if SOL_TCP isn't defined.
+ - Fix compiler warning.
+
+Bugs fixed/closed since last release:
+1851 1871 1879 1884 1886 1888
+
+
+Version 5.2.7
+
+02Jun12
+ - Correct Qt version needed for bat
+
+01Jun12
+ - Turn on SD deadlock detection by default
+ - Fix bug #1880 ltdl.m4 missing for new feature.
+ - Fix bug #1870 GNU binutils-gold build failure.
+ - Fix bug #1874 crash with xattr support on a BTRFS filesystem
+
+31May12
+ - Add new empty netinet/tcp.h so Windows compile works
+ - Eliminate compiler warning in stored/dircmd.c
+
+30May12
+ - Fix TCP Heartbeat code
+
+28May12
+ - Align conio.c struct at 8 bytes to fix Sparc bus error.
+
+18May12
+ - Fix get_basename() -- rewrite
+
+15May12
+ - Apply James' exchange-fd.c regression fix
+
+05May12
+ - Add first Dutch translation
+
+30Apr12
+ - Ensure that StorageId is updated after write
+ - Fix updating of cached slots + error message numbering
+
+29Apr12
+ - Remove old shared objects before install
+
+22Apr12
+ - Add missing dummy bVarPrefixLinks variable retrieval.
+ - Rebuild configure.
+ - Fix mysql config for older versions of mysql+config.
+
+20Apr12
+ - Fix problem in BVFS with concurrent queries
+ - Add more checks to bvfs
+
+19Apr12
+ - Try to use multi-row insert statements for mysql.
+ - On some platforms intptr_t is in an other include file.
+ - Add support for fcntl(fd, F_CLOSEM) to close filedescriptors.
+ - Use closefrom if available instead of trying to close fds ourself.
+ - Fix class member shadowing.
+ - Move storages tls initialization to proper place.
+ - Fix Copyright on init scripts suse, add specific daemon user & group
+ - Add support for new POSIX getaddrinfo interface.
+ - Recompile configure.in
+ - Apply MSQL detection fixes from bug #1829
+ - Recompile configure.in
+ - Fix bug #1805 cannot specify hostname in ./configure
+ - Require latest Qtlibs
+ - Fix restore_job restore keyword
+
+18Apr12
+ - Allow plugin to backup a directory
+ - Print seconds in schedule time as noted in bug #1854
+ - Change dev->open() to return bool
+
+17Apr12
+ - Fix #1857 about restore cd command that blocks on empty directory
+
+15Apr12
+ - Backport new StorageId code
+
+14Apr12
+ - More definitive fix for update slots bug
+
+13Apr12
+ - Fix old update slots bug
+
+12Apr12
+ - Fix #4062 on make_catalog_backup.pl script when user/password are empty
+
+28Mar12
+ - Fix bug #1853: bacula-sd dead but pid file exists.
+
+23Mar12
+ - Fix bug #1841 estimate command level=differential goes wrong in accurate 
+  mode.
+
+22Mar12
+ - Fix bug #1842 Incorrect port number reported
+ - Fix bug #1848 bsock.c:335 Socket has errors=1 on call to client
+
+10Mar12
+ - Force the re-initialization of BaseJobOpts, AccurateOpts and VerifyOpts 
+  between two Include{}
+
+08Mar12
+ - Add test-deltaseq source
+ - Rename delta-test plugin to test-deltaseq
+
+Bugs fixed/closed since last release:
+1805 1829 1841 1842 1848 1853 1854 1857 1870 1874 1880 4062
+
 
 Version 5.2.6
 
diff --git a/Makefile.in b/Makefile.in
index c970d91..5483fe3 100755
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,5 +1,4 @@
 # 
-# Version $Id$
 # Master Makefile
 #
 @MCOMMON@
@@ -95,6 +94,13 @@ libtool: Makefile $(LIBTOOL_DEPS)
 installdirs:
 	$(MKDIR) $(DESTDIR)$(sbindir)
 	$(MKDIR) $(DESTDIR)$(sysconfdir)
+	chmod 770 $(DESTDIR)$(sysconfdir)
+	-if test "x$(dir_user)" != "x" ; then \
+	   chown $(dir_user) $(DESTDIR)$(sysconfdir); \
+	fi
+	-if test "x$(dir_group)" != "x" ; then \
+	   chgrp $(dir_group) $(DESTDIR)$(sysconfdir); \
+	fi
 	$(MKDIR) $(DESTDIR)$(scriptdir)
 	$(MKDIR) $(DESTDIR)$(docdir)
 	$(MKDIR) $(DESTDIR)$(archivedir)
diff --git a/ReleaseNotes b/ReleaseNotes
index bbd9985..8ae7b58 100644
--- a/ReleaseNotes
+++ b/ReleaseNotes
@@ -1,10 +1,444 @@
 
-               Release Notes for Bacula 5.2.6
+               Release Notes for Bacula 5.2.13
 
   Bacula code: Total files = 1,110 Total lines = 231,439 (Using SLOCCount)
 
 General:
 --------
+This is an important bug fix release.
+
+Version 5.2.13 version has 20 bug fixes since the last 
+release.  Some of the bug fixes are important.
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+Please note that with this version of Bacula, during the install
+of the shared libraries from the src/cats, src/lib, and src/findlib
+directories, any old Bacula libraries in the installation 
+destination directory will be removed.  This should not cause
+any problems and at least keeps the installation library cleaner.
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+For packagers, if you change options, naming, and the way 
+we link our shared object files, as at least one of you does,
+you are creating a situation where the user may not be able
+to run multiple versions of Bacula on the same machine, which
+is often very useful, and in addition, you create a configuration
+that the project cannot properly support.
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+If you are upgrading from a version older than 5.2.10, please
+read all the old ReleaseNotes of all versions released
+after the version you are upgrading from. There area
+many important notices sumarized here, and we do not 
+repeat them each bug fix release.
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+Compatibility:
+--------------
+ As always, both the Director and Storage daemon must be upgraded at
+ the same time.
+
+ Older 5.0.x and 3.0.x File Daemons are compatible with the 5.2.13
+ Director and Storage daemons. There should be no need to upgrade older File
+ Daemons.
+
+Important changes since last release:
+
+19Feb13
+ - Fix build/configure problems with bpluginfo.c
+ - Refactor lock_volumes so most lock a vol rather than globally
+ - Add virtualfull-extreme test
+ - Apply patch for chio-changer-openbsd from bug #1984 -- Implements listall
+ - Add bat Mac patch from bug #1953
+ - Fix bug #1812 cannot run Copy/Migrate jobs from bat
+ - Fix loading of bat translations. Patch from bug #1890
+ - Fix text input in bat. Fixe bug #1965
+ - Remove Device from show command as it is not used or updated
+ - Fix #1982 update enabled keyword in help command
+ - Fix update_postgresql_tables 10 to 11
+ - Clean after building doc binaries requested by Willem vd Akker for Debian 
+   build
+ - Require Qt version 4.8.4
+ - Fix bug #1955 that OK to run? does not retry on bad response
+ - Backport new lock calls + debug for SD
+ - Fix bug #1975 new label ignored when first is duplicate.
+ - Pull src/lib changes from master
+ - Pull SD files from master
+ - Turn off prune-test
+ - Add logdir and bsrdir to regression config
+ - Add bsrdir and logdir to regress-config
+ - Changed default directories from /var/bacula to /opt/bacula
+ - Make spool size max message more explicit
+ - Display more info when maximum spool size is reached
+ - Fix TERM defs for Solaris 11 in conio.c
+ - Allow group to cd to sysconfdir
+ - Make sysconfdir belong to Bacula user/group and exclude others
+ - Fix Virtual Full file close bug -- race condition
+ - Enhance mount message to include read/append
+ - Improve vol_mgr swap messages
+ - Enhance output of Using Device to include for read/write
+ - Add jobid to Pmsg output
+ - Fix bug #1959 input validation on delete of jobs.
+ - Fix bug #1956 Authorization Errors false
+ - Add workaround for #5507 where autoprune and reload are in deadlock
+ - Allow conf file quoted strings to be used in a list
+ - Make bfgets handle very long lines
+ - Avoid seg fault by checking for NULL client -- reported by Arno
+ - Final fix of bug #1943
+ - Fix bug #1948 MailOnSuccess get executed on error.
+ - Fix missing index on Media table
+ - Fix bug #1943 no message storage on closed database connection.
+ - Fix bug #1946 Fix problem with MySQL with big Base jobs.
+ - Reduce wait time in regression RunScripts
+ - Implement a timeout on regression tests of 15 minutes
+ - Fix #5346 .bvfs_lsfiles and .bvfs_restore to handle deleted files
+ - Fix spooldata, accurate and ingnoreduplicate run argument
+ - Fix messages segfault
+ - Implement feature request #1939
+ - fix #1938 about PATH_MAX on hurd
+ - fix #1938 about MAXPATHLEN on hurd
+ - Fix bug #1937 OpenBSD autochanger example script
+ - Fix #4996 about MaxRunTime canceling the job too early
+ - Fix bug #1934 Wrong values at media list in BAT
+ - Fix race condition in close_msg that causes seg fault
+ - Fix double unlink
+ - More tests for freeing NULL pointers
+ - Add MaximumConcurrentReadJobs directive to Storage resource
+ - Add ujobid to .bvfs_get_jobids
+ - Avoid problem when stripping a relative path
+ - Fix #4513 about HIDDEN attribute set to parent directory during restore
+
+Bugs fixed/closed since last release:
+1812 1890 1934 1937 1938 1939 1943 1946 1948 1953 1955 1956 1959 1965 1975
+1982 1984 4513 4996 5346 5507
+
+
+=================================================================
+
+
+General:
+--------
+Version 5.2.12 version is a bug fix release.
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+Please note that with this version of Bacula, during the install
+of the shared libraries from the src/cats, src/lib, and src/findlib
+directories, any old Bacula libraries in the installation 
+destination directory will be removed.  This should not cause
+any problems and at least keeps the installation library cleaner.
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+For packagers, if you change options, naming, and the way 
+we link our shared object files, as at least one of you does,
+you are creating a situation where the user may not be able
+to run multiple versions of Bacula on the same machine, which
+is often very useful, and in addition, you create a configuration
+that the project cannot properly support.
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+If you are upgrading from a version older than 5.2.10, please
+read all the old ReleaseNotes of all versions released
+after the version you are upgrading from. There area
+many important notices sumarized here, and we do not 
+repeat them each bug fix release.
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+Compatibility:
+--------------
+ As always, both the Director and Storage daemon must be upgraded at
+ the same time.
+
+ Older 5.0.x and 3.0.x File Daemons are compatible with the 5.2.12
+ Director and Storage daemons. There should be no need to upgrade older File
+ Daemons.
+
+Important changes since last release:
+ - A new bpluginfo utility tool
+ - Make dump_resource respect console ACL's (security fix)
+ - Add chio-changer-openbsd submitted in bug #1903
+ - Important Copy job bug fixed.
+
+12Sep12
+ - Fix accurate option in the estimate command
+  - Fix bug #1932 director crash.
+
+10Sep12
+ - Add JobId to SD debug output
+ - Commit batch session every 800,000 files
+ - Simplify safer delete code using a single regex
+ - Clean up error message generation during update attributes -- should fix bug 
+  #1823
+ - Eliminate heartbeat error messages. Fixes bug #1925
+ - Apply patch from bug #1911 to implement --with-logdir
+ - Add chio-changer-openbsd submitted in bug #1903
+ - mysql database install/update scripts patch. Fixes bug #1901
+ - Delegate uid/gid changing to systemd. Fixes bug #1905
+ - Fix bug #1906
+ - Fix manpage errors, fixes bug #1907
+ - Final fix for #1859 missed one query.
+ - bpluginfo - Utility tool display various information
+ - Backport more master code
+ - Fix Makefile.in so that testfind builds with acl dependency
+ - Make dump_resource respect console ACL's (security fix)
+ - backport code from master
+ - Fix #1923 about MySQL 4 support for BVFS
+ - Fix #1902 about bad status slots output
+ - Fix Sigma Copy bug #4377
+ - Fix bsmtp
+ - Reset bsmtp to only send to IPv4 mailhosts.
+
+Bugs fixed/closed since last release:
+1823 1859 1901 1902 1903 1905 1906 1907 1911 1923 1925 4377
+1932
+
+
+=======================================================
+
+Version 5.2.11 was short lived because of a crash
+
+=======================================================
+
+General:
+--------
+The 5.2.10 version is a significant bug fix release including 
+our first cut at AFS support.
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+Please note that with this version of Bacula, during the install
+of the shared libraries from the src/cats, src/lib, and src/findlib
+directories, any old Bacula libraries in the installation 
+destination directory will be removed.  This should not cause
+any problems and at least keeps the installation library cleaner.
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+For packagers, if you change options, naming, and the way 
+we link our shared object files, as at least one of you does,
+you are creating a situation where the user may not be able
+to run multiple versions of Bacula on the same machine, which
+is often very useful, and in addition, you create a configuration
+that the project cannot properly support.
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+If you are upgrading from a version older than 5.2.9, please
+read all the old ReleaseNotes of all versions released
+after the version you are upgrading from. There area
+many important notices sumarized here, and we do not 
+repeat them each bug fix release.
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+Compatibility:
+--------------
+ As always, both the Director and Storage daemon must be upgraded at
+ the same time.
+
+ Older 5.0.x and 3.0.x File Daemons are compatible with the 5.2.9
+ Director and Storage daemons. There should be no need to upgrade older File
+ Daemons.
+
+Major changes since 5.2.9:
+- Fix IPv6 networking
+- Fix SQL Counter problems 
+- Fix Bat hanging after running a number of jobs
+- Fix dbcheck rw_writelock problem
+- Fix Windows VSS restore bug
+
+New Feature:
+- Add rudimentary support for backing up AFS
+
+
+28Jun12
+ - Add extra test for unsupported Protocol Families.
+ - Fix inet_pton call.
+ - Real fix of bug #1897 5.2.9 breaks IPv6 connectivity
+ - Fix bug #1891 wrong daemon name printed with -? option
+ - Fix bug #1859 INSERT INTO Counters fails
+ - First try at fixing bug #1897 5.2.9 breaks IPv6 connectivity
+ - Convert write_rec_to_block() to a state machine
+ - Fix bat from eating all Dir connections -- fixes bug #1872
+ - Back port fixes from BEE to fix Windows restore bug #1892
+ - Add block checksum flag to version.h
+ - Add block checksum debug code
+ - Fix bug #1893 dbcheck -B gives rwl_writelock error.
+ - Remove restriction of network buffer size being multiple of a tape block
+ - Add rudimentary support for saving AFS acls.
+ - Send level before the fileset in estimate_cmd() like in backup()
+
+Bugs fixed/closed since last release:
+1859 1872 1891 1892 1893 1897
+
+
+===============================================================
+
+General:
+--------
+The 5.2.9 version is a bug fix release. 
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+Please note that with this version of Bacula, during the install
+of the shared libraries from the src/cats, src/lib, and src/findlib
+directories, any old Bacula libraries in the installation 
+destination directory will be removed.  This should not cause
+any problems and at least keeps the installation library cleaner.
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+For packagers, if you change options, naming, and the way 
+we link our shared object files, as at least one of you does,
+you are creating a situation where the user may not be able
+to run multiple versions of Bacula on the same machine, which
+is often very useful, and in addition, you create a configuration
+that the project cannot properly support.
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+If you are upgrading from a version older than 5.2.7, please
+read all the old ReleaseNotes of all versions released
+after the version you are upgrading from. There area
+many important notices sumarized here, and we do not 
+repeat them each bug fix release.
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+Compatibility:
+--------------
+ As always, both the Director and Storage daemon must be upgraded at
+ the same time.
+
+ Older 5.0.x and 3.0.x File Daemons are compatible with the 5.2.8
+ Director and Storage daemons. There should be no need to upgrade older File
+ Daemons.
+
+Changes since 5.2.7:
+--------------------
+
+11Jun12
+ - Remove bad TERM_LIB patch from version 5.2.8 
+     "Apply readline without TERM_LIB dependency patch from bug #1871"
+ - Ensure cancel status is set for canceled duplicate jobs -- partial fix for 
+   bug #1851
+ - Enhance Win32 error messages -- fixes bug #1879
+ - Apply patch from bug 1876 to permit dot commands in a runscript
+ - Remove config variables from examples/devices fixes bug #1884
+ - Add more debug code for bug 1885
+ - Add more debug to block.c when read rejected
+ - Fail job that attempts to read from closed device -- reported in bug 1885 but 
+   not fixed
+ - Detect Python 2.7 fixes bug #1888
+ - Apply systemd patch from bug #1886
+ - Rewrite some SD subroutines as class members
+ - New overhaul of xattr code.
+ - Use IPPROTO_TCP for SOL_TCP if SOL_TCP isn't defined.
+ - Fix compiler warning.
+
+Bugs fixed/closed since last release:
+1851 1879 1884 1886 1888
+
+
+====================================================================
+
+General:
+--------
+Version 5.2.8 was a short lived version because it had a TERM_LIB
+patch that broke on Solaris and other machines.  That patch was
+removed in 5.2.9.
+
+General:
+--------
+The 5.2.7 version is a significan bug fix release. (The
+diff file between 5.2.6 and this one is over 25,000 lines).
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+Please note that with this version of Bacula, during the install
+of the shared libraries from the src/cats, src/lib, and src/findlib
+directories, any old Bacula libraries in the installation 
+destination directory will be removed.  This should not cause
+any problems and at least keeps the installation library cleaner.
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+For packagers, if you change options, naming, and the way 
+we link our shared object files, as at least one of you does,
+you are creating a situation where the user may not be able
+to run multiple versions of Bacula on the same machine, which
+is often very useful, and in addition, you create a configuration
+that the project cannot properly support.
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+If you are upgrading from a version older than 5.2.7, please
+read all the old ReleaseNotes of all versions released
+after the version you are upgrading from. There area
+many important notices sumarized here, and we do not 
+repeat them each bug fix release.
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+Compatibility:
+--------------
+ As always, both the Director and Storage daemon must be upgraded at
+ the same time.
+
+ Older 5.0.x and 3.0.x File Daemons are compatible with the 5.2.3
+ Director and Storage daemons. There should be no need to upgrade older File
+ Daemons.
+
+Changes since 5.2.6:
+--------------------
+02Jun12
+ - Correct Qt version needed for bat
+ - Turn on SD deadlock detection by default
+ - Fix bug #1880 ltdl.m4 missing for new feature.
+ - Fix bug #1870 GNU binutils-gold build failure.
+ - Add new empty netinet/tcp.h so Windows compile works
+ - Eliminate compiler warning in stored/dircmd.c
+ - Fix TCP Heartbeat code
+ - Align conio.c struct at 8 bytes to fix Sparc bus error.
+ - Fix get_basename() -- rewrite
+ - Apply James' exchange-fd.c regression fix
+ - Add first Dutch translation
+ - Ensure that StorageId is updated after write
+ - Fix updating of cached slots + error message numbering
+ - Remove old shared objects before install
+ - Add missing dummy bVarPrefixLinks variable retrieval.
+ - Fix mysql config for older versions of mysql+config.
+ - Fix problem in BVFS with concurrent queries
+ - Add more checks to bvfs
+ - Try to use multi-row insert statements for mysql.
+ - On some platforms intptr_t is in an other include file.
+ - Add support for fcntl(fd, F_CLOSEM) to close filedescriptors.
+ - Use closefrom if available instead of trying to close fds ourself.
+ - Fix class member shadowing.
+ - Move storages tls initialization to proper place.
+ - Fix Copyright on init scripts suse, add specific daemon user & group
+ - Add support for new POSIX getaddrinfo interface.
+ - Apply MSQL detection fixes from bug #1829
+ - Fix bug #1805 cannot specify hostname in ./configure
+ - Fix restore_job restore keyword
+ - Allow plugin to backup a directory
+ - Print seconds in schedule time as noted in bug #1854
+ - Fix #1857 about restore cd command that blocks on empty directory
+ - Backport new StorageId code
+ - More definitive fix for update slots bug
+ - Fix #4062 on make_catalog_backup.pl script when user/password are empty
+ - Fix bug #1853: bacula-sd dead but pid file exists.
+ - Fix bug #1841 estimate command level=differential goes wrong in accurate 
+   mode.
+ - Fix bug #1842 Incorrect port number reported
+ - Fix bug #1848 bsock.c:335 Socket has errors=1 on call to client
+ - Force the re-initialization of BaseJobOpts, AccurateOpts and VerifyOpts 
+   between two Include{}
+
+Bugs fixed/closed since last release:
+1805 1829 1841 1842 1848 1853 1854 1857 1870 1874 1880 4062
+
+
+
+General:
+--------
 The 5.2.6 version is a bug fix release.
 
 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
diff --git a/autoconf/Make.common.in b/autoconf/Make.common.in
index fdcd3a2..17467bb 100644
--- a/autoconf/Make.common.in
+++ b/autoconf/Make.common.in
@@ -90,6 +90,7 @@ DLIB = @DLIB@
 PYTHON_LIBS = @PYTHON_LIBS@
 PYTHON_INC = @PYTHON_INCDIR@
 OPENSSL_LIBS = @OPENSSL_LIBS@
+DLLIBS = @LIBADD_DLOPEN@
 
 
 # Windows (cygwin) flags 
diff --git a/autoconf/acconfig.h b/autoconf/acconfig.h
index d655307..4c5f8dd 100644
--- a/autoconf/acconfig.h
+++ b/autoconf/acconfig.h
@@ -26,9 +26,6 @@
 /* Define if you want to use MySQL */
 #undef HAVE_MYSQL
 
-/* Defined if MySQL thread safe library is present */
-#undef HAVE_THREAD_SAFE_MYSQL
-
 /* Define if you want to use embedded MySQL */
 #undef HAVE_EMBEDDED_MYSQL
 
@@ -52,9 +49,6 @@
 /* Define if you have GCC */
 #undef HAVE_GCC
 
-/* Define if you have the Andrew File System.  */
-#undef AFS
-
 /* Define If you want find -nouser and -nogroup to make tables of
    used UIDs and GIDs at startup instead of using getpwuid or
    getgrgid when needed.  Speeds up -nouser and -nogroup unless you
@@ -120,9 +114,6 @@
 /* Define if you have libacl */
 #undef HAVE_ACL
 
-/* Define if you have AFS acls */
-#undef HAVE_AFS_ACL
-
 /* General libs */
 #undef LIBS
 
@@ -152,6 +143,7 @@
 #undef HAVE_CYGWIN
 #undef HAVE_OSF1_OS
 #undef HAVE_DARWIN_OS
+#undef HAVE_HURD_OS
 
 /* Set to correct scanf value for long long int */
 #undef lld
@@ -207,4 +199,3 @@
 
 /* Define if language support is enabled */
 #undef ENABLE_NLS
-
diff --git a/autoconf/aclocal.m4 b/autoconf/aclocal.m4
index 8188873..de6977d 100644
--- a/autoconf/aclocal.m4
+++ b/autoconf/aclocal.m4
@@ -16,6 +16,7 @@ m4_include([libtool/ltoptions.m4])
 m4_include([libtool/ltsugar.m4])
 m4_include([libtool/ltversion.m4])
 m4_include([libtool/lt~obsolete.m4])
+m4_include([libtool/ltdl.m4])
 m4_include([gettext-macros/codeset.m4])
 m4_include([gettext-macros/gettext.m4])
 m4_include([gettext-macros/glibc2.m4])
diff --git a/autoconf/bacula-macros/db.m4 b/autoconf/bacula-macros/db.m4
index 8ef51bb..0055e22 100644
--- a/autoconf/bacula-macros/db.m4
+++ b/autoconf/bacula-macros/db.m4
@@ -325,57 +325,75 @@ AC_HELP_STRING([--with-mysql@<:@=DIR@:>@], [Include MySQL support. DIR is the My
 [
   if test "$withval" != "no"; then
         if test "$withval" = "yes"; then
+#
+# This code is very broken on older systems
+#
+#           MYSQL_CONFIG=`which mysql_config 2>/dev/null`
+#           if test "x${MYSQL_CONFIG}" != x; then
+#              MYSQL_BINDIR="${MYSQL_CONFIG%/*}"
+#              ${MYSQL_CONFIG} --variable=pkglibdir > /dev/null 2>&1
+#              if test $? = 0 ; then
+#                 MYSQL_LIBDIR=`${MYSQL_CONFIG} --variable=pkglibdir`
+#                 MYSQL_INCDIR=`${MYSQL_CONFIG} --variable=pkgincludedir`
+#              else
+#                 MYSQL_LIBDIR=`${MYSQL_CONFIG} --libs | sed -e 's/.*-L//' -e 's/ .*//'`
+#                 MYSQL_INCDIR=`${MYSQL_CONFIG} --include | sed -e 's/-I//'`
+#              fi
+#           elif test -f /usr/local/mysql/include/mysql/mysql.h; then
            if test -f /usr/local/mysql/include/mysql/mysql.h; then
-                   MYSQL_INCDIR=/usr/local/mysql/include/mysql
-                   if test -f /usr/local/mysql/lib64/mysql/libmysqlclient_r.a \
-                        -o -f /usr/local/mysql/lib64/mysql/libmysqlclient_r.so; then
-                           MYSQL_LIBDIR=/usr/local/mysql/lib64/mysql
-                   else
-                           MYSQL_LIBDIR=/usr/local/mysql/lib/mysql
-                   fi
-                   MYSQL_BINDIR=/usr/local/mysql/bin
+              MYSQL_INCDIR=/usr/local/mysql/include/mysql
+              if test -f /usr/local/mysql/lib64/mysql/libmysqlclient_r.a \
+                      -o -f /usr/local/mysql/lib64/mysql/libmysqlclient_r.so; then
+                 MYSQL_LIBDIR=/usr/local/mysql/lib64/mysql
+              else
+                 MYSQL_LIBDIR=/usr/local/mysql/lib/mysql
+              fi
+              MYSQL_BINDIR=/usr/local/mysql/bin
            elif test -f /usr/include/mysql/mysql.h; then
-                   MYSQL_INCDIR=/usr/include/mysql
-                   if test -f /usr/lib64/mysql/libmysqlclient_r.a \
-                        -o -f /usr/lib64/mysql/libmysqlclient_r.so; then  
-                           MYSQL_LIBDIR=/usr/lib64/mysql
-                   elif test -f /usr/lib64/libmysqlclient_r.a \
+              MYSQL_INCDIR=/usr/include/mysql
+              if test -f /usr/lib64/mysql/libmysqlclient_r.a \
+                      -o -f /usr/lib64/mysql/libmysqlclient_r.so; then  
+                 MYSQL_LIBDIR=/usr/lib64/mysql
+              elif test -f /usr/lib64/libmysqlclient_r.a \
                         -o -f /usr/lib64/libmysqlclient_r.so; then
-                           MYSQL_LIBDIR=/usr/lib64
-                   elif test -f /usr/lib/mysql/libmysqlclient_r.a \
-                          -o -f /usr/lib/mysql/libmysqlclient_r.so; then
-                           MYSQL_LIBDIR=/usr/lib/mysql
-                   else
-                           MYSQL_LIBDIR=/usr/lib
-                   fi
-                   MYSQL_BINDIR=/usr/bin
+                 MYSQL_LIBDIR=/usr/lib64
+              elif test -f /usr/lib/x86_64-linux-gnu/libmysqlclient_r.a \
+                        -o -f /usr/lib/x86_64-linux-gnu/libmysqlclient_r.so; then
+                 MYSQL_LIBDIR=/usr/lib/x86_64-linux-gnu
+              elif test -f /usr/lib/mysql/libmysqlclient_r.a \
+                        -o -f /usr/lib/mysql/libmysqlclient_r.so; then
+                 MYSQL_LIBDIR=/usr/lib/mysql
+              else
+                 MYSQL_LIBDIR=/usr/lib
+              fi
+              MYSQL_BINDIR=/usr/bin
            elif test -f /usr/include/mysql.h; then
-                   MYSQL_INCDIR=/usr/include
-                   if test -f /usr/lib64/libmysqlclient_r.a \
-                        -o -f /usr/lib64/libmysqlclient_r.so; then
-                           MYSQL_LIBDIR=/usr/lib64
-                   else
-                           MYSQL_LIBDIR=/usr/lib
-                   fi
-                   MYSQL_BINDIR=/usr/bin
+              MYSQL_INCDIR=/usr/include
+              if test -f /usr/lib64/libmysqlclient_r.a \
+                      -o -f /usr/lib64/libmysqlclient_r.so; then
+                 MYSQL_LIBDIR=/usr/lib64
+              else
+                 MYSQL_LIBDIR=/usr/lib
+              fi
+              MYSQL_BINDIR=/usr/bin
            elif test -f /usr/local/include/mysql/mysql.h; then
-                   MYSQL_INCDIR=/usr/local/include/mysql
-                   if test -f /usr/local/lib64/mysql/libmysqlclient_r.a \
-                        -o -f /usr/local/lib64/mysql/libmysqlclient_r.so; then
-                           MYSQL_LIBDIR=/usr/local/lib64/mysql
-                   else
-                           MYSQL_LIBDIR=/usr/local/lib/mysql
-                   fi
-                   MYSQL_BINDIR=/usr/local/bin
+              MYSQL_INCDIR=/usr/local/include/mysql
+              if test -f /usr/local/lib64/mysql/libmysqlclient_r.a \
+                      -o -f /usr/local/lib64/mysql/libmysqlclient_r.so; then
+                 MYSQL_LIBDIR=/usr/local/lib64/mysql
+              else
+                 MYSQL_LIBDIR=/usr/local/lib/mysql
+              fi
+              MYSQL_BINDIR=/usr/local/bin
            elif test -f /usr/local/include/mysql.h; then
-                   MYSQL_INCDIR=/usr/local/include
-                   if test -f /usr/local/lib64/libmysqlclient_r.a \
-                        -o -f /usr/local/lib64/libmysqlclient_r.so; then
-                           MYSQL_LIBDIR=/usr/local/lib64
-                   else
-                           MYSQL_LIBDIR=/usr/local/lib
-                   fi
-                   MYSQL_BINDIR=/usr/local/bin
+              MYSQL_INCDIR=/usr/local/include
+              if test -f /usr/local/lib64/libmysqlclient_r.a \
+                      -o -f /usr/local/lib64/libmysqlclient_r.so; then
+                 MYSQL_LIBDIR=/usr/local/lib64
+              else
+                 MYSQL_LIBDIR=/usr/local/lib
+              fi
+              MYSQL_BINDIR=/usr/local/bin
            else
               AC_MSG_RESULT(no)
               AC_MSG_ERROR(Unable to find mysql.h in standard locations)
@@ -418,7 +436,6 @@ AC_HELP_STRING([--with-mysql@<:@=DIR@:>@], [Include MySQL support. DIR is the My
         else
            MYSQL_LIBS="-L$MYSQL_LIBDIR -lmysqlclient_r -lz"
         fi
-        AC_DEFINE(HAVE_THREAD_SAFE_MYSQL, 1, [Set if Thread Safe MySQL can be checked using mysql_thread_safe])
         DB_LIBS="${DB_LIBS} ${MYSQL_LIBS}"
      fi
      MYSQL_LIB=$MYSQL_LIBDIR/libmysqlclient_r.a
diff --git a/autoconf/bacula-macros/os.m4 b/autoconf/bacula-macros/os.m4
index 2833e4d..1af4f90 100644
--- a/autoconf/bacula-macros/os.m4
+++ b/autoconf/bacula-macros/os.m4
@@ -62,6 +62,14 @@ else
         BA_CONDITIONAL(HAVE_SUN_OS, $FALSEPRG)
 fi
 
+if test $HAVE_UNAME=yes -a x`uname -s` = xGNU
+then
+        BA_CONDITIONAL(HAVE_HURD_OS, $TRUEPRG)
+        AC_DEFINE(HAVE_HURD_OS)
+else
+        BA_CONDITIONAL(HAVE_HURD_OS, $FALSEPRG)
+fi
+
 if test $HAVE_UNAME=yes -a x`uname -s` = xOSF1
 then
         BA_CONDITIONAL(HAVE_OSF1_OS, $TRUEPRG)
@@ -168,6 +176,9 @@ then
 elif test $HAVE_UNAME=yes -a x`uname -s` = xSunOS
 then
         DISTNAME=solaris
+elif test $HAVE_UNAME=yes -a x`uname -s` = xGNU
+then
+        DISTNAME=hurd
 elif test $HAVE_UNAME=yes -a x`uname -s` = xFreeBSD
 then
         DISTNAME=freebsd
diff --git a/autoconf/config.h.in b/autoconf/config.h.in
index 4d0a5f9..4ce9ed2 100644
--- a/autoconf/config.h.in
+++ b/autoconf/config.h.in
@@ -27,9 +27,6 @@
 /* Define if you want to use MySQL */
 #undef HAVE_MYSQL
 
-/* Defined if MySQL thread safe library is present */
-#undef HAVE_THREAD_SAFE_MYSQL
-
 /* Define if you want to use embedded MySQL */
 #undef HAVE_EMBEDDED_MYSQL
 
@@ -52,9 +49,6 @@
 /* Define if you have GCC */
 #undef HAVE_GCC
 
-/* Define if you have the Andrew File System.  */
-#undef AFS
-
 /* Define If you want find -nouser and -nogroup to make tables of
    used UIDs and GIDs at startup instead of using getpwuid or
    getgrgid when needed.  Speeds up -nouser and -nogroup unless you
@@ -120,9 +114,6 @@
 /* Define if you have libacl */
 #undef HAVE_ACL
 
-/* Define if you have AFS acls */
-#undef HAVE_AFS_ACL
-
 /* General libs */
 #undef LIBS
 
@@ -152,6 +143,7 @@
 #undef HAVE_CYGWIN
 #undef HAVE_OSF1_OS
 #undef HAVE_DARWIN_OS
+#undef HAVE_HURD_OS
 
 /* Set to correct scanf value for long long int */
 #undef lld
@@ -208,7 +200,6 @@
 /* Define if language support is enabled */
 #undef ENABLE_NLS
 
-
 /* Define if building universal (internal helper macro) */
 #undef AC_APPLE_UNIVERSAL_BUILD
 
@@ -242,6 +233,18 @@
 /* Define to 1 if you have the 'add_proplist_entry' function. */
 #undef HAVE_ADD_PROPLIST_ENTRY
 
+/* Define to 1 if your system has AFS support */
+#undef HAVE_AFS
+
+/* Andrew FileSystem ACL support */
+#undef HAVE_AFS_ACL
+
+/* Define to 1 if you have the <afs/afsint.h> header file. */
+#undef HAVE_AFS_AFSINT_H
+
+/* Define to 1 if you have the <afs/venus.h> header file. */
+#undef HAVE_AFS_VENUS_H
+
 /* Define to 1 if you have `alloca', as a function or macro. */
 #undef HAVE_ALLOCA
 
@@ -284,6 +287,9 @@
 /* Define to 1 if you have the `chflags' function. */
 #undef HAVE_CHFLAGS
 
+/* Define to 1 if you have the 'closefrom' function. */
+#undef HAVE_CLOSEFROM
+
 /* Set if Bacula conio support enabled */
 #undef HAVE_CONIO
 
@@ -297,6 +303,10 @@
    */
 #undef HAVE_DCGETTEXT
 
+/* Define to 1 if you have the declaration of `cygwin_conv_path', and to 0 if
+   you don't. */
+#undef HAVE_DECL_CYGWIN_CONV_PATH
+
 /* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you
    don't. */
 #undef HAVE_DECL_FEOF_UNLOCKED
@@ -325,12 +335,21 @@
    */
 #undef HAVE_DIRENT_H
 
+/* Define if you have the GNU dld library. */
+#undef HAVE_DLD
+
+/* Define to 1 if you have the `dlerror' function. */
+#undef HAVE_DLERROR
+
 /* Define to 1 if you have the <dlfcn.h> header file. */
 #undef HAVE_DLFCN_H
 
 /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
 #undef HAVE_DOPRNT
 
+/* Define if you have the _dyld_func_lookup function. */
+#undef HAVE_DYLD
+
 /* Set if you have an Embedded MySQL Database */
 #undef HAVE_EMBEDDED_MYSQL
 
@@ -367,6 +386,9 @@
 /* Define to 1 if you have the 'fchownat' function. */
 #undef HAVE_FCHOWNAT
 
+/* Set if you have 'F_CLOSEM' fcntl flag */
+#undef HAVE_FCNTL_F_CLOSEM
+
 /* Define to 1 if you have the <fcntl.h> header file. */
 #undef HAVE_FCNTL_H
 
@@ -388,6 +410,12 @@
 /* Define to 1 if you have the `fwprintf' function. */
 #undef HAVE_FWPRINTF
 
+/* Define to 1 if you have the 'gai_strerror' function. */
+#undef HAVE_GAI_STRERROR
+
+/* Define to 1 if getaddrinfo exists and works */
+#undef HAVE_GETADDRINFO
+
 /* Define to 1 if you have the `getcwd' function. */
 #undef HAVE_GETCWD
 
@@ -466,7 +494,7 @@
 /* Define to 1 if the system has the type `intptr_t'. */
 #undef HAVE_INTPTR_T
 
-/* Define if <inttypes.h> exists and doesn't clash with <sys/types.h>. */
+/* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H
 
 /* Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, and
@@ -500,6 +528,12 @@
 /* Define to 1 if you have the <libc.h> header file. */
 #undef HAVE_LIBC_H
 
+/* Define if you have the libdl library or equivalent. */
+#undef HAVE_LIBDL
+
+/* Define if libdlloader will be built on this platform */
+#undef HAVE_LIBDLLOADER
+
 /* Define to 1 if you have the `inet' library (-linet). */
 #undef HAVE_LIBINET
 
@@ -695,6 +729,9 @@
 /* Define if the SHA-2 family of digest algorithms is available */
 #undef HAVE_SHA2
 
+/* Define if you have the shl_load function. */
+#undef HAVE_SHL_LOAD
+
 /* Define to 1 if you have the `signal' function. */
 #undef HAVE_SIGNAL
 
@@ -881,9 +918,6 @@
 /* Define to 1 if you have the <term.h> header file. */
 #undef HAVE_TERM_H
 
-/* Set if Thread Safe MySQL can be checked using mysql_thread_safe */
-#undef HAVE_THREAD_SAFE_MYSQL
-
 /* Define if TLS support should be enabled */
 #undef HAVE_TLS
 
diff --git a/autoconf/config.h.in.save b/autoconf/config.h.in.save
index 3590d47..ecafd61 100644
--- a/autoconf/config.h.in.save
+++ b/autoconf/config.h.in.save
@@ -27,8 +27,8 @@
 /* Define if you want to use MySQL */
 #undef HAVE_MYSQL
 
-/* Defined if MySQL thread safe library is present */
-#undef HAVE_THREAD_SAFE_MYSQL
+/* Set if have entrypoint mysql_thread_safe */
+#undef HAVE_MYSQL_THREAD_SAFE
 
 /* Define if you want to use embedded MySQL */
 #undef HAVE_EMBEDDED_MYSQL
@@ -53,7 +53,7 @@
 #undef HAVE_GCC
 
 /* Define if you have the Andrew File System.  */
-#undef HAVE_AFS
+#undef AFS
 
 /* Define If you want find -nouser and -nogroup to make tables of
    used UIDs and GIDs at startup instead of using getpwuid or
@@ -114,9 +114,15 @@
 /* Define if you have zlib */
 #undef HAVE_LIBZ
 
+/* Define if you have lzo lib */
+#undef HAVE_LZO
+
 /* Define if you have libacl */
 #undef HAVE_ACL
 
+/* Define if you have AFS acls */
+#undef HAVE_AFS_ACL
+
 /* General libs */
 #undef LIBS
 
@@ -202,6 +208,13 @@
 /* Define if language support is enabled */
 #undef ENABLE_NLS
 
+
+/* Define if building universal (internal helper macro) */
+#undef AC_APPLE_UNIVERSAL_BUILD
+
+/* Set if ***BEEF*** DEMO code enabled */
+#undef BEEF_DEMO_ENABLED
+
 /* Define to 1 if the `closedir' function returns void instead of `int'. */
 #undef CLOSEDIR_VOID
 
@@ -220,6 +233,27 @@
 /* Normal acl support */
 #undef HAVE_ACL
 
+/* Defines if your system have the ACL_TYPE_DEFAULT_DIR acl type */
+#undef HAVE_ACL_TYPE_DEFAULT_DIR
+
+/* Defines if your system have the ACL_TYPE_EXTENDED acl type */
+#undef HAVE_ACL_TYPE_EXTENDED
+
+/* Defines if your system have the ACL_TYPE_NFS4 acl type */
+#undef HAVE_ACL_TYPE_NFS4
+
+/* Define to 1 if you have the 'add_proplist_entry' function. */
+#undef HAVE_ADD_PROPLIST_ENTRY
+
+/* Define to 1 if your system has AFS support */
+#undef HAVE_AFS
+
+/* Andrew FileSystem ACL support */
+#undef HAVE_AFS_ACL
+
+/* Define to 1 if you have the <afs/stds.h> header file. */
+#undef HAVE_AFS_STDS_H
+
 /* Define to 1 if you have `alloca', as a function or macro. */
 #undef HAVE_ALLOCA
 
@@ -242,9 +276,15 @@
 /* Defines if your system have the attr.h header file */
 #undef HAVE_ATTR_H
 
+/* Define to 1 if you have the `backtrace' function. */
+#undef HAVE_BACKTRACE
+
 /* Set if Bacula bat Qt4 GUI support enabled */
 #undef HAVE_BAT
 
+/* Big Endian */
+#undef HAVE_BIG_ENDIAN
+
 /* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
    CoreFoundation framework. */
 #undef HAVE_CFLOCALECOPYCURRENT
@@ -265,12 +305,6 @@
 /* Define to 1 if you have the <curses.h> header file. */
 #undef HAVE_CURSES_H
 
-/* Set if you have the DBI driver */
-#undef HAVE_DBI
-
-/* Set if DBI DB batch insert code enabled */
-#undef HAVE_DBI_BATCH_FILE_INSERT
-
 /* Define if the GNU dcgettext() function is already present or preinstalled.
    */
 #undef HAVE_DCGETTEXT
@@ -309,6 +343,9 @@
 /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
 #undef HAVE_DOPRNT
 
+/* Set if you have an Embedded MySQL Database */
+#undef HAVE_EMBEDDED_MYSQL
+
 /* Define to 1 if you have the 'extattr_get_file' function. */
 #undef HAVE_EXTATTR_GET_FILE
 
@@ -336,9 +373,6 @@
 /* Extended acl support */
 #undef HAVE_EXTENDED_ACL
 
-/* AFS ACL support */
-#undef HAVE_AFS_ACL
-
 /* Define to 1 if you have the `fchdir' function. */
 #undef HAVE_FCHDIR
 
@@ -369,6 +403,9 @@
 /* Define to 1 if you have the `getcwd' function. */
 #undef HAVE_GETCWD
 
+/* Define to 1 if you have the 'getea' function. */
+#undef HAVE_GETEA
+
 /* Define to 1 if you have the `getegid' function. */
 #undef HAVE_GETEGID
 
@@ -393,12 +430,18 @@
 /* Define to 1 if you have the `getmntent' function. */
 #undef HAVE_GETMNTENT
 
-/* Define to 1 if you have the `getpagesize' function. */
+/* Define to 1 if you have the `getmntinfo' function. */
+#undef HAVE_GETMNTINFO
+
+/* Set if have getpagesize */
 #undef HAVE_GETPAGESIZE
 
 /* Define to 1 if you have the `getpid' function. */
 #undef HAVE_GETPID
 
+/* Define to 1 if you have the 'getproplist' function. */
+#undef HAVE_GETPROPLIST
+
 /* Define if the GNU gettext() function is already present or preinstalled. */
 #undef HAVE_GETTEXT
 
@@ -411,6 +454,9 @@
 /* Define to 1 if you have the 'getxattr' function. */
 #undef HAVE_GETXATTR
 
+/* Define to 1 if you have the 'get_proplist_entry' function. */
+#undef HAVE_GET_PROPLIST_ENTRY
+
 /* Define to 1 if you have the <grp.h> header file. */
 #undef HAVE_GRP_H
 
@@ -426,9 +472,6 @@
 /* Define to 1 if you have the `inet_pton' function. */
 #undef HAVE_INET_PTON
 
-/* Set if have Ingres Database */
-#undef HAVE_INGRES
-
 /* Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>. */
 #undef HAVE_INTMAX_T
 
@@ -457,6 +500,9 @@
 /* Define if your <locale.h> file defines LC_MESSAGES. */
 #undef HAVE_LC_MESSAGES
 
+/* Define to 1 if you have the 'lgetea' function. */
+#undef HAVE_LGETEA
+
 /* Define to 1 if you have the 'lgetxattr' function. */
 #undef HAVE_LGETXATTR
 
@@ -496,9 +542,18 @@
 /* Define to 1 if you have the <limits.h> header file. */
 #undef HAVE_LIMITS_H
 
+/* Define to 1 if you have the 'listea' function. */
+#undef HAVE_LISTEA
+
 /* Define to 1 if you have the 'listxattr' function. */
 #undef HAVE_LISTXATTR
 
+/* Little Endian */
+#undef HAVE_LITTLE_ENDIAN
+
+/* Define to 1 if you have the 'llistea' function. */
+#undef HAVE_LLISTEA
+
 /* Define to 1 if you have the 'llistxattr' function. */
 #undef HAVE_LLISTXATTR
 
@@ -514,15 +569,24 @@
 /* Define if you have the 'long long' type. */
 #undef HAVE_LONG_LONG
 
+/* Define to 1 if you have the 'lsetea' function. */
+#undef HAVE_LSETEA
+
 /* Define to 1 if you have the 'lsetxattr' function. */
 #undef HAVE_LSETXATTR
 
 /* Define to 1 if you have the `lstat' function. */
 #undef HAVE_LSTAT
 
+/* Define to 1 if you have LZO compression */
+#undef HAVE_LZO
+
 /* Define to 1 if you have the <malloc.h> header file. */
 #undef HAVE_MALLOC_H
 
+/* Set if have malloc_trim */
+#undef HAVE_MALLOC_TRIM
+
 /* Define to 1 if you have the <memory.h> header file. */
 #undef HAVE_MEMORY_H
 
@@ -538,12 +602,6 @@
 /* Define to 1 if you have the `munmap' function. */
 #undef HAVE_MUNMAP
 
-/* Set if you have an MySQL Database */
-#undef HAVE_MYSQL
-
-/* Set if have mysql_thread_safe */
-#undef HAVE_MYSQL_THREAD_SAFE
-
 /* Define to 1 if you have the `nanosleep' function. */
 #undef HAVE_NANOSLEEP
 
@@ -577,6 +635,9 @@
 /* Define if your printf() function supports format strings with positions. */
 #undef HAVE_POSIX_PRINTF
 
+/* Set if you have an PostgreSQL Database */
+#undef HAVE_POSTGRESQL
+
 /* Set if PostgreSQL DB batch insert code enabled */
 #undef HAVE_POSTGRESQL_BATCH_FILE_INSERT
 
@@ -610,6 +671,9 @@
 /* Define to 1 if you have the `select' function. */
 #undef HAVE_SELECT
 
+/* Define to 1 if you have the 'setea' function. */
+#undef HAVE_SETEA
+
 /* Define to 1 if you have the `setenv' function. */
 #undef HAVE_SETENV
 
@@ -622,6 +686,9 @@
 /* Define to 1 if you have the `setpgrp' function. */
 #undef HAVE_SETPGRP
 
+/* Define to 1 if you have the 'setproplist' function. */
+#undef HAVE_SETPROPLIST
+
 /* Define to 1 if you have the `setreuid' function. */
 #undef HAVE_SETREUID
 
@@ -637,12 +704,18 @@
 /* Define to 1 if you have the `signal' function. */
 #undef HAVE_SIGNAL
 
+/* Define to 1 if you have the 'sizeof_proplist_entry' function. */
+#undef HAVE_SIZEOF_PROPLIST_ENTRY
+
 /* Define to 1 if you have the `snprintf' function. */
 #undef HAVE_SNPRINTF
 
 /* Set if socklen_t exists */
 #undef HAVE_SOCKLEN_T
 
+/* Set if you have an SQLite3 Database */
+#undef HAVE_SQLITE3
+
 /* Set if have sqlite3_threadsafe */
 #undef HAVE_SQLITE3_THREADSAFE
 
@@ -698,16 +771,16 @@
 /* Define to 1 if you have the `strtoul' function. */
 #undef HAVE_STRTOUL
 
-/* Define to 1 if `st_blksize' is member of `struct stat'. */
+/* Define to 1 if `st_blksize' is a member of `struct stat'. */
 #undef HAVE_STRUCT_STAT_ST_BLKSIZE
 
-/* Define to 1 if `st_blocks' is member of `struct stat'. */
+/* Define to 1 if `st_blocks' is a member of `struct stat'. */
 #undef HAVE_STRUCT_STAT_ST_BLOCKS
 
-/* Define to 1 if `st_rdev' is member of `struct stat'. */
+/* Define to 1 if `st_rdev' is a member of `struct stat'. */
 #undef HAVE_STRUCT_STAT_ST_RDEV
 
-/* Define to 1 if `tm_zone' is member of `struct tm'. */
+/* Define to 1 if `tm_zone' is a member of `struct tm'. */
 #undef HAVE_STRUCT_TM_TM_ZONE
 
 /* Define to 1 if your `struct stat' has `st_blksize'. Deprecated, use
@@ -722,6 +795,9 @@
    `HAVE_STRUCT_STAT_ST_RDEV' instead. */
 #undef HAVE_ST_RDEV
 
+/* Define to 1 if systemd support should be enabled */
+#undef HAVE_SYSTEMD
+
 /* Defines if your system have the sys/acl.h header file */
 #undef HAVE_SYS_ACL_H
 
@@ -741,6 +817,9 @@
    */
 #undef HAVE_SYS_DIR_H
 
+/* Defines if your system have the sys/ea.h header file */
+#undef HAVE_SYS_EA_H
+
 /* Defines if your system have the sys/extattr.h header file */
 #undef HAVE_SYS_EXTATTR_H
 
@@ -763,6 +842,9 @@
 /* Define to 1 if you have the <sys/prctl.h> header file. */
 #undef HAVE_SYS_PRCTL_H
 
+/* Defines if your system have the sys/proplist.h header file */
+#undef HAVE_SYS_PROPLIST_H
+
 /* Define to 1 if you have the <sys/select.h> header file. */
 #undef HAVE_SYS_SELECT_H
 
@@ -915,6 +997,9 @@
 /* Define to the one symbol short name of this package. */
 #undef PACKAGE_TARNAME
 
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
 /* Define to the version of this package. */
 #undef PACKAGE_VERSION
 
@@ -955,9 +1040,9 @@
 /* If using the C implementation of alloca, define if you know the
    direction of stack growth for your system; otherwise it will be
    automatically deduced at runtime.
-	STACK_DIRECTION > 0 => grows toward higher addresses
-	STACK_DIRECTION < 0 => grows toward lower addresses
-	STACK_DIRECTION = 0 => direction of growth unknown */
+        STACK_DIRECTION > 0 => grows toward higher addresses
+        STACK_DIRECTION < 0 => grows toward lower addresses
+        STACK_DIRECTION = 0 => direction of growth unknown */
 #undef STACK_DIRECTION
 
 /* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
@@ -975,6 +1060,18 @@
 /* Set if DB batch insert code enabled */
 #undef USE_BATCH_FILE_INSERT
 
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+   significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+#  define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+#  undef WORDS_BIGENDIAN
+# endif
+#endif
+
 /* Define to 1 if the X Window System is missing or not being used. */
 #undef X_DISPLAY_MISSING
 
diff --git a/autoconf/configure.in b/autoconf/configure.in
index 02b17a3..1237328 100644
--- a/autoconf/configure.in
+++ b/autoconf/configure.in
@@ -178,6 +178,7 @@ AC_ARG_ENABLE(libtool,
    ]
 )
 LT_INIT([shared disable-static])
+LT_LIB_DLLOAD
 LT_LANG([C++])
 
 if test x$use_libtool != xno; then
@@ -957,7 +958,7 @@ AC_ARG_WITH(python,
 		PYTHON_LIBS=`/usr/bin/python-config --libs`
 	     else
 		for python_root in /usr /usr/local /usr/sfw; do
-		   for ver in python2.2 python2.3 python2.4 python2.5 python2.6 python3; do
+		   for ver in python2.2 python2.3 python2.4 python2.5 python2.6 python2.7 python3; do
 		      if test -f $python_root/include/${ver}/Python.h; then
 			 PYTHON_INCDIR=-I$python_root/include/${ver}
 			 if test -d $python_root/lib64/${ver}/config; then
@@ -1215,7 +1216,7 @@ AC_SEARCH_LIBS(dlopen, [dl])
 dnl ------------------------------------------
 dnl Where to place working dir
 dnl ------------------------------------------
-working_dir=`eval echo ${prefix}/var/bacula/working`
+working_dir=`eval echo ${prefix}/opt/bacula/working`
 AC_ARG_WITH(working-dir,
    AC_HELP_STRING([--with-working-dir=PATH], [specify path of Bacula working directory]),
    [
@@ -1264,6 +1265,11 @@ hostname=`uname -n | cut -d '.' -f 1`
 if test x${hostname} = x ; then
   hostname="localhost"
 fi
+dnl Make sure hostname is resolved
+ping -c 1 $hostname 2>/dev/null 1>/dev/null
+if test ! $? = 0; then
+  hostname="localhost"
+fi
 AC_ARG_WITH(hostname,
    AC_HELP_STRING([--with-hostname=RESNAME], [specify host name for daemons]),
    [
@@ -1295,7 +1301,7 @@ AC_SUBST(scriptdir)
 dnl ------------------------------------------
 dnl Where to place bsrdir (bsr files)
 dnl ------------------------------------------
-bsrdir=/tmp
+bsrdir=`eval echo ${prefix}/opt/bacula/bsr`
 AC_ARG_WITH(bsrdir,
    AC_HELP_STRING([--with-bsrdir=PATH], [specify path of Bacula bsrs directory]),
    [
@@ -1310,7 +1316,7 @@ AC_SUBST(bsrdir)
 dnl ------------------------------------------
 dnl Where to place logdir (bsr files)
 dnl ------------------------------------------
-logdir=/tmp
+logdir=`eval echo ${prefix}/opt/bacula/log`
 AC_ARG_WITH(logdir,
    AC_HELP_STRING([--with-logdir=PATH], [specify path of Bacula logs directory]),
    [
@@ -1860,6 +1866,7 @@ AC_CHECK_HEADERS( \
    stdarg.h \
    stdlib.h \
    stdint.h \
+   inttypes.h \
    string.h \
    strings.h \
    termios.h \
@@ -2342,6 +2349,14 @@ AC_CHECK_FUNCS( \
    [echo 'configure: cannot find needed function.'; exit 1]
 )
 
+AC_CHECK_DECL(
+    F_CLOSEM,
+    AC_DEFINE(HAVE_FCNTL_F_CLOSEM, 1, [Set if you have 'F_CLOSEM' fcntl flag]),
+    ,
+    [#include <fcntl.h>]
+)
+
+AC_CHECK_FUNC(closefrom, [AC_DEFINE(HAVE_CLOSEFROM, 1, [Define to 1 if you have the 'closefrom' function.])])
 AC_CHECK_FUNCS(getpagesize, [AC_DEFINE(HAVE_GETPAGESIZE, 1, [Set if have getpagesize])])
 AC_CHECK_FUNCS(malloc_trim, [AC_DEFINE(HAVE_MALLOC_TRIM, 1, [Set if have malloc_trim])])
 
@@ -2364,7 +2379,7 @@ AC_CACHE_CHECK(for va_copy, ba_cv_va_copy,
 	  ], [
 	      call_use_va_copy(1,2,3)
 	  ], [
-	      ba_cv_va_copy=yes,
+	      ba_cv_va_copy=yes
 	  ], [
 	      ba_cv_va_copy=no
 	  ]
@@ -2410,6 +2425,58 @@ if test $ac_cv_struct_sockaddr_sa_len = yes; then
   AC_DEFINE(HAVE_SA_LEN, 1, [Define if sa_len field exists in struct sockaddr])
 fi
 
+dnl
+dnl check for working getaddrinfo()
+dnl
+dnl Note that if the system doesn't have gai_strerror(), we
+dnl can't use getaddrinfo() because we can't get strings
+dnl describing the error codes.
+dnl
+AC_CACHE_CHECK(for working getaddrinfo, ac_cv_working_getaddrinfo,
+   [
+       AC_TRY_RUN(
+	  [
+	      #include <netdb.h>
+	      #include <string.h>
+	      #include <sys/types.h>
+	      #include <sys/socket.h>
+
+	      void main(void) {
+		  struct addrinfo hints, *ai;
+		  int error;
+
+		  memset(&hints, 0, sizeof(hints));
+		  hints.ai_family = AF_UNSPEC;
+		  hints.ai_socktype = SOCK_STREAM;
+		  error = getaddrinfo("127.0.0.1", NULL, &hints, &ai);
+		  if (error) {
+		      exit(1);
+		  }
+		  if (ai->ai_addr->sa_family != AF_INET) {
+		      exit(1);
+		  }
+		  exit(0);
+	      }
+	  ],[
+	      ac_cv_working_getaddrinfo="yes"
+	  ],[
+	      ac_cv_working_getaddrinfo="no"
+	  ],[
+	      ac_cv_working_getaddrinfo="yes"
+	  ]
+       )
+   ]
+)
+AC_CHECK_FUNC(gai_strerror, [AC_DEFINE(HAVE_GAI_STRERROR, 1, [Define to 1 if you have the 'gai_strerror' function.])])
+
+if test "$ac_cv_working_getaddrinfo" = "yes"; then
+  if test "$ac_cv_func_gai_strerror" != "yes"; then
+    ac_cv_working_getaddrinfo="no"
+  else
+    AC_DEFINE(HAVE_GETADDRINFO, 1, [Define to 1 if getaddrinfo exists and works])
+  fi
+fi
+
 AC_FUNC_STRFTIME
 AC_FUNC_VPRINTF
 AC_FUNC_ALLOCA
@@ -2451,6 +2518,113 @@ AC_CHECK_HEADER(lzo/lzoconf.h,
 AC_SUBST(LZOLIBS)
 
 dnl
+dnl Check if we have AFS on this system
+dnl
+AFS_CFLAGS=""
+AFS_LIBS=""
+support_afs=auto
+AC_ARG_ENABLE(afs,
+   AC_HELP_STRING([--disable-afs], [disable afs support @<:@default=auto@:>@]),
+   [
+       if test x$enableval = xyes; then
+	  support_afs=yes
+       elif test x$enableval = xno; then
+	  support_afs=no
+       fi
+   ]
+)
+
+have_afs=no
+if test x$support_afs = xyes -o x$support_afs = xauto; then
+   AC_ARG_WITH(afsdir,
+      AC_HELP_STRING([--with-afsdir@<:@=DIR@:>@], [Directory holding AFS includes/libs]),
+      with_afsdir=$withval
+   )
+
+   dnl
+   dnl Search in standard places, or --with-afsdir not specified
+   dnl
+   if test x$with_afsdir = x; then
+      for root in /usr /usr/local; do
+	 if test -d ${root}/include/afs/ ; then
+	    with_afsdir=${root}
+	    break
+	 fi
+	 if test -d ${root}/include/openafs/afs/ ; then
+	    with_afsdir=${root}
+	    break
+	 fi
+      done
+   fi
+
+   if test -d ${with_afsdir}/include/afs/ ; then
+      AFS_CFLAGS="-I${with_afsdir}/include"
+   else
+      if test -d ${with_afsdir}/include/openafs/afs/ ; then
+	 AFS_CFLAGS="-I${with_afsdir}/include/openafs"
+      fi
+   fi
+
+   saved_CFLAGS="${CFLAGS}"
+   saved_CPPFLAGS="${CPPFLAGS}"
+   CFLAGS="${AFS_CFLAGS} ${saved_CFLAGS}"
+   CPPFLAGS="${AFS_CFLAGS} ${saved_CPPFLAGS}"
+
+   AC_CHECK_HEADERS(afs/afsint.h)
+   AC_TRY_CPP(
+       [
+	  #include <afs/afsint.h>
+	  #include <afs/venus.h>
+       ],
+       AC_DEFINE(HAVE_AFS_VENUS_H,1,[Define to 1 if you have the <afs/venus.h> header file.])
+   )
+
+   CFLAGS="${saved_CFLAGS}"
+   CPPFLAGS="${saved_CPPFLAGS}"
+
+   dnl
+   dnl See if we can find a libsys with the pioctl symbol in there
+   dnl
+   AC_MSG_CHECKING(for pioctl in AFS libsys)
+   for dir in ${with_afsdir}/lib \
+	      ${with_afsdir}/lib/afs \
+	      ${with_afsdir}/lib/openafs \
+	      ${with_afsdir}/lib64 \
+	      ${with_afsdir}/lib64/afs \
+	      ${with_afsdir}/lib64/openafs
+   do
+      for arch_type in .a .so
+      do
+	 A=`test -f ${dir}/libsys${arch_type} && nm ${dir}/libsys${arch_type} 2>/dev/null | grep pioctl`
+	 pkg=$?
+	 if test $pkg = 0; then
+	    have_afs=yes
+	    AFS_LIBS="-L${dir} -lsys -lrx -llwp ${dir}/util${arch_type}"
+	    break
+	 fi
+      done
+   done
+
+   if test $have_afs = yes; then
+      AC_MSG_RESULT(yes)
+   else
+      AC_MSG_RESULT(no)
+   fi
+
+   if test x$support_afs = xyes -a $have_afs != yes; then
+      AC_MSG_ERROR([afs support explicitly enabled but no supported afs implementation found,
+  please either load the afs libraries or rerun configure without --enable-afs])
+   else
+      if test $have_afs = yes; then
+	 AC_DEFINE(HAVE_AFS,1,[Define to 1 if your system has AFS support])
+	 AC_DEFINE(HAVE_AFS_ACL,1,[Andrew FileSystem ACL support])
+      fi
+   fi
+fi
+AC_SUBST(AFS_CFLAGS)
+AC_SUBST(AFS_LIBS)
+
+dnl
 dnl Check for ACL support and libraries
 dnl
 support_acl=auto
@@ -2486,7 +2660,18 @@ if test x$support_acl = xyes -o x$support_acl = xauto; then
       AC_CHECK_LIB(acl, acl_get_file,
 	 [
 	     have_acl=yes
-	     FDLIBS="-lacl $FDLIBS"
+	     if test $have_afs = yes; then
+		dnl
+		dnl Because of possible naming conflict with AFS libacl make sure we use the one in /usr/lib64 or /usr/lib !!!
+		dnl
+		if test -d /usr/lib64/; then
+		   FDLIBS="-L/usr/lib64 -lacl $FDLIBS"
+		else
+		   FDLIBS="-L/usr/lib -lacl $FDLIBS"
+		fi
+	     else
+		FDLIBS="-lacl $FDLIBS"
+	     fi
 	 ]
       )
    fi
@@ -2858,16 +3043,6 @@ WIN32=
 MACOSX=
 COMPRESS_MANPAGES=yes
 
-hostname=`uname -n | cut -d '.' -f 1`
-if test x${hostname} = x ; then
-   hostname="localhost"
-fi
-dnl Make sure hostname is resolved
-ping -c 1 $hostname 2>/dev/null 1>/dev/null
-if test ! $? = 0; then
-  hostname="localhost"
-fi
-
 case "$DISTNAME" in
 aix)
    DISTVER=`uname -r`
@@ -2977,6 +3152,16 @@ freebsd)
        platforms/freebsd/bacula-dir"
    largefile_support="yes"
   ;;
+hurd)
+   DISTVER=`uname -r`
+   TAPEDRIVE="/dev/nst0"
+   PSCMD="ps -e -o pid,command"
+   PFILES="${PFILES} \
+       platforms/hurd/Makefile \
+       platforms/hurd/bacula-fd \
+       platforms/hurd/bacula-sd \
+       platforms/hurd/bacula-dir"
+  ;;
 hpux)
    PSCMD="UNIX95=1; ps -e -o pid,comm"
    CFLAGS="${CFLAGS} -D_XOPEN_SOURCE_EXTENDED=1"
@@ -3146,6 +3331,7 @@ AC_ARG_WITH(systemd,
 
 	   PFILES="${PFILES} \
 		   platforms/systemd/Makefile \
+		   platforms/systemd/bacula.conf \
 		   platforms/systemd/bacula-dir.service \
 		   platforms/systemd/bacula-fd.service \
 		   platforms/systemd/bacula-sd.service"
@@ -3465,6 +3651,7 @@ Configuration on `date`:
    build-dird:		     ${build_dird}
    build-stored:	     ${build_stored}
    Plugin support:	     ${have_plugins}
+   AFS support: 	     ${have_afs}
    ACL support: 	     ${have_acl}
    XATTR support:	     ${have_xattr}
    Python support:	     ${support_python} ${PYTHON_LIBS}
diff --git a/autoconf/libtool/ltdl.m4 b/autoconf/libtool/ltdl.m4
new file mode 100644
index 0000000..42e07e9
--- /dev/null
+++ b/autoconf/libtool/ltdl.m4
@@ -0,0 +1,810 @@
+# ltdl.m4 - Configure ltdl for the target system. -*-Autoconf-*-
+#
+#   Copyright (C) 1999-2006, 2007, 2008 Free Software Foundation, Inc.
+#   Written by Thomas Tanner, 1999
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 18 LTDL_INIT
+
+# LT_CONFIG_LTDL_DIR(DIRECTORY, [LTDL-MODE])
+# ------------------------------------------
+# DIRECTORY contains the libltdl sources.  It is okay to call this
+# function multiple times, as long as the same DIRECTORY is always given.
+AC_DEFUN([LT_CONFIG_LTDL_DIR],
+[AC_BEFORE([$0], [LTDL_INIT])
+_$0($*)
+])# LT_CONFIG_LTDL_DIR
+
+# We break this out into a separate macro, so that we can call it safely
+# internally without being caught accidentally by the sed scan in libtoolize.
+m4_defun([_LT_CONFIG_LTDL_DIR],
+[dnl remove trailing slashes
+m4_pushdef([_ARG_DIR], m4_bpatsubst([$1], [/*$]))
+m4_case(_LTDL_DIR,
+	[], [dnl only set lt_ltdl_dir if _ARG_DIR is not simply `.'
+	     m4_if(_ARG_DIR, [.],
+	             [],
+		 [m4_define([_LTDL_DIR], _ARG_DIR)
+	          _LT_SHELL_INIT([lt_ltdl_dir=']_ARG_DIR['])])],
+    [m4_if(_ARG_DIR, _LTDL_DIR,
+	    [],
+	[m4_fatal([multiple libltdl directories: `]_LTDL_DIR[', `]_ARG_DIR['])])])
+m4_popdef([_ARG_DIR])
+])# _LT_CONFIG_LTDL_DIR
+
+# Initialise:
+m4_define([_LTDL_DIR], [])
+
+
+# _LT_BUILD_PREFIX
+# ----------------
+# If Autoconf is new enough, expand to `${top_build_prefix}', otherwise
+# to `${top_builddir}/'.
+m4_define([_LT_BUILD_PREFIX],
+[m4_ifdef([AC_AUTOCONF_VERSION],
+   [m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.62]),
+	  [-1], [m4_ifdef([_AC_HAVE_TOP_BUILD_PREFIX],
+			  [${top_build_prefix}],
+			  [${top_builddir}/])],
+	  [${top_build_prefix}])],
+   [${top_builddir}/])[]dnl
+])
+
+
+# LTDL_CONVENIENCE
+# ----------------
+# sets LIBLTDL to the link flags for the libltdl convenience library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-convenience to the configure arguments.  Note that
+# AC_CONFIG_SUBDIRS is not called here.  LIBLTDL will be prefixed with
+# '${top_build_prefix}' if available, otherwise with '${top_builddir}/',
+# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single
+# quotes!).  If your package is not flat and you're not using automake,
+# define top_build_prefix, top_builddir, and top_srcdir appropriately
+# in your Makefiles.
+AC_DEFUN([LTDL_CONVENIENCE],
+[AC_BEFORE([$0], [LTDL_INIT])dnl
+dnl Although the argument is deprecated and no longer documented,
+dnl LTDL_CONVENIENCE used to take a DIRECTORY orgument, if we have one
+dnl here make sure it is the same as any other declaration of libltdl's
+dnl location!  This also ensures lt_ltdl_dir is set when configure.ac is
+dnl not yet using an explicit LT_CONFIG_LTDL_DIR.
+m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl
+_$0()
+])# LTDL_CONVENIENCE
+
+# AC_LIBLTDL_CONVENIENCE accepted a directory argument in older libtools,
+# now we have LT_CONFIG_LTDL_DIR:
+AU_DEFUN([AC_LIBLTDL_CONVENIENCE],
+[_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
+_LTDL_CONVENIENCE])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [])
+
+
+# _LTDL_CONVENIENCE
+# -----------------
+# Code shared by LTDL_CONVENIENCE and LTDL_INIT([convenience]).
+m4_defun([_LTDL_CONVENIENCE],
+[case $enable_ltdl_convenience in
+  no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
+  "") enable_ltdl_convenience=yes
+      ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
+esac
+LIBLTDL='_LT_BUILD_PREFIX'"${lt_ltdl_dir+$lt_ltdl_dir/}libltdlc.la"
+LTDLDEPS=$LIBLTDL
+LTDLINCL='-I${top_srcdir}'"${lt_ltdl_dir+/$lt_ltdl_dir}"
+
+AC_SUBST([LIBLTDL])
+AC_SUBST([LTDLDEPS])
+AC_SUBST([LTDLINCL])
+
+# For backwards non-gettext consistent compatibility...
+INCLTDL="$LTDLINCL"
+AC_SUBST([INCLTDL])
+])# _LTDL_CONVENIENCE
+
+
+# LTDL_INSTALLABLE
+# ----------------
+# sets LIBLTDL to the link flags for the libltdl installable library
+# and LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-install to the configure arguments.  Note that
+# AC_CONFIG_SUBDIRS is not called from here.  If an installed libltdl
+# is not found, LIBLTDL will be prefixed with '${top_build_prefix}' if
+# available, otherwise with '${top_builddir}/', and LTDLINCL will be
+# prefixed with '${top_srcdir}/' (note the single quotes!).  If your
+# package is not flat and you're not using automake, define top_build_prefix,
+# top_builddir, and top_srcdir appropriately in your Makefiles.
+# In the future, this macro may have to be called after LT_INIT.
+AC_DEFUN([LTDL_INSTALLABLE],
+[AC_BEFORE([$0], [LTDL_INIT])dnl
+dnl Although the argument is deprecated and no longer documented,
+dnl LTDL_INSTALLABLE used to take a DIRECTORY orgument, if we have one
+dnl here make sure it is the same as any other declaration of libltdl's
+dnl location!  This also ensures lt_ltdl_dir is set when configure.ac is
+dnl not yet using an explicit LT_CONFIG_LTDL_DIR.
+m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl
+_$0()
+])# LTDL_INSTALLABLE
+
+# AC_LIBLTDL_INSTALLABLE accepted a directory argument in older libtools,
+# now we have LT_CONFIG_LTDL_DIR:
+AU_DEFUN([AC_LIBLTDL_INSTALLABLE],
+[_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])])
+_LTDL_INSTALLABLE])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [])
+
+
+# _LTDL_INSTALLABLE
+# -----------------
+# Code shared by LTDL_INSTALLABLE and LTDL_INIT([installable]).
+m4_defun([_LTDL_INSTALLABLE],
+[if test -f $prefix/lib/libltdl.la; then
+  lt_save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="-L$prefix/lib $LDFLAGS"
+  AC_CHECK_LIB([ltdl], [lt_dlinit], [lt_lib_ltdl=yes])
+  LDFLAGS="$lt_save_LDFLAGS"
+  if test x"${lt_lib_ltdl-no}" = xyes; then
+    if test x"$enable_ltdl_install" != xyes; then
+      # Don't overwrite $prefix/lib/libltdl.la without --enable-ltdl-install
+      AC_MSG_WARN([not overwriting libltdl at $prefix, force with `--enable-ltdl-install'])
+      enable_ltdl_install=no
+    fi
+  elif test x"$enable_ltdl_install" = xno; then
+    AC_MSG_WARN([libltdl not installed, but installation disabled])
+  fi
+fi
+
+# If configure.ac declared an installable ltdl, and the user didn't override
+# with --disable-ltdl-install, we will install the shipped libltdl.
+case $enable_ltdl_install in
+  no) ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
+      LIBLTDL="-lltdl"
+      LTDLDEPS=
+      LTDLINCL=
+      ;;
+  *)  enable_ltdl_install=yes
+      ac_configure_args="$ac_configure_args --enable-ltdl-install"
+      LIBLTDL='_LT_BUILD_PREFIX'"${lt_ltdl_dir+$lt_ltdl_dir/}libltdl.la"
+      LTDLDEPS=$LIBLTDL
+      LTDLINCL='-I${top_srcdir}'"${lt_ltdl_dir+/$lt_ltdl_dir}"
+      ;;
+esac
+
+AC_SUBST([LIBLTDL])
+AC_SUBST([LTDLDEPS])
+AC_SUBST([LTDLINCL])
+
+# For backwards non-gettext consistent compatibility...
+INCLTDL="$LTDLINCL"
+AC_SUBST([INCLTDL])
+])# LTDL_INSTALLABLE
+
+
+# _LTDL_MODE_DISPATCH
+# -------------------
+m4_define([_LTDL_MODE_DISPATCH],
+[dnl If _LTDL_DIR is `.', then we are configuring libltdl itself:
+m4_if(_LTDL_DIR, [],
+	[],
+    dnl if _LTDL_MODE was not set already, the default value is `subproject':
+    [m4_case(m4_default(_LTDL_MODE, [subproject]),
+	  [subproject], [AC_CONFIG_SUBDIRS(_LTDL_DIR)
+			  _LT_SHELL_INIT([lt_dlopen_dir="$lt_ltdl_dir"])],
+	  [nonrecursive], [_LT_SHELL_INIT([lt_dlopen_dir="$lt_ltdl_dir"; lt_libobj_prefix="$lt_ltdl_dir/"])],
+	  [recursive], [],
+	[m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])])dnl
+dnl Be careful not to expand twice:
+m4_define([$0], [])
+])# _LTDL_MODE_DISPATCH
+
+
+# _LT_LIBOBJ(MODULE_NAME)
+# -----------------------
+# Like AC_LIBOBJ, except that MODULE_NAME goes into _LT_LIBOBJS instead
+# of into LIBOBJS.
+AC_DEFUN([_LT_LIBOBJ], [
+  m4_pattern_allow([^_LT_LIBOBJS$])
+  _LT_LIBOBJS="$_LT_LIBOBJS $1.$ac_objext"
+])# _LT_LIBOBJS
+
+
+# LTDL_INIT([OPTIONS])
+# --------------------
+# Clients of libltdl can use this macro to allow the installer to
+# choose between a shipped copy of the ltdl sources or a preinstalled
+# version of the library.  If the shipped ltdl sources are not in a
+# subdirectory named libltdl, the directory name must be given by
+# LT_CONFIG_LTDL_DIR.
+AC_DEFUN([LTDL_INIT],
+[dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+dnl We need to keep our own list of libobjs separate from our parent project,
+dnl and the easiest way to do that is redefine the AC_LIBOBJs macro while
+dnl we look for our own LIBOBJs.
+m4_pushdef([AC_LIBOBJ], m4_defn([_LT_LIBOBJ]))
+m4_pushdef([AC_LIBSOURCES])
+
+dnl If not otherwise defined, default to the 1.5.x compatible subproject mode:
+m4_if(_LTDL_MODE, [],
+        [m4_define([_LTDL_MODE], m4_default([$2], [subproject]))
+        m4_if([-1], [m4_bregexp(_LTDL_MODE, [\(subproject\|\(non\)?recursive\)])],
+                [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])])
+
+AC_ARG_WITH([included_ltdl],
+    [AS_HELP_STRING([--with-included-ltdl],
+                    [use the GNU ltdl sources included here])])
+
+if test "x$with_included_ltdl" != xyes; then
+  # We are not being forced to use the included libltdl sources, so
+  # decide whether there is a useful installed version we can use.
+  AC_CHECK_HEADER([ltdl.h],
+      [AC_CHECK_DECL([lt_dlinterface_register],
+	   [AC_CHECK_LIB([ltdl], [lt_dladvise_preload],
+	       [with_included_ltdl=no],
+	       [with_included_ltdl=yes])],
+	   [with_included_ltdl=yes],
+	   [AC_INCLUDES_DEFAULT
+	    #include <ltdl.h>])],
+      [with_included_ltdl=yes],
+      [AC_INCLUDES_DEFAULT]
+  )
+fi
+
+dnl If neither LT_CONFIG_LTDL_DIR, LTDL_CONVENIENCE nor LTDL_INSTALLABLE
+dnl was called yet, then for old times' sake, we assume libltdl is in an
+dnl eponymous directory:
+AC_PROVIDE_IFELSE([LT_CONFIG_LTDL_DIR], [], [_LT_CONFIG_LTDL_DIR([libltdl])])
+
+AC_ARG_WITH([ltdl_include],
+    [AS_HELP_STRING([--with-ltdl-include=DIR],
+                    [use the ltdl headers installed in DIR])])
+
+if test -n "$with_ltdl_include"; then
+  if test -f "$with_ltdl_include/ltdl.h"; then :
+  else
+    AC_MSG_ERROR([invalid ltdl include directory: `$with_ltdl_include'])
+  fi
+else
+  with_ltdl_include=no
+fi
+
+AC_ARG_WITH([ltdl_lib],
+    [AS_HELP_STRING([--with-ltdl-lib=DIR],
+                    [use the libltdl.la installed in DIR])])
+
+if test -n "$with_ltdl_lib"; then
+  if test -f "$with_ltdl_lib/libltdl.la"; then :
+  else
+    AC_MSG_ERROR([invalid ltdl library directory: `$with_ltdl_lib'])
+  fi
+else
+  with_ltdl_lib=no
+fi
+
+case ,$with_included_ltdl,$with_ltdl_include,$with_ltdl_lib, in
+  ,yes,no,no,)
+	m4_case(m4_default(_LTDL_TYPE, [convenience]),
+	    [convenience], [_LTDL_CONVENIENCE],
+	    [installable], [_LTDL_INSTALLABLE],
+	  [m4_fatal([unknown libltdl build type: ]_LTDL_TYPE)])
+	;;
+  ,no,no,no,)
+	# If the included ltdl is not to be used, then use the
+	# preinstalled libltdl we found.
+	AC_DEFINE([HAVE_LTDL], [1],
+	  [Define this if a modern libltdl is already installed])
+	LIBLTDL=-lltdl
+	LTDLDEPS=
+	LTDLINCL=
+	;;
+  ,no*,no,*)
+	AC_MSG_ERROR([`--with-ltdl-include' and `--with-ltdl-lib' options must be used together])
+	;;
+  *)	with_included_ltdl=no
+	LIBLTDL="-L$with_ltdl_lib -lltdl"
+	LTDLDEPS=
+	LTDLINCL="-I$with_ltdl_include"
+	;;
+esac
+INCLTDL="$LTDLINCL"
+
+# Report our decision...
+AC_MSG_CHECKING([where to find libltdl headers])
+AC_MSG_RESULT([$LTDLINCL])
+AC_MSG_CHECKING([where to find libltdl library])
+AC_MSG_RESULT([$LIBLTDL])
+
+_LTDL_SETUP
+
+dnl restore autoconf definition.
+m4_popdef([AC_LIBOBJ])
+m4_popdef([AC_LIBSOURCES])
+
+AC_CONFIG_COMMANDS_PRE([
+    _ltdl_libobjs=
+    _ltdl_ltlibobjs=
+    if test -n "$_LT_LIBOBJS"; then
+      # Remove the extension.
+      _lt_sed_drop_objext='s/\.o$//;s/\.obj$//'
+      for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | sed "$_lt_sed_drop_objext" | sort -u`; do
+        _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext"
+        _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo"
+      done
+    fi
+    AC_SUBST([ltdl_LIBOBJS], [$_ltdl_libobjs])
+    AC_SUBST([ltdl_LTLIBOBJS], [$_ltdl_ltlibobjs])
+])
+
+# Only expand once:
+m4_define([LTDL_INIT])
+])# LTDL_INIT
+
+# Old names:
+AU_DEFUN([AC_LIB_LTDL], [LTDL_INIT($@)])
+AU_DEFUN([AC_WITH_LTDL], [LTDL_INIT($@)])
+AU_DEFUN([LT_WITH_LTDL], [LTDL_INIT($@)])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIB_LTDL], [])
+dnl AC_DEFUN([AC_WITH_LTDL], [])
+dnl AC_DEFUN([LT_WITH_LTDL], [])
+
+
+# _LTDL_SETUP
+# -----------
+# Perform all the checks necessary for compilation of the ltdl objects
+#  -- including compiler checks and header checks.  This is a public
+# interface  mainly for the benefit of libltdl's own configure.ac, most
+# other users should call LTDL_INIT instead.
+AC_DEFUN([_LTDL_SETUP],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_SYS_MODULE_EXT])dnl
+AC_REQUIRE([LT_SYS_MODULE_PATH])dnl
+AC_REQUIRE([LT_SYS_DLSEARCH_PATH])dnl
+AC_REQUIRE([LT_LIB_DLLOAD])dnl
+AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl
+AC_REQUIRE([LT_FUNC_DLSYM_USCORE])dnl
+AC_REQUIRE([LT_SYS_DLOPEN_DEPLIBS])dnl
+AC_REQUIRE([gl_FUNC_ARGZ])dnl
+
+m4_require([_LT_CHECK_OBJDIR])dnl
+m4_require([_LT_HEADER_DLFCN])dnl
+m4_require([_LT_CHECK_DLPREOPEN])dnl
+m4_require([_LT_DECL_SED])dnl
+
+dnl Don't require this, or it will be expanded earlier than the code
+dnl that sets the variables it relies on:
+_LT_ENABLE_INSTALL
+
+dnl _LTDL_MODE specific code must be called at least once:
+_LTDL_MODE_DISPATCH
+
+# In order that ltdl.c can compile, find out the first AC_CONFIG_HEADERS
+# the user used.  This is so that ltdl.h can pick up the parent projects
+# config.h file, The first file in AC_CONFIG_HEADERS must contain the
+# definitions required by ltdl.c.
+# FIXME: Remove use of undocumented AC_LIST_HEADERS (2.59 compatibility).
+AC_CONFIG_COMMANDS_PRE([dnl
+m4_pattern_allow([^LT_CONFIG_H$])dnl
+m4_ifset([AH_HEADER],
+    [LT_CONFIG_H=AH_HEADER],
+    [m4_ifset([AC_LIST_HEADERS],
+	    [LT_CONFIG_H=`echo "AC_LIST_HEADERS" | $SED 's,^[[      ]]*,,;s,[[ :]].*$,,'`],
+	[])])])
+AC_SUBST([LT_CONFIG_H])
+
+AC_CHECK_HEADERS([unistd.h dl.h sys/dl.h dld.h mach-o/dyld.h dirent.h],
+	[], [], [AC_INCLUDES_DEFAULT])
+
+AC_CHECK_FUNCS([closedir opendir readdir], [], [AC_LIBOBJ([lt__dirent])])
+AC_CHECK_FUNCS([strlcat strlcpy], [], [AC_LIBOBJ([lt__strl])])
+
+m4_pattern_allow([LT_LIBEXT])dnl
+AC_DEFINE_UNQUOTED([LT_LIBEXT],["$libext"],[The archive extension])
+
+name=
+eval "lt_libprefix=\"$libname_spec\""
+m4_pattern_allow([LT_LIBPREFIX])dnl
+AC_DEFINE_UNQUOTED([LT_LIBPREFIX],["$lt_libprefix"],[The archive prefix])
+
+name=ltdl
+eval "LTDLOPEN=\"$libname_spec\""
+AC_SUBST([LTDLOPEN])
+])# _LTDL_SETUP
+
+
+# _LT_ENABLE_INSTALL
+# ------------------
+m4_define([_LT_ENABLE_INSTALL],
+[AC_ARG_ENABLE([ltdl-install],
+    [AS_HELP_STRING([--enable-ltdl-install], [install libltdl])])
+
+case ,${enable_ltdl_install},${enable_ltdl_convenience} in
+  *yes*) ;;
+  *) enable_ltdl_convenience=yes ;;
+esac
+
+m4_ifdef([AM_CONDITIONAL],
+[AM_CONDITIONAL(INSTALL_LTDL, test x"${enable_ltdl_install-no}" != xno)
+ AM_CONDITIONAL(CONVENIENCE_LTDL, test x"${enable_ltdl_convenience-no}" != xno)])
+])# _LT_ENABLE_INSTALL
+
+
+# LT_SYS_DLOPEN_DEPLIBS
+# ---------------------
+AC_DEFUN([LT_SYS_DLOPEN_DEPLIBS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_CACHE_CHECK([whether deplibs are loaded by dlopen],
+  [lt_cv_sys_dlopen_deplibs],
+  [# PORTME does your system automatically load deplibs for dlopen?
+  # or its logical equivalent (e.g. shl_load for HP-UX < 11)
+  # For now, we just catch OSes we know something about -- in the
+  # future, we'll try test this programmatically.
+  lt_cv_sys_dlopen_deplibs=unknown
+  case $host_os in
+  aix3*|aix4.1.*|aix4.2.*)
+    # Unknown whether this is true for these versions of AIX, but
+    # we want this `case' here to explicitly catch those versions.
+    lt_cv_sys_dlopen_deplibs=unknown
+    ;;
+  aix[[4-9]]*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  amigaos*)
+    case $host_cpu in
+    powerpc)
+      lt_cv_sys_dlopen_deplibs=no
+      ;;
+    esac
+    ;;
+  darwin*)
+    # Assuming the user has installed a libdl from somewhere, this is true
+    # If you are looking for one http://www.opendarwin.org/projects/dlcompat
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  freebsd* | dragonfly*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  gnu* | linux* | k*bsd*-gnu | kopensolaris*-gnu)
+    # GNU and its variants, using gnu ld.so (Glibc)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  hpux10*|hpux11*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  interix*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  irix[[12345]]*|irix6.[[01]]*)
+    # Catch all versions of IRIX before 6.2, and indicate that we don't
+    # know how it worked for any of those versions.
+    lt_cv_sys_dlopen_deplibs=unknown
+    ;;
+  irix*)
+    # The case above catches anything before 6.2, and it's known that
+    # at 6.2 and later dlopen does load deplibs.
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  netbsd*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  openbsd*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  osf[[1234]]*)
+    # dlopen did load deplibs (at least at 4.x), but until the 5.x series,
+    # it did *not* use an RPATH in a shared library to find objects the
+    # library depends on, so we explicitly say `no'.
+    lt_cv_sys_dlopen_deplibs=no
+    ;;
+  osf5.0|osf5.0a|osf5.1)
+    # dlopen *does* load deplibs and with the right loader patch applied
+    # it even uses RPATH in a shared library to search for shared objects
+    # that the library depends on, but there's no easy way to know if that
+    # patch is installed.  Since this is the case, all we can really
+    # say is unknown -- it depends on the patch being installed.  If
+    # it is, this changes to `yes'.  Without it, it would be `no'.
+    lt_cv_sys_dlopen_deplibs=unknown
+    ;;
+  osf*)
+    # the two cases above should catch all versions of osf <= 5.1.  Read
+    # the comments above for what we know about them.
+    # At > 5.1, deplibs are loaded *and* any RPATH in a shared library
+    # is used to find them so we can finally say `yes'.
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  qnx*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  solaris*)
+    lt_cv_sys_dlopen_deplibs=yes
+    ;;
+  sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+    libltdl_cv_sys_dlopen_deplibs=yes
+    ;;
+  esac
+  ])
+if test "$lt_cv_sys_dlopen_deplibs" != yes; then
+ AC_DEFINE([LTDL_DLOPEN_DEPLIBS], [1],
+    [Define if the OS needs help to load dependent libraries for dlopen().])
+fi
+])# LT_SYS_DLOPEN_DEPLIBS
+
+# Old name:
+AU_ALIAS([AC_LTDL_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [])
+
+
+# LT_SYS_MODULE_EXT
+# -----------------
+AC_DEFUN([LT_SYS_MODULE_EXT],
+[m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
+AC_CACHE_CHECK([which extension is used for runtime loadable modules],
+  [libltdl_cv_shlibext],
+[
+module=yes
+eval libltdl_cv_shlibext=$shrext_cmds
+  ])
+if test -n "$libltdl_cv_shlibext"; then
+  m4_pattern_allow([LT_MODULE_EXT])dnl
+  AC_DEFINE_UNQUOTED([LT_MODULE_EXT], ["$libltdl_cv_shlibext"],
+    [Define to the extension used for runtime loadable modules, say, ".so".])
+fi
+])# LT_SYS_MODULE_EXT
+
+# Old name:
+AU_ALIAS([AC_LTDL_SHLIBEXT], [LT_SYS_MODULE_EXT])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LTDL_SHLIBEXT], [])
+
+
+# LT_SYS_MODULE_PATH
+# ------------------
+AC_DEFUN([LT_SYS_MODULE_PATH],
+[m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
+AC_CACHE_CHECK([which variable specifies run-time module search path],
+  [lt_cv_module_path_var], [lt_cv_module_path_var="$shlibpath_var"])
+if test -n "$lt_cv_module_path_var"; then
+  m4_pattern_allow([LT_MODULE_PATH_VAR])dnl
+  AC_DEFINE_UNQUOTED([LT_MODULE_PATH_VAR], ["$lt_cv_module_path_var"],
+    [Define to the name of the environment variable that determines the run-time module search path.])
+fi
+])# LT_SYS_MODULE_PATH
+
+# Old name:
+AU_ALIAS([AC_LTDL_SHLIBPATH], [LT_SYS_MODULE_PATH])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LTDL_SHLIBPATH], [])
+
+
+# LT_SYS_DLSEARCH_PATH
+# --------------------
+AC_DEFUN([LT_SYS_DLSEARCH_PATH],
+[m4_require([_LT_SYS_DYNAMIC_LINKER])dnl
+AC_CACHE_CHECK([for the default library search path],
+  [lt_cv_sys_dlsearch_path],
+  [lt_cv_sys_dlsearch_path="$sys_lib_dlsearch_path_spec"])
+if test -n "$lt_cv_sys_dlsearch_path"; then
+  sys_dlsearch_path=
+  for dir in $lt_cv_sys_dlsearch_path; do
+    if test -z "$sys_dlsearch_path"; then
+      sys_dlsearch_path="$dir"
+    else
+      sys_dlsearch_path="$sys_dlsearch_path$PATH_SEPARATOR$dir"
+    fi
+  done
+  m4_pattern_allow([LT_DLSEARCH_PATH])dnl
+  AC_DEFINE_UNQUOTED([LT_DLSEARCH_PATH], ["$sys_dlsearch_path"],
+    [Define to the system default library search path.])
+fi
+])# LT_SYS_DLSEARCH_PATH
+
+# Old name:
+AU_ALIAS([AC_LTDL_SYSSEARCHPATH], [LT_SYS_DLSEARCH_PATH])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LTDL_SYSSEARCHPATH], [])
+
+
+# _LT_CHECK_DLPREOPEN
+# -------------------
+m4_defun([_LT_CHECK_DLPREOPEN],
+[m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+AC_CACHE_CHECK([whether libtool supports -dlopen/-dlpreopen],
+  [libltdl_cv_preloaded_symbols],
+  [if test -n "$lt_cv_sys_global_symbol_pipe"; then
+    libltdl_cv_preloaded_symbols=yes
+  else
+    libltdl_cv_preloaded_symbols=no
+  fi
+  ])
+if test x"$libltdl_cv_preloaded_symbols" = xyes; then
+  AC_DEFINE([HAVE_PRELOADED_SYMBOLS], [1],
+    [Define if libtool can extract symbol lists from object files.])
+fi
+])# _LT_CHECK_DLPREOPEN
+
+
+# LT_LIB_DLLOAD
+# -------------
+AC_DEFUN([LT_LIB_DLLOAD],
+[m4_pattern_allow([^LT_DLLOADERS$])
+LT_DLLOADERS=
+AC_SUBST([LT_DLLOADERS])
+
+AC_LANG_PUSH([C])
+
+LIBADD_DLOPEN=
+AC_SEARCH_LIBS([dlopen], [dl],
+	[AC_DEFINE([HAVE_LIBDL], [1],
+		   [Define if you have the libdl library or equivalent.])
+	if test "$ac_cv_search_dlopen" != "none required" ; then
+	  LIBADD_DLOPEN="-ldl"
+	fi
+	libltdl_cv_lib_dl_dlopen="yes"
+	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"],
+    [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if HAVE_DLFCN_H
+#  include <dlfcn.h>
+#endif
+    ]], [[dlopen(0, 0);]])],
+	    [AC_DEFINE([HAVE_LIBDL], [1],
+		       [Define if you have the libdl library or equivalent.])
+	    libltdl_cv_func_dlopen="yes"
+	    LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"],
+	[AC_CHECK_LIB([svld], [dlopen],
+		[AC_DEFINE([HAVE_LIBDL], [1],
+			 [Define if you have the libdl library or equivalent.])
+	        LIBADD_DLOPEN="-lsvld" libltdl_cv_func_dlopen="yes"
+		LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"])])])
+if test x"$libltdl_cv_func_dlopen" = xyes || test x"$libltdl_cv_lib_dl_dlopen" = xyes
+then
+  lt_save_LIBS="$LIBS"
+  LIBS="$LIBS $LIBADD_DLOPEN"
+  AC_CHECK_FUNCS([dlerror])
+  LIBS="$lt_save_LIBS"
+fi
+AC_SUBST([LIBADD_DLOPEN])
+
+LIBADD_SHL_LOAD=
+AC_CHECK_FUNC([shl_load],
+	[AC_DEFINE([HAVE_SHL_LOAD], [1],
+		   [Define if you have the shl_load function.])
+	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"],
+    [AC_CHECK_LIB([dld], [shl_load],
+	    [AC_DEFINE([HAVE_SHL_LOAD], [1],
+		       [Define if you have the shl_load function.])
+	    LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"
+	    LIBADD_SHL_LOAD="-ldld"])])
+AC_SUBST([LIBADD_SHL_LOAD])
+
+case $host_os in
+darwin[[1567]].*)
+# We only want this for pre-Mac OS X 10.4.
+  AC_CHECK_FUNC([_dyld_func_lookup],
+	[AC_DEFINE([HAVE_DYLD], [1],
+		   [Define if you have the _dyld_func_lookup function.])
+	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dyld.la"])
+  ;;
+beos*)
+  LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}load_add_on.la"
+  ;;
+cygwin* | mingw* | os2* | pw32*)
+  AC_CHECK_DECLS([cygwin_conv_path], [], [], [[#include <sys/cygwin.h>]])
+  LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}loadlibrary.la"
+  ;;
+esac
+
+AC_CHECK_LIB([dld], [dld_link],
+	[AC_DEFINE([HAVE_DLD], [1],
+		   [Define if you have the GNU dld library.])
+		LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dld_link.la"])
+AC_SUBST([LIBADD_DLD_LINK])
+
+m4_pattern_allow([^LT_DLPREOPEN$])
+LT_DLPREOPEN=
+if test -n "$LT_DLLOADERS"
+then
+  for lt_loader in $LT_DLLOADERS; do
+    LT_DLPREOPEN="$LT_DLPREOPEN-dlpreopen $lt_loader "
+  done
+  AC_DEFINE([HAVE_LIBDLLOADER], [1],
+            [Define if libdlloader will be built on this platform])
+fi
+AC_SUBST([LT_DLPREOPEN])
+
+dnl This isn't used anymore, but set it for backwards compatibility
+LIBADD_DL="$LIBADD_DLOPEN $LIBADD_SHL_LOAD"
+AC_SUBST([LIBADD_DL])
+
+AC_LANG_POP
+])# LT_LIB_DLLOAD
+
+# Old name:
+AU_ALIAS([AC_LTDL_DLLIB], [LT_LIB_DLLOAD])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LTDL_DLLIB], [])
+
+
+# LT_SYS_SYMBOL_USCORE
+# --------------------
+# does the compiler prefix global symbols with an underscore?
+AC_DEFUN([LT_SYS_SYMBOL_USCORE],
+[m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+AC_CACHE_CHECK([for _ prefix in compiled symbols],
+  [lt_cv_sys_symbol_underscore],
+  [lt_cv_sys_symbol_underscore=no
+  cat > conftest.$ac_ext <<_LT_EOF
+void nm_test_func(){}
+int main(){nm_test_func;return 0;}
+_LT_EOF
+  if AC_TRY_EVAL(ac_compile); then
+    # Now try to grab the symbols.
+    ac_nlist=conftest.nm
+    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then
+      # See whether the symbols have a leading underscore.
+      if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then
+        lt_cv_sys_symbol_underscore=yes
+      else
+        if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then
+	  :
+        else
+	  echo "configure: cannot find nm_test_func in $ac_nlist" >&AS_MESSAGE_LOG_FD
+        fi
+      fi
+    else
+      echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+    fi
+  else
+    echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
+    cat conftest.c >&AS_MESSAGE_LOG_FD
+  fi
+  rm -rf conftest*
+  ])
+  sys_symbol_underscore=$lt_cv_sys_symbol_underscore
+  AC_SUBST([sys_symbol_underscore])
+])# LT_SYS_SYMBOL_USCORE
+
+# Old name:
+AU_ALIAS([AC_LTDL_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LTDL_SYMBOL_USCORE], [])
+
+
+# LT_FUNC_DLSYM_USCORE
+# --------------------
+AC_DEFUN([LT_FUNC_DLSYM_USCORE],
+[AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl
+if test x"$lt_cv_sys_symbol_underscore" = xyes; then
+  if test x"$libltdl_cv_func_dlopen" = xyes ||
+     test x"$libltdl_cv_lib_dl_dlopen" = xyes ; then
+	AC_CACHE_CHECK([whether we have to add an underscore for dlsym],
+	  [libltdl_cv_need_uscore],
+	  [libltdl_cv_need_uscore=unknown
+          save_LIBS="$LIBS"
+          LIBS="$LIBS $LIBADD_DLOPEN"
+	  _LT_TRY_DLOPEN_SELF(
+	    [libltdl_cv_need_uscore=no], [libltdl_cv_need_uscore=yes],
+	    [],				 [libltdl_cv_need_uscore=cross])
+	  LIBS="$save_LIBS"
+	])
+  fi
+fi
+
+if test x"$libltdl_cv_need_uscore" = xyes; then
+  AC_DEFINE([NEED_USCORE], [1],
+    [Define if dlsym() requires a leading underscore in symbol names.])
+fi
+])# LT_FUNC_DLSYM_USCORE
+
+# Old name:
+AU_ALIAS([AC_LTDL_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LTDL_DLSYM_USCORE], [])
diff --git a/configure b/configure
index 2109869..21b2a51 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for bacula 5.2.4.
+# Generated by GNU Autoconf 2.68 for bacula 5.2.12.
 #
 #
 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -567,8 +567,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='bacula'
 PACKAGE_TARNAME='bacula'
-PACKAGE_VERSION='5.2.4'
-PACKAGE_STRING='bacula 5.2.4'
+PACKAGE_VERSION='5.2.12'
+PACKAGE_STRING='bacula 5.2.12'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -628,6 +628,8 @@ DINCLUDE
 DEBUG
 FDLIBS
 CAP_LIBS
+AFS_LIBS
+AFS_CFLAGS
 LZOLIBS
 ZLIBS
 LIBOBJS
@@ -769,6 +771,8 @@ HAVE_AIX_OS_FALSE
 HAVE_AIX_OS_TRUE
 HAVE_OSF1_OS_FALSE
 HAVE_OSF1_OS_TRUE
+HAVE_HURD_OS_FALSE
+HAVE_HURD_OS_TRUE
 HAVE_SUN_OS_FALSE
 HAVE_SUN_OS_TRUE
 INCLUDE_UNINSTALL_TARGET
@@ -781,6 +785,12 @@ LIBTOOL_INSTALL_TARGET
 DEFAULT_SHARED_OBJECT_TYPE
 DEFAULT_ARCHIVE_TYPE
 DEFAULT_OBJECT_TYPE
+LIBADD_DL
+LT_DLPREOPEN
+LIBADD_DLD_LINK
+LIBADD_SHL_LOAD
+LIBADD_DLOPEN
+LT_DLLOADERS
 CXXCPP
 OTOOL64
 OTOOL
@@ -987,6 +997,8 @@ with_embedded_mysql
 with_sqlite3
 enable_largefile
 with_x
+enable_afs
+with_afsdir
 enable_acl
 enable_xattr
 with_systemd
@@ -1549,7 +1561,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures bacula 5.2.4 to adapt to many kinds of systems.
+\`configure' configures bacula 5.2.12 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1618,7 +1630,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of bacula 5.2.4:";;
+     short | recursive ) echo "Configuration of bacula 5.2.12:";;
    esac
   cat <<\_ACEOF
 
@@ -1656,6 +1668,7 @@ Optional Features:
   --disable-readline      disable readline support [default=yes]
   --enable-batch-insert   enable the DB batch insert code [default=yes]
   --disable-largefile     omit support for large files
+  --disable-afs           disable afs support [default=auto]
   --disable-acl           disable acl support [default=auto]
   --disable-xattr         disable xattr support [default=auto]
 
@@ -1731,6 +1744,7 @@ Optional Packages:
                           install directory, default is to search through a
                           number of common places for the SQLite3 files.
   --with-x                use the X Window System
+  --with-afsdir[=DIR]     Directory holding AFS includes/libs
   --with-systemd[=UNITDIR]
                           Include systemd support. UNITDIR is where systemd
                           system .service files are located, default is to ask
@@ -1819,7 +1833,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-bacula configure 5.2.4
+bacula configure 5.2.12
 generated by GNU Autoconf 2.68
 
 Copyright (C) 2010 Free Software Foundation, Inc.
@@ -2215,6 +2229,52 @@ fi
 
 } # ac_fn_cxx_try_link
 
+# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
+# ---------------------------------------------
+# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
+# accordingly.
+ac_fn_c_check_decl ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  as_decl_name=`echo $2|sed 's/ *(.*//'`
+  as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+#ifndef $as_decl_name
+#ifdef __cplusplus
+  (void) $as_decl_use;
+#else
+  (void) $as_decl_name;
+#endif
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_decl
+
 # ac_fn_c_check_type LINENO TYPE VAR INCLUDES
 # -------------------------------------------
 # Tests whether TYPE exists after having included INCLUDES, setting cache
@@ -2591,52 +2651,6 @@ $as_echo "$ac_res" >&6; }
 
 } # ac_fn_c_check_member
 
-# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
-# ---------------------------------------------
-# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
-# accordingly.
-ac_fn_c_check_decl ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  as_decl_name=`echo $2|sed 's/ *(.*//'`
-  as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
-$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-int
-main ()
-{
-#ifndef $as_decl_name
-#ifdef __cplusplus
-  (void) $as_decl_use;
-#else
-  (void) $as_decl_name;
-#endif
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_decl
-
 # ac_fn_cxx_try_run LINENO
 # ------------------------
 # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
@@ -2749,7 +2763,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by bacula $as_me 5.2.4, which was
+It was created by bacula $as_me 5.2.12, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   $ $0 $@
@@ -16374,6 +16388,325 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
+LT_DLLOADERS=
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+LIBADD_DLOPEN=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5
+$as_echo_n "checking for library containing dlopen... " >&6; }
+if ${ac_cv_search_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* 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 dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' dl; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_dlopen=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_dlopen+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_dlopen+:} false; then :
+
+else
+  ac_cv_search_dlopen=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5
+$as_echo "$ac_cv_search_dlopen" >&6; }
+ac_res=$ac_cv_search_dlopen
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+$as_echo "#define HAVE_LIBDL 1" >>confdefs.h
+
+	if test "$ac_cv_search_dlopen" != "none required" ; then
+	  LIBADD_DLOPEN="-ldl"
+	fi
+	libltdl_cv_lib_dl_dlopen="yes"
+	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#if HAVE_DLFCN_H
+#  include <dlfcn.h>
+#endif
+
+int
+main ()
+{
+dlopen(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+$as_echo "#define HAVE_LIBDL 1" >>confdefs.h
+
+	    libltdl_cv_func_dlopen="yes"
+	    LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+$as_echo_n "checking for dlopen in -lsvld... " >&6; }
+if ${ac_cv_lib_svld_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* 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 dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_svld_dlopen=yes
+else
+  ac_cv_lib_svld_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
+$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
+
+$as_echo "#define HAVE_LIBDL 1" >>confdefs.h
+
+	        LIBADD_DLOPEN="-lsvld" libltdl_cv_func_dlopen="yes"
+		LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"
+fi
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+
+if test x"$libltdl_cv_func_dlopen" = xyes || test x"$libltdl_cv_lib_dl_dlopen" = xyes
+then
+  lt_save_LIBS="$LIBS"
+  LIBS="$LIBS $LIBADD_DLOPEN"
+  for ac_func in dlerror
+do :
+  ac_fn_c_check_func "$LINENO" "dlerror" "ac_cv_func_dlerror"
+if test "x$ac_cv_func_dlerror" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DLERROR 1
+_ACEOF
+
+fi
+done
+
+  LIBS="$lt_save_LIBS"
+fi
+
+
+LIBADD_SHL_LOAD=
+ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
+if test "x$ac_cv_func_shl_load" = xyes; then :
+
+$as_echo "#define HAVE_SHL_LOAD 1" >>confdefs.h
+
+	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if ${ac_cv_lib_dld_shl_load+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* 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 shl_load ();
+int
+main ()
+{
+return shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_shl_load=yes
+else
+  ac_cv_lib_dld_shl_load=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
+
+$as_echo "#define HAVE_SHL_LOAD 1" >>confdefs.h
+
+	    LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"
+	    LIBADD_SHL_LOAD="-ldld"
+fi
+
+fi
+
+
+
+case $host_os in
+darwin[1567].*)
+# We only want this for pre-Mac OS X 10.4.
+  ac_fn_c_check_func "$LINENO" "_dyld_func_lookup" "ac_cv_func__dyld_func_lookup"
+if test "x$ac_cv_func__dyld_func_lookup" = xyes; then :
+
+$as_echo "#define HAVE_DYLD 1" >>confdefs.h
+
+	LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dyld.la"
+fi
+
+  ;;
+beos*)
+  LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}load_add_on.la"
+  ;;
+cygwin* | mingw* | os2* | pw32*)
+  ac_fn_c_check_decl "$LINENO" "cygwin_conv_path" "ac_cv_have_decl_cygwin_conv_path" "#include <sys/cygwin.h>
+"
+if test "x$ac_cv_have_decl_cygwin_conv_path" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_CYGWIN_CONV_PATH $ac_have_decl
+_ACEOF
+
+  LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}loadlibrary.la"
+  ;;
+esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+$as_echo_n "checking for dld_link in -ldld... " >&6; }
+if ${ac_cv_lib_dld_dld_link+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* 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 dld_link ();
+int
+main ()
+{
+return dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_dld_link=yes
+else
+  ac_cv_lib_dld_dld_link=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
+$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
+
+$as_echo "#define HAVE_DLD 1" >>confdefs.h
+
+		LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dld_link.la"
+fi
+
+
+
+
+LT_DLPREOPEN=
+if test -n "$LT_DLLOADERS"
+then
+  for lt_loader in $LT_DLLOADERS; do
+    LT_DLPREOPEN="$LT_DLPREOPEN-dlpreopen $lt_loader "
+  done
+
+$as_echo "#define HAVE_LIBDLLOADER 1" >>confdefs.h
+
+fi
+
+
+LIBADD_DL="$LIBADD_DLOPEN $LIBADD_SHL_LOAD"
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
 
 if test x$use_libtool != xno; then
    DEFAULT_OBJECT_TYPE=".lo"
@@ -16463,6 +16796,31 @@ else
 fi
 fi
 
+if test $HAVE_UNAME=yes -a x`uname -s` = xGNU
+then
+
+
+if $TRUEPRG; then
+  HAVE_HURD_OS_TRUE=
+  HAVE_HURD_OS_FALSE='#'
+else
+  HAVE_HURD_OS_TRUE='#'
+  HAVE_HURD_OS_FALSE=
+fi
+        $as_echo "#define HAVE_HURD_OS 1" >>confdefs.h
+
+else
+
+
+if $FALSEPRG; then
+  HAVE_HURD_OS_TRUE=
+  HAVE_HURD_OS_FALSE='#'
+else
+  HAVE_HURD_OS_TRUE='#'
+  HAVE_HURD_OS_FALSE=
+fi
+fi
+
 if test $HAVE_UNAME=yes -a x`uname -s` = xOSF1
 then
 
@@ -16756,6 +17114,9 @@ then
 elif test $HAVE_UNAME=yes -a x`uname -s` = xSunOS
 then
         DISTNAME=solaris
+elif test $HAVE_UNAME=yes -a x`uname -s` = xGNU
+then
+        DISTNAME=hurd
 elif test $HAVE_UNAME=yes -a x`uname -s` = xFreeBSD
 then
         DISTNAME=freebsd
@@ -22387,7 +22748,7 @@ if test "${with_python+set}" = set; then :
 		PYTHON_LIBS=`/usr/bin/python-config --libs`
 	     else
 		for python_root in /usr /usr/local /usr/sfw; do
-		   for ver in python2.2 python2.3 python2.4 python2.5 python2.6 python3; do
+		   for ver in python2.2 python2.3 python2.4 python2.5 python2.6 python2.7 python3; do
 		      if test -f $python_root/include/${ver}/Python.h; then
 			 PYTHON_INCDIR=-I$python_root/include/${ver}
 			 if test -d $python_root/lib64/${ver}/config; then
@@ -23125,7 +23486,7 @@ if test "$ac_res" != no; then :
 fi
 
 
-working_dir=`eval echo ${prefix}/var/bacula/working`
+working_dir=`eval echo ${prefix}/opt/bacula/working`
 
 # Check whether --with-working-dir was given.
 if test "${with_working_dir+set}" = set; then :
@@ -23174,6 +23535,10 @@ hostname=`uname -n | cut -d '.' -f 1`
 if test x${hostname} = x ; then
   hostname="localhost"
 fi
+ping -c 1 $hostname 2>/dev/null 1>/dev/null
+if test ! $? = 0; then
+  hostname="localhost"
+fi
 
 # Check whether --with-hostname was given.
 if test "${with_hostname+set}" = set; then :
@@ -23205,7 +23570,7 @@ fi
 
 
 
-bsrdir=/tmp
+bsrdir=`eval echo ${prefix}/opt/bacula/bsr`
 
 # Check whether --with-bsrdir was given.
 if test "${with_bsrdir+set}" = set; then :
@@ -23220,7 +23585,7 @@ fi
 
 
 
-logdir=/tmp
+logdir=`eval echo ${prefix}/opt/bacula/log`
 
 # Check whether --with-logdir was given.
 if test "${with_logdir+set}" = set; then :
@@ -23963,57 +24328,75 @@ if test "${with_mysql+set}" = set; then :
   withval=$with_mysql;
   if test "$withval" != "no"; then
         if test "$withval" = "yes"; then
+#
+# This code is very broken on older systems
+#
+#           MYSQL_CONFIG=`which mysql_config 2>/dev/null`
+#           if test "x${MYSQL_CONFIG}" != x; then
+#              MYSQL_BINDIR="${MYSQL_CONFIG%/*}"
+#              ${MYSQL_CONFIG} --variable=pkglibdir > /dev/null 2>&1
+#              if test $? = 0 ; then
+#                 MYSQL_LIBDIR=`${MYSQL_CONFIG} --variable=pkglibdir`
+#                 MYSQL_INCDIR=`${MYSQL_CONFIG} --variable=pkgincludedir`
+#              else
+#                 MYSQL_LIBDIR=`${MYSQL_CONFIG} --libs | sed -e 's/.*-L//' -e 's/ .*//'`
+#                 MYSQL_INCDIR=`${MYSQL_CONFIG} --include | sed -e 's/-I//'`
+#              fi
+#           elif test -f /usr/local/mysql/include/mysql/mysql.h; then
            if test -f /usr/local/mysql/include/mysql/mysql.h; then
-                   MYSQL_INCDIR=/usr/local/mysql/include/mysql
-                   if test -f /usr/local/mysql/lib64/mysql/libmysqlclient_r.a \
-                        -o -f /usr/local/mysql/lib64/mysql/libmysqlclient_r.so; then
-                           MYSQL_LIBDIR=/usr/local/mysql/lib64/mysql
-                   else
-                           MYSQL_LIBDIR=/usr/local/mysql/lib/mysql
-                   fi
-                   MYSQL_BINDIR=/usr/local/mysql/bin
+              MYSQL_INCDIR=/usr/local/mysql/include/mysql
+              if test -f /usr/local/mysql/lib64/mysql/libmysqlclient_r.a \
+                      -o -f /usr/local/mysql/lib64/mysql/libmysqlclient_r.so; then
+                 MYSQL_LIBDIR=/usr/local/mysql/lib64/mysql
+              else
+                 MYSQL_LIBDIR=/usr/local/mysql/lib/mysql
+              fi
+              MYSQL_BINDIR=/usr/local/mysql/bin
            elif test -f /usr/include/mysql/mysql.h; then
-                   MYSQL_INCDIR=/usr/include/mysql
-                   if test -f /usr/lib64/mysql/libmysqlclient_r.a \
-                        -o -f /usr/lib64/mysql/libmysqlclient_r.so; then
-                           MYSQL_LIBDIR=/usr/lib64/mysql
-                   elif test -f /usr/lib64/libmysqlclient_r.a \
+              MYSQL_INCDIR=/usr/include/mysql
+              if test -f /usr/lib64/mysql/libmysqlclient_r.a \
+                      -o -f /usr/lib64/mysql/libmysqlclient_r.so; then
+                 MYSQL_LIBDIR=/usr/lib64/mysql
+              elif test -f /usr/lib64/libmysqlclient_r.a \
                         -o -f /usr/lib64/libmysqlclient_r.so; then
-                           MYSQL_LIBDIR=/usr/lib64
-                   elif test -f /usr/lib/mysql/libmysqlclient_r.a \
-                          -o -f /usr/lib/mysql/libmysqlclient_r.so; then
-                           MYSQL_LIBDIR=/usr/lib/mysql
-                   else
-                           MYSQL_LIBDIR=/usr/lib
-                   fi
-                   MYSQL_BINDIR=/usr/bin
+                 MYSQL_LIBDIR=/usr/lib64
+              elif test -f /usr/lib/x86_64-linux-gnu/libmysqlclient_r.a \
+                        -o -f /usr/lib/x86_64-linux-gnu/libmysqlclient_r.so; then
+                 MYSQL_LIBDIR=/usr/lib/x86_64-linux-gnu
+              elif test -f /usr/lib/mysql/libmysqlclient_r.a \
+                        -o -f /usr/lib/mysql/libmysqlclient_r.so; then
+                 MYSQL_LIBDIR=/usr/lib/mysql
+              else
+                 MYSQL_LIBDIR=/usr/lib
+              fi
+              MYSQL_BINDIR=/usr/bin
            elif test -f /usr/include/mysql.h; then
-                   MYSQL_INCDIR=/usr/include
-                   if test -f /usr/lib64/libmysqlclient_r.a \
-                        -o -f /usr/lib64/libmysqlclient_r.so; then
-                           MYSQL_LIBDIR=/usr/lib64
-                   else
-                           MYSQL_LIBDIR=/usr/lib
-                   fi
-                   MYSQL_BINDIR=/usr/bin
+              MYSQL_INCDIR=/usr/include
+              if test -f /usr/lib64/libmysqlclient_r.a \
+                      -o -f /usr/lib64/libmysqlclient_r.so; then
+                 MYSQL_LIBDIR=/usr/lib64
+              else
+                 MYSQL_LIBDIR=/usr/lib
+              fi
+              MYSQL_BINDIR=/usr/bin
            elif test -f /usr/local/include/mysql/mysql.h; then
-                   MYSQL_INCDIR=/usr/local/include/mysql
-                   if test -f /usr/local/lib64/mysql/libmysqlclient_r.a \
-                        -o -f /usr/local/lib64/mysql/libmysqlclient_r.so; then
-                           MYSQL_LIBDIR=/usr/local/lib64/mysql
-                   else
-                           MYSQL_LIBDIR=/usr/local/lib/mysql
-                   fi
-                   MYSQL_BINDIR=/usr/local/bin
+              MYSQL_INCDIR=/usr/local/include/mysql
+              if test -f /usr/local/lib64/mysql/libmysqlclient_r.a \
+                      -o -f /usr/local/lib64/mysql/libmysqlclient_r.so; then
+                 MYSQL_LIBDIR=/usr/local/lib64/mysql
+              else
+                 MYSQL_LIBDIR=/usr/local/lib/mysql
+              fi
+              MYSQL_BINDIR=/usr/local/bin
            elif test -f /usr/local/include/mysql.h; then
-                   MYSQL_INCDIR=/usr/local/include
-                   if test -f /usr/local/lib64/libmysqlclient_r.a \
-                        -o -f /usr/local/lib64/libmysqlclient_r.so; then
-                           MYSQL_LIBDIR=/usr/local/lib64
-                   else
-                           MYSQL_LIBDIR=/usr/local/lib
-                   fi
-                   MYSQL_BINDIR=/usr/local/bin
+              MYSQL_INCDIR=/usr/local/include
+              if test -f /usr/local/lib64/libmysqlclient_r.a \
+                      -o -f /usr/local/lib64/libmysqlclient_r.so; then
+                 MYSQL_LIBDIR=/usr/local/lib64
+              else
+                 MYSQL_LIBDIR=/usr/local/lib
+              fi
+              MYSQL_BINDIR=/usr/local/bin
            else
               { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -24058,9 +24441,6 @@ $as_echo "no" >&6; }
         else
            MYSQL_LIBS="-L$MYSQL_LIBDIR -lmysqlclient_r -lz"
         fi
-
-$as_echo "#define HAVE_THREAD_SAFE_MYSQL 1" >>confdefs.h
-
         DB_LIBS="${DB_LIBS} ${MYSQL_LIBS}"
      fi
      MYSQL_LIB=$MYSQL_LIBDIR/libmysqlclient_r.a
@@ -25557,6 +25937,7 @@ for ac_header in \
    stdarg.h \
    stdlib.h \
    stdint.h \
+   inttypes.h \
    string.h \
    strings.h \
    termios.h \
@@ -28026,6 +28407,23 @@ fi
 done
 
 
+ac_fn_c_check_decl "$LINENO" "F_CLOSEM" "ac_cv_have_decl_F_CLOSEM" "#include <fcntl.h>
+
+"
+if test "x$ac_cv_have_decl_F_CLOSEM" = xyes; then :
+
+$as_echo "#define HAVE_FCNTL_F_CLOSEM 1" >>confdefs.h
+
+fi
+
+
+ac_fn_c_check_func "$LINENO" "closefrom" "ac_cv_func_closefrom"
+if test "x$ac_cv_func_closefrom" = xyes; then :
+
+$as_echo "#define HAVE_CLOSEFROM 1" >>confdefs.h
+
+fi
+
 for ac_func in getpagesize
 do :
   ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize"
@@ -28150,7 +28548,7 @@ main ()
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
 
-	      ba_cv_va_copy=yes,
+	      ba_cv_va_copy=yes
 
 else
 
@@ -28361,6 +28759,80 @@ $as_echo "#define HAVE_SA_LEN 1" >>confdefs.h
 
 fi
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working getaddrinfo" >&5
+$as_echo_n "checking for working getaddrinfo... " >&6; }
+if ${ac_cv_working_getaddrinfo+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+       if test "$cross_compiling" = yes; then :
+
+	      ac_cv_working_getaddrinfo="yes"
+
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+	      #include <netdb.h>
+	      #include <string.h>
+	      #include <sys/types.h>
+	      #include <sys/socket.h>
+
+	      void main(void) {
+		  struct addrinfo hints, *ai;
+		  int error;
+
+		  memset(&hints, 0, sizeof(hints));
+		  hints.ai_family = AF_UNSPEC;
+		  hints.ai_socktype = SOCK_STREAM;
+		  error = getaddrinfo("127.0.0.1", NULL, &hints, &ai);
+		  if (error) {
+		      exit(1);
+		  }
+		  if (ai->ai_addr->sa_family != AF_INET) {
+		      exit(1);
+		  }
+		  exit(0);
+	      }
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+	      ac_cv_working_getaddrinfo="yes"
+
+else
+
+	      ac_cv_working_getaddrinfo="no"
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_getaddrinfo" >&5
+$as_echo "$ac_cv_working_getaddrinfo" >&6; }
+ac_fn_c_check_func "$LINENO" "gai_strerror" "ac_cv_func_gai_strerror"
+if test "x$ac_cv_func_gai_strerror" = xyes; then :
+
+$as_echo "#define HAVE_GAI_STRERROR 1" >>confdefs.h
+
+fi
+
+
+if test "$ac_cv_working_getaddrinfo" = "yes"; then
+  if test "$ac_cv_func_gai_strerror" != "yes"; then
+    ac_cv_working_getaddrinfo="no"
+  else
+
+$as_echo "#define HAVE_GETADDRINFO 1" >>confdefs.h
+
+  fi
+fi
+
 for ac_func in strftime
 do :
   ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime"
@@ -28993,6 +29465,134 @@ fi
 
 
 
+AFS_CFLAGS=""
+AFS_LIBS=""
+support_afs=auto
+# Check whether --enable-afs was given.
+if test "${enable_afs+set}" = set; then :
+  enableval=$enable_afs;
+       if test x$enableval = xyes; then
+	  support_afs=yes
+       elif test x$enableval = xno; then
+	  support_afs=no
+       fi
+
+
+fi
+
+
+have_afs=no
+if test x$support_afs = xyes -o x$support_afs = xauto; then
+
+# Check whether --with-afsdir was given.
+if test "${with_afsdir+set}" = set; then :
+  withval=$with_afsdir; with_afsdir=$withval
+
+fi
+
+
+            if test x$with_afsdir = x; then
+      for root in /usr /usr/local; do
+	 if test -d ${root}/include/afs/ ; then
+	    with_afsdir=${root}
+	    break
+	 fi
+	 if test -d ${root}/include/openafs/afs/ ; then
+	    with_afsdir=${root}
+	    break
+	 fi
+      done
+   fi
+
+   if test -d ${with_afsdir}/include/afs/ ; then
+      AFS_CFLAGS="-I${with_afsdir}/include"
+   else
+      if test -d ${with_afsdir}/include/openafs/afs/ ; then
+	 AFS_CFLAGS="-I${with_afsdir}/include/openafs"
+      fi
+   fi
+
+   saved_CFLAGS="${CFLAGS}"
+   saved_CPPFLAGS="${CPPFLAGS}"
+   CFLAGS="${AFS_CFLAGS} ${saved_CFLAGS}"
+   CPPFLAGS="${AFS_CFLAGS} ${saved_CPPFLAGS}"
+
+   for ac_header in afs/afsint.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "afs/afsint.h" "ac_cv_header_afs_afsint_h" "$ac_includes_default"
+if test "x$ac_cv_header_afs_afsint_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_AFS_AFSINT_H 1
+_ACEOF
+
+fi
+
+done
+
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+	  #include <afs/afsint.h>
+	  #include <afs/venus.h>
+
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+$as_echo "#define HAVE_AFS_VENUS_H 1" >>confdefs.h
+
+
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+   CFLAGS="${saved_CFLAGS}"
+   CPPFLAGS="${saved_CPPFLAGS}"
+
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pioctl in AFS libsys" >&5
+$as_echo_n "checking for pioctl in AFS libsys... " >&6; }
+   for dir in ${with_afsdir}/lib \
+	      ${with_afsdir}/lib/afs \
+	      ${with_afsdir}/lib/openafs \
+	      ${with_afsdir}/lib64 \
+	      ${with_afsdir}/lib64/afs \
+	      ${with_afsdir}/lib64/openafs
+   do
+      for arch_type in .a .so
+      do
+	 A=`test -f ${dir}/libsys${arch_type} && nm ${dir}/libsys${arch_type} 2>/dev/null | grep pioctl`
+	 pkg=$?
+	 if test $pkg = 0; then
+	    have_afs=yes
+	    AFS_LIBS="-L${dir} -lsys -lrx -llwp ${dir}/util${arch_type}"
+	    break
+	 fi
+      done
+   done
+
+   if test $have_afs = yes; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+   else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+   fi
+
+   if test x$support_afs = xyes -a $have_afs != yes; then
+      as_fn_error $? "afs support explicitly enabled but no supported afs implementation found,
+  please either load the afs libraries or rerun configure without --enable-afs" "$LINENO" 5
+   else
+      if test $have_afs = yes; then
+
+$as_echo "#define HAVE_AFS 1" >>confdefs.h
+
+
+$as_echo "#define HAVE_AFS_ACL 1" >>confdefs.h
+
+      fi
+   fi
+fi
+
+
+
 support_acl=auto
 # Check whether --enable-acl was given.
 if test "${enable_acl+set}" = set; then :
@@ -29068,7 +29668,15 @@ $as_echo "$ac_cv_lib_acl_acl_get_file" >&6; }
 if test "x$ac_cv_lib_acl_acl_get_file" = xyes; then :
 
 	     have_acl=yes
-	     FDLIBS="-lacl $FDLIBS"
+	     if test $have_afs = yes; then
+								if test -d /usr/lib64/; then
+		   FDLIBS="-L/usr/lib64 -lacl $FDLIBS"
+		else
+		   FDLIBS="-L/usr/lib -lacl $FDLIBS"
+		fi
+	     else
+		FDLIBS="-lacl $FDLIBS"
+	     fi
 
 
 fi
@@ -30010,15 +30618,6 @@ WIN32=
 MACOSX=
 COMPRESS_MANPAGES=yes
 
-hostname=`uname -n | cut -d '.' -f 1`
-if test x${hostname} = x ; then
-   hostname="localhost"
-fi
-ping -c 1 $hostname 2>/dev/null 1>/dev/null
-if test ! $? = 0; then
-  hostname="localhost"
-fi
-
 case "$DISTNAME" in
 aix)
    DISTVER=`uname -r`
@@ -30128,6 +30727,16 @@ freebsd)
        platforms/freebsd/bacula-dir"
    largefile_support="yes"
   ;;
+hurd)
+   DISTVER=`uname -r`
+   TAPEDRIVE="/dev/nst0"
+   PSCMD="ps -e -o pid,command"
+   PFILES="${PFILES} \
+       platforms/hurd/Makefile \
+       platforms/hurd/bacula-fd \
+       platforms/hurd/bacula-sd \
+       platforms/hurd/bacula-dir"
+  ;;
 hpux)
    PSCMD="UNIX95=1; ps -e -o pid,comm"
    CFLAGS="${CFLAGS} -D_XOPEN_SOURCE_EXTENDED=1"
@@ -30300,6 +30909,7 @@ if test "${with_systemd+set}" = set; then :
 
 	   PFILES="${PFILES} \
 		   platforms/systemd/Makefile \
+		   platforms/systemd/bacula.conf \
 		   platforms/systemd/bacula-dir.service \
 		   platforms/systemd/bacula-fd.service \
 		   platforms/systemd/bacula-sd.service"
@@ -30885,7 +31495,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by bacula $as_me 5.2.4, which was
+This file was extended by bacula $as_me 5.2.12, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -30951,7 +31561,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-bacula config.status 5.2.4
+bacula config.status 5.2.12
 configured by $0, generated by GNU Autoconf 2.68,
   with options \\"\$ac_cs_config\\"
 
@@ -33273,6 +33883,7 @@ Configuration on `date`:
    build-dird:		     ${build_dird}
    build-stored:	     ${build_stored}
    Plugin support:	     ${have_plugins}
+   AFS support: 	     ${have_afs}
    ACL support: 	     ${have_acl}
    XATTR support:	     ${have_xattr}
    Python support:	     ${support_python} ${PYTHON_LIBS}
diff --git a/examples/autochangers/chio-changer-openbsd b/examples/autochangers/chio-changer-openbsd
new file mode 100644
index 0000000..050095a
--- /dev/null
+++ b/examples/autochangers/chio-changer-openbsd
@@ -0,0 +1,134 @@
+#!/bin/sh
+#
+# Bacula interface to chio(1) autoloader for OpenBSD
+#
+# Adapted from NetBSD pkgsrc and examples/autochangers in bacula source)
+# by Antoine Jacoutot <ajacoutot at openbsd.org> for OpenBSD.
+# Tested on an LTO-4 device with 1 drive and 8 slots.
+# The user Bacula is running as needs rw access to the ch(4) and st(4)
+# devices.
+#
+# If you set in your Device resource:
+#      Changer Command = "/path/to/chio-changer-openbsd %c %o %S %a %d"
+# you will have the following input to this script:
+#      chio-changer-openbsd "changer-device" "command" "slot" "archive-device" "drive-index"
+#                            $1               $2        $3     $4               $5
+#
+# So Bacula will always call with all the following arguments, even though
+#     in come cases, not all are used.
+#
+# N.B. If you change the script, take care to return either 
+#      the chio exit code or a 0. If the script exits with a non-zero
+#      exit code, Bacula will assume the request failed.
+
+# time (in seconds) for the unit to settle after (un)loading a tape
+SLEEP=1
+
+CHIO=/bin/chio
+
+usage() {
+	echo "usage: ${0##*/} ctl-device command [slot archive-device drive-index]"
+}
+
+# check parameters count
+check_parm_count() {
+	pCount=$1
+	pCountNeed=$2
+	if test ${pCount} -lt ${pCountNeed}; then
+		usage
+		echo "!!! insufficient number of arguments given"
+		exit 1
+	if test ${pCount} -lt 2; then
+		usage
+		echo "!!! mimimum usage is the first two arguments"
+		exit 1
+	else
+		usage
+		echo "!!! command expected ${pCountNeed} arguments"
+		exit 1
+	fi
+		usage
+		exit 1
+	fi
+}
+
+# check arguments count for specific actions
+case $2 in
+	list|listall)
+		check_parm_count $# 2
+		;;
+	slots)
+		check_parm_count $# 2
+		;;
+	transfer)
+		check_parm_count $# 4
+		;;
+	*)
+		check_parm_count $# 5
+		;;
+esac
+
+
+# get arguments
+ctl=$1
+cmd="$2"
+slot=$3
+device=$4
+drive=$5
+
+case ${cmd} in 
+	unload)
+		${CHIO} -f ${ctl} move drive ${drive} slot $((${slot} - 1))
+		rtn=$?
+		[ ${rtn} -eq 0 ] && sleep ${SLEEP}
+		exit ${rtn}
+		;;
+	load)
+		${CHIO} -f ${ctl} move slot $((${slot} - 1)) drive ${drive}
+		rtn=$?
+		[ ${rtn} -eq 0 ] && sleep ${SLEEP}
+		exit ${rtn}
+		;;
+	list)
+		${CHIO} -f ${ctl} status -v slot | \
+			sed -ne 's/^slot *\([0-9]*:\).*FULL.*voltag.*<\(.*\):.*/\1\2/p' | \
+			awk -F: '{ print $1 + 1 ":" $2 }'
+		exit $?
+		;;
+	listall)
+		# XXX only one drive is queried
+		_list=$(${0} ${1} list)
+		_loaded_s=$(${0} ${1} loaded ${slot} ${device} ${drive})
+		_loaded_t=$(${CHIO} -f ${ctl} status -v | grep "drive ${drive}" | awk '{ print $NF }' | sed -e 's,<,,' -e 's,:.*,,')
+
+		[ -n "${_list}" -a -n "${_loaded_s}" -a -n "${_loaded_t}" ] || exit 1
+
+		(for i in ${_list}; do
+			echo "S:${i}" | sed 's/\(.*\):/\1:F:/'
+		done
+		echo S:${_loaded_s}:E
+		if [ "${_loaded_s}" -ne 0 ]; then
+			echo D:${drive}:F:${_loaded_s}:${_loaded_t}
+		else
+			echo D:${drive}:E
+		fi) | sort
+		;;
+	loaded)
+		# XXX output the first empty slot if the drive is loaded
+		_slot=$(${CHIO} -f ${ctl} status -v | egrep '^slot.*<ACCESS> voltag: <:[0-9]>$' | awk '{ print $2 }' | awk -F: '{ print $1 + 1 }')
+		rtn=$?
+		_loaded=$(${CHIO} -f ${ctl} status -v | egrep "^drive ${drive}: <ACCESS,FULL> voltag: <.*:[0-9]>")
+		[ -z "${_slot}" -o -z "${_loaded}" ] && _slot=0
+		echo ${_slot} | awk '{ print $1 }'
+		exit ${rtn}
+		;;
+	slots)
+		${CHIO} -f ${ctl} params | awk "/slots/{print \$2}"
+		exit $?
+		;;
+	transfer)
+		slotdest=${device}
+		${CHIO} -f ${ctl} move slot $((${slot} - 1)) slot ${slotdest}
+		exit $?
+		;;
+esac
diff --git a/examples/autochangers/locking-mtx-changer b/examples/autochangers/locking-mtx-changer
index 7884830..f3717d2 100644
--- a/examples/autochangers/locking-mtx-changer
+++ b/examples/autochangers/locking-mtx-changer
@@ -76,7 +76,7 @@ wait_for_drive() {
     done
 }
 
-LOCKFILE="${LOCKDIR}/mtx-changer:`echo $ctl | tr / _'"
+LOCKFILE="${LOCKDIR}/mtx-changer:`echo $ctl | tr / _`"
 
 changer_lock() {
 	make_temp_file lock
diff --git a/examples/devices/DDS4.conf b/examples/devices/DDS4.conf
index 07a5157..b2d6577 100644
--- a/examples/devices/DDS4.conf
+++ b/examples/devices/DDS4.conf
@@ -4,12 +4,12 @@
 Device {
   Name = DDS-4                        # 
   Media Type = DDS-4
-  Archive Device = @TAPEDRIVE@
+  Archive Device = /dev/nst0
   AutomaticMount = yes;               # when device opened, read it
   AlwaysOpen = yes;
   RemovableMedia = yes;
   RandomAccess = no;
-# Changer Command = "@scriptdir@/mtx-changer %c %o %S %a %d"
+# Changer Command = "/opt/bacula/scripts/mtx-changer %c %o %S %a %d"
 # Changer Device = /dev/sg0
 # AutoChanger = yes
   # Enable the Alert command only if you have the mtx package loaded
diff --git a/examples/devices/Exabyte.conf b/examples/devices/Exabyte.conf
index bd8a815..4a53ca1 100644
--- a/examples/devices/Exabyte.conf
+++ b/examples/devices/Exabyte.conf
@@ -4,7 +4,7 @@
 Device {
   Name = "Exabyte 8mm"
   Media Type = "8mm"
-  Archive Device = @TAPEDRIVE@
+  Archive Device = /dev/nst0
   Hardware end of medium = No;
   AutomaticMount = yes;               # when device opened, read it
   AlwaysOpen = Yes;
diff --git a/examples/devices/HP-autoloader.conf b/examples/devices/HP-autoloader.conf
index 79a9bb7..367e843 100644
--- a/examples/devices/HP-autoloader.conf
+++ b/examples/devices/HP-autoloader.conf
@@ -7,7 +7,7 @@ Device {
   Media Type = DDS-4
   Archive Device = /dev/nst0
   Changer Device = /dev/sg0
-  Changer Command = "/home/kern/bacula/bin/mtx-changer %c %o %S %a"
+  Changer Command = "/opt/bacula/scripts/mtx-changer %c %o %S %a"
   AutoChanger = yes
   AutomaticMount = yes;               # when device opened, read it
   AlwaysOpen = yes;
diff --git a/examples/devices/LTO-2.conf b/examples/devices/LTO-2.conf
index c956b0e..d28e66c 100644
--- a/examples/devices/LTO-2.conf
+++ b/examples/devices/LTO-2.conf
@@ -4,13 +4,13 @@
 Device {
   Name = LTO-2
   Media Type = LTO-2
-  Archive Device = @TAPEDRIVE@
+  Archive Device = /dev/nst0
   AutomaticMount = yes;               # when device opened, read it
   AlwaysOpen = yes;
   RemovableMedia = yes;
   RandomAccess = no;
   Maximum File Size = 3GB
-# Changer Command = "@scriptdir@/mtx-changer %c %o %S %a %d"
+# Changer Command = "/opt/bacula/scripts/mtx-changer %c %o %S %a %d"
 # Changer Device = /dev/sg0
 # AutoChanger = yes
   # Enable the Alert command only if you have the mtx package loaded
diff --git a/examples/devices/LTO-3.conf b/examples/devices/LTO-3.conf
index 3fa8f83..6c68b21 100644
--- a/examples/devices/LTO-3.conf
+++ b/examples/devices/LTO-3.conf
@@ -4,13 +4,13 @@
 Device {
   Name = LTO-3
   Media Type = LTO-3
-  Archive Device = @TAPEDRIVE@
+  Archive Device = /dev/nst0
   AutomaticMount = yes;               # when device opened, read it
   AlwaysOpen = yes;
   RemovableMedia = yes;
   RandomAccess = no;
   Maximum File Size = 4GB
-# Changer Command = "@scriptdir@/mtx-changer %c %o %S %a %d"
+# Changer Command = "/opt/bacula/scripts/mtx-changer %c %o %S %a %d"
 # Changer Device = /dev/sg0
 # AutoChanger = yes
   # Enable the Alert command only if you have the mtx package loaded
diff --git a/examples/devices/LTO-4.conf b/examples/devices/LTO-4.conf
index 1b921e5..28260eb 100644
--- a/examples/devices/LTO-4.conf
+++ b/examples/devices/LTO-4.conf
@@ -4,13 +4,13 @@
 Device {
   Name = LTO-4
   Media Type = LTO-4
-  Archive Device = @TAPEDRIVE@
+  Archive Device = /dev/nst0
   AutomaticMount = yes;               # when device opened, read it
   AlwaysOpen = yes;
   RemovableMedia = yes;
   RandomAccess = no;
   Maximum File Size = 5GB
-# Changer Command = "@scriptdir@/mtx-changer %c %o %S %a %d"
+# Changer Command = "/opt/bacula/scripts/mtx-changer %c %o %S %a %d"
 # Changer Device = /dev/sg0
 # AutoChanger = yes
   # Enable the Alert command only if you have the mtx package loaded
diff --git a/examples/devices/OnStream.conf b/examples/devices/OnStream.conf
index 48ba3b4..be22523 100644
--- a/examples/devices/OnStream.conf
+++ b/examples/devices/OnStream.conf
@@ -7,7 +7,7 @@ Device {
   Name = OnStream
   Description = "OnStream drive on Linux"
   Media Type = OnStream
-  Archive Device = @TAPEDRIVE@
+  Archive Device = /dev/nst0
   AutomaticMount = yes;               # when device opened, read it
   AlwaysOpen = yes
   Offline On Unmount = no
diff --git a/examples/devices/two-drive-autoloader.conf b/examples/devices/two-drive-autoloader.conf
index 395531e..2358b7f 100644
--- a/examples/devices/two-drive-autoloader.conf
+++ b/examples/devices/two-drive-autoloader.conf
@@ -5,7 +5,7 @@ Autochanger {
   Name = Autochanger
   Device = Drive-1
   Device = Drive-2
-  Changer Command = "@scriptdir@/mtx-changer %c %o %S %a %d"
+  Changer Command = "/opt/bacula/scripts/mtx-changer %c %o %S %a %d"
   Changer Device = /dev/sg0
 }
 
diff --git a/kernstodo b/kernstodo
deleted file mode 100644
index 358c430..0000000
--- a/kernstodo
+++ /dev/null
@@ -1,1391 +0,0 @@
-                    Kern's ToDo List
-                     21 September 2009
-
-Rescue:
-Add to USB key:
-  gftp sshfs kile kate lsssci m4 mtx nfs-common nfs-server
-  patch squashfs-tools strace sg3-utils screen scsiadd
-  system-tools-backend telnet dpkg traceroute urar usbutils
-  whois apt-file autofs busybox chkrootkit clamav dmidecode
-  manpages-dev manpages-posix manpages-posix-dev
-
-
-Document:
-- package sg3-utils, program sg_map
-- !!! Cannot restore two jobs a the same time that were
-  written simultaneously unless they were totally spooled.
-- Document cleaning up the spool files:
-  db, pid, state, bsr, mail, conmsg, spool
-- Document the multiple-drive-changer.txt script.
-- Pruning with Admin job.
-- Does WildFile match against full name?  Doc.
-- %d and %v only valid on Director, not for ClientRunBefore/After.
-- During tests with the 260 char fix code, I found one problem:
-  if the system "sees" a long path once, it seems to forget it's
-  working drive (e.g.  c:\), which will lead to a problem during
-  the next job (create bootstrap file will fail).  Here is the
-  workaround: specify absolute working and pid directory in
-  bacula-fd.conf (e.g.  c:\bacula\working instead of
-  \bacula\working).
-- Document techniques for restoring large numbers of files.
-- Document setting my.cnf to big file usage.
-- Correct the Include syntax in the m4.xxx files in examples/conf
-- Document all the little details of setting up certificates for
-  the Bacula data encryption code.
-- Document more precisely how to use master keys -- especially
-  for disaster recovery.
- 
-Priority:
-================
-24-Jul 09:56 rufus-fd JobId 1: VSS Writer (BackupComplete): "System Writer", State: 0x1 (VSS_WS_STABLE)
-24-Jul 09:56 rufus-fd JobId 1: Warning: VSS Writer (BackupComplete): "ASR Writer", State: 0x8 (VSS_WS_FAILED_AT_PREPARE_SNAPSHOT)
-24-Jul 09:56 rufus-fd JobId 1: VSS Writer (BackupComplete): "WMI Writer", State: 0x1 (VSS_WS_STABLE)
-- Add external command to lookup hostname (eg nmblookup timmy-win7)
-nmblookup gato
-querying gato on 127.255.255.255
-querying gato on 192.168.1.255
-   192.168.1.8 gato<00>
-   192.168.1.11 gato<00>
-   192.168.1.8 gato<00>
-   192.168.1.11 gato<00>
-- Possibly allow SD to spool even if a tape is not mounted.
-- How to sync remote offices.
-- Windows Bare Metal 
-- Backup up windows system state 
-- Complete Job restart 
-- Look at rsysnc for incremental updates and dedupping 
-- Implement rwlock() for SD that takes why and can_steal to replace
-  existing block/lock mechanism. rlock() would allow multiple readers
-  wlock would allow only one writer.
-- For Windows disaster recovery see http://unattended.sf.net/
-- Add "before=" "olderthan=" to FileSet for doing Base of
-  unchanged files.
-- Show files/second in client status output.
-- Don't attempt to restore from "Disabled" Volumes.
-- Have SD compute MD5 or SHA1 and compare to what FD computes.
-- Make VolumeToCatalog calculate an MD5 or SHA1 from the 
-  actual data on the Volume and compare it.                  
-- Remove queue.c code.
-- Implement multiple jobid specification for the cancel command,
-  similar to what is permitted on the update slots command.
-- Ensure that the SD re-reads the Media record if the JobFiles
-  does not match -- it may have been updated by another job.
-- Add MD5 or SHA1 check in SD for data validation
-- When reserving a device to read, check to see if the Volume
-  is already in use, if so wait.  Probably will need to pass the
-  Volume.  See bug #1313.  Create a regression test to simulate
-  this problem and see if VolumePollInterval fixes it. Possibly turn
-  it on by default.
-
-- Page hash tables
-- Deduplication
-- Why no error message if restore has no permission on the where
-  directory?
-- Possibly allow manual "purge" to purge a Volume that has not
-  yet been written (even if FirstWritten time is zero) see ua_purge.c
-  is_volume_purged().
-- Add disk block detection bsr code (make it work).
-- Remove done bsrs.
-- Detect deadlocks in reservations.
-- Plugins:
-  - Add list during dump
-  - Add in plugin code flag
-  - Add bRC_EndJob -- stops more calls to plugin this job
-  - Add bRC_Term (unload plugin)
-  - remove time_t from Jmsg and use utime_t?
-- Deadlock detection, watchdog sees if counter advances when jobs are
-  running.  With debug on, can do a "status" command.
-- User options for plugins.
-- Pool Storage override precedence over command line.
-- Autolabel only if Volume catalog information indicates tape not
-  written. This will avoid overwriting a tape that gets an I/O
-  error on reading the volume label.
-- I/O error, SD thinks it is not the right Volume, should check slot
-  then disable volume, but Asks for mount.
-- Can be posible modify package to create and use configuration files in 
-   the Debian manner? 
-
-   For example:
-
-   /etc/bacula/bacula-dir.conf
-   /etc/bacula/conf.d/pools.conf
-   /etc/bacula/conf.d/clients.conf
-   /etc/bacula/conf.d/storages.conf
-
-   and into bacula-dir.conf file include
-
-   @/etc/bacula/conf.d/pools.conf
-   @/etc/bacula/conf.d/clients.conf
-   @/etc/bacula/conf.d/storages.conf
-- Possibly add an Inconsistent state when a Volume is in error
-  for non I/O reasons.
-- Fix #ifdefing so that smartalloc can be disabled. Check manual
-  -- the default is enabled.
-- Dangling softlinks are not restored properly.  For example, take a
-  soft link such as src/testprogs/install-sh, which points to /usr/share/autoconf...
-  move the directory to another machine where the file /usr/share/autoconf does
-  not exist, back it up, then try a full restore.  It fails.
-- Softlinks that point to non-existent file are not restored in restore all,
-  but are restored if the file is individually selected.  BUG!
-- Prune by Job
-- Prune by Job Level (Full, Differential, Incremental)
-- modify pruning to keep a fixed number of versions of a file, 
-  if requested.
-- the cd-command should allow complete paths
-  i.e. cd /foo/bar/foo/bar
-  -> if a customer mails me the path to a certain file,
-     its faster to enter the specified directory
-- Make tree walk routines like cd, ls, ... more user friendly
-  by handling spaces better.
-- When doing a restore, if the user does an "update slots"
-  after the job started in order to add a restore volume, the
-   values prior to the update slots will be put into the catalog.
-   Must retrieve catalog record merge it then write it back at the
-   end of the restore job, if we want to do this right.
-=== rate design
-  jcr->last_rate
-  jcr->last_runtime
-  MA = (last_MA * 3 + rate) / 4
-  rate = (bytes - last_bytes) / (runtime - last_runtime)
-===
-- Add a recursive mark command (rmark) to restore.
-- Look at simplifying File exclusions.
-- Scripts
-- Separate Files and Directories in catalog
-- Create FileVersions table
-- finish implementation of fdcalled -- see ua_run.c:105
-- Fix problem in postgresql.c in my_postgresql_query, where the
-  generation of the error message doesn't differentiate result==NULL
-  and a bad status from that result.  Not only that, the result is
-  cleared on a bail_out without having generated the error message.
-- Implement SDErrors (must return from SD)
-- Implement continue spooling while despooling.
-- Remove all install temp files in Win32 PLUGINSDIR.
-- No where in restore causes kaboom.
-- Performance: multiple spool files for a single job.
-- Performance: despool attributes when despooling data (problem
-  multiplexing Dir connection).
-- Implement wait_for_sysop() message display in wait_for_device(), which
-  now prints warnings too often.
-- Ensure that each device in an Autochanger has a different
-  Device Index.
-- Look at sg_logs -a /dev/sg0 for getting soft errors.
-- btape "test" command with Offline on Unmount = yes
-
-   This test is essential to Bacula.
-
-   I'm going to write one record  in file 0,
-   two records in file 1,
-   and three records in file 2
-
-   02-Feb 11:00 btape: ABORTING due to ERROR in dev.c:715
-   dev.c:714 Bad call to rewind. Device "LTO" (/dev/nst0) not open
-   02-Feb 11:00 btape: Fatal Error because: Bacula interrupted by signal 11: Segmentation violation
-   Kaboom! btape, btape got signal 11. Attempting traceback.
-
-- Encryption -- email from Landon
-   > The backup encryption algorithm is currently not configurable, and is  
-   > set to AES_128_CBC in src/filed/backup.c. The encryption code  
-   > supports a number of different ciphers (as well as adding arbitrary  
-   > new ones) -- only a small bit of code would be required to map a  
-   > configuration string value to a CRYPTO_CIPHER_* value, if anyone is  
-   > interested in implementing this functionality.
-
-- Add the OS version back to the Win32 client info.
-- Restarted jobs have a NULL in the from field.
-- Modify SD status command to indicate when the SD is writing
-  to a DVD (the device is not open -- see bug #732).
-- Look at the possibility of adding "SET NAMES UTF8" for MySQL,
-  and possibly changing the blobs into varchar.
-- Test Volume compatibility between machine architectures
-- Encryption documentation
-
-Professional Needs:
-- Migration from other vendors
-  - Date change
-  - Path change
-- Filesystem types
-- Backup conf/exe (all daemons) 
-- Detect state change of system (verify)
-- SD to SD
-- Novell NSS backup http://www.novell.com/coolsolutions/tools/18952.html
-- Compliance norms that compare restored code hash code.
-- David's priorities
-   Copypools
-   Extract capability (#25)
-   Threshold triggered migration jobs (not currently in list, but will be
-    needed ASAP)
-   Client triggered backups
-   Complete rework of the scheduling system (not in list)
-   Performance and usage instrumentation (not in list)
-   See email of 21Aug2007 for details.
-- Look at: http://tech.groups.yahoo.com/group/cfg2html
-   and http://www.openeyet.nl/scc/ for managing customer changes
-
-Projects:
-- Pool enhancements
-  - Access Mode = Read-Only, Read-Write, Unavailable, Destroyed, Offsite
-  - Pool Type = Copy
-  - Maximum number of scratch volumes
-  - Maximum File size
-  - Next Pool (already have)
-  - Reclamation threshold
-  - Reclamation Pool
-  - Reuse delay (after all files purged from volume before it can be used)
-  - Copy Pool = xx, yyy (or multiple lines).
-  - Catalog = xxx
-  - Allow pool selection during restore.
-
-- Average tape size from Eric
-    SELECT COALESCE(media_avg_size.volavg,0) * count(Media.MediaId) AS volmax,                                                              GROUP BY Media.MediaType, Media.PoolId, media_avg_size.volavg
-           count(Media.MediaId)  AS volnum,
-           sum(Media.VolBytes)   AS voltotal,
-           Media.PoolId          AS PoolId,
-           Media.MediaType       AS MediaType
-    FROM Media
-    LEFT JOIN (SELECT avg(Media.VolBytes) AS volavg,
-                      Media.MediaType     AS MediaType
-               FROM Media
-              WHERE Media.VolStatus = 'Full'
-              GROUP BY Media.MediaType
-               ) AS media_avg_size ON (Media.MediaType = media_avg_size.MediaType)
-    GROUP BY Media.MediaType, Media.PoolId, media_avg_size.volavg
-- Performance
-  - Despool attributes in separate thread
-  - Database speedups
-  - Embedded MySQL
-  - Check why restore repeatedly sends Rechdrs between
-    each data chunk -- according to James Harper 9Jan07.
-- Features
-  - Better scheduling  
-  - More intelligent re-run
-  - Incremental backup -- rsync, Stow
-
-- Make Bacula by default not backup tmpfs, procfs, sysfs, ...
-- Fix hardlinked immutable files when linking a second file, the
-  immutable flag must be removed prior to trying to link it.
-- Change dbcheck to tell users to use native tools for fixing
-  broken databases, and to ensure they have the proper indexes.
-- add udev rules for Bacula devices.
-- If a job terminates, the DIR connection can close before the
-  Volume info is updated, leaving the File count wrong.
-- Look at why SIGPIPE during connection can cause seg fault in
-  writing the daemon message, when Dir dropped to bacula:bacula
-- Look at zlib 32 => 64 problems.
-- Fix bextract to restore ACLs, or better yet, use common routines.
-- New dot commands from Arno.
-  .show device=xxx lists information from one storage device, including 
-     devices (I'm not even sure that information exists in the DIR...)
-  .move eject device=xxx mostly the same as 'unmount xxx' but perhaps with 
-     better machine-readable output like "Ok" or "Error busy"
-  .move eject device=xxx toslot=yyy the same as above, but with a new 
-     target slot. The catalog should be updated accordingly.
-  .move transfer device=xxx fromslot=yyy toslot=zzz
-
-Low priority:
-- Article: http://www.heise.de/open/news/meldung/83231
-- Article: http://www.golem.de/0701/49756.html
-- Article: http://lwn.net/Articles/209809/
-- Article: http://www.onlamp.com/pub/a/onlamp/2004/01/09/bacula.html
-- Article: http://www.linuxdevcenter.com/pub/a/linux/2005/04/07/bacula.html
-- Article: http://www.osreviews.net/reviews/admin/bacula
-- Article: http://www.debianhelp.co.uk/baculaweb.htm
-- Article: 
-- Wikis mentioning Bacula
-  http://wiki.finkproject.org/index.php/Admin:Backups
-  http://wiki.linuxquestions.org/wiki/Bacula
-  http://www.openpkg.org/product/packages/?package=bacula
-  http://www.iterating.com/products/Bacula
-  http://net-snmp.sourceforge.net/wiki/index.php/Net-snmp_extensions
-  http://www.section6.net/wiki/index.php/Using_Bacula_for_Tape_Backups
-  http://bacula.darwinports.com/
-  http://wiki.mandriva.com/en/Releases/Corporate/Server_4/Notes#Bacula
-  http://en.wikipedia.org/wiki/Bacula
-
-- Bacula Wikis
-  http://www.devco.net/pubwiki/Bacula/
-  http://paramount.ind.wpi.edu/wiki/doku.php
-  http://gentoo-wiki.com/HOWTO_Backup
-  http://www.georglutz.de/wiki/Bacula
-  http://www.clarkconnect.com/wiki/index.php?title=Modules_-_LAN_Backup/Recovery
-  http://linuxwiki.de/Bacula   (in German)
-
-- Figure out how to configure query.sql.  Suggestion to use m4:
-    == changequote.m4 ===
-    changequote(`[',`]')dnl
-    ==== query.sql.in ===
-    :List next 20 volumes to expire
-    SELECT
-        Pool.Name AS PoolName,
-        Media.VolumeName,
-        Media.VolStatus,
-        Media.MediaType,
-    ifdef([MySQL],
-    [ FROM_UNIXTIME(UNIX_TIMESTAMP(Media.LastWritten) Media.VolRetention) AS Expire, ])dnl
-    ifdef([PostgreSQL],
-    [ media.lastwritten + interval '1 second' * media.volretention as expire, ])dnl
-      Media.LastWritten
-      FROM Pool
-      LEFT JOIN Media
-      ON Media.PoolId=Pool.PoolId
-      WHERE Media.LastWritten>0
-      ORDER BY Expire
-      LIMIT 20;
-    ====
-    Command: m4 -DmySQL changequote.m4 query.sql.in >query.sql
-
-  The problem is that it requires m4, which is not present on all machines
-  at ./configure time.
-
-==== SQL
-# get null file
-select FilenameId from Filename where Name='';
-# Get list of all directories referenced in a Backup.
-select Path.Path from Path,File where File.JobId=nnn and
-  File.FilenameId=(FilenameId-from-above) and File.PathId=Path.PathId
-  order by Path.Path ASC;
-
-- Mount on an Autochanger with no tape in the drive causes:
-   Automatically selected Storage: LTO-changer
-   Enter autochanger drive[0]: 0
-   3301 Issuing autochanger "loaded drive 0" command.
-   3302 Autochanger "loaded drive 0", result: nothing loaded.
-   3301 Issuing autochanger "loaded drive 0" command.
-   3302 Autochanger "loaded drive 0", result: nothing loaded.
-   3902 Cannot mount Volume on Storage Device "LTO-Drive1" (/dev/nst0) because:
-   Couldn't rewind device "LTO-Drive1" (/dev/nst0): ERR=dev.c:678 Rewind error on "LTO-Drive1" (/dev/nst0). ERR=No medium found.
-   3905 Device "LTO-Drive1" (/dev/nst0) open but no Bacula volume is mounted.
-   If this is not a blank tape, try unmounting and remounting the Volume.
-- If Drive 0 is blocked, and drive 1 is set "Autoselect=no", drive 1 will
-  be used.
-- Autochanger did not change volumes.  
-   select * from Storage;
-   +-----------+-------------+-------------+
-   | StorageId | Name        | AutoChanger |
-   +-----------+-------------+-------------+
-   |         1 | LTO-changer |           0 |
-   +-----------+-------------+-------------+
-   05-May 03:50 roxie-sd: 3302 Autochanger "loaded drive 0", result is Slot 11.
-   05-May 03:50 roxie-sd: Tibs.2006-05-05_03.05.02 Warning: Director wanted Volume "LT
-    Current Volume "LT0-002" not acceptable because:
-    1997 Volume "LT0-002" not in catalog.
-   05-May 03:50 roxie-sd: Tibs.2006-05-05_03.05.02 Error: Autochanger Volume "LT0-002"
-    Setting InChanger to zero in catalog.
-   05-May 03:50 roxie-dir: Tibs.2006-05-05_03.05.02 Error: Unable to get Media record
-
-   05-May 03:50 roxie-sd: Tibs.2006-05-05_03.05.02 Fatal error: Error getting Volume i
-   05-May 03:50 roxie-sd: Tibs.2006-05-05_03.05.02 Fatal error: Job 530 canceled.
-   05-May 03:50 roxie-sd: Tibs.2006-05-05_03.05.02 Fatal error: spool.c:249 Fatal appe
-   05-May 03:49 Tibs: Tibs.2006-05-05_03.05.02 Fatal error: c:\cygwin\home\kern\bacula
-   , got
-     (missing)
-    llist volume=LTO-002
-              MediaId: 6
-           VolumeName: LTO-002
-                 Slot: 0
-               PoolId: 1
-            MediaType: LTO-2
-         FirstWritten: 2006-05-05 03:11:54
-          LastWritten: 2006-05-05 03:50:23
-            LabelDate: 2005-12-26 16:52:40
-              VolJobs: 1
-             VolFiles: 0
-            VolBlocks: 1
-            VolMounts: 0
-             VolBytes: 206
-            VolErrors: 0
-            VolWrites: 0
-     VolCapacityBytes: 0
-            VolStatus: 
-              Recycle: 1
-         VolRetention: 31,536,000
-       VolUseDuration: 0
-           MaxVolJobs: 0
-          MaxVolFiles: 0
-          MaxVolBytes: 0
-            InChanger: 0
-              EndFile: 0
-             EndBlock: 0
-             VolParts: 0
-            LabelType: 0
-            StorageId: 1
-
-   Note VolStatus is blank!!!!!
-   llist volume=LTO-003
-             MediaId: 7
-          VolumeName: LTO-003
-                Slot: 12
-              PoolId: 1
-           MediaType: LTO-2
-        FirstWritten: 0000-00-00 00:00:00
-         LastWritten: 0000-00-00 00:00:00
-           LabelDate: 2005-12-26 16:52:40
-             VolJobs: 0
-            VolFiles: 0
-           VolBlocks: 0
-           VolMounts: 0
-            VolBytes: 1
-           VolErrors: 0
-           VolWrites: 0
-    VolCapacityBytes: 0
-           VolStatus: Append
-             Recycle: 1
-        VolRetention: 31,536,000
-      VolUseDuration: 0
-          MaxVolJobs: 0
-         MaxVolFiles: 0
-         MaxVolBytes: 0
-           InChanger: 0
-             EndFile: 0
-            EndBlock: 0
-            VolParts: 0
-           LabelType: 0
-           StorageId: 1
-===
-   mount
-   Automatically selected Storage: LTO-changer
-   Enter autochanger drive[0]: 0
-   3301 Issuing autochanger "loaded drive 0" command.
-   3302 Autochanger "loaded drive 0", result: nothing loaded.
-   3301 Issuing autochanger "loaded drive 0" command.
-   3302 Autochanger "loaded drive 0", result: nothing loaded.
-   3902 Cannot mount Volume on Storage Device "LTO-Drive1" (/dev/nst0) because:
-   Couldn't rewind device "LTO-Drive1" (/dev/nst0): ERR=dev.c:678 Rewind error on "LTO-Drive1" (/dev/nst0). ERR=No medium found.
-
-   3905 Device "LTO-Drive1" (/dev/nst0) open but no Bacula volume is mounted.
-   If this is not a blank tape, try unmounting and remounting the Volume.
-
-- http://www.dwheeler.com/essays/commercial-floss.html
-- Add VolumeLock to prevent all but lock holder (SD) from updating
-  the Volume data (with the exception of VolumeState).
-- The btape fill command does not seem to use the Autochanger
-- Make Windows installer default to system disk drive.
-- Look at using ioctl(FIOBMAP, ...) on Linux, and 
-  DeviceIoControl(...,  FSCTL_QUERY_ALLOCATED_RANGES, ...) on
-  Win32 for sparse files.
-  http://www.flexhex.com/docs/articles/sparse-files.phtml
-  http://www.informatik.uni-frankfurt.de/~loizides/reiserfs/fibmap.html
-- Directive: at <event> "command"
-- Command: pycmd "command" generates "command" event.  How to
-  attach to a specific job?
-- run_cmd() returns int should return JobId_t
-- get_next_jobid_from_list() returns int should return JobId_t
-- Document export LDFLAGS=-L/usr/lib64
-- Network error on Win32 should set Win32 error code.
-- What happens when you rename a Disk Volume?
-- Job retention period in a Pool (and hence Volume).  The job would
-  then be migrated.
-- Add Win32 FileSet definition somewhere
-- Look at fixing restore status stats in SD.
-- Look at using ioctl(FIMAP) and FIGETBSZ for sparse files.
-  http://www.informatik.uni-frankfurt.de/~loizides/reiserfs/fibmap.html
-- Implement a mode that says when a hard read error is
-  encountered, read many times (as it currently does), and if the
-  block cannot be read, skip to the next block, and try again.  If
-  that fails, skip to the next file and try again, ...
-- Add level table:
-  create table LevelType (LevelType binary(1), LevelTypeLong tinyblob);
-  insert into LevelType (LevelType,LevelTypeLong) values
-  ("F","Full"),
-  ("D","Diff"),
-  ("I","Inc");
-- new pool XXX with ScratchPoolId = MyScratchPool's PoolId and
-  let it fill itself, and RecyclePoolId = XXX's PoolId so I can
-  see if it become stable and I just have to supervise
-  MyScratchPool
-- If I want to remove this pool, I set RecyclePoolId = MyScratchPool's
-  PoolId, and when it is empty remove it.
-- Add Volume=SCRTCH
-- Allow Check Labels to be used with Bacula labels.
-- "Resuming" a failed backup (lost line for example) by using the
-  failed backup as a sort of "base" job.
-- Look at NDMP
-- Email to the user when the tape is about to need changing x
-  days before it needs changing.
-- Command to show next tape that will be used for a job even
-  if the job is not scheduled.
-- From: Arunav Mandal <amandal at trolltech.com>
-  1. When jobs are running and bacula for some reason crashes or if I do a 
-  restart it remembers and jobs it was running before it crashed or restarted 
-  as of now I loose all jobs if I restart it.
-
-  2. When spooling and in the midway if client is disconnected for instance a 
-  laptop bacula completely discard the spool. It will be nice if it can write 
-  that spool to tape so there will be some backups for that client if not all.
-
-  3. We have around 150 clients machines it will be nice to have a option to 
-  upgrade all the client machines bacula version automatically.
-
-  4. Atleast one connection should be reserved for the bconsole so at heavy load 
-  I should connect to the director via bconsole which at sometimes I can't
-
-  5. Another most important feature that is missing, say at 10am I manually 
-  started  backup of client abc and it was a full backup since client abc has 
-  no backup history and at 10.30am bacula again automatically started backup of 
-  client abc as that was in the schedule. So now we have 2 multiple Full 
-  backups of the same client and if we again try to start a full backup of 
-  client backup abc bacula won't complain. That should be fixed.
-
-- regardless of the retention period, Bacula will not prune the
-  last Full, Diff, or Inc File data until a month after the
-  retention period for the last Full backup that was done.
-- update volume=xxx --- add status=Full
-- Remove old spool files on startup.
-- Exclude SD spool/working directory.
-- Refuse to prune last valid Full backup. Same goes for Catalog.
-- Python:
-  - Make a callback when Rerun failed levels is called.
-  - Give Python program access to Scheduled jobs.
-  - Add setting Volume State via Python.
-  - Python script to save with Python, not save, save with Bacula.
-  - Python script to do backup.
-  - What events?
-  - Change the Priority, Client, Storage, JobStatus (error) 
-    at the start of a job.
-- Why is SpoolDirectory = /home/bacula/spool;  not reported
-  as an error when writing a DVD?
-- Make bootstrap file handle multiple MediaTypes (SD)
-- Remove all old Device resource code in Dir and code to pass it
-  back in SD -- better, rework it to pass back device statistics.
-- Check locking of resources -- be sure to lock devices where previously
-  resources were locked. 
-- The last part is left in the spool dir.
-
-
-- In restore don't compare byte count on a raw device -- directory
-  entry does not contain bytes.
-
-
-- Max Vols limit in Pool off by one?
-- Implement Files/Bytes,... stats for restore job.
-- Implement Total Bytes Written, ... for restore job.
-- Despool attributes simultaneously with data in a separate
-  thread, rejoined at end of data spooling.
-- 7. Implement new Console commands to allow offlining/reserving drives,
-     and possibly manipulating the autochanger (much asked for).
-- Add start/end date editing in messages (%t %T, %e?) ...
-- Add ClientDefs similar to JobDefs.
-- Print more info when bextract -p accepts a bad block.
-- Fix FD JobType to be set before RunBeforeJob in FD.
-- Look at adding full Volume and Pool information to a Volume 
-  label so that bscan can get *all* the info. 
-- If the user puts "Purge Oldest Volume = yes" or "Recycle Oldest Volume = yes"
-  and there is only one volume in the pool, refuse to do it -- otherwise
-  he fills the Volume, then immediately starts reusing it.
-- Implement copies and stripes.
-- Add history file to console.
-- Each file on tape creates a JobMedia record. Peter has 4 million
-  files spread over 10000 tape files and four tapes. A restore takes
-  16 hours to build the restore list.
-- Add and option to check if the file size changed during backup.
-- Make sure SD deletes spool files on error exit.
-- Delete old spool files when SD starts.
-- When labeling tapes, if you enter 000026, Bacula uses
-  the tape index rather than the Volume name 000026.
-- Add offline tape command to Bacula console.
-- Bug: 
-  Enter MediaId or Volume name: 32
-  Enter new Volume name: DLT-20Dec04
-  Automatically selected Pool: Default
-  Connecting to Storage daemon DLTDrive at 192.168.68.104:9103 ...
-  Sending relabel command from "DLT-28Jun03" to "DLT-20Dec04" ...
-  block.c:552 Write error at 0:0 on device /dev/nst0. ERR=Bad file descriptor.
-  Error writing final EOF to tape. This tape may not be readable.
-  dev.c:1207 ioctl MTWEOF error on /dev/nst0. ERR=Permission denied.
-  askdir.c:219 NULL Volume name. This shouldn't happen!!!
-  3912 Failed to label Volume: ERR=dev.c:1207 ioctl MTWEOF error on /dev/nst0. ERR=Permission denied.
-  Label command failed for Volume DLT-20Dec04.
-  Do not forget to mount the drive!!!
-- Bug: if a job is manually scheduled to run later, it does not appear
-  in any status report and cannot be cancelled.
-
-
-==== 
-From David:
-How about introducing a Type = MgmtPolicy job type? That job type would
-be responsible for scanning the Bacula environment looking for specific
-conditions, and submitting the appropriate jobs for implementing said
-policy, eg: 
-
-Job {
-   Name = "Migration-Policy"
-   Type = MgmtPolicy
-   Policy Selection Job Type = Migrate
-   Scope = "<keyword> <operator> <regexp>"
-   Threshold = "<keyword> <operator> <regexp>"
-   Job Template = <template-name>
-}
-
-Where <keyword> is any legal job keyword, <operator> is a comparison
-operator (=,<,>,!=, logical operators AND/OR/NOT) and <regexp> is a
-appropriate regexp. I could see an argument for Scope and Threshold
-being SQL queries if we want to support full flexibility. The
-Migration-Policy job would then get scheduled as frequently as a site
-felt necessary (suggested default: every 15 minutes). 
-
-Example: 
-
-Job {
-   Name = "Migration-Policy"
-   Type = MgmtPolicy
-   Policy Selection Job Type = Migration
-   Scope = "Pool=*"
-   Threshold = "Migration Selection Type = LowestUtil"
-   Job Template = "MigrationTemplate"
-}
-
-would select all pools for examination and generate a job based on
-MigrationTemplate to automatically select the volume with the lowest
-usage and migrate it's contents to the nextpool defined for that pool. 
-
-This policy abstraction would be really handy for adjusting the behavior
-of Bacula according to site-selectable criteria (one thing that pops
-into mind is Amanda's ability to automatically adjust backup levels
-depending on various criteria).
-
-
-=====
-
-Regression tests:
-- Add Pool/Storage override regression test.
-- Add delete JobId to regression.
-- Add a regression test for dbcheck.  
-- New test to add bscan to four-concurrent-jobs regression,
-  i.e. after the four-concurrent jobs zap the
-  database as is done in the bscan-test, then use bscan to
-  restore the database, do a restore and compare with the
-  original.
-- Add restore of specific JobId to regression (item 3
-  on the restore prompt)
-- Add IPv6 to regression
-- Add database test to regression. Test each function like delete,
-  purge, ...
-
-- AntiVir can slow down backups on Win32 systems. 
-- Win32 systems with FAT32 can be much slower than NTFS for
-  more than 1000 files per directory.
-
-
-1.37 Possibilities:
-- A HOLD command to stop all jobs from starting.
-- A PAUSE command to pause all running jobs ==> release the
-  drive.
-- Media Type = LTO,LTO-2,LTO-3
-  Media Type Read = LTO,LTO2,LTO3
-  Media Type Write = LTO2, LTO3
-
-=== From Carsten Menke <bootsy52 at gmx.net>
-
-Following is a list of what I think in the situations where I'm faced with, 
-could be a usefull enhancement to bacula, which I'm certain other users will 
-benefit from as well.
-
-1. NextJob/NextJobs Directive within a Job Resource in the form of
-    NextJobs = job1,job2.
-
-    Why:
-    I currently solved the problem with running multiple jobs each after each
-    by setting the Max Wait Time for a job to 8 hours, and give
-    the jobs different Priorities. However, there scenarios where
-    1 Job is directly depending on another job, so if the former job fails,
-    the job after it needn't to be run
-    while maybe other jobs should run despite of that
-
-Example:
-  A Backup Job and a Verify job, if the backup job fails there is no need to run
-  the verify job, as the backup job already failed. However, one may like
-  to backup the Catalog to disk despite of that the main backup job failed.
-
-Notes:
-  I see that this is related to the Event Handlers which are on the ToDo
-  list, also it is maybe a good idea to check for the return value and
-  execute different actions based on the return value
-
-
-3. offline capability to bconsole
-
-    Why:
-    Currently I use a script which I execute within the last Job via the
-    RunAfterJob Directive, to release and eject the tape.
-    So I have to call bconsole "release=Storage-Name" and afterwards
-    mt -f /dev/nst0 eject to get the tape out.
-
-    If I have multiple Storage Devices, than these may not be /dev/nst0 and
-    I have to modify the script or call it with parameters etc.
-    This would actually not be needed, as everything is already defined
-    in bacula-sd.conf and if   I can invoke bconsole with the
-    storage name via $1 in the script than I'm done and information is
-    not duplicated.
-
-4. %s for Storage Name added to the chars being substituted in "RunAfterJob"
-
-    Why:
-
-    For the reason mentioned in 3. to have the ability to call a
-    script with /scripts/foobar %s and in the script use $1
-    to pass the Storage Name to bconsole
-
-5. Setting Volume State within a Job Resource
-
-    Why:
-    Instead of using "Maximum Volume Jobs" in the Pool Resource,
-    I would have the possibilty to define
-    in a Job Resource that after this certain job is run, the Volume State
-    should be set to "Volume State = Used", this give more flexibility (IMHO).
-
-7. OK, this is evil, probably bound to security risks and maybe not possible
-    due to the design of bacula.
-
-    Implementation of Backtics ( `command` ) for shell comand execution to
-    the "Label Format" Directive.
-
-Why:
-
-    Currently I have defined BACULA_DAY_OF_WEEK="day1|day2..." resulting in
-    Label Format = "HolyBackup-${BACULA_DAY_OF_WEEK[${WeekDay}]}". If I could
-    use backticks than I could use "Label Format = HolyBackup-`date +%A` to have
-    the localized name for the day of the week appended to the
-    format string. Then I have the tape labeled automatically with weekday
-    name in the correct language.
-==========
-- Make output from status use html table tags for nicely 
-  presenting in a browser.
-- Browse generations of files.
-- I've seen an error when my catalog's File table fills up.  I
-   then have to recreate the File table with a larger maximum row
-   size.  Relevant information is at
-   http://dev.mysql.com/doc/mysql/en/Full_table.html ; I think the
-   "Installing and Configuring MySQL" chapter should talk a bit
-   about this potential problem, and recommend a solution.
-- Want speed of writing to tape while despooling.
-- Supported autochanger:
-OS: Linux
-Man.: HP
-Media: LTO-2
-Model: SSL1016
-Slots: 16
-Cap: 200GB
-- Supported drive:
-  Wangtek 6525ES (SCSI-1 QIC drive, 525MB), under Linux 2.4.something, 
-  bacula 1.36.0/1 works with blocksize 16k INSIDE bacula-sd.conf.
-- Add regex from http://www.pcre.org to Bacula for Win32.
-- Use only shell tools no make in CDROM package.
-- Include within include does it work?
-- Implement a Pool of type Cleaning?
-- Think about making certain database errors fatal.
-- Look at correcting the time jump in the scheduler for daylight
-  savings time changes.
-- Check dates entered by user for correctness (month/day/... ranges)
-- Compress restore Volume listing by date and first file.
-- Look at patches/bacula_db.b2z postgresql that loops during restore.
-  See Gregory Wright.
-- Perhaps add read/write programs and/or plugins to FileSets.
-- How to handle backing up portables ...
-- Limit bandwidth
-
-Documentation to do: (any release a little bit at a time)
-- Doc to do unmount before removing magazine.
-- Alternative to static linking "ldd prog" save all binaries listed,
-  restore them and point LD_LIBRARY_PATH to them.
-- Document add "</dev/null >/dev/null 2>&1" to the bacula-fd command line
-- Document query file format.
-- Add more documentation for bsr files.
-- Document problems with Verify and pruning.
-- Document how to use multiple databases.
-- VXA drives have a "cleaning required"
-  indicator, but Exabyte recommends preventive cleaning after every 75
-  hours of operation.
-  From Phil:
-    In this context, it should be noted that Exabyte has a command-line
-    vxatool utility available for free download. (The current version is
-    vxatool-3.72.) It can get diagnostic info, read, write and erase tapes,
-    test the drive, unload tapes, change drive settings, flash new firmware,
-    etc.
-    Of particular interest in this context is that vxatool <device> -i will
-    report, among other details, the time since last cleaning in tape motion
-    minutes. This information can be retrieved (and settings changed, for
-    that matter) through the generic-SCSI device even when Bacula has the
-    regular tape device locked. (Needless to say, I don't recommend
-    changing tape settings while a job is running.)
-- Lookup HP cleaning recommendations.
-- Lookup HP tape replacement recommendations (see trouble shooting autochanger)
-- Document doing table repair
-
-
-===================================
-- Add macro expansions in JobDefs.
-  Run Before Job = "SomeFile %{Level} %{Client}"
-  Write Bootstrap="/some/dir/%{JobName}_%{Client}.bsr"
-- Use non-blocking network I/O but if no data is available, use
-  select().
-- Use gather write() for network I/O.
-- Autorestart on crash.
-- Add bandwidth limiting.
-- When an error in input occurs and conio beeps, you can back
-  up through the prompt.
-- Detect fixed tape block mode during positioning by looking at
-  block numbers in btape "test".  Possibly adjust in Bacula.
-- Fix list volumes to output volume retention in some other
-  units, perhaps via a directive.
-- If you use restore replace=never, the directory attributes for
-  non-existent directories will not be restored properly.
-
-- see lzma401.zip in others directory for new compression
-  algorithm/library.
-- Allow the user to select JobType for manual pruning/purging.
-- bscan does not put first of two volumes back with all info in
-  bscan-test.
-- Figure out how to make named console messages go only to that
-  console and to the non-restricted console (new console class?).
-- Make restricted console prompt for password if *ask* is set or
-  perhaps if password is undefined.
-- Implement "from ISO-date/time every x hours/days/weeks/months" in
-  schedules.
-
-==== from Marc Schoechlin
-- the help-command should be more verbose
-  (it should explain the paramters of the different 
-  commands in detail)
-  -> its time-comsuming to consult the manual anytime
-     you need a special parameter
-  -> maybe its more easy to maintain this, if the
-     descriptions of that commands are outsourced to
-     a ceratin-file
-- if the password is not configured in bconsole.conf
-  you should be asked for it.
-  -> sometimes you like to do restore on a customer-machine
-     which shouldnt know the password for bacula.
-  -> adding the password to the file favours admins
-     to forget to remove the password after usage
-  -> security-aspects
-     the protection of that file is less important
-- long-listed-output of commands should be scrollable
-  like the unix more/less-command does
-  -> if someone runs 200 and more machines, the lists could
-     be a little long and complex
-- command-output should be shown column by column
-  to reduce scrolling and to increase clarity
-  -> see last item
-- lsmark should list the selected files with full
-  paths
-- wildcards for selecting and file and directories would be nice
-- any actions should be interuptable with STRG+C
-- command-expansion would be pretty cool
-====
-- When the replace Never option is set, new directory permissions
-  are not restored. See bug 213. To fix this requires creating a
-  list of newly restored directories so that those directory 
-  permissions *can* be restored.
-- Add prune all command
-- Document fact that purge can destroy a part of a restore by purging
-  one volume while others remain valid -- perhaps mark Jobs.
-- Add multiple-media-types.txt
-- look at mxt-changer.html
-- Make ? do a help command (no return needed).
-- Implement restore directory.
-- Document streams and how to implement them.
-- Try not to re-backup a file if a new hard link is added.
-- Add feature to backup hard links only, but not the data.
-- Fix stream handling to be simpler.
-- Add Priority and Bootstrap to Run a Job.
-- Eliminate Restore "Run Restore Job" prompt by allowing new "run command
-  to be issued"
-- Remove View FileSet button from Run a Job dialog.
-- Handle prompt for restore job at end of Restore command.
-- Add display of total selected files to Restore window.
-- Add tree pane to left of window.
-- Add progress meter.
-- Max wait time or max run time causes seg fault -- see runtime-bug.txt
-- Add message to user to check for fixed block size when the forward
-  space test fails in btape.
-- When unmarking a directory check if all files below are unmarked and
-  then remove the + flag -- in the restore tree.
-- Possibly implement: Action = Unmount Device="TapeDrive1" in Admin jobs.
-- Setup lrrd graphs: (http://www.linpro.no/projects/lrrd/) Mike Acar.
-- Revisit the question of multiple Volumes (disk) on a single device.
-- Add a block copy option to bcopy.
-- Fix "llist jobid=xx" where no fileset or client exists.
-- For each job type (Admin, Restore, ...) require only the really necessary
-  fields.- Pass Director resource name as an option to the Console.
-- Add a "batch" mode to the Console (no unsolicited queries, ...).
-- Allow browsing the catalog to see all versions of a file (with 
-  stat data on each file).
-- Restore attributes of directory if replace=never set but directory
-  did not exist.
-- Use SHA1 on authentication if possible.
-- See comtest-xxx.zip for Windows code to talk to USB.
-- Add John's appended files:
-   Appended = {     /files/server/logs/http/*log   }
-   and such files would be treated as follows.On a FULL backup, they would
-   be backed up like any other file.On an INCREMENTAL backup, where a
-   previous INCREMENTAL or FULL was already in thecatalogue and the length
-   of the file wasgreater than the length of the last backup, only thedata
-   added since the last backup will be dumped.On an INCREMENTAL backup, if
-   the length of the file is less than thelength of the file with the same
-   name last backed up, the completefile is dumped.On Windows systems, with
-   creation date of files, we can be evensmarter about this and not count
-   entirely upon the length.On a restore, the full and all incrementals
-   since it will beapplied in sequence to restore the file.  
-- Check new HAVE_WIN32 open bits.    
-- Check if the tape has moved before writing.  
-- Handling removable disks -- see below:
-- Add FromClient and ToClient keywords on restore command (or
-  BackupClient RestoreClient).
-- Implement a JobSet, which groups any number of jobs. If the
-  JobSet is started, all the jobs are started together.
-  Allow Pool, Level, and Schedule overrides.
-- Look at updating Volume Jobs so that Max Volume Jobs = 1 will work
-  correctly for multiple simultaneous jobs.
-- Implement the Media record flag that indicates that the Volume does disk 
-  addressing.
-- Fix fast block rejection (stored/read_record.c:118). It passes a null
-  pointer (rec) to try_repositioning().
-- Implement RestoreJobRetention? Maybe better "JobRetention" in a Job,
-  which would take precidence over the Catalog "JobRetention".
-- Implement Label Format in Add and Label console commands.
-- Put email tape request delays on one or more variables. User wants
-  to cancel the job after a certain time interval.  Maximum Mount Wait?
-- Job, Client, Device, Pool, or Volume?
-  Is it possible to make this a directive which is *optional* in multiple
-  resources, like Level? If so, I think I'd make it an optional directive
-  in Job, Client, and Pool, with precedence such that Job overrides Client
-  which in turn overrides Pool.
-
-- New Storage specifications:
-  - Want to write to multiple storage devices simultaneously
-  - Want to write to multiple storage devices sequentially (in one job)
-  - Want to read/write simultaneously
-  - Key is MediaType -- it must match
-
-  Passed to SD as a sort of BSR record called Storage Specification
-    Record or SSR.
-    SSR                    
-      Next -> Next SSR
-      MediaType -> Next MediaType
-      Pool -> Next Pool
-      Device -> Next Device
-  Job Resource
-     Allow multiple Storage specifications
-     New flags
-        One Archive = yes
-        One Device = yes
-        One Storage = yes
-        One MediaType = yes
-        One Pool = yes
-  Storage
-     Allow Multiple Pool specifications (note, Pool currently
-       in Job resource).
-     Allow Multiple MediaType specifications in Dir conf
-     Allow Multiple Device specifications in Dir conf
-     Perhaps keep this in a single SSR
-  Tie a Volume to a specific device by using a MediaType that 
-    is contained in only one device.
-  In SD allow Device to have Multiple MediaTypes
-
-- Ideas from Jerry Scharf:
-  First let's point out some big pluses that bacula has for this
-        it's open source
-        more importantly it's active. Thank you so much for that
-        even more important, it's not flaky
-        it has an open access catalog, opening many possibilities
-        it's pushing toward heterogeneous systems capability
-  big things:
-   Macintosh file client
-   working bare iron recovery for windows
-   the option for  inc/diff backups not reset on fileset revision
-        a) use both change and inode update time against base time
-        b) do the full catalog check (expensive but accurate)
-   sizing guide (how much system is needed to back up N systems/files)
-   consultants on using bacula in building a disaster recovery system
-   an integration guide
-        or how to get at fancy things that one could do with bacula
-   logwatch code for bacula logs (or similar)
-   support for Oracle database ??
-===
-- Look at adding SQL server and Exchange support for Windows. 
-- Add progress of files/bytes to SD and FD.
-- do a "messages" before the first prompt in Console
-- Client does not show busy during Estimate command.
-- Implement Console mtx commands.
-- Implement a Mount Command and an Unmount Command where
-  the users could specify a system command to be performed
-  to do the mount, after which Bacula could attempt to
-  read the device. This is for Removeable media such as a CDROM.
-  - Most likely, this mount command would be invoked explicitly
-  by the user using the current Console "mount" and "unmount" 
-  commands -- the Storage Daemon would do the right thing 
-  depending on the exact nature of the device.
-  - As with tape drives, when Bacula wanted a new removable
-  disk mounted, it would unmount the old one, and send a message
-  to the user, who would then use "mount" as described above 
-  once he had actually inserted the disk.
-- Implement dump/print label to UA
-- Spool to disk only when the tape is full, then when a tape is hung move
-  it to tape.
-- bextract is sending everything to the log file ****FIXME****
-- Allow multiple Storage specifications (or multiple names on
-  a single Storage specification) in the Job record. Thus a job 
-  can be backed up to a number of storage devices.
-- Implement some way for the File daemon to contact the Director 
-  to start a job or pass its DHCP obtained IP number.
-- Implement a query tape prompt/replace feature for a console
-- Make sure that Bacula rechecks the tape after the 20 min wait.
-- Set IO_NOWAIT on Bacula TCP/IP packets.
-- Try doing a raw partition backup and restore by mounting a
-  Windows partition.
-- From Lars Kellers:
-    Yes, it would allow to highly automatic the request for new tapes. If a 
-    tape is empty, bacula reads the barcodes (native or simulated), and if 
-    an unused tape is found, it runs the label command with all the 
-    necessary parameters.
-
-    By the way can bacula automatically "move" an empty/purged volume say 
-    in the "short" pool to the "long" pool if this pool runs out of volume 
-    space?
-- What to do about "list files job=xxx".
-- Look at how fuser works and /proc/PID/fd that is how Nic found the
-  file descriptor leak in Bacula.
-- Can we dynamically change FileSets?
-- If pool specified to label command and Label Format is specified,
-  automatically generate the Volume name.
-- Add ExhautiveRestoreSearch
-- Look at the possibility of loading only the necessary 
-  data into the restore tree (i.e. do it one directory at a
-  time as the user walks through the tree).
-- Possibly use the hash code if the user selects all for a restore command.
-- Fix "restore all" to bypass building the tree.
-- Prohibit backing up archive device (findlib/find_one.c:128)
-- Implement Release Device in the Job resource to unmount a drive.
-- Implement Acquire Device in the Job resource to mount a drive,
-  be sure this works with admin jobs so that the user can get
-  prompted to insert the correct tape.  Possibly some way to say to
-  run the job but don't save the files.
-- Make things like list where a file is saved case independent for
-  Windows.
-- Implement a Recycle command
-- From Phil Stracchino:
-  It would probably be a per-client option, and would be called
-  something like, say, "Automatically purge obsoleted jobs".  What it
-  would do is, when you successfully complete a Differential backup of a
-  client, it would automatically purge all Incremental backups for that
-  client that are rendered redundant by that Differential.  Likewise,
-  when a Full backup on a client completed, it would automatically purge
-  all Differential and Incremental jobs obsoleted by that Full backup.
-  This would let people minimize the number of tapes they're keeping on
-  hand without having to master the art of retention times.
-- When doing a Backup send all attributes back to the Director, who
-  would then figure out what files have been deleted.
-- Currently in mount.c:236 the SD simply creates a Volume. It should have
-  explicit permission to do so.  It should also mark the tape in error
-  if there is an error.
-- Cancel waiting for Client connect in SD if FD goes away.
-
-- Implement timeout in response() when it should come quickly.
-- Implement a Slot priority (loaded/not loaded).
-- Implement "vacation" Incremental only saves.
-- Implement create "FileSet"?
-- Add prefixlinks to where or not where absolute links to FD.
-- Issue message to mount a new tape before the rewind.
-- Simplified client job initiation for portables.
-- If SD cannot open a drive, make it periodically retry.
-- Add more of the config info to the tape label.
-
-- Refine SD waiting output:
-    Device is being positioned
-    >     Device is being positioned for append
-    >     Device is being positioned to file x
-    > 
-- Figure out some way to estimate output size and to avoid splitting
-  a backup across two Volumes -- this could be useful for writing CDROMs
-  where you really prefer not to have it split -- not serious.
-- Make bcopy read through bad tape records.
-- Program files (i.e. execute a program to read/write files).
-  Pass read date of last backup, size of file last time.
-- Add Signature type to File DB record.
-- CD into subdirectory when open()ing files for backup to
-  speed up things.  Test with testfind().
-- Priority job to go to top of list.
-- Why are save/restore of device different sizes (sparse?)   Yup! Fix it.
-- Implement some way for the Console to dynamically create a job.
-- Solaris -I on tar for include list
-- Need a verbose mode in restore, perhaps to bsr.
-- bscan without -v is too quiet -- perhaps show jobs.
-- Add code to reject whole blocks if not wanted on restore.
-- Check if we can increase Bacula FD priorty in Win2000
-- Check if both CatalogFiles and UseCatalog are set to SD.
-- Possibly add email to Watchdog if drive is unmounted too
-  long and a job is waiting on the drive.
-- After unmount, if restore job started, ask to mount.
-- Add UA rc and history files.
-- put termcap (used by console) in ./configure and
-  allow -with-termcap-dir.
-- Fix Autoprune for Volumes to respect need for full save.
-- Compare tape to Client files (attributes, or attributes and data) 
-- Make all database Ids 64 bit.
-- Allow console commands to detach or run in background.
-- Add SD message variables to control operator wait time
-  - Maximum Operator Wait
-  - Minimum Message Interval
-  - Maximum Message Interval
-- Send Operator message when cannot read tape label.
-- Verify level=Volume (scan only), level=Data (compare of data to file).
-  Verify level=Catalog, level=InitCatalog
-- Events file
-- Add keyword search to show command in Console.
-- Events : tape has more than xxx bytes.
-- Complete code in Bacula Resources -- this will permit
-  reading a new config file at any time.
-- Handle ctl-c in Console
-- Implement script driven addition of File daemon to config files.
-- Think about how to make Bacula work better with File (non-tape) archives.
-- Write Unix emulator for Windows.
-- Make database type selectable by .conf files i.e. at runtime
-- Set flag for uname -a.  Add to Volume label.
-- Restore files modified after date
-- SET LD_RUN_PATH=$HOME/mysql/lib/mysql
-- Remove duplicate fields from jcr (e.g. jcr.level and jcr.jr.Level, ...).
-- Timout a job or terminate if link goes down, or reopen link and query.
-- Concept of precious tapes (cannot be reused).
-- Make bcopy copy with a single tape drive.
-- Permit changing ownership during restore.
-
-- From Phil:
-  > My suggestion:  Add a feature on the systray menu-icon menu to request
-  > an immediate backup now.  This would be useful for laptop users who may
-  > not be on the network when the regular scheduled backup is run.
-  > 
-  > My wife's suggestion: Add a setting to the win32 client to allow it to
-  > shut down the machine after backup is complete (after, of course,
-  > displaying a "System will shut down in one minute, click here to cancel"
-  > warning dialog).  This would be useful for sites that want user
-  > woorkstations to be shut down overnight to save power.
-  > 
-
-- Autolabel should be specified by DIR instead of SD.
-- Storage daemon    
-  - Add media capacity
-  - AutoScan (check checksum of tape)
-  - Format command = "format /dev/nst0"
-  - MaxRewindTime
-  - MinRewindTime
-  - MaxBufferSize
-  - Seek resolution (usually corresponds to buffer size)
-  - EODErrorCode=ENOSPC or code
-  - Partial Read error code
-  - Partial write error code
-  - Nonformatted read error
-  - Nonformatted write error
-  - WriteProtected error
-  - IOTimeout
-  - OpenRetries
-  - OpenTimeout
-  - IgnoreCloseErrors=yes
-  - Tape=yes
-  - NoRewind=yes
-- Pool
-  - Maxwrites
-  - Recycle period
-- Job
-  - MaxWarnings
-  - MaxErrors (job?)
-=====
-- Write a Storage daemon that uses pipes and
-  standard Unix programs to write to the tape.
-  See afbackup.
-- Need something that monitors the JCR queue and
-  times out jobs by asking the deamons where they are.
-- Verify from Volume
-- Need report class for messages. Perhaps
-  report resource where report=group of messages
-- enhance scan_attrib and rename scan_jobtype, and
-  fill in code for "since" option 
-- Director needs a time after which the report status is sent
-  anyway -- or better yet, a retry time for the job.
-- Don't reschedule a job if previous incarnation is still running.
-- Some way to automatically backup everything is needed????
-- Need a structure for pending actions:
-  - buffered messages
-  - termination status (part of buffered msgs?)
-- Drive management
-  Read, Write, Clean, Delete
-- Login to Bacula; Bacula users with different permissions:
-   owner, group, user, quotas
-- Store info on each file system type (probably in the job header on tape.
-  This could be the output of df; or perhaps some sort of /etc/mtab record.
-
-========= ideas ===============
-From: "Jerry K. Schieffer" <jerry at skylinetechnology.com>
-To: <kern at sibbald.com>
-Subject: RE: [Bacula-users] future large programming jobs
-Date: Thu, 26 Feb 2004 11:34:54 -0600
-
-I noticed the subject thread and thought I would offer the following
-merely as sources of ideas, i.e. something to think about, not even as
-strong as a request.  In my former life (before retiring) I often
-dealt with backups and storage management issues/products as a
-developer and as a consultant.  I am currently migrating my personal
-network from amanda to bacula specifically because of the ability to
-cross media boundaries during storing backups.
-Are you familiar with the commercial product called ADSM (I think IBM
-now sells it under the Tivoli label)?  It has a couple of interesting
-ideas that may apply to the following topics.
-
-1. Migration:  Consider that when you need to restore a system, there
-may be pressure to hurry.  If all the information for a single client
-can eventually end up on the same media (and in chronological order),
-the restore is facillitated by not having to search past information
-from other clients.  ADSM has the concept of "client affinity" that
-may be associated with it's storage pools.  It seems to me that this
-concept (as an optional feature) might fit in your architecture for
-migration.
-
-ADSM also has the concept of defining one or more storage pools as
-"copy pools" (almost mirrors, but only in the sense of contents).
-These pools provide the ability to have duplicte data stored both
-onsite and offsite.  The copy process can be scheduled to be handled
-by their storage manager during periods when there is no backup
-activity.  Again, the migration process might be a place to consider
-implementing something like this.
-
->
-> It strikes me that it would be very nice to be able to do things
-like
-> have the Job(s) backing up the machines run, and once they have all
-> completed, start a migration job to copy the data from disks Volumes
-to
-> a tape library and then to offsite storage. Maybe this can already
-be
-> done with some careful scheduling and Job prioritzation; the events
-> mechanism described below would probably make it very easy.
-
-This is the goal. In the first step (before events), you simply
-schedule
-the Migration to tape later.
-
-2. Base jobs:  In ADSM, each copy of each stored file is tracked in
-the database.  Once a file (unique by path and metadata such as dates,
-size, ownership, etc.) is in a copy pool, no more copies are made.  In
-other words, when you start ADSM, it begins like your concept of a
-base job.  After that it is in the "incremental" mode.  You can
-configure the number of "generations" of files to be retained, plus a
-retention date after which even old generations are purged.  The
-database tracks the contents of media and projects the percentage of
-each volume that is valid.  When the valid content of a volume drops
-below a configured percentage, the valid data are migrated to another
-volume and the old volume is marked as empty.  Note, this requires
-ADSM to have an idea of the contents of a client, i.e. marking the
-database when an existing file was deleted, but this would solve your
-issue of restoring a client without restoring deleted files.
-
-This is pretty far from what bacula now does, but if you are going to
-rip things up for Base jobs,.....
-Also, the benefits of this are huge for very large shops, especially
-with media robots, but are a pain for shops with manual media
-mounting.
-
-Regards,
-Jerry Schieffer
-
-==============================
-
-Longer term to do:
-- Audit M_ error codes to ensure they are correct and consistent.
-- Add variable break characters to lex analyzer.
-  Either a bit mask or a string of chars so that
-  the caller can change the break characters.
-- Make a single T_BREAK to replace T_COMMA, etc.
-- Ensure that File daemon and Storage daemon can
-  continue a save if the Director goes down (this
-  is NOT currently the case). Must detect socket error,
-  buffer messages for later. 
-- Add ability to backup to two Storage devices (two SD sessions) at
-  the same time -- e.g. onsite, offsite.
-
-======================================================
-
-====
-   Handling removable disks
-
-   From: Karl Cunningham <karlc at keckec.com>
-
-   My backups are only to hard disk these days, in removable bays. This is my
-   idea of how a backup to hard disk would work more smoothly. Some of these
-   things Bacula does already, but I mention them for completeness. If others
-   have better ways to do this, I'd like to hear about it.
-
-   1. Accommodate several disks, rotated similar to how tapes are.  Identified
-   by partition volume ID or perhaps by the name of a subdirectory.
-   2. Abort & notify the admin if the wrong disk is in the bay.
-   3. Write backups to different subdirectories for each machine to be backed
-   up.
-   4. Volumes (files) get created as needed in the proper subdirectory, one
-   for each backup.
-   5. When a disk is recycled, remove or zero all old backup files. This is
-   important as the disk being recycled may be close to full. This may be
-   better done manually since the backup files for many machines may be
-   scattered in many subdirectories.
-====
-
-
-=== Done
-
-===
-        Base Jobs design
-It is somewhat like a Full save becomes an incremental since
-the Base job (or jobs) plus other non-base files.
-Need:
-- A Base backup is same as Full backup, just different type.
-- New BaseFiles table that contains:
-    BaseId - index
-    BaseJobId - Base JobId referenced for this FileId (needed ???)
-    JobId - JobId currently running
-    FileId - File not backed up, exists in Base Job
-    FileIndex - FileIndex from Base Job.
-  i.e. for each base file that exists but is not saved because
-  it has not changed, the File daemon sends the JobId, BaseId,
-  FileId, FileIndex back to the Director who creates the DB entry.
-- To initiate a Base save, the Director sends the FD 
-  the FileId, and full filename for each file in the Base.
-- When the FD finds a Base file, he requests the Director to
-  send him the full File entry (stat packet plus MD5), or
-  conversely, the FD sends it to the Director and the Director
-  says yes or no. This can be quite rapid if the FileId is kept
-  by the FD for each Base Filename.          
-- It is probably better to have the comparison done by the FD
-  despite the fact that the File entry must be sent across the
-  network.
-- An alternative would be to send the FD the whole File entry
-  from the start. The disadvantage is that it requires a lot of
-  space. The advantage is that it requires less communications
-  during the save.
-- The Job record must be updated to indicate that one or more
-  Bases were used.
-- At end of Job, FD returns:   
-   1. Count of base files/bytes not written to tape (i.e. matches)
-   2. Count of base file that were saved i.e. had changed.
-- No tape record would be written for a Base file that matches, in the
-  same way that no tape record is written for Incremental jobs where
-  the file is not saved because it is unchanged.
-- On a restore, all the Base file records must explicitly be
-  found from the BaseFile tape. I.e. for each Full save that is marked
-  to have one or more Base Jobs, search the BaseFile for all occurrences
-  of JobId.
-- An optimization might be to make the BaseFile have:
-     JobId
-     BaseId
-     FileId
-  plus
-     FileIndex
-  This would avoid the need to explicitly fetch each File record for
-  the Base job.  The Base Job record will be fetched to get the
-  VolSessionId and VolSessionTime.
-- Fix bpipe.c so that it does not modify results pointer.
-  ***FIXME*** calling sequence should be changed.
-- Fix restore of acls and extended attributes to count ERROR
-  messages and make errors non-fatal.
-- Put save/restore various platform acl/xattrs on a pointer to simplify
-  the code.
-- Add blast attributes to DIR to SD.
-- Implement unmount of USB volumes.
-- Look into using Dart for testing
-  http://public.kitware.com/Dart/HTML/Index.shtml
diff --git a/manpages/bacula-sd.8 b/manpages/bacula-sd.8
index dde7279..6dd36dc 100644
--- a/manpages/bacula-sd.8
+++ b/manpages/bacula-sd.8
@@ -38,7 +38,7 @@ Run in foreground (for debugging).
 Set the group/gid to run as.
 .TP
 .BI \-p
-Proceed inspite of I/O errors
+Proceed in spite of I/O errors
 .TP
 .BI \-s
 No signals (for debugging).
diff --git a/manpages/bacula-tray-monitor.1 b/manpages/bacula-tray-monitor.1
index 23f431d..811a4e4 100644
--- a/manpages/bacula-tray-monitor.1
+++ b/manpages/bacula-tray-monitor.1
@@ -17,7 +17,7 @@ This manual page documents briefly the
 command, a simple monitor for the 'system tray' in KDE/GNOME
 .PP
 .SH OPTIONS
-bacula-tray-monitor [\-c config_file] [\-d debug_level] [-t]
+bacula-tray-monitor [\-c config_file] [\-d debug_level] [\-t]
 .TP
 .B \-c <config>
 Specify configuration file.
@@ -38,5 +38,5 @@ Show version and usage of program.
 .br
 .SH AUTHOR
 This manual page was written by Jose Luis Tallon
-.nh 
+.nh
 <jltallon at adv\-solutions.net>.
diff --git a/manpages/bacula.8 b/manpages/bacula.8
index cfc7177..da498c3 100644
--- a/manpages/bacula.8
+++ b/manpages/bacula.8
@@ -84,7 +84,7 @@ Administrator or user to quickly locate and restore any desired
 file.  The Catalog services sets Bacula apart from simple backup
 programs like tar and bru, because the catalog maintains a record
 of all Volumes used, all Jobs run, and all Files saved,
-permitting efficicient restoration and Volume management.  Bacula
+permitting efficient restoration and Volume management.  Bacula
 currently supports three different databases, MySQL, PostgreSQL,
 and SQLite3, one of which must be chosen when building Bacula.
 
@@ -121,5 +121,5 @@ their time and energy to this project -- thanks. See the AUTHORS
 file in the main Bacula source directory.
 
 .SH COPYRIGHT
-Bacula is distributed under a modified GPL version 2.0, as described in the
+Bacula is distributed under a modified AGPL version 3.0, as described in the
 file LICENSE included with the source distribution.
diff --git a/manpages/bat.1 b/manpages/bat.1
index e678eb2..f94d032 100644
--- a/manpages/bat.1
+++ b/manpages/bat.1
@@ -19,7 +19,7 @@ This is a GUI full featured program similar the bconsole program,
 but it is graphical oriented and more features.
 .PP
 .SH OPTIONS
-bat [\-s] [\-c config_file] [\-d debug_level] [-t]
+bat [\-s] [\-c config_file] [\-d debug_level] [\-t]
 .TP
 .B \-c <config>
 Specify configuration file.  Default is bat.conf.
diff --git a/manpages/bcopy.8 b/manpages/bcopy.8
index 6777b48..5a1a5b2 100644
--- a/manpages/bcopy.8
+++ b/manpages/bcopy.8
@@ -19,7 +19,7 @@ This manual page documents briefly the
 command.
 .PP
 .\" TeX users may be more comfortable with the \fB<whatever>\fP and
-.\" \fI<whatever>\fP escape sequences to invode bold face and italics, 
+.\" \fI<whatever>\fP escape sequences to invoke bold face and italics, 
 .\" respectively.
 .SH OPTIONS
 A summary of options is included below.
@@ -46,7 +46,7 @@ Specify input Volume names (separated by '|')
 Specify output Volume names (separated by '|')
 .TP
 .BI \-p
-Proceed inspite of I/O errors.
+Proceed in spite of I/O errors.
 .TP
 .BI \-w\  directory
 Specify working directory (default \fI/tmp\fP).
diff --git a/manpages/bextract.8 b/manpages/bextract.8
index b89a489..0a1b0c5 100644
--- a/manpages/bextract.8
+++ b/manpages/bextract.8
@@ -19,7 +19,7 @@ This manual page documents briefly the
 command.
 .PP
 .\" TeX users may be more comfortable with the \fB<whatever>\fP and
-.\" \fI<whatever>\fP escape sequences to invode bold face and italics, 
+.\" \fI<whatever>\fP escape sequences to invoke bold face and italics, 
 .\" respectively.
 .SH OPTIONS
 A summary of options is included below.
@@ -46,7 +46,7 @@ Specify exclude list.
 Specify include list.
 .TP
 .BI \-p
-Proceed inspite of I/O errors.
+Proceed in spite of I/O errors.
 .TP
 .B \-v
 Set verbose mode.
diff --git a/manpages/bls.8 b/manpages/bls.8
index 71fbac6..f155392 100644
--- a/manpages/bls.8
+++ b/manpages/bls.8
@@ -28,7 +28,7 @@ This manual page documents briefly the
 command.
 .PP
 .\" TeX users may be more comfortable with the \fB<whatever>\fP and
-.\" \fI<whatever>\fP escape sequences to invode bold face and italics, 
+.\" \fI<whatever>\fP escape sequences to invoke bold face and italics, 
 .\" respectively.
 .SH OPTIONS
 A summary of options is included below.
@@ -67,7 +67,7 @@ List saved files
 Dump label.
 .TP
 .BI \-p
-Proceed inspite of errors.
+Proceed in spite of errors.
 .TP
 .BI \-V\  volumes
 Specify volume names (separated by '|').
diff --git a/manpages/bpluginfo.8 b/manpages/bpluginfo.8
new file mode 100644
index 0000000..683d5e6
--- /dev/null
+++ b/manpages/bpluginfo.8
@@ -0,0 +1,120 @@
+.\"                                      Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH bpluginfo "8" "July 2012" "bpluginfo" "Network backup, recovery and verification"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.SH NAME
+bpluginfo \- Bacula Plugin information utility
+.SH SYNOPSIS
+.B bplufinfo
+.RI [ options ]
+.I plugin_filename.so
+.br
+.SH DESCRIPTION
+.LP
+The main purpose of
+.B bpluginfo
+is to display different information about Bacula plugin. You can use it to
+check a plugin name, author, license and short description. You can use 
+'-f' option to display API implemented by the plugin. Some plugins may require
+additional '-a' option for validating a Bacula Daemons API. In most cases it
+is not required.
+.PP
+./ Bacula is a set of programs for performing a
+./ .PP
+./ -
+./ .BR bpluginfo
+
+.PP
+.SH OPTIONS
+A summary of options is included below.
+.TP
+.B \-h
+Show usage of the program.
+.TP
+.BI \-v
+Verbose information printing all available data from the plugin, including 
+plugin header and implemented API.
+.TP
+.BI \-i
+Display short information from plugin header only. This is a default option.
+Option incompatible with 
+.B -f
+option.
+.TP
+.BI \-f
+Display information about implemented API functions. 
+.TP
+.BI \-a\ <api>
+You can supply the plugin initialization function with a particular Bacula
+API number. Without this option a default API number is '1'. Option require
+a numeric argument.
+.SH RETURN CODE
+.BR bpluginfo
+returns 0 on success, and non-zero on error.
+.TP
+You can check return code to find what was a cause of the error.
+ * 0 - success
+ * 1 - cannot load a plugin
+ * 2 - cannot find a loadPlugin function
+ * 3 - cannot find an unloadPlugin function
+ * 10 - not enough memory
+.SH EXAMPLE USAGE
+This is an example of bplufinfo usage with verbose option (-v) and default plugin.
+.LP
+.sp
+.RS
+.nf
+
+\fB$ bpluginfo -v bpipe-fd.so 
+
+Plugin type:            File Daemon plugin
+Plugin magic:           *FDPluginData*
+Plugin version:         1
+Plugin release date:    January 2008
+Plugin author:          Kern Sibbald
+Plugin license:         Bacula AGPLv3
+Plugin description:     Bacula Pipe File Daemon Plugin
+Plugin API version:     6
+
+Plugin functions:
+ newPlugin()
+ freePlugin()
+ getPluginValue()
+ setPluginValue()
+ handlePluginEvent()
+ startBackupFile()
+ endBackupFile()
+ startRestoreFile()
+ endRestoreFile()
+ pluginIO()
+ createFile()
+ setFileAttributes()
+.fi
+.RE
+
+.SH AUTHOR
+Written by Radoslaw Korzeniewski (c) Inteos Sp. z o.o.
+.SH BUGS
+Does not handle all required bacula functions callbacks which can lead to
+utility crash.
+.\".SH TODO"
+
+.PP
+
+.PP
+
+.SH "REPORTING BUGS"
+Report bugs to <support at inteos.pl>.
+.SH COPYRIGHT
+Copyright \(co 2012 Free Software Foundation Europe e.V.
+.br
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.SH "SEE ALSO"
+.BR bacula-dir,
+.BR bacula-sd,
+.BR bacula-fd,
+.BR "Bacula Plugins API"
diff --git a/manpages/bregex.8 b/manpages/bregex.8
index c3488c4..2e9e4c8 100644
--- a/manpages/bregex.8
+++ b/manpages/bregex.8
@@ -30,7 +30,7 @@ command.
 This program can be useful for testing regex expressions to be applied against a list of filenames.
 .PP
 .\" TeX users may be more comfortable with the \fB<whatever>\fP and
-.\" \fI<whatever>\fP escape sequences to invode bold face and italics, 
+.\" \fI<whatever>\fP escape sequences to invoke bold face and italics, 
 .\" respectively.
 .SH OPTIONS
 A summary of options is included below.
diff --git a/manpages/bscan.8 b/manpages/bscan.8
index 98f6282..e6ff005 100644
--- a/manpages/bscan.8
+++ b/manpages/bscan.8
@@ -32,7 +32,7 @@ without needed an up to date catalog.
 command.
 .PP
 .\" TeX users may be more comfortable with the \fB<whatever>\fP and
-.\" \fI<whatever>\fP escape sequences to invode bold face and italics, 
+.\" \fI<whatever>\fP escape sequences to invoke bold face and italics, 
 .\" respectively.
 .SH OPTIONS
 A summary of options is included below.
@@ -74,7 +74,7 @@ Specify database host (default: \fINULL\fP)
 Specify database port (default: 0)
 .TP
 .B \-p
-Proceed inspite of I/O errors.
+Proceed in spite of I/O errors.
 .TP
 .B \-r
 List records.
diff --git a/manpages/bsmtp.1 b/manpages/bsmtp.1
index fee6162..c1cc83d 100644
--- a/manpages/bsmtp.1
+++ b/manpages/bsmtp.1
@@ -2,15 +2,15 @@
 .\" First parameter, NAME, should be all caps
 .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
 .\" other parameters are allowed: see man(7), man(1)
-.TH BSMTP 1 "6 December 2009" "Kern Sibbald" "Network backup, recovery and verification"
+.TH BSMTP 1 "3 July 2012" "Kern Sibbald" "Network backup, recovery and verification"
 .\" Please adjust this date whenever revising the manpage.
 .\"
 .SH NAME
  bsmtp \- Bacula's SMTP client (mail submission program)
 
 .SH SYNOPSIS
-.B bsmtp 
-.RI [ options ] 
+.B bsmtp
+.RI [ options ]
 .I <recipient> <...>
 
 .SH DESCRIPTION
@@ -23,9 +23,18 @@ operator.
 
 .SH OPTIONS
 .TP
+.B \-4
+Forces bsmtp to use IPv4 addresses only.
+.TP
+.B \-6
+Forces bsmtp to use IPv6 addresses only.
+.TP
 .B \-8
 Encode the mail in UTF-8.
 .TP
+.B \-a
+Use any ip protocol for address resolution.
+.TP
 .B \-c
 Set the \fBCc:\fR header.
 .TP
@@ -56,14 +65,14 @@ Set the maximum number of lines to be sent. (default: unlimited)
 Show version and usage of program.
 
 .SH USAGE
-\fIrecipients\fR is a space separated list of email addresses. 
+\fIrecipients\fR is a space separated list of email addresses.
 
 The body of the email message is read from standard input. Message is
-ended by sending the EOF character (Ctrl-D on many systems) on the 
+ended by sending the EOF character (Ctrl-D on many systems) on the
 start of a new line, much like many 'mail' commands.
 
 The actual, automated behavior of \fBbsmtp\fR will depend on the
-mail-related configuration of the Director in the \fIMessages\fR ressource 
+mail-related configuration of the Director in the \fIMessages\fR resource
 of \fIbacula-dir.conf\fR.
 
 Interactive use of \fBbsmtp\fR is pertinent to manually test and ensure these
@@ -75,10 +84,10 @@ file.
 
 Messages {
   Name = Standard
-  mailcommand = "/home/bacula/bin/bsmtp -h mail.domain.com -f \"\(Bacula\) %r\" 
-                           -s \"Bacula: %t %e of %c %l\" %r"
-  operatorcommand = "/home/bacula/bin/bsmtp -h mail.domain.com -f \"\(Bacula\) %r\" 
-                                 -s \"Bacula: Intervention needed for %j\" %r"
+  mailcommand = "/home/bacula/bin/bsmtp \-h mail.domain.com \-f \\"\\(Bacula\\) \\<%r\\>\\"
+                           \-s \\"Bacula: %t %e of %c %l\\" %r"
+  operatorcommand = "/home/bacula/bin/bsmtp \-h mail.domain.com \-f \\"\\(Bacula\\) \\<%r\\>\\"
+                                 \-s \\"Bacula: Intervention needed for %j\\" %r"
   mail = sysadmin at site.domain.com = all, !skipped
   operator = sysop at site.domain.com = mount
   console = all, !skipped, !saved
@@ -92,7 +101,7 @@ qualified name of an SMTP server, which usually listen on port 25.
 If the \fB-h\fR option is not specified, \fBbsmtp\fR will use environment variable \fBSMTPSERVER\fR, or 'localhost' if not set.
 
 .SH NOTES
-Since \fBbsmtp\fR always uses a TCP connection rather than writing to a 
+Since \fBbsmtp\fR always uses a TCP connection rather than writing to a
 spool file, you may find that your \fBFrom:\fR address is being rejected
 because it does not contain a valid domain, or because your
 message has gotten caught in spam filtering rules. Generally, you
@@ -100,19 +109,19 @@ should specify a fully qualified domain name in the from field, and
 depending on whether your SMTP gateway is Exim or Sendmail, you may
 need to modify the syntax of the from part of the message.
 
-If \fBbsmtp\fR cannot connect to the specified mail host, it will retry 
+If \fBbsmtp\fR cannot connect to the specified mail host, it will retry
 to connect to \fBlocalhost\fR.
 
 .SH BUGS
 If you are getting incorrect dates (e.g. 1970) and you are
-running with a non-English locale, you might try setting the 
+running with a non-English locale, you might try setting the
 \fBLANG="en_US"\fR environment variable.
 
 .SH AUTHOR
 This manual page was written by Jose Luis Tallon
-.nh 
+.nh
 <jltallon at adv\-solutions.net>, revised and edited by Lucas B. Cohen
 .nh
 <lbc at members.fsf.org>.
 .SH SEE ALSO
-.BR "bacula-dir" "(8) "
\ No newline at end of file
+.BR "bacula-dir" "(8) "
diff --git a/manpages/btape.8 b/manpages/btape.8
index 057c823..dff8d0e 100644
--- a/manpages/btape.8
+++ b/manpages/btape.8
@@ -18,7 +18,7 @@ This manual page documents briefly the
 command.
 .PP
 .\" TeX users may be more comfortable with the \fB<whatever>\fP and
-.\" \fI<whatever>\fP escape sequences to invode bold face and italics, 
+.\" \fI<whatever>\fP escape sequences to invoke bold face and italics, 
 .\" respectively.
 .SH OPTIONS
 A summary of options is included below.
diff --git a/manpages/bwild.8 b/manpages/bwild.8
index 51fe09f..c4dfbc7 100644
--- a/manpages/bwild.8
+++ b/manpages/bwild.8
@@ -30,7 +30,7 @@ command.
 This is a simple program that will allow you to test wild-card expressions against a file of data.
 .PP
 .\" TeX users may be more comfortable with the \fB<whatever>\fP and
-.\" \fI<whatever>\fP escape sequences to invode bold face and italics, 
+.\" \fI<whatever>\fP escape sequences to invoke bold face and italics,
 .\" respectively.
 .SH OPTIONS
 A summary of options is included below.
@@ -47,9 +47,9 @@ Print timestamp in debug output
 .BI \-f\ <data\-file>
 The data-file is a filename that contains lines of data to be matched (or not) against one or more patterns. When the program is run, it will prompt you for a wild-card pattern, then apply it one line at a time against the data in the file. Each line that matches will be printed preceded by its line number. You will then be prompted again for another pattern.
 .br
-Enter an empty line for a pattern to terminate the program. You can print only lines that do not match by using the -n option, and you can suppress printing of line numbers with the -l option. 
+Enter an empty line for a pattern to terminate the program. You can print only lines that do not match by using the \-n option, and you can suppress printing of line numbers with the \-l option.
 .TP
-.BI \-n 
+.BI \-n
 Print lines that do not match
 .TP
 .BI \-l
@@ -62,5 +62,5 @@ use case insensitive match.
 .br
 .SH AUTHOR
 This manual page was written by Bruno Friedmann
-.nh 
+.nh
 <bruno at ioda\-net.ch>.
diff --git a/manpages/dbcheck.8 b/manpages/dbcheck.8
index 9e3a6f1..a92ab86 100644
--- a/manpages/dbcheck.8
+++ b/manpages/dbcheck.8
@@ -8,7 +8,7 @@
 .SH NAME
  dbcheck \- Bacula's Catalog Database Check/Clean program
 .SH SYNOPSIS
-.B bcopy 
+.B dbcheck
 .RI [ options ]
 .I working-directory
 .I bacula-database
@@ -19,46 +19,57 @@
 .br
 .SH DESCRIPTION
 This manual page documents briefly the
-.B dbcheck 
+.B dbcheck
 command.
 .PP
 dbcheck will not repair your database if it is broken. Please see your
 vendor's instructions for fixing broken database.
 
 dbcheck is a simple program that will search for logical
-inconsistencies in the Bacula tables in your database, and optionally fix them. 
+inconsistencies in the Bacula tables in your database, and optionally fix them.
 It is a database maintenance routine, in the sense that it can
 detect and remove unused rows, but it is not a database repair
 routine. To repair a database, see the tools furnished by the
 database vendor.  Normally dbcheck should never need to be run,
 but if Bacula has crashed or you have a lot of Clients, Pools, or
-Jobs that you have removed, it could be useful.  
-                             
-It is called: 
-
-Usage: dbcheck [-c config] [-C catalog name] [-d debug_level]     []
-       -b              batch mode
-       -C              catalog name in the director conf file
-       -c              director conf filename
-       -B              print catalog configuration and exit
-       -dnn            set debug level to nn
-       -dt             print timestamp in debug output
-       -f              fix inconsistencies
-       -v              verbose
-       -?              print this message
-
-If the -c option is given with the Director's conf file, there is no
-need to enter any of the command line arguments, in particular the working
-directory as dbcheck will read them from the file. 
-
-If the -f option is specified, dbcheck will repair (fix) the
-inconsistencies it finds. Otherwise, it will report only. 
-
-If the -b option is specified, dbcheck will run in batch mode, and it will
-proceed to examine and fix (if -f is set) all programmed inconsistency
-checks.  If the -b option is not specified, dbcheck will enter interactive
-mode and prompt with the following:
-
+Jobs that you have removed, it could be useful.
+.SH OPTIONS
+A summary of options is included below.
+.TP
+.B \-?
+Show version and usage of program.
+.TP
+.BI \-b
+If specified, dbcheck will run in batch mode, and it will proceed to examine
+and fix (if \-f is set) all programmed inconsistency checks. By default,
+dbcheck will enter interactive mode (see below).
+.TP
+.BI \-C\  catalog
+catalog name in the director conf file.
+.TP
+.BI \-c\  config
+If the \-c option is given with the Director's conf file, there is no need to
+enter any of the command line arguments, in particular the working directory
+as dbcheck will read them from the file.
+.TP
+.BI \-B
+print catalog configuration and exit.
+.TP
+.BI -d\  nn
+set debug level to \fInn\fP.
+.TP
+.BI \-dt
+print timestamp in debug output.
+.TP
+.BI \-f
+If specified, dbcheck will repair (fix) the inconsistencies it finds.
+Otherwise, it will report only.
+.TP
+.BI \-v
+Set verbose mode.
+.SH INTERACTIVE MODE
+In interactive mode dbcheck will prompt with the following:
+.PP
 Hello, this is the database check/correct program.
 Please select the function you want to perform.
      1) Toggle modify database flag
@@ -80,13 +91,13 @@ Please select the function you want to perform.
     17) Quit
 Select function number:
 
-By entering 1 or 2, you can toggle the modify database flag (-f option) and
-the verbose flag (-v).  It can be helpful and reassuring to turn off the
+By entering 1 or 2, you can toggle the modify database flag (\-f option) and
+the verbose flag (\-v).  It can be helpful and reassuring to turn off the
 modify database flag, then select one or more of the consistency checks
 (items 3 through 9) to see what will be done, then toggle the modify flag
 on and re-run the check.
 
-The inconsistencies examined are the following: 
+The inconsistencies examined are the following:
 
 .BR
 Duplicate filename records.  This can happen if you accidentally run two
@@ -168,12 +179,12 @@ Orphaned Job records.  If no client is defined for a job or you do not run
    useless).
 
 .BR
-All Admin records. This command will remove all Admin records, 
-   regardless of their age.  
+All Admin records. This command will remove all Admin records,
+   regardless of their age.
 
 .BR
-All Restore records. This command will remove all Restore records, 
-   regardless of their age. 
+All Restore records. This command will remove all Restore records,
+   regardless of their age.
 
 By the way, I personally run dbcheck only where I have messed up
 my database due to a bug in developing Bacula code, so normally
@@ -187,5 +198,5 @@ waste their time running dbcheck too often.
 .br
 .SH AUTHOR
 This manual page was written by Jose Luis Tallon
-.nh 
+.nh
 <jltallon at adv\-solutions.net>.
diff --git a/platforms/Makefile.in b/platforms/Makefile.in
index bba619b..fedcde3 100644
--- a/platforms/Makefile.in
+++ b/platforms/Makefile.in
@@ -11,7 +11,7 @@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL = @INSTALL@
 
-SUBDIRS = freebsd redhat solaris unknown openbsd osx irix gentoo \
+SUBDIRS = hurd freebsd redhat solaris unknown openbsd osx irix gentoo \
 	  debian darwin aix bsdi mandrake slackware alpha ubuntu systemd
 
 MAKE = make
diff --git a/platforms/hurd/Makefile.in b/platforms/hurd/Makefile.in
new file mode 100644
index 0000000..c8f392e
--- /dev/null
+++ b/platforms/hurd/Makefile.in
@@ -0,0 +1,88 @@
+#
+# This file is used as the template to create the
+# Makefile for the Debian GNU Hurd specific installation.
+#
+#  21 March 2008 -- Kern Sibbald
+#
+#  for Bacula release @VERSION@ (@DATE@) -- @DISTNAME@
+#
+
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@ -m 754
+
+nothing:
+
+install: install-autostart
+
+install-autostart: install-autostart-fd install-autostart-sd install-autostart-dir
+
+install_logrotate:
+	@$(INSTALL_PROGRAM) ../../scripts/logrotate $(DESTDIR)/etc/logrotate.d/bacula
+
+install-autostart-fd: uninstall-autostart-fd
+	@echo "Installing bacula-fd boot script ..."
+	@$(INSTALL_PROGRAM) bacula-fd $(DESTDIR)/etc/init.d/bacula-fd
+	@echo "Installing bacula-fd symlinks ..."
+	@if test x$(DESTDIR) = x ; then \
+	   /usr/sbin/update-rc.d bacula-fd start 91 2 3 4 5 . stop 9 0 1 6 .; \
+	fi
+
+
+install-autostart-sd: uninstall-autostart-sd
+	@echo "Installing bacula-sd boot script ..."
+	@$(INSTALL_PROGRAM) bacula-sd $(DESTDIR)/etc/init.d/bacula-sd
+	@echo "Installing bacula-sd symlinks ..."
+	@if test "x$(DESTDIR)" = "x" ; then \
+	   /usr/sbin/update-rc.d bacula-sd start 91 2 3 4 5 . stop 9 0 1 6 .; \
+	fi
+
+
+install-autostart-dir: uninstall-autostart-dir
+	@echo "Installing bacula-dir boot script ..."
+	@$(INSTALL_PROGRAM) bacula-dir $(DESTDIR)/etc/init.d/bacula-dir
+	@echo "Installing bacula-dir symlinks ..."
+	@if test "x$(DESTDIR)" = "x" ; then \
+	   /usr/sbin/update-rc.d bacula-dir start 90 2 3 4 5 . stop 9 0 1 6 .; \
+	fi
+
+
+uninstall: uninstall-autostart
+
+uninstall-autostart: uninstall-autostart-fd uninstall-autostart-sd uninstall-autostart-dir
+
+uninstall-logrotate:
+	@rm -f $(DESTDIR)/etc/logrotate.d/bacula
+
+uninstall-autostart-fd:
+	@if test "x$(DESTDIR)" = "x" -a  -f /etc/init.d/bacula-fd; then \
+	   /etc/init.d/bacula-fd stop; \
+	   rm -f  $(DESTDIR)/etc/init.d/bacula-fd; \
+	   /usr/sbin/update-rc.d bacula-fd remove; \
+	fi
+
+
+uninstall-autostart-sd:
+	@if test "x$(DESTDIR)" = "x" -a  -f /etc/init.d/bacula-sd; then \
+	   /etc/init.d/bacula-sd stop; \
+	   rm -f  $(DESTDIR)/etc/init.d/bacula-sd; \
+	   /usr/sbin/update-rc.d bacula-sd remove; \
+	fi
+
+uninstall-autostart-dir:
+	@if test "x$(DESTDIR)" = "x" -a  -f /etc/init.d/bacula-dir; then \
+	   /etc/init.d/bacula-dir stop; \
+	   rm -f  $(DESTDIR)/etc/init.d/bacula-dir; \
+	   /usr/sbin/update-rc.d bacula-dir remove; \
+	fi
+	@rm -f	$(DESTDIR)/etc/init.d/bacula-dir
+
+clean:
+	@rm -f 1 2 3
+
+distclean: clean
+	@rm -f Makefile
+	@rm -f bacula-sd bacula-fd bacula-dir
+
+devclean: clean
+	@rm -f Makefile
+	@rm -f bacula-sd bacula-fd bacula-dir
diff --git a/platforms/hurd/bacula-dir.in b/platforms/hurd/bacula-dir.in
new file mode 100644
index 0000000..88c13a3
--- /dev/null
+++ b/platforms/hurd/bacula-dir.in
@@ -0,0 +1,73 @@
+#! /bin/sh
+#
+# bacula  This shell script takes care of starting and stopping
+#	  the bacula Director daemon on Debian GNU Hurd systems.
+#
+#   Kern E. Sibbald - 21 March 2008
+#
+#  For Bacula release @VERSION@ (@DATE@) -- @DISTNAME@
+#
+### BEGIN INIT INFO
+# Provides:	     bacula-dir
+# Required-Start:    $network
+# Required-Stop:     $network
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: Start @BACULA@ Director daemon at boot time
+# Description:	     Enable @BACULA@ Director.
+### END INIT INFO
+#
+
+NAME="bacula-dir"
+DESC="@BACULA@ Director"
+DAEMON=@sbindir@/${NAME}
+BUSER=@dir_user@
+BGROUP=@dir_group@
+BOPTIONS="-c @sysconfdir@/${NAME}.conf"
+BPORT=@dir_port@
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+test -f $DAEMON || exit 0
+
+if [ -n "`getent services ${NAME}`" ]; then
+   BPORT=`getent services ${NAME} | awk '{ gsub("/tcp","",$2); print $2; }'`
+fi
+
+if [ -f /etc/default/$NAME ]; then
+   . /etc/default/$NAME
+fi
+
+PIDFILE=@piddir@/${NAME}.${BPORT}.pid
+
+if [ "x${BUSER}" != "x" ]; then
+   USERGRP="--chuid ${BUSER}"
+   if [ "x${BGROUP}" != "x" ]; then
+      USERGRP="${USERGRP}:${BGROUP}"
+   fi
+fi
+
+case "$1" in
+   start)
+      echo -n "Starting ${DESC}: "
+      start-stop-daemon --start --quiet --pidfile ${PIDFILE} ${USERGRP} --exec ${DAEMON} -- ${BOPTIONS}
+      RETVAL=$?
+      echo "${NAME}"
+      ;;
+   stop)
+      echo -n "Stopping ${DESC}: "
+      start-stop-daemon --oknodo --stop --quiet ${USERGRP} --exec ${DAEMON} -- ${BOPTIONS}
+      RETVAL=$?
+      echo "${NAME}"
+      ;;
+   restart|force-reload)
+      $0 stop
+      sleep 5
+      $0 start
+      ;;
+   *)
+      echo "Usage: /etc/init.d/${NAME} {start|stop|restart|force-reload}" >&2
+      exit 1
+      ;;
+esac
+exit $RETVAL
diff --git a/platforms/hurd/bacula-fd.in b/platforms/hurd/bacula-fd.in
new file mode 100644
index 0000000..270950a
--- /dev/null
+++ b/platforms/hurd/bacula-fd.in
@@ -0,0 +1,73 @@
+#! /bin/sh
+#
+# bacula  This shell script takes care of starting and stopping
+#	  the bacula Director daemon on Debian GNU Hurd systems.
+#
+#   Kern E. Sibbald - 21 March 2008
+#
+#  For Bacula release @VERSION@ (@DATE@) -- @DISTNAME@
+#
+### BEGIN INIT INFO
+# Provides:	     bacula-fd
+# Required-Start:    $network
+# Required-Stop:     $network
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: Start @BACULA@ Client daemon at boot time
+# Description:	     Enable @BACULA@ Client.
+### END INIT INFO
+
+
+NAME="bacula-fd"
+DESC="@BACULA@ File Daemon"
+DAEMON=@sbindir@/${NAME}
+BUSER=@fd_user@
+BGROUP=@fd_group@
+BOPTIONS="-c @sysconfdir@/${NAME}.conf"
+BPORT=@fd_port@
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+test -f $DAEMON || exit 0
+
+if [ -n "`getent services ${NAME}`" ]; then
+   BPORT=`getent services ${NAME} | awk '{ gsub("/tcp","",$2); print $2; }'`
+fi
+
+if [ -f /etc/default/$NAME ]; then
+   . /etc/default/$NAME
+fi
+
+PIDFILE=@piddir@/${NAME}.${BPORT}.pid
+
+if [ "x${BUSER}" != "x" ]; then
+   USERGRP="--chuid ${BUSER}"
+   if [ "x${BGROUP}" != "x" ]; then
+      USERGRP="${USERGRP}:${BGROUP}"
+   fi
+fi
+
+case "$1" in
+   start)
+      echo -n "Starting ${DESC}: "
+      start-stop-daemon --start --quiet --pidfile ${PIDFILE} ${USERGRP} --exec ${DAEMON} -- ${BOPTIONS}
+      RETVAL=$?
+      echo "${NAME}"
+      ;;
+   stop)
+      echo -n "Stopping ${DESC}: "
+      start-stop-daemon --oknodo --stop --quiet ${USERGRP} --exec ${DAEMON} -- ${BOPTIONS}
+      RETVAL=$?
+      echo "${NAME}"
+      ;;
+   restart|force-reload)
+      $0 stop
+      sleep 5
+      $0 start
+      ;;
+   *)
+      echo "Usage: /etc/init.d/${NAME} {start|stop|restart|force-reload}" >&2
+      exit 1
+      ;;
+esac
+exit $RETVAL
diff --git a/platforms/hurd/bacula-sd.in b/platforms/hurd/bacula-sd.in
new file mode 100644
index 0000000..ff1ad29
--- /dev/null
+++ b/platforms/hurd/bacula-sd.in
@@ -0,0 +1,73 @@
+#! /bin/sh
+#
+# bacula  This shell script takes care of starting and stopping
+#	  the bacula Director daemon on Debian GNU Hurd systems.
+#
+#   Kern E. Sibbald - 21 March 2008
+#
+#  For Bacula release @VERSION@ (@DATE@) -- @DISTNAME@
+#
+### BEGIN INIT INFO
+# Provides:	     bacula-sd
+# Required-Start:    $network
+# Required-Stop:     $network
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: Start @BACULA@ Storage daemon at boot time
+# Description:	     Enable @BACULA@ Storage daemon.
+### END INIT INFO
+
+
+NAME="bacula-sd"
+DESC="@BACULA@ Storage Daemon"
+DAEMON=@sbindir@/${NAME}
+BUSER=@sd_user@
+BGROUP=@sd_group@
+BOPTIONS="-c @sysconfdir@/${NAME}.conf"
+BPORT=@sd_port@
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+test -f $DAEMON || exit 0
+
+if [ -n "`getent services ${NAME}`" ]; then
+   BPORT=`getent services ${NAME} | awk '{ gsub("/tcp","",$2); print $2; }'`
+fi
+
+if [ -f /etc/default/$NAME ]; then
+   . /etc/default/$NAME
+fi
+
+PIDFILE=@piddir@/${NAME}.${BPORT}.pid
+
+if [ "x${BUSER}" != "x" ]; then
+   USERGRP="--chuid ${BUSER}"
+   if [ "x${BGROUP}" != "x" ]; then
+      USERGRP="${USERGRP}:${BGROUP}"
+   fi
+fi
+
+case "$1" in
+   start)
+      echo -n "Starting ${DESC}: "
+      start-stop-daemon --start --quiet --pidfile ${PIDFILE} ${USERGRP} --exec ${DAEMON} -- ${BOPTIONS}
+      RETVAL=$?
+      echo "${NAME}"
+      ;;
+   stop)
+      echo -n "Stopping ${DESC}: "
+      start-stop-daemon --oknodo --stop --quiet ${USERGRP}  --exec ${DAEMON} -- ${BOPTIONS}
+      RETVAL=$?
+      echo "${NAME}"
+      ;;
+   restart|force-reload)
+      $0 stop
+      sleep 5
+      $0 start
+      ;;
+   *)
+      echo "Usage: /etc/init.d/${NAME} {start|stop|restart|force-reload}" >&2
+      exit 1
+      ;;
+esac
+exit $RETVAL
diff --git a/platforms/suse/bacula-dir.in b/platforms/suse/bacula-dir.in
index 550b9ce..fc995cb 100755
--- a/platforms/suse/bacula-dir.in
+++ b/platforms/suse/bacula-dir.in
@@ -7,15 +7,17 @@
 # description: The Leading Open Source Backup Solution.
 #
 #  For Bacula release @VERSION@ (@DATE@) -- @DISTNAME@
+# Copyright (C) 2011 Free Software Foundation Europe e.V.
 # Modified to work on SuSE 1/31/2004 D. Scott Barninger <barninger at fairfieldcomputers.com>
 # Added rc.status functions 3/13/2004 D. Scott Barninger <barninger at fairfieldcomputers.com>
 # Added LSB init info 10/14/2004 D. Scott Barninger <barninger at fairfieldcomputers.com>
+# Added $remote_fs, add bacula specific daemon user & group Bruno Friedmann <bruno at ioda-net.ch>
 #
 ### BEGIN INIT INFO
 # Provides:			bacula-dir
-# Required-Start:		$local_fs $network @DEFAULT_DB_TYPE@
-# Required-Stop:		$local_fs $network @DEFAULT_DB_TYPE@
-# Default-Start:		3 5
+# Required-Start:	$local_fs $remote_fs $network
+# Required-Stop:	$local_fs $remote_fs $network
+# Default-Start:	3 5
 # Default-Stop: 	0 1 2 6
 # Short-Description:	bacula director
 # Description:			Bacula network backup system director daemon
@@ -29,7 +31,7 @@ RETVAL=0
 case "$1" in
     start)
        echo -n "Starting the Bacula Director: "
-       /sbin/startproc @sbindir@/bacula-dir $2 -c @sysconfdir@/bacula-dir.conf
+       /sbin/startproc @sbindir@/bacula-dir $2 -u @dir_user@ -g @dir_group@ -c @sysconfdir@/bacula-dir.conf
        RETVAL=$?
        rc_status -v
        echo
diff --git a/platforms/suse/bacula-fd.in b/platforms/suse/bacula-fd.in
index c14dd2e..e8618dd 100755
--- a/platforms/suse/bacula-fd.in
+++ b/platforms/suse/bacula-fd.in
@@ -7,15 +7,17 @@
 # description: The Leading Open Source Backup Solution.
 #
 #  For Bacula release @VERSION@ (@DATE@) -- @DISTNAME@
+# Copyright (C) 2011 Free Software Foundation Europe e.V.
 # Modified to work on SuSE 1/31/2004 D. Scott Barninger <barninger at fairfieldcomputers.com>
 # Added rc.status functions 3/13/2004 D. Scott Barninger <barninger at fairfieldcomputers.com>
 # Added LSB init info 10/14/2004 D. Scott Barninger <barninger at fairfieldcomputers.com>
+# Added $remote_fs, add bacula specific daemon user & group Bruno Friedmann <bruno at ioda-net.ch>
 #
 ### BEGIN INIT INFO
 # Provides:			bacula-fd
-# Required-Start:		$local_fs $network
-# Required-Stop:		$local_fs $network
-# Default-Start:		3 5
+# Required-Start:	$local_fs $remote_fs $network
+# Required-Stop:	$local_fs $remote_fs $network
+# Default-Start:	3 5
 # Default-Stop: 	0 1 2 6
 # Short-Description:	bacula file daemon
 # Description:			Bacula network backup system file daemon
@@ -28,7 +30,7 @@
 case "$1" in
     start)
        echo -n "Starting the Bacula File daemon: "
-       /sbin/startproc @sbindir@/bacula-fd $2 -c @sysconfdir@/bacula-fd.conf
+       /sbin/startproc @sbindir@/bacula-fd $2 -u @fd_user@  -g @fd_group@  -c @sysconfdir@/bacula-fd.conf
        RETVAL=$?
        rc_status -v
        echo
diff --git a/platforms/suse/bacula-sd.in b/platforms/suse/bacula-sd.in
index d2b3afd..7a61784 100755
--- a/platforms/suse/bacula-sd.in
+++ b/platforms/suse/bacula-sd.in
@@ -7,14 +7,16 @@
 # description: The Leading Open Source Backup Solution.
 #
 #  For Bacula release @VERSION@ (@DATE@) -- @DISTNAME@
+# Copyright (C) 2011 Free Software Foundation Europe e.V.
 # Modified to work on SuSE 1/31/2004 D. Scott Barninger <barninger at fairfieldcomputers.com>
 # Added rc.status functions 3/13/2004 D. Scott Barninger <barninger at fairfieldcomputers.com>
 # Added LSB init info 10/14/2004 D. Scott Barninger <barninger at fairfieldcomputers.com>
+# Added $remote_fs, add bacula specific daemon user & group Bruno Friedmann <bruno at ioda-net.ch>
 #
 ### BEGIN INIT INFO
 # Provides:			bacula-sd
-# Required-Start:		$local_fs $network
-# Required-Stop:		$local_fs $network
+# Required-Start:		$local_fs $remote_fs $network
+# Required-Stop:		$local_fs $remote_fs $network
 # Default-Start:		3 5
 # Default-Stop: 	0 1 2 6
 # Short-Description:	bacula storage daemon
@@ -28,7 +30,7 @@
 case "$1" in
     start)
        echo -n "Starting the Bacula Storage daemon: "
-       /sbin/startproc @sbindir@/bacula-sd $2 -c @sysconfdir@/bacula-sd.conf
+       /sbin/startproc @sbindir@/bacula-sd $2 -u @sd_user@ -g @sd_group@ -c @sysconfdir@/bacula-sd.conf
        RETVAL=$?
        rc_status -v
        echo
diff --git a/platforms/systemd/Makefile.in b/platforms/systemd/Makefile.in
index d07d61c..c3da39c 100644
--- a/platforms/systemd/Makefile.in
+++ b/platforms/systemd/Makefile.in
@@ -11,13 +11,17 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 # should be /lib/systemd/system and get be get with
 # systemctl show | grep UnitPath | cut -d " " -f2
 SYSTEMD_UNITDIR = @SYSTEMD_UNITDIR@
+SYSTEMD_TMPFILES = /etc/tmpfiles.d
 
 nothing:
 
-install: install-dir install-autostart
+install: install-dir install-conf install-autostart
 
 install-dir: $(DESTDIR)/$(SYSTEMD_UNITDIR)
-	mkdir -p $(DESTDIR)/$(SYSTEMD_UNITDIR)
+	mkdir -p $(DESTDIR)/$(SYSTEMD_UNITDIR) $(DESTDIR)/$(SYSTEMD_TMPFILES)
+
+install-conf:
+	@$(INSTALL_PROGRAM) -m 644 bacula.conf $(DESTDIR)/$(SYSTEMD_TMPFILES)/bacula.conf
 
 install-autostart: install-autostart-fd install-autostart-sd install-autostart-dir
 
@@ -61,7 +65,7 @@ install-autostart-dir:
 	fi
 
 
-uninstall: uninstall-autostart
+uninstall: uninstall-autostart uninstall-conf
 
 uninstall-autostart: uninstall-autostart-fd uninstall-autostart-sd uninstall-autostart-dir
 
@@ -87,14 +91,17 @@ uninstall-autostart-dir:
 	fi
 	@rm -f	$(DESTDIR)$(SYSTEMD_UNITDIR)/bacula-dir.service
 
+uninstall-conf:
+	@rm -f	$(DESTDIR)/$(SYSTEMD_TMPFILES)/bacula.conf
+
 clean:
 	@rm -f 1 2 3
 
 distclean: clean
 	@rm -f Makefile bacula-*.spec bacula.*.spec bacula.spec
-	@rm -f bacula-sd.service bacula-fd.service bacula-dir.service
+	@rm -f bacula.conf bacula-sd.service bacula-fd.service bacula-dir.service
 
 devclean: clean
 	@rm -f Makefile bacula-*.spec bacula.*.spec bacula.spec
-	@rm -f bacula-sd.service bacula-fd.service bacula-dir.service
+	@rm -f bacula.conf bacula-sd.service bacula-fd.service bacula-dir.service
 
diff --git a/platforms/systemd/bacula-dir.service.in b/platforms/systemd/bacula-dir.service.in
index 265e92b..9a82532 100644
--- a/platforms/systemd/bacula-dir.service.in
+++ b/platforms/systemd/bacula-dir.service.in
@@ -26,10 +26,12 @@ ConditionPathIsDirectory=@working_dir@
 
 [Service]
 Type=forking
+User=@dir_user@
+Group=@dir_group@
 PIDFile=@piddir@/bacula-dir. at dir_port@.pid
 # EnvironmentFile=-/etc/sysconfig/bacula-dir
 StandardOutput=syslog
-ExecStart=@sbindir@/bacula-dir -u @dir_user@ -g @dir_group@ -c @sysconfdir@/bacula-dir.conf
+ExecStart=@sbindir@/bacula-dir -c @sysconfdir@/bacula-dir.conf
 # This daemon should be able to reload the conf file
 #ExecReload=/sbin/killproc -p @piddir@/bacula-dir.pid -HUP @sbindir@/bacula-dir
 
diff --git a/platforms/systemd/bacula-fd.service.in b/platforms/systemd/bacula-fd.service.in
index 8463bbd..3efb256 100644
--- a/platforms/systemd/bacula-fd.service.in
+++ b/platforms/systemd/bacula-fd.service.in
@@ -21,9 +21,11 @@ After=var-run.mount nss-lookup.target network.target remote-fs.target syslog.tar
 
 [Service]
 Type=forking
+User=@fd_user@
+Group=@fd_group@
 PIDFile=@piddir@/bacula-fd. at fd_port@.pid
 StandardOutput=syslog
-ExecStart=@sbindir@/bacula-fd -u @fd_user@ -g @fd_group@ -c @sysconfdir@/bacula-fd.conf
+ExecStart=@sbindir@/bacula-fd -c @sysconfdir@/bacula-fd.conf
 
 [Install]
 WantedBy=multi-user.target
diff --git a/platforms/systemd/bacula-sd.service.in b/platforms/systemd/bacula-sd.service.in
index ba78f7f..2d4dc1a 100644
--- a/platforms/systemd/bacula-sd.service.in
+++ b/platforms/systemd/bacula-sd.service.in
@@ -21,10 +21,12 @@ After=var-run.mount nss-lookup.target network.target remote-fs.target syslog.tar
 
 [Service]
 Type=forking
+User=@sd_user@
+Group=@sd_group@
 PIDFile=@piddir@/bacula-sd. at sd_port@.pid
 # EnvironmentFile=-/etc/sysconfig/bacula-sd
 StandardOutput=syslog
-ExecStart=@sbindir@/bacula-sd -u @sd_user@ -g @sd_group@ -c @sysconfdir@/bacula-sd.conf
+ExecStart=@sbindir@/bacula-sd -c @sysconfdir@/bacula-sd.conf
 
 [Install]
 WantedBy=multi-user.target
diff --git a/platforms/systemd/bacula.conf.in b/platforms/systemd/bacula.conf.in
new file mode 100644
index 0000000..8a8b4a6
--- /dev/null
+++ b/platforms/systemd/bacula.conf.in
@@ -0,0 +1,2 @@
+# See tmpfiles.d(5) for details
+d @piddir@ 2775 bacula bacula -
diff --git a/po/LINGUAS b/po/LINGUAS
index d87125f..8d3a0ac 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
@@ -1,5 +1,6 @@
 de
 es
 fr
+nl
 sv
 uk
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 9a81dba..95f07f6 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -97,6 +97,7 @@
 ./src/lib/attr.c
 ./src/lib/smartall.c
 ./src/lib/rblist.c
+./src/lib/sellist.c
 ./src/lib/rwlock.c
 ./src/lib/bget_msg.c
 ./src/lib/bsock.c
@@ -133,6 +134,7 @@
 ./src/lib/signal.c
 ./src/lib/fnmatch.c
 ./src/lib/guid_to_name.c
+./src/lib/ini.c
 ./src/lib/btimers.c
 ./src/lib/scan.c
 ./src/lib/bsys.c
@@ -141,6 +143,7 @@
 ./src/lib/var.c
 ./src/lib/address_conf.c
 ./src/lib/breg.c
+./src/lib/binflate.c
 ./src/lib/edit.c
 ./src/win32/compat/winapi.c
 ./src/win32/compat/getopt.c
@@ -168,10 +171,9 @@
 ./src/findlib/find_one.c
 ./src/plugins/sd/main.c
 ./src/plugins/sd/example-plugin-sd.c
-./src/plugins/sd/plugin-sd.c
 ./src/plugins/fd/test-plugin-fd.c
 ./src/plugins/fd/example-plugin-fd.c
-./src/plugins/fd/delta-test-fd.c
+./src/plugins/fd/test-deltaseq-fd.c
 ./src/plugins/fd/bpipe-fd.c
 ./src/plugins/dir/example-plugin-dir.c
 ./src/cats/sql_create.c
@@ -207,6 +209,7 @@
 ./src/tools/fstype.c
 ./src/tools/bregex.c
 ./src/tools/drivetype.c
+./src/tools/bpluginfo.c
 ./src/tools/bwild.c
 ./src/tools/bregtest.c
 ./src/tools/testfind.c
@@ -303,13 +306,16 @@
 ./src/lib/address_conf.h
 ./src/lib/devlock.h
 ./src/lib/serial.h
+./src/lib/ini.h
 ./src/lib/bsock.h
 ./src/lib/parse_conf.h
+./src/lib/sellist.h
 ./src/lib/lockmgr.h
 ./src/lib/crypto.h
 ./src/streams.h
 ./src/win32/dird/who.h
 ./src/win32/compat/getopt.h
+./src/win32/compat/netinet/tcp.h
 ./src/win32/compat/netinet/in.h
 ./src/win32/compat/winhost.h
 ./src/win32/compat/stdint.h
@@ -325,7 +331,6 @@
 ./src/win32/compat/mswinver.h
 ./src/win32/compat/compat.h
 ./src/win32/compat/arpa/inet.h
-./src/win32/compat/winconfig.h
 ./src/win32/compat/pwd.h
 ./src/win32/compat/winsock.h
 ./src/win32/compat/mingwconfig.h
@@ -356,7 +361,6 @@
 ./src/findlib/protos.h
 ./src/findlib/find.h
 ./src/findlib/savecwd.h
-./src/plugins/sd/plugin-sd.h
 ./src/plugins/fd/fd_common.h
 ./src/host.h
 ./src/cats/sql_glue.h
@@ -388,6 +392,7 @@
 ./src/console/conio.h
 ./src/console/func.h
 ./src/filetypes.h
+./src/tools/assert_macro.h
 ./src/qt-console/help/help.h
 ./src/qt-console/medialist/mediaview.h
 ./src/qt-console/medialist/medialist.h
@@ -454,8 +459,6 @@
 ./src/qt-console/storage/content.h
 ./src/qt-console/joblog/joblog.h
 ./src/qt-console/bat.h
-./src/qt-console/testprogs/examp/mainwindow.h
-./src/qt-console/testprogs/putz/putz.h
 ./src/qt-console/mediaedit/mediaedit.h
 ./src/qt-console/restore/restoretree.h
 ./src/qt-console/restore/restore.h
@@ -515,6 +518,7 @@
 ./src/qt-console/status/clientstat.cpp
 ./src/qt-console/status/storstat.cpp
 ./src/qt-console/status/dirstat.cpp
+./src/qt-console/tray-monitor/release/qrc_main.cpp
 ./src/qt-console/tray-monitor/debug/qrc_main.cpp
 ./src/qt-console/tray-monitor/tray-monitor.cpp
 ./src/qt-console/tray-monitor/moc/moc_tray-ui.cpp
@@ -532,33 +536,6 @@
 ./src/qt-console/joblist/joblist.cpp
 ./src/qt-console/pages.cpp
 ./src/qt-console/label/label.cpp
-./src/qt-console/moc32/moc_content.cpp
-./src/qt-console/moc32/moc_mediaview.cpp
-./src/qt-console/moc32/moc_relabel.cpp
-./src/qt-console/moc32/moc_restoretree.cpp
-./src/qt-console/moc32/moc_jobs.cpp
-./src/qt-console/moc32/moc_dircomm.cpp
-./src/qt-console/moc32/moc_help.cpp
-./src/qt-console/moc32/moc_mediaedit.cpp
-./src/qt-console/moc32/moc_joblist.cpp
-./src/qt-console/moc32/moc_mainwin.cpp
-./src/qt-console/moc32/moc_medialist.cpp
-./src/qt-console/moc32/moc_mediainfo.cpp
-./src/qt-console/moc32/moc_mount.cpp
-./src/qt-console/moc32/moc_storage.cpp
-./src/qt-console/moc32/moc_storstat.cpp
-./src/qt-console/moc32/moc_fileset.cpp
-./src/qt-console/moc32/moc_textinput.cpp
-./src/qt-console/moc32/moc_clientstat.cpp
-./src/qt-console/moc32/moc_console.cpp
-./src/qt-console/moc32/moc_dirstat.cpp
-./src/qt-console/moc32/moc_joblog.cpp
-./src/qt-console/moc32/moc_clients.cpp
-./src/qt-console/moc32/moc_run.cpp
-./src/qt-console/moc32/moc_select.cpp
-./src/qt-console/moc32/moc_label.cpp
-./src/qt-console/moc32/moc_restore.cpp
-./src/qt-console/moc32/moc_job.cpp
 ./src/qt-console/bcomm/dircomm_auth.cpp
 ./src/qt-console/bcomm/dircomm.cpp
 ./src/qt-console/relabel/relabel.cpp
@@ -573,10 +550,6 @@
 ./src/qt-console/storage/storage.cpp
 ./src/qt-console/bat_conf.cpp
 ./src/qt-console/joblog/joblog.cpp
-./src/qt-console/testprogs/examp/mainwindow.cpp
-./src/qt-console/testprogs/examp/main.cpp
-./src/qt-console/testprogs/putz/putz.cpp
-./src/qt-console/testprogs/putz/main.cpp
 ./src/qt-console/mediaedit/mediaedit.cpp
 ./src/qt-console/restore/brestore.cpp
 ./src/qt-console/restore/restoretree.cpp
diff --git a/po/bacula.pot b/po/bacula.pot
index ee751d8..2166b6e 100644
--- a/po/bacula.pot
+++ b/po/bacula.pot
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: bacula-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2012-01-17 20:45+0100\n"
+"POT-Creation-Date: 2013-02-19 18:26+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -47,8 +47,8 @@ msgstr ""
 msgid "Job %s waiting %d seconds for scheduled start time.\n"
 msgstr ""
 
-#: src/dird/jobq.c:220 src/dird/job.c:113 src/stored/dircmd.c:198
-#: src/stored/stored.c:503
+#: src/dird/jobq.c:220 src/dird/job.c:113 src/stored/dircmd.c:200
+#: src/stored/stored.c:560
 #, c-format
 msgid "Unable to init job cond variable: ERR=%s\n"
 msgstr ""
@@ -93,7 +93,7 @@ msgstr ""
 msgid "Continue? (yes/mod/no): "
 msgstr ""
 
-#: src/dird/ua_select.c:62 src/dird/ua_run.c:232
+#: src/dird/ua_select.c:62 src/dird/ua_run.c:219
 msgid "mod"
 msgstr ""
 
@@ -113,8 +113,8 @@ msgstr ""
 msgid "The defined Storage resources are:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:167 src/dird/ua_dotcmds.c:715 src/dird/ua_cmds.c:996
-#: src/dird/ua_run.c:237 src/wx-console/wxbrestorepanel.cpp:339
+#: src/dird/ua_select.c:167 src/dird/ua_dotcmds.c:734 src/dird/ua_cmds.c:995
+#: src/dird/ua_run.c:224 src/wx-console/wxbrestorepanel.cpp:339
 #: src/wx-console/wxbrestorepanel.cpp:355
 #: src/wx-console/wxbrestorepanel.cpp:479
 #: src/wx-console/wxbrestorepanel.cpp:480
@@ -135,7 +135,7 @@ msgstr ""
 msgid "The defined FileSet resources are:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:190 src/dird/ua_restore.c:1300 src/dird/ua_run.c:239
+#: src/dird/ua_select.c:190 src/dird/ua_restore.c:1300 src/dird/ua_run.c:226
 msgid "FileSet"
 msgstr ""
 
@@ -143,7 +143,7 @@ msgstr ""
 msgid "Select FileSet resource"
 msgstr ""
 
-#: src/dird/ua_select.c:220 src/dird/ua_cmds.c:1983
+#: src/dird/ua_select.c:220 src/dird/ua_cmds.c:2029
 msgid "Could not find a Catalog resource\n"
 msgstr ""
 
@@ -168,8 +168,8 @@ msgid "The defined Job resources are:\n"
 msgstr ""
 
 #: src/dird/ua_select.c:266 src/dird/ua_select.c:289 src/dird/ua_select.c:330
-#: src/dird/ua_select.c:1187 src/dird/dird_conf.c:650 src/dird/ua_prune.c:593
-#: src/dird/ua_run.c:238
+#: src/dird/ua_select.c:1186 src/dird/dird_conf.c:670 src/dird/ua_prune.c:601
+#: src/dird/ua_run.c:225
 msgid "Job"
 msgstr ""
 
@@ -194,8 +194,8 @@ msgstr ""
 msgid "The defined Client resources are:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:355 src/dird/ua_select.c:464 src/dird/ua_dotcmds.c:716
-#: src/dird/ua_cmds.c:997 src/dird/ua_run.c:243
+#: src/dird/ua_select.c:355 src/dird/ua_select.c:464 src/dird/ua_dotcmds.c:735
+#: src/dird/ua_cmds.c:996 src/dird/ua_run.c:230
 #: src/wx-console/wxbrestorepanel.cpp:336
 #: src/wx-console/wxbrestorepanel.cpp:354
 #: src/wx-console/wxbrestorepanel.cpp:431
@@ -254,7 +254,7 @@ msgstr ""
 msgid "Could not find Pool \"%s\": ERR=%s"
 msgstr ""
 
-#: src/dird/ua_select.c:532 src/dird/ua_output.c:474 src/dird/ua_update.c:437
+#: src/dird/ua_select.c:532 src/dird/ua_output.c:476 src/dird/ua_update.c:436
 #, c-format
 msgid "Error obtaining pool ids. ERR=%s\n"
 msgstr ""
@@ -267,13 +267,13 @@ msgstr ""
 msgid "Defined Pools:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:542 src/dird/ua_select.c:562 src/dird/ua_update.c:364
-#: src/baconfig.h:80
+#: src/dird/ua_select.c:542 src/dird/ua_select.c:562 src/dird/ua_update.c:365
+#: src/baconfig.h:88
 msgid "*None*"
 msgstr ""
 
-#: src/dird/ua_select.c:553 src/dird/ua_select.c:667 src/dird/ua_update.c:615
-#: src/dird/ua_run.c:251 src/wx-console/wxbrestorepanel.cpp:338
+#: src/dird/ua_select.c:553 src/dird/ua_select.c:666 src/dird/ua_update.c:616
+#: src/dird/ua_run.c:238 src/wx-console/wxbrestorepanel.cpp:338
 #: src/wx-console/wxbrestorepanel.cpp:527
 #: src/wx-console/wxbrestorepanel.cpp:537
 #: src/wx-console/wxbrestorepanel.cpp:1834
@@ -289,154 +289,154 @@ msgstr ""
 msgid "No access to Pool \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_select.c:624
+#: src/dird/ua_select.c:623
 msgid "Enter *MediaId or Volume name: "
 msgstr ""
 
-#: src/dird/ua_select.c:659
+#: src/dird/ua_select.c:658
 msgid "The defined Pool resources are:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:667
+#: src/dird/ua_select.c:666
 msgid "Select Pool resource"
 msgstr ""
 
-#: src/dird/ua_select.c:691 src/dird/ua_restore.c:555
+#: src/dird/ua_select.c:690 src/dird/ua_restore.c:555
 #, c-format
 msgid "Error: Pool resource \"%s\" does not exist.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:702
+#: src/dird/ua_select.c:701
 msgid "Enter the JobId to select: "
 msgstr ""
 
-#: src/dird/ua_select.c:740
+#: src/dird/ua_select.c:739
 #, c-format
 msgid "Could not find Job \"%s\": ERR=%s"
 msgstr ""
 
-#: src/dird/ua_select.c:820
+#: src/dird/ua_select.c:819
 #, c-format
 msgid "Automatically selected %s: %s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:831
+#: src/dird/ua_select.c:830
 #, c-format
 msgid ""
 "Your request has multiple choices for \"%s\". Selection is not possible in "
 "batch mode.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:849
+#: src/dird/ua_select.c:848
 #, c-format
 msgid "Selection list for \"%s\" is empty!\n"
 msgstr ""
 
-#: src/dird/ua_select.c:855
+#: src/dird/ua_select.c:854
 #, c-format
 msgid "Automatically selected: %s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:867
+#: src/dird/ua_select.c:866
 msgid "Selection aborted, nothing done.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:872
+#: src/dird/ua_select.c:871
 #, c-format
 msgid "Please enter a number between 1 and %d\n"
 msgstr ""
 
-#: src/dird/ua_select.c:921
+#: src/dird/ua_select.c:920
 msgid "Storage name given twice.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:938
+#: src/dird/ua_select.c:937
 #, c-format
 msgid "Expecting jobid=nn command, got: %s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:942
+#: src/dird/ua_select.c:941
 #, c-format
 msgid "JobId %s is not running.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:952
+#: src/dird/ua_select.c:951
 #, c-format
 msgid "Expecting job=xxx, got: %s.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:956 src/dird/ua_select.c:968
+#: src/dird/ua_select.c:955 src/dird/ua_select.c:967
 #, c-format
 msgid "Job \"%s\" is not running.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:964
+#: src/dird/ua_select.c:963
 #, c-format
 msgid "Expecting ujobid=xxx, got: %s.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:984
+#: src/dird/ua_select.c:983
 #, c-format
 msgid "Storage resource \"%s\": not found\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1016
+#: src/dird/ua_select.c:1015
 msgid "Enter autochanger drive[0]: "
 msgstr ""
 
-#: src/dird/ua_select.c:1037
+#: src/dird/ua_select.c:1036
 msgid "Enter autochanger slot: "
 msgstr ""
 
-#: src/dird/ua_select.c:1067
+#: src/dird/ua_select.c:1066
 msgid "Media Types defined in conf file:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1073
+#: src/dird/ua_select.c:1072
 msgid "Media Type"
 msgstr ""
 
-#: src/dird/ua_select.c:1073
+#: src/dird/ua_select.c:1072
 msgid "Select the Media Type"
 msgstr ""
 
-#: src/dird/ua_select.c:1112
+#: src/dird/ua_select.c:1111
 #, c-format
 msgid "JobId %s is not running. Use Job name to %s inactive jobs.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1121 src/dird/ua_select.c:1131
+#: src/dird/ua_select.c:1120 src/dird/ua_select.c:1130
 #, c-format
 msgid "Warning Job %s is not running. Continuing anyway ...\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1141 src/dird/ua_cmds.c:693 src/dird/ua_cmds.c:739
+#: src/dird/ua_select.c:1140 src/dird/ua_cmds.c:692 src/dird/ua_cmds.c:738
 msgid "Unauthorized command from this console.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1166 src/stored/status.c:473 src/filed/status.c:241
+#: src/dird/ua_select.c:1165 src/stored/status.c:538 src/filed/status.c:241
 msgid "No Jobs running.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1168
+#: src/dird/ua_select.c:1167
 msgid "None of your jobs are running.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1173
+#: src/dird/ua_select.c:1172
 msgid "Select Job:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1182
+#: src/dird/ua_select.c:1181
 #, c-format
 msgid "JobId=%s Job=%s"
 msgstr ""
 
-#: src/dird/ua_select.c:1186
+#: src/dird/ua_select.c:1185
 #, c-format
 msgid "Choose Job to %s"
 msgstr ""
 
-#: src/dird/ua_select.c:1193
+#: src/dird/ua_select.c:1192
 #, c-format
 msgid ""
 "Cancel: %s\n"
@@ -444,15 +444,15 @@ msgid ""
 "%s"
 msgstr ""
 
-#: src/dird/ua_select.c:1194
+#: src/dird/ua_select.c:1193
 msgid "Confirm cancel?"
 msgstr ""
 
-#: src/dird/ua_select.c:1200
+#: src/dird/ua_select.c:1199
 msgid "Confirm cancel (yes/no): "
 msgstr ""
 
-#: src/dird/ua_select.c:1209 src/dird/ua_cmds.c:734 src/dird/ua_cmds.c:1101
+#: src/dird/ua_select.c:1208 src/dird/ua_cmds.c:733 src/dird/ua_cmds.c:1100
 #, c-format
 msgid "Job \"%s\" not found.\n"
 msgstr ""
@@ -714,31 +714,31 @@ msgstr ""
 msgid "File: %s\n"
 msgstr ""
 
-#: src/dird/admin.c:66
+#: src/dird/admin.c:65
 #, c-format
 msgid "Start Admin JobId %d, Job=%s\n"
 msgstr ""
 
-#: src/dird/admin.c:92 src/dird/vbackup.c:304 src/dird/migrate.c:1226
-#: src/dird/backup.c:618
+#: src/dird/admin.c:90 src/dird/vbackup.c:306 src/dird/migrate.c:1227
+#: src/dird/backup.c:628
 #, c-format
 msgid "Error getting Job record for Job report: ERR=%s"
 msgstr ""
 
-#: src/dird/admin.c:100
+#: src/dird/admin.c:98
 msgid "Admin OK"
 msgstr ""
 
-#: src/dird/admin.c:104
+#: src/dird/admin.c:102
 msgid "*** Admin Error ***"
 msgstr ""
 
-#: src/dird/admin.c:108
+#: src/dird/admin.c:106
 msgid "Admin Canceled"
 msgstr ""
 
-#: src/dird/admin.c:112 src/dird/vbackup.c:354 src/dird/backup.c:674
-#: src/dird/restore.c:591
+#: src/dird/admin.c:110 src/dird/vbackup.c:356 src/dird/backup.c:684
+#: src/dird/restore.c:594
 #, c-format
 msgid "Inappropriate term code: %c\n"
 msgstr ""
@@ -747,13 +747,13 @@ msgstr ""
 msgid "Bacula "
 msgstr ""
 
-#: src/dird/dird.c:112
+#: src/dird/dird.c:150
 #, c-format
 msgid ""
 "\n"
 "Version: %s (%s)\n"
 "\n"
-"Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
+"Usage: bacula-dir [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
 "       -c <file>   set configuration file to file\n"
 "       -d <nn>     set debug level to <nn>\n"
 "       -dt         print timestamp in debug output\n"
@@ -769,66 +769,66 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/dird.c:258 src/stored/stored.c:227 src/console/console.c:1109
+#: src/dird/dird.c:296 src/stored/stored.c:227 src/console/console.c:1109
 #: src/filed/filed.c:218 src/qt-console/main.cpp:165
 msgid "Cryptography library initialization failed.\n"
 msgstr ""
 
-#: src/dird/dird.c:262 src/dird/dird.c:292 src/dird/dird.c:538
-#: src/dird/dird.c:541 src/stored/stored.c:231 src/console/console.c:1113
+#: src/dird/dird.c:300 src/dird/dird.c:328 src/dird/dird.c:560
+#: src/dird/dird.c:563 src/stored/stored.c:231 src/console/console.c:1113
 #: src/filed/filed.c:223 src/qt-console/main.cpp:169
 #, c-format
 msgid "Please correct configuration file: %s\n"
 msgstr ""
 
-#: src/dird/dird.c:524
+#: src/dird/dird.c:546
 msgid "Too many open reload requests. Request ignored.\n"
 msgstr ""
 
-#: src/dird/dird.c:539
+#: src/dird/dird.c:561
 msgid "Out of reload table entries. Giving up.\n"
 msgstr ""
 
-#: src/dird/dird.c:542
+#: src/dird/dird.c:564
 msgid "Resetting previous configuration.\n"
 msgstr ""
 
-#: src/dird/dird.c:606
+#: src/dird/dird.c:628
 #, c-format
 msgid ""
 "No Director resource defined in %s\n"
 "Without that I don't know who I am :-(\n"
 msgstr ""
 
-#: src/dird/dird.c:614 src/filed/filed.c:350
+#: src/dird/dird.c:636 src/filed/filed.c:350
 #, c-format
 msgid "No Messages resource defined in %s\n"
 msgstr ""
 
-#: src/dird/dird.c:619
+#: src/dird/dird.c:641
 #, c-format
 msgid "Only one Director resource permitted in %s\n"
 msgstr ""
 
-#: src/dird/dird.c:628 src/dird/dird.c:834 src/dird/dird.c:889
-#: src/dird/dird.c:1056 src/stored/stored.c:354 src/console/console.c:1296
+#: src/dird/dird.c:650 src/dird/dird.c:856 src/dird/dird.c:911
+#: src/dird/dird.c:950 src/stored/stored.c:354 src/console/console.c:1296
 #: src/console/console.c:1326 src/filed/filed.c:357 src/filed/filed.c:516
 #: src/wx-console/console_thread.cpp:118 src/wx-console/console_thread.cpp:144
 #: src/qt-console/main.cpp:224 src/qt-console/main.cpp:254
 msgid "TLS required but not configured in Bacula.\n"
 msgstr ""
 
-#: src/dird/dird.c:636 src/stored/stored.c:410 src/filed/filed.c:526
+#: src/dird/dird.c:658 src/stored/stored.c:410 src/filed/filed.c:526
 #, c-format
 msgid "\"TLS Certificate\" file not defined for Director \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:642 src/stored/stored.c:416 src/filed/filed.c:532
+#: src/dird/dird.c:664 src/stored/stored.c:416 src/filed/filed.c:532
 #, c-format
 msgid "\"TLS Key\" file not defined for Director \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:649 src/stored/stored.c:422 src/filed/filed.c:538
+#: src/dird/dird.c:671 src/stored/stored.c:422 src/filed/filed.c:538
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
@@ -836,46 +836,46 @@ msgid ""
 "using \"TLS Verify Peer\".\n"
 msgstr ""
 
-#: src/dird/dird.c:668 src/stored/stored.c:441 src/filed/filed.c:557
+#: src/dird/dird.c:690 src/stored/stored.c:441 src/filed/filed.c:557
 #, c-format
 msgid "Failed to initialize TLS context for Director \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:676
+#: src/dird/dird.c:698
 #, c-format
 msgid "No Job records defined in %s\n"
 msgstr ""
 
-#: src/dird/dird.c:734 src/dird/dird.c:747
+#: src/dird/dird.c:756 src/dird/dird.c:769
 #, c-format
 msgid "Hey something is wrong. p=0x%lu\n"
 msgstr ""
 
-#: src/dird/dird.c:808
+#: src/dird/dird.c:830
 #, c-format
 msgid "\"%s\" directive in Job \"%s\" resource is required, but not found.\n"
 msgstr ""
 
-#: src/dird/dird.c:815
+#: src/dird/dird.c:837
 msgid "Too many items in Job resource\n"
 msgstr ""
 
-#: src/dird/dird.c:819
+#: src/dird/dird.c:841
 #, c-format
 msgid "No storage specified in Job \"%s\" nor in Pool.\n"
 msgstr ""
 
-#: src/dird/dird.c:843
+#: src/dird/dird.c:865
 #, c-format
 msgid "\"TLS Certificate\" file not defined for Console \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:849
+#: src/dird/dird.c:871
 #, c-format
 msgid "\"TLS Key\" file not defined for Console \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:856
+#: src/dird/dird.c:878
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
@@ -883,48 +883,53 @@ msgid ""
 "using \"TLS Verify Peer\".\n"
 msgstr ""
 
-#: src/dird/dird.c:873 src/dird/dird.c:913 src/filed/filed.c:382
+#: src/dird/dird.c:895 src/dird/dird.c:935 src/filed/filed.c:382
 #, c-format
 msgid "Failed to initialize TLS context for File daemon \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:896
+#: src/dird/dird.c:918
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
 "File daemon \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:953 src/dird/dird.c:955
+#: src/dird/dird.c:959
+#, c-format
+msgid ""
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Storage \"%s\" in %s.\n"
+msgstr ""
+
+#: src/dird/dird.c:975 src/stored/stored.c:394
+#, c-format
+msgid "Failed to initialize TLS context for Storage \"%s\" in %s.\n"
+msgstr ""
+
+#: src/dird/dird.c:1014 src/dird/dird.c:1016
 #, c-format
 msgid "Could not open Catalog \"%s\", database \"%s\".\n"
 msgstr ""
 
-#: src/dird/dird.c:958 src/tools/cats_test.c:377
+#: src/dird/dird.c:1019 src/tools/cats_test.c:377
 #, c-format
 msgid "%s"
 msgstr ""
 
-#: src/dird/dird.c:1037
+#: src/dird/dird.c:1098
 #, c-format
 msgid "Could not create storage record for %s\n"
 msgstr ""
 
-#: src/dird/dird.c:1045
+#: src/dird/dird.c:1106
 #, c-format
 msgid "Could not update storage record for %s\n"
 msgstr ""
 
-#: src/dird/dird.c:1064
+#: src/dird/dird.c:1181 src/dird/migrate.c:1072 src/stored/stored.c:491
 #, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Storage \"%s\" in %s.\n"
-msgstr ""
-
-#: src/dird/dird.c:1080 src/stored/stored.c:394
-#, c-format
-msgid "Failed to initialize TLS context for Storage \"%s\" in %s.\n"
+msgid "Could not compile regex pattern \"%s\" ERR=%s\n"
 msgstr ""
 
 #: src/dird/inc_conf.c:312
@@ -941,18 +946,18 @@ msgstr ""
 msgid "Old style Include/Exclude not supported\n"
 msgstr ""
 
-#: src/dird/inc_conf.c:393 src/dird/inc_conf.c:739 src/dird/dird_conf.c:1993
+#: src/dird/inc_conf.c:393 src/dird/inc_conf.c:739 src/dird/dird_conf.c:2022
 #, c-format
 msgid "Expecting keyword, got: %s\n"
 msgstr ""
 
-#: src/dird/inc_conf.c:401 src/dird/inc_conf.c:745 src/dird/dird_conf.c:1999
+#: src/dird/inc_conf.c:401 src/dird/inc_conf.c:745 src/dird/dird_conf.c:2028
 #: src/lib/parse_conf.c:976
 #, c-format
 msgid "expected an equals, got: %s"
 msgstr ""
 
-#: src/dird/inc_conf.c:411 src/dird/inc_conf.c:754 src/dird/dird_conf.c:2010
+#: src/dird/inc_conf.c:411 src/dird/inc_conf.c:754 src/dird/dird_conf.c:2039
 #, c-format
 msgid "Keyword %s not permitted in this resource"
 msgstr ""
@@ -1004,7 +1009,7 @@ msgstr ""
 msgid "Options section not permitted in Exclude\n"
 msgstr ""
 
-#: src/dird/inc_conf.c:724 src/dird/dird_conf.c:1979
+#: src/dird/inc_conf.c:724 src/dird/dird_conf.c:2008
 #, c-format
 msgid "Expecting open brace. Got %s"
 msgstr ""
@@ -1060,7 +1065,7 @@ msgstr ""
 msgid "End query mode.\n"
 msgstr ""
 
-#: src/dird/newvol.c:91
+#: src/dird/newvol.c:90
 #, c-format
 msgid "Illegal character in Volume name \"%s\"\n"
 msgstr ""
@@ -1075,12 +1080,12 @@ msgstr ""
 msgid "SQL failed, but ignored. ERR=%s\n"
 msgstr ""
 
-#: src/dird/newvol.c:142
+#: src/dird/newvol.c:141
 #, c-format
 msgid "Wanted to create Volume \"%s\", but it already exists. Trying again.\n"
 msgstr ""
 
-#: src/dird/newvol.c:151
+#: src/dird/newvol.c:150
 msgid "Too many failures. Giving up creating Volume name.\n"
 msgstr ""
 
@@ -1119,7 +1124,7 @@ msgstr ""
 msgid "Cannot destroy var context: ERR=%s\n"
 msgstr ""
 
-#: src/dird/recycle.c:65
+#: src/dird/recycle.c:69
 #, c-format
 msgid "Recycled volume \"%s\"\n"
 msgstr ""
@@ -1184,26 +1189,26 @@ msgid ""
 "There are no more Jobs associated with Volume \"%s\". Marking it purged.\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:556 src/dird/ua_label.c:759
+#: src/dird/ua_purge.c:556 src/dird/ua_label.c:774
 #, c-format
 msgid "Connecting to Storage daemon %s at %s:%d ...\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:559 src/dird/ua_dotcmds.c:606 src/dird/ua_cmds.c:772
-#: src/dird/ua_cmds.c:1531 src/dird/ua_label.c:762 src/dird/job.c:448
+#: src/dird/ua_purge.c:559 src/dird/ua_dotcmds.c:625 src/dird/ua_cmds.c:771
+#: src/dird/ua_cmds.c:1577 src/dird/ua_label.c:777 src/dird/job.c:448
 msgid "Failed to connect to Storage daemon.\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:622
+#: src/dird/ua_purge.c:623
 msgid "Can't update volume size in the catalog\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:624
+#: src/dird/ua_purge.c:625
 #, c-format
 msgid "The volume \"%s\" has been truncated\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:626
+#: src/dird/ua_purge.c:627
 #, c-format
 msgid "Unable to truncate volume \"%s\"\n"
 msgstr ""
@@ -1213,17 +1218,17 @@ msgstr ""
 msgid "No Volumes found to perform %s action.\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:785
+#: src/dird/ua_purge.c:786
 #, c-format
 msgid "Unable move recycled Volume in full Pool \"%s\" MaxVols=%d\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:799
+#: src/dird/ua_purge.c:800
 #, c-format
 msgid "All records pruned from Volume \"%s\"; marking it \"Purged\"\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:804
+#: src/dird/ua_purge.c:805
 #, c-format
 msgid "Cannot purge Volume with VolStatus=%s\n"
 msgstr ""
@@ -1233,8 +1238,8 @@ msgid "Could not get or create a Pool record.\n"
 msgstr ""
 
 #: src/dird/vbackup.c:89 src/dird/migrate.c:227 src/dird/migrate.c:228
-#: src/dird/backup.c:93 src/dird/job.c:185 src/dird/job.c:868
-#: src/dird/job.c:1123 src/dird/job.c:1169 src/dird/job.c:1183
+#: src/dird/backup.c:93 src/dird/job.c:185 src/dird/job.c:871
+#: src/dird/job.c:1126 src/dird/job.c:1172 src/dird/job.c:1186
 msgid "Pool resource"
 msgstr ""
 
@@ -1265,34 +1270,34 @@ msgstr ""
 msgid "Could not get or create the FileSet record.\n"
 msgstr ""
 
-#: src/dird/vbackup.c:311 src/dird/backup.c:625
+#: src/dird/vbackup.c:313 src/dird/backup.c:635
 #, c-format
 msgid "Error getting Client record for Job report: ERR=%s"
 msgstr ""
 
-#: src/dird/vbackup.c:317 src/dird/migrate.c:1256 src/dird/backup.c:631
+#: src/dird/vbackup.c:319 src/dird/migrate.c:1257 src/dird/backup.c:641
 #, c-format
 msgid "Error getting Media record for Volume \"%s\": ERR=%s"
 msgstr ""
 
-#: src/dird/vbackup.c:327 src/dird/backup.c:641 src/dird/backup.c:650
-#: src/stored/bscan.c:1210
+#: src/dird/vbackup.c:329 src/dird/backup.c:651 src/dird/backup.c:660
+#: src/stored/bscan.c:1214
 msgid "Backup OK -- with warnings"
 msgstr ""
 
-#: src/dird/vbackup.c:329 src/dird/backup.c:643 src/stored/bscan.c:1207
+#: src/dird/vbackup.c:331 src/dird/backup.c:653 src/stored/bscan.c:1211
 msgid "Backup OK"
 msgstr ""
 
-#: src/dird/vbackup.c:334 src/dird/backup.c:654 src/stored/bscan.c:1214
+#: src/dird/vbackup.c:336 src/dird/backup.c:664 src/stored/bscan.c:1218
 msgid "*** Backup Error ***"
 msgstr ""
 
-#: src/dird/vbackup.c:344 src/dird/backup.c:664 src/stored/bscan.c:1217
+#: src/dird/vbackup.c:346 src/dird/backup.c:674 src/stored/bscan.c:1221
 msgid "Backup Canceled"
 msgstr ""
 
-#: src/dird/vbackup.c:391
+#: src/dird/vbackup.c:393
 #, c-format
 msgid ""
 "%s %s %s (%s):\n"
@@ -1339,93 +1344,93 @@ msgstr ""
 msgid "disabled"
 msgstr ""
 
-#: src/dird/ua_output.c:208
+#: src/dird/ua_output.c:211
 msgid "Keywords for the show command are:\n"
 msgstr ""
 
-#: src/dird/ua_output.c:214
+#: src/dird/ua_output.c:217
 #, c-format
 msgid "%s resource %s not found.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:217
+#: src/dird/ua_output.c:220
 #, c-format
 msgid "Resource %s not found\n"
 msgstr ""
 
-#: src/dird/ua_output.c:288
+#: src/dird/ua_output.c:290
 msgid "Hey! DB is NULL\n"
 msgstr ""
 
-#: src/dird/ua_output.c:445
+#: src/dird/ua_output.c:447
 #, c-format
 msgid "Jobid %d used %d Volume(s): %s\n"
 msgstr ""
 
-#: src/dird/ua_output.c:463
+#: src/dird/ua_output.c:465
 msgid "No Pool specified.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:484
+#: src/dird/ua_output.c:486
 #, c-format
 msgid "Pool: %s\n"
 msgstr ""
 
-#: src/dird/ua_output.c:500
+#: src/dird/ua_output.c:502
 msgid "Ignoring invalid value for days. Max is 50.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:522
+#: src/dird/ua_output.c:524
 #, c-format
 msgid "Unknown list keyword: %s\n"
 msgstr ""
 
-#: src/dird/ua_output.c:548
+#: src/dird/ua_output.c:549
 #, c-format
 msgid "%s is not a job name.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:562
+#: src/dird/ua_output.c:563
 #, c-format
 msgid "Could not find Pool for Job %s\n"
 msgstr ""
 
-#: src/dird/ua_output.c:575
+#: src/dird/ua_output.c:576
 #, c-format
 msgid "Could not find next Volume for Job %s (Pool=%s, Level=%s).\n"
 msgstr ""
 
-#: src/dird/ua_output.c:579
+#: src/dird/ua_output.c:580
 #, c-format
 msgid ""
 "The next Volume to be used by Job \"%s\" (Pool=%s, Level=%s) will be %s\n"
 msgstr ""
 
-#: src/dird/ua_output.c:592
+#: src/dird/ua_output.c:593
 #, c-format
 msgid "Could not find next Volume for Job %s.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:719 src/dird/job.c:133 src/tools/cats_test.c:375
+#: src/dird/ua_output.c:720 src/dird/job.c:133 src/tools/cats_test.c:375
 #, c-format
 msgid "Could not open database \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_output.c:732
+#: src/dird/ua_output.c:733
 #, c-format
 msgid "Pool %s not in database. %s"
 msgstr ""
 
-#: src/dird/ua_output.c:740
+#: src/dird/ua_output.c:741
 #, c-format
 msgid "Pool %s created in database.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:793
+#: src/dird/ua_output.c:794
 msgid "You have no messages.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:873
+#: src/dird/ua_output.c:874
 msgid "Message too long to display.\n"
 msgstr ""
 
@@ -1438,188 +1443,188 @@ msgstr ""
 msgid ": is an invalid command.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:540 src/dird/ua_restore.c:780
+#: src/dird/ua_dotcmds.c:553 src/dird/ua_restore.c:780
 #: src/dird/ua_restore.c:823
 #, c-format
 msgid "Unable to get Job record for JobId=%s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:600 src/dird/ua_cmds.c:766 src/dird/ua_cmds.c:1520
+#: src/dird/ua_dotcmds.c:619 src/dird/ua_cmds.c:765 src/dird/ua_cmds.c:1566
 #: src/dird/ua_status.c:352 src/dird/job.c:147 src/dird/job.c:153
-#: src/dird/job.c:1157 src/dird/job.c:1161
+#: src/dird/job.c:1160 src/dird/job.c:1164
 msgid "unknown source"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:603 src/dird/ua_cmds.c:769 src/dird/ua_status.c:355
+#: src/dird/ua_dotcmds.c:622 src/dird/ua_cmds.c:768 src/dird/ua_status.c:355
 #, c-format
 msgid "Connecting to Storage daemon %s at %s:%d\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:609 src/dird/ua_cmds.c:775 src/dird/ua_status.c:366
+#: src/dird/ua_dotcmds.c:628 src/dird/ua_cmds.c:774 src/dird/ua_status.c:366
 msgid "Connected to storage daemon\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:629 src/dird/ua_cmds.c:804 src/dird/ua_cmds.c:1202
+#: src/dird/ua_dotcmds.c:648 src/dird/ua_cmds.c:803 src/dird/ua_cmds.c:1208
 #: src/dird/ua_status.c:397
 #, c-format
 msgid "Connecting to Client %s at %s:%d\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:632 src/dird/ua_cmds.c:807 src/dird/ua_cmds.c:1205
+#: src/dird/ua_dotcmds.c:651 src/dird/ua_cmds.c:806 src/dird/ua_cmds.c:1211
 msgid "Failed to connect to Client.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:675 src/dird/ua_dotcmds.c:769
+#: src/dird/ua_dotcmds.c:694 src/dird/ua_dotcmds.c:788
 #, c-format
 msgid "Unknown command: %s\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:713 src/dird/ua_cmds.c:994
+#: src/dird/ua_dotcmds.c:732 src/dird/ua_cmds.c:993
 msgid "Available daemons are: \n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:714 src/dird/ua_cmds.c:995
+#: src/dird/ua_dotcmds.c:733 src/dird/ua_cmds.c:994
 msgid "Director"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:717
+#: src/dird/ua_dotcmds.c:736
 msgid "Select daemon type to make die"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:743
+#: src/dird/ua_dotcmds.c:762
 msgid "The Director will generate a deadlock.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:747
+#: src/dird/ua_dotcmds.c:766
 msgid "The Director will segment fault.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:936
+#: src/dird/ua_dotcmds.c:955
 msgid "Access to specified Client or FileSet not allowed.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:941 src/dird/ua_dotcmds.c:985
+#: src/dird/ua_dotcmds.c:960 src/dird/ua_dotcmds.c:1004
 #: src/dird/ua_restore.c:941 src/dird/ua_restore.c:969
 #: src/dird/ua_restore.c:990
 #, c-format
 msgid "Query failed: %s. ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:980
+#: src/dird/ua_dotcmds.c:999
 msgid "query keyword not found.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:1007
+#: src/dird/ua_dotcmds.c:1026
 #, c-format
 msgid "List MediaType failed: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:1021
+#: src/dird/ua_dotcmds.c:1040
 #, c-format
 msgid "List Media failed: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:1035
+#: src/dird/ua_dotcmds.c:1054
 #, c-format
 msgid "List Location failed: ERR=%s\n"
 msgstr ""
 
-#: src/dird/next_vol.c:149
+#: src/dird/next_vol.c:166
 #, c-format
 msgid "Purging oldest volume \"%s\"\n"
 msgstr ""
 
-#: src/dird/next_vol.c:155
+#: src/dird/next_vol.c:172
 #, c-format
 msgid "Pruning oldest volume \"%s\"\n"
 msgstr ""
 
-#: src/dird/next_vol.c:174
+#: src/dird/next_vol.c:191
 msgid "We seem to be looping trying to find the next volume. I give up.\n"
 msgstr ""
 
-#: src/dird/next_vol.c:201
+#: src/dird/next_vol.c:218
 #, c-format
 msgid "Max Volume bytes=%s exceeded. Marking Volume \"%s\" as Full.\n"
 msgstr ""
 
-#: src/dird/next_vol.c:209
+#: src/dird/next_vol.c:226
 #, c-format
 msgid "Volume used once. Marking Volume \"%s\" as Used.\n"
 msgstr ""
 
-#: src/dird/next_vol.c:216
+#: src/dird/next_vol.c:233
 #, c-format
 msgid "Max Volume jobs=%s exceeded. Marking Volume \"%s\" as Used.\n"
 msgstr ""
 
-#: src/dird/next_vol.c:226
+#: src/dird/next_vol.c:243
 #, c-format
 msgid "Max Volume files=%s exceeded. Marking Volume \"%s\" as Used.\n"
 msgstr ""
 
-#: src/dird/next_vol.c:237
+#: src/dird/next_vol.c:254
 #, c-format
 msgid ""
 "Max configured use duration=%s sec. exceeded. Marking Volume \"%s\" as "
 "Used.\n"
 msgstr ""
 
-#: src/dird/next_vol.c:249
+#: src/dird/next_vol.c:267
 #, c-format
 msgid "Catalog error updating volume \"%s\". ERR=%s"
 msgstr ""
 
-#: src/dird/next_vol.c:271
+#: src/dird/next_vol.c:289
 msgid "volume has expired"
 msgstr ""
 
-#: src/dird/next_vol.c:289 src/dird/next_vol.c:333
+#: src/dird/next_vol.c:307 src/dird/next_vol.c:351
 #, c-format
 msgid "Recycled current volume \"%s\"\n"
 msgstr ""
 
-#: src/dird/next_vol.c:294
+#: src/dird/next_vol.c:312
 msgid "and recycling of current volume failed"
 msgstr ""
 
-#: src/dird/next_vol.c:300
+#: src/dird/next_vol.c:318
 msgid "but should be Append, Purged or Recycle"
 msgstr ""
 
-#: src/dird/next_vol.c:309
+#: src/dird/next_vol.c:327
 msgid "volume has recycling disabled"
 msgstr ""
 
-#: src/dird/next_vol.c:336
+#: src/dird/next_vol.c:354
 msgid ""
 "but should be Append, Purged or Recycle (recycling of the current volume "
 "failed)"
 msgstr ""
 
-#: src/dird/next_vol.c:340
+#: src/dird/next_vol.c:358
 msgid ""
 "but should be Append, Purged or Recycle (cannot automatically recycle "
 "current volume, as it still contains unpruned data or the Volume Retention "
 "time has not expired.)"
 msgstr ""
 
-#: src/dird/next_vol.c:402
+#: src/dird/next_vol.c:421
 #, c-format
 msgid "Unable to get Pool record: ERR=%s"
 msgstr ""
 
-#: src/dird/next_vol.c:409
+#: src/dird/next_vol.c:428
 #, c-format
 msgid "Unable add Scratch Volume, Pool \"%s\" full MaxVols=%d\n"
 msgstr ""
 
-#: src/dird/next_vol.c:428
+#: src/dird/next_vol.c:448
 #, c-format
 msgid "Failed to move Scratch Volume. ERR=%s\n"
 msgstr ""
 
-#: src/dird/next_vol.c:433
+#: src/dird/next_vol.c:453
 #, c-format
 msgid "Using Volume \"%s\" from 'Scratch' pool.\n"
 msgstr ""
@@ -1801,165 +1806,165 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:307
+#: src/dird/ua_cmds.c:306
 #, c-format
 msgid "Pool already has maximum volumes=%d\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:308
+#: src/dird/ua_cmds.c:307
 msgid "Enter new maximum (zero for unlimited): "
 msgstr ""
 
-#: src/dird/ua_cmds.c:328
+#: src/dird/ua_cmds.c:327
 #, c-format
 msgid "Enter number of Volumes to create. 0=>fixed name. Max=%d: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:334
+#: src/dird/ua_cmds.c:333
 #, c-format
 msgid "The number must be between 0 and %d\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:342
+#: src/dird/ua_cmds.c:341
 msgid "Enter Volume name: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:346
+#: src/dird/ua_cmds.c:345
 msgid "Enter base volume name: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:355 src/dird/ua_label.c:648
+#: src/dird/ua_cmds.c:354 src/dird/ua_label.c:663
 msgid "Volume name too long.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:359 src/dird/ua_label.c:654 src/lib/edit.c:501
+#: src/dird/ua_cmds.c:358 src/dird/ua_label.c:669 src/lib/edit.c:501
 msgid "Volume name must be at least one character long.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:370
+#: src/dird/ua_cmds.c:369
 msgid "Enter the starting number: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:375
+#: src/dird/ua_cmds.c:374
 msgid "Start number must be greater than zero.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:386
+#: src/dird/ua_cmds.c:385
 msgid "Enter slot (0 for none): "
 msgstr ""
 
-#: src/dird/ua_cmds.c:390
+#: src/dird/ua_cmds.c:389
 msgid "InChanger? yes/no: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:415
+#: src/dird/ua_cmds.c:414
 #, c-format
 msgid "%d Volumes created in pool %s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:431 src/dird/ua_cmds.c:1033
+#: src/dird/ua_cmds.c:430 src/dird/ua_cmds.c:1032
 msgid "Turn on or off? "
 msgstr ""
 
-#: src/dird/ua_cmds.c:545
+#: src/dird/ua_cmds.c:544
 #, c-format
 msgid ""
 "Can't set %s RecyclePool to %s, %s is not in database.\n"
 "Try to update it with 'update pool=%s'\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:563
+#: src/dird/ua_cmds.c:562
 #, c-format
 msgid ""
 "Can't set %s ScratchPool to %s, %s is not in database.\n"
 "Try to update it with 'update pool=%s'\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:632
+#: src/dird/ua_cmds.c:631
 #, c-format
 msgid ""
 "Error: Pool %s already exists.\n"
 "Use update to change it.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:643
+#: src/dird/ua_cmds.c:642
 #, c-format
 msgid "Pool %s created.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:673
+#: src/dird/ua_cmds.c:672
 msgid "Python interpreter restarted.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:676 src/dird/ua_cmds.c:1331
+#: src/dird/ua_cmds.c:675 src/dird/ua_cmds.c:1337
 msgid "Nothing done.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:700 src/dird/ua_cmds.c:1084 src/dird/ua_run.c:1582
+#: src/dird/ua_cmds.c:699 src/dird/ua_cmds.c:1083 src/dird/ua_run.c:1588
 #, c-format
 msgid "Client \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:709
+#: src/dird/ua_cmds.c:708
 #, c-format
 msgid "Client \"%s\" address set to %s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:743
+#: src/dird/ua_cmds.c:742
 #, c-format
 msgid "Job \"%s\" %sabled\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:921
+#: src/dird/ua_cmds.c:920
 msgid "Enter new debug level: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:998
+#: src/dird/ua_cmds.c:997
 msgid "All"
 msgstr ""
 
-#: src/dird/ua_cmds.c:999
+#: src/dird/ua_cmds.c:998
 msgid "Select daemon type to set debug level"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1088 src/dird/ua_cmds.c:1926
+#: src/dird/ua_cmds.c:1087 src/dird/ua_cmds.c:1972
 #, c-format
 msgid "No authorization for Client \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1093
+#: src/dird/ua_cmds.c:1092
 msgid "Client name missing.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1105 src/dird/ua_cmds.c:1166 src/dird/ua_cmds.c:1948
+#: src/dird/ua_cmds.c:1104 src/dird/ua_cmds.c:1171 src/dird/ua_cmds.c:1994
 #, c-format
 msgid "No authorization for Job \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1110
+#: src/dird/ua_cmds.c:1109
 msgid "Job name missing.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1119
+#: src/dird/ua_cmds.c:1118
 #, c-format
 msgid "Fileset \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1123
+#: src/dird/ua_cmds.c:1122
 #, c-format
 msgid "No authorization for FileSet \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1128
+#: src/dird/ua_cmds.c:1127
 msgid "Fileset name missing.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1139 src/dird/ua_run.c:563
+#: src/dird/ua_cmds.c:1138 src/dird/ua_run.c:550
 #, c-format
 msgid "Level \"%s\" not valid.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1143
+#: src/dird/ua_cmds.c:1142
 msgid "Level value missing.\n"
 msgstr ""
 
@@ -1967,39 +1972,63 @@ msgstr ""
 msgid "Invalid value for accurate. It must be yes or no.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1162
+#: src/dird/ua_cmds.c:1154
+msgid "Accurate value missing.\n"
+msgstr ""
+
+#: src/dird/ua_cmds.c:1167
 msgid "No job specified.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1210
+#: src/dird/ua_cmds.c:1227
 msgid "Error sending include list.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1215
+#: src/dird/ua_cmds.c:1232
 msgid "Error sending exclude list.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1317
+#: src/dird/ua_cmds.c:1323
 msgid ""
 "In general it is not a good idea to delete either a\n"
 "Pool or a Volume since they may contain data.\n"
 "\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1320
+#: src/dird/ua_cmds.c:1326
 msgid "Choose catalog item to delete"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1384
+#: src/dird/ua_cmds.c:1376 src/dird/ua_cmds.c:1391 src/dird/ua_cmds.c:1401
+#, c-format
+msgid "Illegal JobId %s ignored\n"
+msgstr ""
+
+#: src/dird/ua_cmds.c:1404
 msgid "Enter JobId to delete: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:1423
+#: src/dird/ua_cmds.c:1440
+#, c-format
+msgid "Are you sure you want to delete %d JobIds ? (yes/no): "
+msgstr ""
+
+#: src/dird/ua_cmds.c:1450
 #, c-format
-msgid "Job %s and associated records deleted from the catalog.\n"
+msgid "Illegal JobId range %s - %s should define increasing JobIds, ignored\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1438
+#: src/dird/ua_cmds.c:1454
+#, c-format
+msgid "Illegal JobId range %s - %s, ignored\n"
+msgstr ""
+
+#: src/dird/ua_cmds.c:1469
+#, c-format
+msgid "Jobid %s and associated records deleted from the catalog.\n"
+msgstr ""
+
+#: src/dird/ua_cmds.c:1484
 #, c-format
 msgid ""
 "\n"
@@ -2007,44 +2036,44 @@ msgid ""
 "and all Jobs saved on that volume from the Catalog\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1445
+#: src/dird/ua_cmds.c:1491
 #, c-format
 msgid "Are you sure you want to delete Volume \"%s\"? (yes/no): "
 msgstr ""
 
-#: src/dird/ua_cmds.c:1458
+#: src/dird/ua_cmds.c:1504
 msgid "Can't list jobs on this volume\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1483
+#: src/dird/ua_cmds.c:1529
 #, c-format
 msgid "Are you sure you want to delete Pool \"%s\"? (yes/no): "
 msgstr ""
 
-#: src/dird/ua_cmds.c:1598
+#: src/dird/ua_cmds.c:1644
 #, c-format
 msgid "Using Catalog name=%s DB=%s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1666
+#: src/dird/ua_cmds.c:1712
 msgid "ERR: Can't open db\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1713
+#: src/dird/ua_cmds.c:1759
 msgid "Wait on mount timed out\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1723
+#: src/dird/ua_cmds.c:1769
 msgid "ERR: Job was not found\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1799
+#: src/dird/ua_cmds.c:1845
 msgid ""
 "  Command       Description\n"
 "  =======       ===========\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1803
+#: src/dird/ua_cmds.c:1849
 #, c-format
 msgid ""
 "  %-13s %s\n"
@@ -2053,12 +2082,12 @@ msgid ""
 "\t%s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1808
+#: src/dird/ua_cmds.c:1854
 #, c-format
 msgid "  %-13s %s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1812
+#: src/dird/ua_cmds.c:1858
 #, c-format
 msgid ""
 "\n"
@@ -2066,29 +2095,29 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1814
+#: src/dird/ua_cmds.c:1860
 msgid ""
 "\n"
 "When at a prompt, entering a period cancels the command.\n"
 "\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1850 src/filed/status.c:85
+#: src/dird/ua_cmds.c:1896 src/filed/status.c:85
 #, c-format
 msgid "%s Version: %s (%s) %s %s %s %s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1909 src/dird/ua_cmds.c:1936 src/dird/ua_cmds.c:1958
+#: src/dird/ua_cmds.c:1955 src/dird/ua_cmds.c:1982 src/dird/ua_cmds.c:2004
 #, c-format
 msgid "No authorization for Catalog \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:2003
+#: src/dird/ua_cmds.c:2049
 #, c-format
 msgid "Could not open catalog database \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:2013
+#: src/dird/ua_cmds.c:2059
 #, c-format
 msgid "Using Catalog \"%s\"\n"
 msgstr ""
@@ -2183,7 +2212,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:129 src/dird/ua_tree.c:827
+#: src/dird/ua_tree.c:129 src/dird/ua_tree.c:831
 #, c-format
 msgid "cwd is: %s\n"
 msgstr ""
@@ -2193,142 +2222,150 @@ msgstr ""
 msgid "Invalid command \"%s\". Enter \"done\" to exit.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:370 src/dird/ua_tree.c:382 src/dird/ua_tree.c:399
+#: src/dird/ua_tree.c:227
+#, c-format
+msgid ""
+"Something is wrong with the Delta sequence of %s, skiping new parts. Current "
+"sequence is %d\n"
+msgstr ""
+
+#: src/dird/ua_tree.c:373 src/dird/ua_tree.c:385 src/dird/ua_tree.c:402
 msgid "No files marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:384
+#: src/dird/ua_tree.c:387
 msgid "1 file marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:386
+#: src/dird/ua_tree.c:389
 #, c-format
 msgid "%s files marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:414
+#: src/dird/ua_tree.c:417
 msgid "No directories marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:416
+#: src/dird/ua_tree.c:419
 msgid "1 directory marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:418
+#: src/dird/ua_tree.c:421
 #, c-format
 msgid "%s directories marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:439
+#: src/dird/ua_tree.c:442
 #, c-format
 msgid "%s total files/dirs. %s marked to be restored.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:450
+#: src/dird/ua_tree.c:453
 msgid "No file specification given.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:671
+#: src/dird/ua_tree.c:674
 #, c-format
 msgid "Node %s has no children.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:764
+#: src/dird/ua_tree.c:767
 #, c-format
 msgid "%d total files; %d marked to be restored; %s bytes.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:775 src/stored/btape.c:2947
+#: src/dird/ua_tree.c:778 src/stored/btape.c:2949
 #, c-format
 msgid ""
 "  Command    Description\n"
 "  =======    ===========\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:798
+#: src/dird/ua_tree.c:801
 msgid "Too few or too many arguments. Try using double quotes.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:810
+#: src/dird/ua_tree.c:814
 msgid "Invalid path given.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:846 src/dird/ua_tree.c:858
+#: src/dird/ua_tree.c:850 src/dird/ua_tree.c:862
 msgid "No files unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:860
+#: src/dird/ua_tree.c:864
 msgid "1 file unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:863
+#: src/dird/ua_tree.c:867
 #, c-format
 msgid "%s files unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:874 src/dird/ua_tree.c:891
+#: src/dird/ua_tree.c:878 src/dird/ua_tree.c:895
 msgid "No directories unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:893
+#: src/dird/ua_tree.c:897
 msgid "1 directory unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:895
+#: src/dird/ua_tree.c:899
 #, c-format
 msgid "%d directories unmarked.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:559 src/tray-monitor/tray_conf.c:168
+#: src/dird/dird_conf.c:567 src/tray-monitor/tray_conf.c:168
 #: src/qt-console/tray-monitor/tray_conf.cpp:168
 #, c-format
 msgid "No %s resource defined\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:568
+#: src/dird/dird_conf.c:576
 #, c-format
 msgid "Director: name=%s MaxJobs=%d FDtimeout=%s SDtimeout=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:573
+#: src/dird/dird_conf.c:581
 #, c-format
 msgid "   query_file=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:576 src/dird/dird_conf.c:596 src/dird/dird_conf.c:610
-#: src/dird/dird_conf.c:669 src/dird/dird_conf.c:673 src/dird/dird_conf.c:677
-#: src/dird/dird_conf.c:710 src/dird/dird_conf.c:733 src/dird/dird_conf.c:737
-#: src/dird/dird_conf.c:741 src/dird/dird_conf.c:745 src/dird/dird_conf.c:749
-#: src/dird/dird_conf.c:762 src/dird/dird_conf.c:989 src/dird/dird_conf.c:996
+#: src/dird/dird_conf.c:584 src/dird/dird_conf.c:604 src/dird/dird_conf.c:621
+#: src/dird/dird_conf.c:689 src/dird/dird_conf.c:693 src/dird/dird_conf.c:697
+#: src/dird/dird_conf.c:730 src/dird/dird_conf.c:753 src/dird/dird_conf.c:757
+#: src/dird/dird_conf.c:761 src/dird/dird_conf.c:765 src/dird/dird_conf.c:769
+#: src/dird/dird_conf.c:782 src/dird/dird_conf.c:1018
+#: src/dird/dird_conf.c:1025
 msgid "  --> "
 msgstr ""
 
-#: src/dird/dird_conf.c:581
+#: src/dird/dird_conf.c:589
 #, c-format
 msgid "Console: name=%s SSL=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:586
+#: src/dird/dird_conf.c:594
 #, c-format
 msgid "Counter: name=%s min=%d max=%d cur=%d wrapcntr=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:591
+#: src/dird/dird_conf.c:599
 #, c-format
 msgid "Counter: name=%s min=%d max=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:602
+#: src/dird/dird_conf.c:613
 #, c-format
 msgid "Client: name=%s address=%s FDport=%d MaxJobs=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:605
+#: src/dird/dird_conf.c:616
 #, c-format
 msgid "      JobRetention=%s FileRetention=%s AutoPrune=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:618
+#: src/dird/dird_conf.c:629
 #, c-format
 msgid ""
 "Device: name=%s ok=%d num_writers=%d max_writers=%d\n"
@@ -2337,286 +2374,286 @@ msgid ""
 "      poolid=%s volname=%s MediaType=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:629
+#: src/dird/dird_conf.c:643
 #, c-format
 msgid ""
 "Storage: name=%s address=%s SDport=%d MaxJobs=%u\n"
 "      DeviceName=%s MediaType=%s StorageId=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:639
+#: src/dird/dird_conf.c:656
 #, c-format
 msgid ""
 "Catalog: name=%s address=%s DBport=%d db_name=%s\n"
 "      db_driver=%s db_user=%s MutliDBConn=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:649
+#: src/dird/dird_conf.c:669
 #, c-format
 msgid "%s: name=%s JobType=%d level=%s Priority=%d Enabled=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:650
+#: src/dird/dird_conf.c:670
 msgid "JobDefs"
 msgstr ""
 
-#: src/dird/dird_conf.c:654
+#: src/dird/dird_conf.c:674
 #, c-format
 msgid ""
 "     MaxJobs=%u Resched=%d Times=%d Interval=%s Spool=%d WritePartAfterJob="
 "%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:660
+#: src/dird/dird_conf.c:680
 #, c-format
 msgid "     SpoolSize=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:663
+#: src/dird/dird_conf.c:683
 #, c-format
 msgid "     Accurate=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:666
+#: src/dird/dird_conf.c:686
 #, c-format
 msgid "     SelectionType=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:681
+#: src/dird/dird_conf.c:701
 #, c-format
 msgid "  --> Where=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:684
+#: src/dird/dird_conf.c:704
 #, c-format
 msgid "  --> RegexWhere=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:687
+#: src/dird/dird_conf.c:707
 #, c-format
 msgid "  --> Bootstrap=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:690
+#: src/dird/dird_conf.c:710
 #, c-format
 msgid "  --> WriteBootstrap=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:693
+#: src/dird/dird_conf.c:713
 #, c-format
 msgid "  --> PluginOptions=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:696
+#: src/dird/dird_conf.c:716
 #, c-format
 msgid "  --> MaxRunTime=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:699
+#: src/dird/dird_conf.c:719
 #, c-format
 msgid "  --> MaxWaitTime=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:702
+#: src/dird/dird_conf.c:722
 #, c-format
 msgid "  --> MaxStartDelay=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:705
+#: src/dird/dird_conf.c:725
 #, c-format
 msgid "  --> MaxRunSchedTime=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:717
+#: src/dird/dird_conf.c:737
 #, c-format
 msgid "  --> Base %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:723 src/lib/runscript.c:297
+#: src/dird/dird_conf.c:743 src/lib/runscript.c:297
 msgid " --> RunScript\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:724 src/lib/runscript.c:298
+#: src/dird/dird_conf.c:744 src/lib/runscript.c:298
 #, c-format
 msgid "  --> Command=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:725 src/lib/runscript.c:299
+#: src/dird/dird_conf.c:745 src/lib/runscript.c:299
 #, c-format
 msgid "  --> Target=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:726 src/lib/runscript.c:300
+#: src/dird/dird_conf.c:746 src/lib/runscript.c:300
 #, c-format
 msgid "  --> RunOnSuccess=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:727 src/lib/runscript.c:301
+#: src/dird/dird_conf.c:747 src/lib/runscript.c:301
 #, c-format
 msgid "  --> RunOnFailure=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:728 src/lib/runscript.c:302
+#: src/dird/dird_conf.c:748 src/lib/runscript.c:302
 #, c-format
 msgid "  --> FailJobOnError=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:729 src/lib/runscript.c:303
+#: src/dird/dird_conf.c:749 src/lib/runscript.c:303
 #, c-format
 msgid "  --> RunWhen=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:755
+#: src/dird/dird_conf.c:775
 #, c-format
 msgid "  --> Run=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:759
+#: src/dird/dird_conf.c:779
 #, c-format
 msgid "  --> SelectionPattern=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:770
+#: src/dird/dird_conf.c:793
 #, c-format
 msgid "FileSet: name=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:861 src/dird/dird_conf.c:940
+#: src/dird/dird_conf.c:887 src/dird/dird_conf.c:966
 #, c-format
 msgid "Schedule: name=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:866
+#: src/dird/dird_conf.c:892
 #, c-format
 msgid "  --> Run Level=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:867
+#: src/dird/dird_conf.c:893
 msgid "      hour="
 msgstr ""
 
-#: src/dird/dird_conf.c:876
+#: src/dird/dird_conf.c:902
 msgid "      mday="
 msgstr ""
 
-#: src/dird/dird_conf.c:885
+#: src/dird/dird_conf.c:911
 msgid "      month="
 msgstr ""
 
-#: src/dird/dird_conf.c:894
+#: src/dird/dird_conf.c:920
 msgid "      wday="
 msgstr ""
 
-#: src/dird/dird_conf.c:903
+#: src/dird/dird_conf.c:929
 msgid "      wom="
 msgstr ""
 
-#: src/dird/dird_conf.c:912
+#: src/dird/dird_conf.c:938
 msgid "      woy="
 msgstr ""
 
-#: src/dird/dird_conf.c:921
+#: src/dird/dird_conf.c:947
 #, c-format
 msgid "      mins=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:923 src/dird/dird_conf.c:927 src/dird/dird_conf.c:931
+#: src/dird/dird_conf.c:949 src/dird/dird_conf.c:953 src/dird/dird_conf.c:957
 msgid "     --> "
 msgstr ""
 
-#: src/dird/dird_conf.c:945
+#: src/dird/dird_conf.c:974
 #, c-format
 msgid "Pool: name=%s PoolType=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:947
+#: src/dird/dird_conf.c:976
 #, c-format
 msgid "      use_cat=%d use_once=%d cat_files=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:950
+#: src/dird/dird_conf.c:979
 #, c-format
 msgid "      max_vols=%d auto_prune=%d VolRetention=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:953
+#: src/dird/dird_conf.c:982
 #, c-format
 msgid "      VolUse=%s recycle=%d LabelFormat=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:957
+#: src/dird/dird_conf.c:986
 #, c-format
 msgid "      CleaningPrefix=%s LabelType=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:959
+#: src/dird/dird_conf.c:988
 #, c-format
 msgid "      RecyleOldest=%d PurgeOldest=%d ActionOnPurge=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:963
+#: src/dird/dird_conf.c:992
 #, c-format
 msgid "      MaxVolJobs=%d MaxVolFiles=%d MaxVolBytes=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:967
+#: src/dird/dird_conf.c:996
 #, c-format
 msgid "      MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:971
+#: src/dird/dird_conf.c:1000
 #, c-format
 msgid "      JobRetention=%s FileRetention=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:975
+#: src/dird/dird_conf.c:1004
 #, c-format
 msgid "      NextPool=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:978
+#: src/dird/dird_conf.c:1007
 #, c-format
 msgid "      RecyclePool=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:981
+#: src/dird/dird_conf.c:1010
 #, c-format
 msgid "      ScratchPool=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:984
+#: src/dird/dird_conf.c:1013
 #, c-format
 msgid "      Catalog=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1004
+#: src/dird/dird_conf.c:1033
 #, c-format
 msgid "Messages: name=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1006
+#: src/dird/dird_conf.c:1035
 #, c-format
 msgid "      mailcmd=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1008
+#: src/dird/dird_conf.c:1037
 #, c-format
 msgid "      opcmd=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1012 src/tray-monitor/tray_conf.c:199
+#: src/dird/dird_conf.c:1041 src/tray-monitor/tray_conf.c:199
 #: src/qt-console/tray-monitor/tray_conf.cpp:199
 #, c-format
 msgid "Unknown resource type %d in dump_resource.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1343 src/tray-monitor/tray_conf.c:257
+#: src/dird/dird_conf.c:1372 src/tray-monitor/tray_conf.c:257
 #: src/qt-console/tray-monitor/tray_conf.cpp:257
 #, c-format
 msgid "Unknown resource type %d in free_resource.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1375 src/dird/dird_conf.c:1390
+#: src/dird/dird_conf.c:1404 src/dird/dird_conf.c:1419
 #: src/tray-monitor/tray_conf.c:288 src/wx-console/console_conf.c:265
 #: src/console/console_conf.c:259 src/filed/filed_conf.c:361
 #: src/qt-console/tray-monitor/tray_conf.cpp:288
@@ -2625,54 +2662,54 @@ msgstr ""
 msgid "%s item is required in %s resource, but not found.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1381 src/tray-monitor/tray_conf.c:294
+#: src/dird/dird_conf.c:1410 src/tray-monitor/tray_conf.c:294
 #: src/lib/parse_conf.c:225 src/qt-console/tray-monitor/tray_conf.cpp:294
 #, c-format
 msgid "Too many items in %s resource\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1421
+#: src/dird/dird_conf.c:1450
 #, c-format
 msgid "Cannot find Pool resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1432
+#: src/dird/dird_conf.c:1461
 #, c-format
 msgid "Cannot find Console resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1438 src/stored/stored_conf.c:611
+#: src/dird/dird_conf.c:1467 src/stored/stored_conf.c:611
 #: src/filed/filed_conf.c:381
 #, c-format
 msgid "Cannot find Director resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1445 src/stored/stored_conf.c:617
+#: src/dird/dird_conf.c:1474 src/stored/stored_conf.c:617
 #, c-format
 msgid "Cannot find Storage resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1454
+#: src/dird/dird_conf.c:1483
 #, c-format
 msgid "Cannot find Job resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1504
+#: src/dird/dird_conf.c:1533
 #, c-format
 msgid "Cannot find Counter resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1512 src/filed/filed_conf.c:387
+#: src/dird/dird_conf.c:1541 src/filed/filed_conf.c:387
 #, c-format
 msgid "Cannot find Client resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1525
+#: src/dird/dird_conf.c:1554
 #, c-format
 msgid "Cannot find Schedule resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1530 src/dird/dird_conf.c:1590
+#: src/dird/dird_conf.c:1559 src/dird/dird_conf.c:1619
 #: src/tray-monitor/tray_conf.c:314 src/tray-monitor/tray_conf.c:352
 #: src/qt-console/tray-monitor/tray_conf.cpp:314
 #: src/qt-console/tray-monitor/tray_conf.cpp:352
@@ -2680,12 +2717,12 @@ msgstr ""
 msgid "Unknown resource type %d in save_resource.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1605
+#: src/dird/dird_conf.c:1634
 #, c-format
 msgid "Name item is required in %s resource, but not found.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1613 src/tray-monitor/tray_conf.c:372
+#: src/dird/dird_conf.c:1642 src/tray-monitor/tray_conf.c:372
 #: src/wx-console/console_conf.c:328 src/console/console_conf.c:322
 #: src/filed/filed_conf.c:446 src/qt-console/tray-monitor/tray_conf.cpp:372
 #: src/qt-console/bat_conf.cpp:334
@@ -2693,43 +2730,43 @@ msgstr ""
 msgid "Attempt to define second %s resource named \"%s\" is not permitted.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1618
+#: src/dird/dird_conf.c:1647
 #, c-format
 msgid "Inserting %s res: %s index=%d pass=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1631
+#: src/dird/dird_conf.c:1660
 #, c-format
 msgid "Expected one of: %s, got: %s"
 msgstr ""
 
-#: src/dird/dird_conf.c:1703
+#: src/dird/dird_conf.c:1732
 #, c-format
 msgid "Expected a Migration Job Type keyword, got: %s"
 msgstr ""
 
-#: src/dird/dird_conf.c:1729
+#: src/dird/dird_conf.c:1758
 #, c-format
 msgid "Expected a Job Type keyword, got: %s"
 msgstr ""
 
-#: src/dird/dird_conf.c:1753
+#: src/dird/dird_conf.c:1782
 #, c-format
 msgid "Expected a Job Level keyword, got: %s"
 msgstr ""
 
-#: src/dird/dird_conf.c:1773
+#: src/dird/dird_conf.c:1802
 #, c-format
 msgid "Expected a Restore replacement option, got: %s"
 msgstr ""
 
-#: src/dird/dird_conf.c:1823 src/dird/dird_conf.c:1939
-#: src/lib/parse_conf.c:761 src/lib/parse_conf.c:777
+#: src/dird/dird_conf.c:1852 src/dird/dird_conf.c:1968
+#: src/lib/parse_conf.c:761 src/lib/parse_conf.c:777 src/lib/ini.c:593
 #, c-format
 msgid "Expect %s, got: %s"
 msgstr ""
 
-#: src/dird/dird_conf.c:1845 src/lib/parse_conf.c:478
+#: src/dird/dird_conf.c:1874 src/lib/parse_conf.c:478
 #, c-format
 msgid "Could not find config Resource %s referenced on line %d : %s\n"
 msgstr ""
@@ -2857,7 +2894,7 @@ msgstr ""
 msgid "Select full restore to a specified Job date"
 msgstr ""
 
-#: src/dird/ua_restore.c:446 src/dird/ua_status.c:863 src/stored/status.c:546
+#: src/dird/ua_restore.c:446 src/dird/ua_status.c:862 src/stored/status.c:611
 #: src/filed/status.c:373 src/wx-console/wxbconfigpanel.cpp:220
 msgid "Cancel"
 msgstr ""
@@ -2867,7 +2904,7 @@ msgstr ""
 msgid "Unknown keyword: %s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:520 src/dird/ua_update.c:955
+#: src/dird/ua_restore.c:520 src/dird/ua_update.c:957
 #, c-format
 msgid "Improper date format: %s\n"
 msgstr ""
@@ -3101,12 +3138,17 @@ msgstr ""
 msgid "Warning default storage overridden by \"%s\" on command line.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1533
+#: src/dird/ua_restore.c:1534
+#, c-format
+msgid "Using Storage \"%s\" from MediaType \"%s\".\n"
+msgstr ""
+
+#: src/dird/ua_restore.c:1537
 #, c-format
 msgid "Storage \"%s\" not found, using Storage \"%s\" from MediaType \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1541
+#: src/dird/ua_restore.c:1546
 #, c-format
 msgid ""
 "\n"
@@ -3168,7 +3210,7 @@ msgid ""
 "resource.\n"
 msgstr ""
 
-#: src/dird/fd_cmds.c:500 src/filed/job.c:858
+#: src/dird/fd_cmds.c:500 src/filed/job.c:854
 #, c-format
 msgid "Cannot run program: %s. ERR=%s\n"
 msgstr ""
@@ -3210,9 +3252,9 @@ msgid ""
 "msglen=%d msg=%s\n"
 msgstr ""
 
-#: src/dird/fd_cmds.c:825 src/dird/fd_cmds.c:884 src/dird/catreq.c:443
-#: src/cats/sqlite.c:374 src/cats/ingres.c:451 src/cats/postgresql.c:441
-#: src/cats/dbi.c:552 src/cats/mysql.c:358
+#: src/dird/fd_cmds.c:825 src/dird/fd_cmds.c:884 src/cats/sqlite.c:387
+#: src/cats/ingres.c:464 src/cats/postgresql.c:454 src/cats/dbi.c:565
+#: src/cats/mysql.c:371
 #, c-format
 msgid "Attribute create error. %s"
 msgstr ""
@@ -3231,19 +3273,19 @@ msgstr ""
 msgid "Negative numbers not permitted\n"
 msgstr ""
 
-#: src/dird/ua_label.c:110
+#: src/dird/ua_label.c:110 src/lib/sellist.c:76
 msgid "Range end is not integer.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:115
+#: src/dird/ua_label.c:115 src/lib/sellist.c:81
 msgid "Range start is not an integer.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:121
+#: src/dird/ua_label.c:121 src/lib/sellist.c:87
 msgid "Range end not bigger than start.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:127
+#: src/dird/ua_label.c:127 src/lib/sellist.c:94
 msgid "Input value is not an integer.\n"
 msgstr ""
 
@@ -3255,179 +3297,179 @@ msgstr ""
 msgid "Slot too large.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:187 src/dird/ua_label.c:352 src/dird/ua_label.c:1214
-#: src/dird/ua_run.c:1557
+#: src/dird/ua_label.c:189 src/dird/ua_label.c:366 src/dird/ua_label.c:1228
+#: src/dird/ua_run.c:1563
 msgid "command line"
 msgstr ""
 
-#: src/dird/ua_label.c:205 src/dird/ua_label.c:516 src/dird/ua_label.c:1221
+#: src/dird/ua_label.c:207 src/dird/ua_label.c:531 src/dird/ua_label.c:1235
 msgid "No slots in changer to scan.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:217 src/dird/ua_label.c:527
+#: src/dird/ua_label.c:219 src/dird/ua_label.c:542
 msgid "No Volumes found to label, or no barcodes.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:227 src/dird/ua_label.c:1242
+#: src/dird/ua_label.c:229 src/dird/ua_label.c:1256
 #, c-format
 msgid "Slot %d greater than max %d ignored.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:256
+#: src/dird/ua_label.c:267
 #, c-format
 msgid "No VolName for Slot=%d InChanger set to zero.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:274
+#: src/dird/ua_label.c:288
 #, c-format
 msgid "Catalog record for Volume \"%s\" updated to reference slot %d.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:278
+#: src/dird/ua_label.c:292
 #, c-format
 msgid "Catalog record for Volume \"%s\" is up to date.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:284
+#: src/dird/ua_label.c:298
 #, c-format
 msgid "Volume \"%s\" not found in catalog. Slot=%d InChanger set to zero.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:381
+#: src/dird/ua_label.c:394
 #, c-format
 msgid ""
 "Volume \"%s\" has VolStatus %s. It must be Purged or Recycled before "
 "relabeling.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:397
+#: src/dird/ua_label.c:410
 msgid "Enter new Volume name: "
 msgstr ""
 
-#: src/dird/ua_label.c:410
+#: src/dird/ua_label.c:425
 #, c-format
 msgid "Media record for new Volume \"%s\" already exists.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:428
+#: src/dird/ua_label.c:443
 msgid "Enter slot (0 or Enter for none): "
 msgstr ""
 
-#: src/dird/ua_label.c:456
+#: src/dird/ua_label.c:471
 #, c-format
 msgid "Delete of Volume \"%s\" failed. ERR=%s"
 msgstr ""
 
-#: src/dird/ua_label.c:459
+#: src/dird/ua_label.c:474
 #, c-format
 msgid "Old volume \"%s\" deleted from catalog.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:470
+#: src/dird/ua_label.c:485
 #, c-format
 msgid "Requesting to mount %s ...\n"
 msgstr ""
 
-#: src/dird/ua_label.c:492
+#: src/dird/ua_label.c:507
 msgid "Do not forget to mount the drive!!!\n"
 msgstr ""
 
-#: src/dird/ua_label.c:532
+#: src/dird/ua_label.c:547
 msgid ""
 "The following Volumes will be labeled:\n"
 "Slot  Volume\n"
 "==============\n"
 msgstr ""
 
-#: src/dird/ua_label.c:541
+#: src/dird/ua_label.c:556
 msgid "Do you want to label these Volumes? (yes|no): "
 msgstr ""
 
-#: src/dird/ua_label.c:562
+#: src/dird/ua_label.c:576
 #, c-format
 msgid "Media record for Slot %d Volume \"%s\" already exists.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:568
+#: src/dird/ua_label.c:582
 #, c-format
 msgid "Error setting InChanger: ERR=%s"
 msgstr ""
 
-#: src/dird/ua_label.c:591
+#: src/dird/ua_label.c:605
 #, c-format
 msgid "Maximum pool Volumes=%d reached.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:598
+#: src/dird/ua_label.c:613
 #, c-format
 msgid "Catalog record for cleaning tape \"%s\" successfully created.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:605
+#: src/dird/ua_label.c:620
 #, c-format
 msgid "Catalog error on cleaning tape: %s"
 msgstr ""
 
-#: src/dird/ua_label.c:641
+#: src/dird/ua_label.c:656
 #, c-format
 msgid "Illegal character \"%c\" in a volume name.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:688
+#: src/dird/ua_label.c:703
 #, c-format
 msgid "Sending relabel command from \"%s\" to \"%s\" ...\n"
 msgstr ""
 
-#: src/dird/ua_label.c:695
+#: src/dird/ua_label.c:710
 #, c-format
 msgid "Sending label command for Volume \"%s\" Slot %d ...\n"
 msgstr ""
 
-#: src/dird/ua_label.c:736
+#: src/dird/ua_label.c:751
 #, c-format
 msgid "Catalog record for Volume \"%s\", Slot %d  successfully created.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:749
+#: src/dird/ua_label.c:764
 #, c-format
 msgid "Label command failed for Volume %s.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:787
+#: src/dird/ua_label.c:802
 msgid "Could not open SD socket.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:859 src/dird/ua_label.c:869
+#: src/dird/ua_label.c:874 src/dird/ua_label.c:884
 #, c-format
 msgid "Invalid Slot number: %s\n"
 msgstr ""
 
-#: src/dird/ua_label.c:878
+#: src/dird/ua_label.c:893
 #, c-format
 msgid "Invalid Volume name: %s\n"
 msgstr ""
 
-#: src/dird/ua_label.c:972
+#: src/dird/ua_label.c:987
 #, c-format
 msgid "Device \"%s\" has %d slots.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:1018
+#: src/dird/ua_label.c:1033
 #, c-format
 msgid "Pool \"%s\" resource not found for volume \"%s\"!\n"
 msgstr ""
 
-#: src/dird/ua_label.c:1233
+#: src/dird/ua_label.c:1247
 msgid "No Volumes found, or no barcodes.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:1236
+#: src/dird/ua_label.c:1250
 msgid ""
 " Slot |   Volume Name    |   Status  |     Media Type       |      "
 "Pool          |\n"
 msgstr ""
 
-#: src/dird/ua_label.c:1237
+#: src/dird/ua_label.c:1251
 msgid ""
 "------+------------------+-----------+----------------------"
 "+--------------------|\n"
@@ -3647,16 +3689,16 @@ msgstr ""
 msgid "New Recycle flag is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:257 src/dird/ua_update.c:277 src/dird/ua_update.c:698
-#: src/dird/ua_run.c:180 src/dird/backup.c:778 src/dird/backup.c:779
-#: src/dird/backup.c:780 src/dird/ua_input.c:131 src/stored/parse_bsr.c:864
+#: src/dird/ua_update.c:257 src/dird/ua_update.c:277 src/dird/ua_update.c:699
+#: src/dird/ua_run.c:180 src/dird/backup.c:788 src/dird/backup.c:789
+#: src/dird/backup.c:790 src/dird/ua_input.c:131 src/stored/parse_bsr.c:863
 #: src/tools/dbcheck.c:1352
 msgid "yes"
 msgstr ""
 
-#: src/dird/ua_update.c:257 src/dird/ua_update.c:277 src/dird/ua_update.c:698
-#: src/dird/backup.c:778 src/dird/backup.c:779 src/dird/backup.c:780
-#: src/dird/ua_input.c:135 src/stored/parse_bsr.c:864
+#: src/dird/ua_update.c:257 src/dird/ua_update.c:277 src/dird/ua_update.c:699
+#: src/dird/ua_run.c:200 src/dird/backup.c:788 src/dird/backup.c:789
+#: src/dird/backup.c:790 src/dird/ua_input.c:135 src/stored/parse_bsr.c:863
 msgid "no"
 msgstr ""
 
@@ -3670,47 +3712,47 @@ msgstr ""
 msgid "Invalid slot, it must be between 0 and MaxVols=%d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:303 src/dird/ua_update.c:726
+#: src/dird/ua_update.c:304 src/dird/ua_update.c:728
 #, c-format
 msgid "Error updating media record Slot: ERR=%s"
 msgstr ""
 
-#: src/dird/ua_update.c:305
+#: src/dird/ua_update.c:306
 #, c-format
 msgid "New Slot is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:330
+#: src/dird/ua_update.c:331
 #, c-format
 msgid "New Pool is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:373
+#: src/dird/ua_update.c:374
 #, c-format
 msgid "New RecyclePool is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:393
+#: src/dird/ua_update.c:394
 #, c-format
 msgid "Error updating Volume record: ERR=%s"
 msgstr ""
 
-#: src/dird/ua_update.c:395
+#: src/dird/ua_update.c:396
 #, c-format
 msgid "Volume defaults updated from \"%s\" Pool record.\n"
 msgstr ""
 
-#: src/dird/ua_update.c:419 src/dird/ua_update.c:452
+#: src/dird/ua_update.c:419 src/dird/ua_update.c:451
 #, c-format
 msgid "Error updating Volume records: ERR=%s"
 msgstr ""
 
-#: src/dird/ua_update.c:421 src/dird/ua_update.c:454
+#: src/dird/ua_update.c:421 src/dird/ua_update.c:453
 #, c-format
 msgid "All Volume defaults updated from \"%s\" Pool record.\n"
 msgstr ""
 
-#: src/dird/ua_update.c:444
+#: src/dird/ua_update.c:443
 #, c-format
 msgid "Updating all pools, but skipped PoolId=%d. ERR=%s\n"
 msgstr ""
@@ -3725,276 +3767,276 @@ msgstr ""
 msgid "New Enabled is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:486
+#: src/dird/ua_update.c:487
 #, c-format
 msgid "Error updating media record ActionOnPurge: ERR=%s"
 msgstr ""
 
-#: src/dird/ua_update.c:489
+#: src/dird/ua_update.c:490
 #, c-format
 msgid "New ActionOnPurge is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:604 src/dird/ua_run.c:235
+#: src/dird/ua_update.c:605 src/dird/ua_run.c:222
 msgid "Parameters to modify:\n"
 msgstr ""
 
-#: src/dird/ua_update.c:605
+#: src/dird/ua_update.c:606
 msgid "Volume Status"
 msgstr ""
 
-#: src/dird/ua_update.c:606
+#: src/dird/ua_update.c:607
 msgid "Volume Retention Period"
 msgstr ""
 
-#: src/dird/ua_update.c:607
+#: src/dird/ua_update.c:608
 msgid "Volume Use Duration"
 msgstr ""
 
-#: src/dird/ua_update.c:608
+#: src/dird/ua_update.c:609
 msgid "Maximum Volume Jobs"
 msgstr ""
 
-#: src/dird/ua_update.c:609
+#: src/dird/ua_update.c:610
 msgid "Maximum Volume Files"
 msgstr ""
 
-#: src/dird/ua_update.c:610
+#: src/dird/ua_update.c:611
 msgid "Maximum Volume Bytes"
 msgstr ""
 
-#: src/dird/ua_update.c:611
+#: src/dird/ua_update.c:612
 msgid "Recycle Flag"
 msgstr ""
 
-#: src/dird/ua_update.c:612
+#: src/dird/ua_update.c:613
 msgid "Slot"
 msgstr ""
 
-#: src/dird/ua_update.c:613
+#: src/dird/ua_update.c:614
 msgid "InChanger Flag"
 msgstr ""
 
-#: src/dird/ua_update.c:614
+#: src/dird/ua_update.c:615
 msgid "Volume Files"
 msgstr ""
 
-#: src/dird/ua_update.c:616
+#: src/dird/ua_update.c:617
 msgid "Volume from Pool"
 msgstr ""
 
-#: src/dird/ua_update.c:617
+#: src/dird/ua_update.c:618
 msgid "All Volumes from Pool"
 msgstr ""
 
-#: src/dird/ua_update.c:618
+#: src/dird/ua_update.c:619
 msgid "All Volumes from all Pools"
 msgstr ""
 
-#: src/dird/ua_update.c:619
+#: src/dird/ua_update.c:620
 msgid "Enabled"
 msgstr ""
 
-#: src/dird/ua_update.c:620
+#: src/dird/ua_update.c:621
 msgid "RecyclePool"
 msgstr ""
 
-#: src/dird/ua_update.c:621
+#: src/dird/ua_update.c:622
 msgid "Action On Purge"
 msgstr ""
 
-#: src/dird/ua_update.c:622
+#: src/dird/ua_update.c:623
 msgid "Done"
 msgstr ""
 
-#: src/dird/ua_update.c:623 src/dird/ua_run.c:265 src/dird/ua_run.c:594
+#: src/dird/ua_update.c:624 src/dird/ua_run.c:252 src/dird/ua_run.c:600
 msgid "Select parameter to modify"
 msgstr ""
 
-#: src/dird/ua_update.c:631
+#: src/dird/ua_update.c:632
 #, c-format
 msgid "Updating Volume \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_update.c:636
+#: src/dird/ua_update.c:637
 #, c-format
 msgid "Current Volume status is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:637
+#: src/dird/ua_update.c:638
 msgid "Possible Values are:\n"
 msgstr ""
 
-#: src/dird/ua_update.c:648
+#: src/dird/ua_update.c:649
 msgid "Choose new Volume Status"
 msgstr ""
 
-#: src/dird/ua_update.c:654
+#: src/dird/ua_update.c:655
 #, c-format
 msgid "Current retention period is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:656
+#: src/dird/ua_update.c:657
 msgid "Enter Volume Retention period: "
 msgstr ""
 
-#: src/dird/ua_update.c:663
+#: src/dird/ua_update.c:664
 #, c-format
 msgid "Current use duration is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:665
+#: src/dird/ua_update.c:666
 msgid "Enter Volume Use Duration: "
 msgstr ""
 
-#: src/dird/ua_update.c:672
+#: src/dird/ua_update.c:673
 #, c-format
 msgid "Current max jobs is: %u\n"
 msgstr ""
 
-#: src/dird/ua_update.c:673
+#: src/dird/ua_update.c:674
 msgid "Enter new Maximum Jobs: "
 msgstr ""
 
-#: src/dird/ua_update.c:680
+#: src/dird/ua_update.c:681
 #, c-format
 msgid "Current max files is: %u\n"
 msgstr ""
 
-#: src/dird/ua_update.c:681
+#: src/dird/ua_update.c:682
 msgid "Enter new Maximum Files: "
 msgstr ""
 
-#: src/dird/ua_update.c:688
+#: src/dird/ua_update.c:689
 #, c-format
 msgid "Current value is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:689
+#: src/dird/ua_update.c:690
 msgid "Enter new Maximum Bytes: "
 msgstr ""
 
-#: src/dird/ua_update.c:697
+#: src/dird/ua_update.c:698
 #, c-format
 msgid "Current recycle flag is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:699
+#: src/dird/ua_update.c:700
 msgid "Enter new Recycle status: "
 msgstr ""
 
-#: src/dird/ua_update.c:706
+#: src/dird/ua_update.c:707
 #, c-format
 msgid "Current Slot is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:707
+#: src/dird/ua_update.c:708
 msgid "Enter new Slot: "
 msgstr ""
 
-#: src/dird/ua_update.c:714
+#: src/dird/ua_update.c:715
 #, c-format
 msgid "Current InChanger flag is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:715
+#: src/dird/ua_update.c:716
 #, c-format
 msgid "Set InChanger flag for Volume \"%s\": yes/no: "
 msgstr ""
 
-#: src/dird/ua_update.c:728
+#: src/dird/ua_update.c:730
 #, c-format
 msgid "New InChanger flag is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:735
+#: src/dird/ua_update.c:737
 msgid ""
 "Warning changing Volume Files can result\n"
 "in loss of data on your Volume\n"
 "\n"
 msgstr ""
 
-#: src/dird/ua_update.c:737
+#: src/dird/ua_update.c:739
 #, c-format
 msgid "Current Volume Files is: %u\n"
 msgstr ""
 
-#: src/dird/ua_update.c:738
+#: src/dird/ua_update.c:740
 msgid "Enter new number of Files for Volume: "
 msgstr ""
 
-#: src/dird/ua_update.c:743
+#: src/dird/ua_update.c:745
 msgid "Normally, you should only increase Volume Files by one!\n"
 msgstr ""
 
-#: src/dird/ua_update.c:744
+#: src/dird/ua_update.c:746
 msgid "Increase Volume Files? (yes/no): "
 msgstr ""
 
-#: src/dird/ua_update.c:754
+#: src/dird/ua_update.c:756
 #, c-format
 msgid "New Volume Files is: %u\n"
 msgstr ""
 
-#: src/dird/ua_update.c:766
+#: src/dird/ua_update.c:768
 #, c-format
 msgid "Current Pool is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:767
+#: src/dird/ua_update.c:769
 msgid "Enter new Pool name: "
 msgstr ""
 
-#: src/dird/ua_update.c:788
+#: src/dird/ua_update.c:790
 #, c-format
 msgid "Current Enabled is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:789
+#: src/dird/ua_update.c:791
 msgid "Enter new Enabled: "
 msgstr ""
 
-#: src/dird/ua_update.c:808
+#: src/dird/ua_update.c:810
 #, c-format
 msgid "Current RecyclePool is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:810
+#: src/dird/ua_update.c:812
 msgid "No current RecyclePool\n"
 msgstr ""
 
-#: src/dird/ua_update.c:820
+#: src/dird/ua_update.c:822
 #, c-format
 msgid "Current ActionOnPurge is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:822
+#: src/dird/ua_update.c:824
 msgid "Enter new ActionOnPurge (one of: Truncate, None): "
 msgstr ""
 
-#: src/dird/ua_update.c:830
+#: src/dird/ua_update.c:832
 msgid "Selection terminated.\n"
 msgstr ""
 
-#: src/dird/ua_update.c:850
+#: src/dird/ua_update.c:852
 #, c-format
 msgid "Updating %i job(s).\n"
 msgstr ""
 
-#: src/dird/ua_update.c:882
+#: src/dird/ua_update.c:884
 #, c-format
 msgid "db_update_pool_record returned %d. ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:889
+#: src/dird/ua_update.c:891
 msgid "Pool DB record updated from resource.\n"
 msgstr ""
 
-#: src/dird/ua_update.c:916
+#: src/dird/ua_update.c:918
 msgid "Expect JobId keyword, not found.\n"
 msgstr ""
 
-#: src/dird/ua_update.c:941
+#: src/dird/ua_update.c:943
 msgid "Neither Client nor StartTime specified.\n"
 msgstr ""
 
@@ -4036,7 +4078,7 @@ msgstr ""
 msgid "Pool resource \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/migrate.c:316 src/dird/migrate.c:896
+#: src/dird/migrate.c:316 src/dird/migrate.c:898
 #, c-format
 msgid "Could not get job record for JobId %s to %s. ERR=%s"
 msgstr ""
@@ -4051,145 +4093,140 @@ msgstr ""
 msgid "Start %s JobId %s, Job=%s\n"
 msgstr ""
 
-#: src/dird/migrate.c:710
+#: src/dird/migrate.c:712
 #, c-format
 msgid "No %s SQL selection pattern specified.\n"
 msgstr ""
 
-#: src/dird/migrate.c:717 src/dird/migrate.c:736 src/dird/migrate.c:757
-#: src/dird/migrate.c:793 src/dird/migrate.c:820 src/dird/migrate.c:954
-#: src/dird/migrate.c:987 src/dird/migrate.c:1116
+#: src/dird/migrate.c:719 src/dird/migrate.c:738 src/dird/migrate.c:759
+#: src/dird/migrate.c:795 src/dird/migrate.c:822 src/dird/migrate.c:956
+#: src/dird/migrate.c:989 src/dird/migrate.c:1118
 #, c-format
 msgid "SQL failed. ERR=%s\n"
 msgstr ""
 
-#: src/dird/migrate.c:740 src/dird/migrate.c:747 src/dird/migrate.c:761
-#: src/dird/migrate.c:824
+#: src/dird/migrate.c:742 src/dird/migrate.c:749 src/dird/migrate.c:763
+#: src/dird/migrate.c:826
 #, c-format
 msgid "No Volumes found to %s.\n"
 msgstr ""
 
-#: src/dird/migrate.c:775 src/dird/migrate.c:864 src/dird/migrate.c:884
+#: src/dird/migrate.c:777 src/dird/migrate.c:866 src/dird/migrate.c:886
 msgid "Invalid JobId found.\n"
 msgstr ""
 
-#: src/dird/migrate.c:835
+#: src/dird/migrate.c:837
 #, c-format
 msgid "Unknown %s Selection Type.\n"
 msgstr ""
 
-#: src/dird/migrate.c:846 src/dird/migrate.c:867 src/dird/migrate.c:887
+#: src/dird/migrate.c:848 src/dird/migrate.c:869 src/dird/migrate.c:889
 #, c-format
 msgid "No JobIds found to %s.\n"
 msgstr ""
 
-#: src/dird/migrate.c:850
+#: src/dird/migrate.c:852
 #, c-format
 msgid "The following %u JobId%s chosen to be %s: %s\n"
 msgstr ""
 
-#: src/dird/migrate.c:851
+#: src/dird/migrate.c:853
 msgid " was"
 msgstr ""
 
-#: src/dird/migrate.c:851
+#: src/dird/migrate.c:853
 msgid "s were"
 msgstr ""
 
-#: src/dird/migrate.c:903
+#: src/dird/migrate.c:905
 #, c-format
 msgid "%s using JobId=%s Job=%s\n"
 msgstr ""
 
-#: src/dird/migrate.c:937
+#: src/dird/migrate.c:939
 msgid "Could not start migration job.\n"
 msgstr ""
 
-#: src/dird/migrate.c:939
+#: src/dird/migrate.c:941
 #, c-format
 msgid "%s JobId %d started.\n"
 msgstr ""
 
-#: src/dird/migrate.c:958
+#: src/dird/migrate.c:960
 #, c-format
 msgid "No %s found to %s.\n"
 msgstr ""
 
-#: src/dird/migrate.c:962
+#: src/dird/migrate.c:964
 #, c-format
 msgid "SQL error. Expected 1 MediaId got %d\n"
 msgstr ""
 
-#: src/dird/migrate.c:991 src/dird/migrate.c:1121
+#: src/dird/migrate.c:993 src/dird/migrate.c:1123
 #, c-format
 msgid "No %ss found to %s.\n"
 msgstr ""
 
-#: src/dird/migrate.c:1013
+#: src/dird/migrate.c:1015
 msgid "Selection Type 'pooluncopiedjobs' only applies to Copy Jobs"
 msgstr ""
 
-#: src/dird/migrate.c:1022
+#: src/dird/migrate.c:1024
 #, c-format
 msgid "SQL to get uncopied jobs failed. ERR=%s\n"
 msgstr ""
 
-#: src/dird/migrate.c:1045
+#: src/dird/migrate.c:1047
 #, c-format
 msgid "No %s %s selection pattern specified.\n"
 msgstr ""
 
-#: src/dird/migrate.c:1056
+#: src/dird/migrate.c:1058
 #, c-format
 msgid "SQL to get %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/dird/migrate.c:1061
+#: src/dird/migrate.c:1063
 #, c-format
 msgid "Query of Pool \"%s\" returned no Jobs to %s.\n"
 msgstr ""
 
-#: src/dird/migrate.c:1070
-#, c-format
-msgid "Could not compile regex pattern \"%s\" ERR=%s\n"
-msgstr ""
-
-#: src/dird/migrate.c:1099
+#: src/dird/migrate.c:1101
 #, c-format
 msgid "Regex pattern matched no Jobs to %s.\n"
 msgstr ""
 
-#: src/dird/migrate.c:1264
+#: src/dird/migrate.c:1265
 #, c-format
 msgid "%s OK -- with warnings"
 msgstr ""
 
-#: src/dird/migrate.c:1266
+#: src/dird/migrate.c:1267
 #, c-format
 msgid "%s OK"
 msgstr ""
 
-#: src/dird/migrate.c:1271
+#: src/dird/migrate.c:1272
 #, c-format
 msgid "*** %s Error ***"
 msgstr ""
 
-#: src/dird/migrate.c:1281
+#: src/dird/migrate.c:1282
 #, c-format
 msgid "%s Canceled"
 msgstr ""
 
-#: src/dird/migrate.c:1290
+#: src/dird/migrate.c:1291
 #, c-format
 msgid "Inappropriate %s term code"
 msgstr ""
 
-#: src/dird/migrate.c:1300
+#: src/dird/migrate.c:1301
 #, c-format
 msgid "%s -- no files to %s"
 msgstr ""
 
-#: src/dird/migrate.c:1315
+#: src/dird/migrate.c:1316
 #, c-format
 msgid ""
 "%s %s %s (%s):\n"
@@ -4224,17 +4261,17 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/migrate.c:1426
+#: src/dird/migrate.c:1427
 #, c-format
 msgid "No Next Pool specification found in Pool \"%s\".\n"
 msgstr ""
 
-#: src/dird/migrate.c:1432
+#: src/dird/migrate.c:1433
 #, c-format
 msgid "No Storage specification found in Next Pool \"%s\".\n"
 msgstr ""
 
-#: src/dird/migrate.c:1438
+#: src/dird/migrate.c:1439
 msgid "Storage from Pool's NextPool resource"
 msgstr ""
 
@@ -4242,47 +4279,47 @@ msgstr ""
 msgid "Choose item to prune"
 msgstr ""
 
-#: src/dird/ua_prune.c:171
+#: src/dird/ua_prune.c:175
 #, c-format
 msgid "Cannot prune Volume \"%s\" because it is archived.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:213
+#: src/dird/ua_prune.c:217
 msgid "Pruned Jobs from JobHisto catalog.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:301
+#: src/dird/ua_prune.c:305
 msgid "Begin pruning Files.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:316
+#: src/dird/ua_prune.c:320
 msgid "No Files found to prune.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:339
+#: src/dird/ua_prune.c:343
 #, c-format
 msgid "Pruned Files from %s Jobs for client %s from catalog.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:481
+#: src/dird/ua_prune.c:489
 #, c-format
 msgid "Begin pruning Jobs older than %s.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:592
+#: src/dird/ua_prune.c:600
 #, c-format
 msgid "Pruned %d %s for client %s from catalog.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:593
+#: src/dird/ua_prune.c:601
 msgid "Jobs"
 msgstr ""
 
-#: src/dird/ua_prune.c:595
+#: src/dird/ua_prune.c:603
 msgid "No Jobs found to prune.\n"
 msgstr ""
 
-#: src/dird/autoprune.c:76
+#: src/dird/autoprune.c:75
 msgid ""
 "End auto prune.\n"
 "\n"
@@ -4301,50 +4338,58 @@ msgstr ""
 msgid "Job queued. JobId=%s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:202
+#: src/dird/ua_run.c:203
+#, c-format
+msgid ""
+"\n"
+"Bad response: %s. You must answer yes, mod, or no.\n"
+"\n"
+msgstr ""
+
+#: src/dird/ua_run.c:207
 msgid "Job not run.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:236
+#: src/dird/ua_run.c:223
 msgid "Level"
 msgstr ""
 
-#: src/dird/ua_run.c:241
+#: src/dird/ua_run.c:228
 msgid "Restore Client"
 msgstr ""
 
-#: src/dird/ua_run.c:245 src/wx-console/wxbrestorepanel.cpp:356
+#: src/dird/ua_run.c:232 src/wx-console/wxbrestorepanel.cpp:356
 #: src/wx-console/wxbrestorepanel.cpp:854
 #: src/wx-console/wxbrestorepanel.cpp:1918
 msgid "When"
 msgstr ""
 
-#: src/dird/ua_run.c:246 src/wx-console/wxbrestorepanel.cpp:357
+#: src/dird/ua_run.c:233 src/wx-console/wxbrestorepanel.cpp:357
 #: src/wx-console/wxbrestorepanel.cpp:1128
 #: src/wx-console/wxbrestorepanel.cpp:1921
 msgid "Priority"
 msgstr ""
 
-#: src/dird/ua_run.c:253
+#: src/dird/ua_run.c:240
 msgid "Verify Job"
 msgstr ""
 
-#: src/dird/ua_run.c:256 src/wx-console/wxbrestorepanel.cpp:349
+#: src/dird/ua_run.c:243 src/wx-console/wxbrestorepanel.cpp:349
 #: src/wx-console/wxbrestorepanel.cpp:1899
 msgid "Bootstrap"
 msgstr ""
 
-#: src/dird/ua_run.c:257 src/wx-console/wxbrestorepanel.cpp:350
+#: src/dird/ua_run.c:244 src/wx-console/wxbrestorepanel.cpp:350
 #: src/wx-console/wxbrestorepanel.cpp:1104
 #: src/wx-console/wxbrestorepanel.cpp:1901
 msgid "Where"
 msgstr ""
 
-#: src/dird/ua_run.c:258
+#: src/dird/ua_run.c:245
 msgid "File Relocation"
 msgstr ""
 
-#: src/dird/ua_run.c:259 src/wx-console/wxbrestorepanel.cpp:352
+#: src/dird/ua_run.c:246 src/wx-console/wxbrestorepanel.cpp:352
 #: src/wx-console/wxbrestorepanel.cpp:1112
 #: src/wx-console/wxbrestorepanel.cpp:1905
 #: src/wx-console/wxbrestorepanel.cpp:1906
@@ -4354,212 +4399,212 @@ msgstr ""
 msgid "Replace"
 msgstr ""
 
-#: src/dird/ua_run.c:260
+#: src/dird/ua_run.c:247
 msgid "JobId"
 msgstr ""
 
-#: src/dird/ua_run.c:263
+#: src/dird/ua_run.c:250
 msgid "Plugin Options"
 msgstr ""
 
-#: src/dird/ua_run.c:274 src/dird/ua_run.c:1563
+#: src/dird/ua_run.c:261 src/dird/ua_run.c:1569
 msgid "user selection"
 msgstr ""
 
-#: src/dird/ua_run.c:306
+#: src/dird/ua_run.c:293
 msgid ""
 "Please enter desired start time as YYYY-MM-DD HH:MM:SS (return for now): "
 msgstr ""
 
-#: src/dird/ua_run.c:314 src/dird/ua_run.c:490
+#: src/dird/ua_run.c:301 src/dird/ua_run.c:477
 msgid "Invalid time, using current time.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:321
+#: src/dird/ua_run.c:308
 msgid "Enter new Priority: "
 msgstr ""
 
-#: src/dird/ua_run.c:325
+#: src/dird/ua_run.c:312
 msgid "Priority must be a positive integer.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:346
+#: src/dird/ua_run.c:333
 msgid "Please enter the Bootstrap file name: "
 msgstr ""
 
-#: src/dird/ua_run.c:358
+#: src/dird/ua_run.c:345
 #, c-format
 msgid "Warning cannot open %s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:377
-msgid "Please enter path prefix for restore (/ for none): "
+#: src/dird/ua_run.c:364
+msgid "Please enter the full path prefix for restore (/ for none): "
 msgstr ""
 
-#: src/dird/ua_run.c:399
+#: src/dird/ua_run.c:386
 msgid "Replace:\n"
 msgstr ""
 
-#: src/dird/ua_run.c:403
+#: src/dird/ua_run.c:390
 msgid "Select replace option"
 msgstr ""
 
-#: src/dird/ua_run.c:414
+#: src/dird/ua_run.c:401
 msgid ""
 "You must set the bootstrap file to NULL to be able to specify a JobId.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:419
+#: src/dird/ua_run.c:406
 msgid "Please Plugin Options string: "
 msgstr ""
 
-#: src/dird/ua_run.c:457 src/dird/ua_run.c:466
+#: src/dird/ua_run.c:444 src/dird/ua_run.c:453
 msgid "User input"
 msgstr ""
 
-#: src/dird/ua_run.c:520
+#: src/dird/ua_run.c:507
 #, c-format
 msgid "Invalid replace option: %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:583
+#: src/dird/ua_run.c:589
 #, c-format
 msgid "strip_prefix=%s add_prefix=%s add_suffix=%s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:586
+#: src/dird/ua_run.c:592
 msgid "This will replace your current Where value\n"
 msgstr ""
 
-#: src/dird/ua_run.c:587
+#: src/dird/ua_run.c:593
 msgid "Strip prefix"
 msgstr ""
 
-#: src/dird/ua_run.c:588
+#: src/dird/ua_run.c:594
 msgid "Add prefix"
 msgstr ""
 
-#: src/dird/ua_run.c:589
+#: src/dird/ua_run.c:595
 msgid "Add file suffix"
 msgstr ""
 
-#: src/dird/ua_run.c:590
+#: src/dird/ua_run.c:596
 msgid "Enter a regexp"
 msgstr ""
 
-#: src/dird/ua_run.c:591
+#: src/dird/ua_run.c:597
 msgid "Test filename manipulation"
 msgstr ""
 
-#: src/dird/ua_run.c:592
+#: src/dird/ua_run.c:598
 msgid "Use this ?"
 msgstr ""
 
-#: src/dird/ua_run.c:597
-msgid "Please enter path prefix to strip: "
+#: src/dird/ua_run.c:603
+msgid "Please enter the path prefix to strip: "
 msgstr ""
 
-#: src/dird/ua_run.c:605
-msgid "Please enter path prefix to add (/ for none): "
+#: src/dird/ua_run.c:611
+msgid "Please enter the path prefix to add (/ for none): "
 msgstr ""
 
-#: src/dird/ua_run.c:616
-msgid "Please enter file suffix to add: "
+#: src/dird/ua_run.c:622
+msgid "Please enter the file suffix to add: "
 msgstr ""
 
-#: src/dird/ua_run.c:623
+#: src/dird/ua_run.c:629
 msgid "Please enter a valid regexp (!from!to!): "
 msgstr ""
 
-#: src/dird/ua_run.c:636
+#: src/dird/ua_run.c:642
 #, c-format
 msgid "regexwhere=%s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:642
+#: src/dird/ua_run.c:648
 #, c-format
 msgid "strip_prefix=%s add_prefix=%s add_suffix=%s result=%s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:649
+#: src/dird/ua_run.c:655
 msgid "Cannot use your regexp\n"
 msgstr ""
 
-#: src/dird/ua_run.c:652
+#: src/dird/ua_run.c:658
 msgid "Enter a period (.) to stop this test\n"
 msgstr ""
 
-#: src/dird/ua_run.c:653
+#: src/dird/ua_run.c:659
 msgid "Please enter filename to test: "
 msgstr ""
 
-#: src/dird/ua_run.c:655
+#: src/dird/ua_run.c:661
 #, c-format
 msgid "%s -> %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:699
+#: src/dird/ua_run.c:705
 msgid "Cannot use your regexp.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:712 src/dird/ua_run.c:742
+#: src/dird/ua_run.c:718 src/dird/ua_run.c:748
 msgid "Levels:\n"
 msgstr ""
 
-#: src/dird/ua_run.c:714 src/stored/status.c:600 src/lib/util.c:426
+#: src/dird/ua_run.c:720 src/stored/status.c:665 src/lib/util.c:426
 #: src/lib/util.c:472 src/filed/status.c:519
 msgid "Full"
 msgstr ""
 
-#: src/dird/ua_run.c:715 src/stored/status.c:603 src/lib/util.c:429
+#: src/dird/ua_run.c:721 src/stored/status.c:668 src/lib/util.c:429
 #: src/filed/status.c:522
 msgid "Incremental"
 msgstr ""
 
-#: src/dird/ua_run.c:716 src/stored/status.c:606 src/lib/util.c:432
+#: src/dird/ua_run.c:722 src/stored/status.c:671 src/lib/util.c:432
 #: src/filed/status.c:525
 msgid "Differential"
 msgstr ""
 
-#: src/dird/ua_run.c:717 src/stored/status.c:609 src/lib/util.c:435
+#: src/dird/ua_run.c:723 src/stored/status.c:674 src/lib/util.c:435
 #: src/filed/status.c:528
 msgid "Since"
 msgstr ""
 
-#: src/dird/ua_run.c:718
+#: src/dird/ua_run.c:724
 msgid "VirtualFull"
 msgstr ""
 
-#: src/dird/ua_run.c:719 src/dird/ua_run.c:748
+#: src/dird/ua_run.c:725 src/dird/ua_run.c:754
 msgid "Select level"
 msgstr ""
 
-#: src/dird/ua_run.c:743
+#: src/dird/ua_run.c:749
 msgid "Initialize Catalog"
 msgstr ""
 
-#: src/dird/ua_run.c:744 src/stored/status.c:612 src/lib/util.c:438
+#: src/dird/ua_run.c:750 src/stored/status.c:677 src/lib/util.c:438
 #: src/filed/status.c:531
 msgid "Verify Catalog"
 msgstr ""
 
-#: src/dird/ua_run.c:745 src/lib/util.c:444
+#: src/dird/ua_run.c:751 src/lib/util.c:444
 msgid "Verify Volume to Catalog"
 msgstr ""
 
-#: src/dird/ua_run.c:746 src/lib/util.c:447
+#: src/dird/ua_run.c:752 src/lib/util.c:447
 msgid "Verify Disk to Catalog"
 msgstr ""
 
-#: src/dird/ua_run.c:747
+#: src/dird/ua_run.c:753
 msgid "Verify Volume Data (not yet implemented)"
 msgstr ""
 
-#: src/dird/ua_run.c:768
+#: src/dird/ua_run.c:774
 msgid "Level not appropriate for this Job. Cannot be changed.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:799
+#: src/dird/ua_run.c:805
 #, c-format
 msgid ""
 "Run Admin Job\n"
@@ -4571,7 +4616,7 @@ msgid ""
 "Priority: %d\n"
 msgstr ""
 
-#: src/dird/ua_run.c:843
+#: src/dird/ua_run.c:849
 #, c-format
 msgid ""
 "Run Backup job\n"
@@ -4586,12 +4631,12 @@ msgid ""
 "%s%s%s"
 msgstr ""
 
-#: src/dird/ua_run.c:874
+#: src/dird/ua_run.c:880
 #, c-format
 msgid "Could not get job record for selected JobId. ERR=%s"
 msgstr ""
 
-#: src/dird/ua_run.c:913
+#: src/dird/ua_run.c:919
 #, c-format
 msgid ""
 "Run Verify Job\n"
@@ -4607,11 +4652,11 @@ msgid ""
 "Priority:    %d\n"
 msgstr ""
 
-#: src/dird/ua_run.c:942
+#: src/dird/ua_run.c:948
 msgid "Please enter a JobId for restore: "
 msgstr ""
 
-#: src/dird/ua_run.c:982
+#: src/dird/ua_run.c:988
 #, c-format
 msgid ""
 "Run Restore job\n"
@@ -4629,7 +4674,7 @@ msgid ""
 "Plugin Options:  %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1038
+#: src/dird/ua_run.c:1044
 #, c-format
 msgid ""
 "Run Restore job\n"
@@ -4647,7 +4692,7 @@ msgid ""
 "Plugin Options:  %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1069
+#: src/dird/ua_run.c:1075
 #, c-format
 msgid ""
 "Run Restore job\n"
@@ -4655,17 +4700,17 @@ msgid ""
 "Bootstrap:  %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1077
+#: src/dird/ua_run.c:1083
 #, c-format
 msgid "RegexWhere: %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1080
+#: src/dird/ua_run.c:1086
 #, c-format
 msgid "Where:      %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1084
+#: src/dird/ua_run.c:1090
 #, c-format
 msgid ""
 "Replace:         %s\n"
@@ -4678,245 +4723,245 @@ msgid ""
 "Plugin Options:  %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1139
+#: src/dird/ua_run.c:1145
 msgid "Run Copy job\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1141
+#: src/dird/ua_run.c:1147
 msgid "Run Migration job\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1170
+#: src/dird/ua_run.c:1176
 #, c-format
 msgid "Unknown Job Type=%d\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1239
+#: src/dird/ua_run.c:1245
 #, c-format
 msgid "Value missing for keyword %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1246
+#: src/dird/ua_run.c:1252
 msgid "Job name specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1254
+#: src/dird/ua_run.c:1260
 msgid "JobId specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1263 src/dird/ua_run.c:1403
+#: src/dird/ua_run.c:1269 src/dird/ua_run.c:1409
 msgid "Client specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1271
+#: src/dird/ua_run.c:1277
 msgid "FileSet specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1279
+#: src/dird/ua_run.c:1285
 msgid "Level specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1288
+#: src/dird/ua_run.c:1294
 msgid "Storage specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1296
+#: src/dird/ua_run.c:1302
 msgid "RegexWhere or Where specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1301
+#: src/dird/ua_run.c:1307
 msgid "No authorization for \"regexwhere\" specification.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1308
+#: src/dird/ua_run.c:1314
 msgid "Where or RegexWhere specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1313
+#: src/dird/ua_run.c:1319
 msgid "No authoriztion for \"where\" specification.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1320
+#: src/dird/ua_run.c:1326
 msgid "Bootstrap specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1328
+#: src/dird/ua_run.c:1334
 msgid "Replace specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1336
+#: src/dird/ua_run.c:1342
 msgid "When specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1344
+#: src/dird/ua_run.c:1350
 msgid "Priority specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1349
+#: src/dird/ua_run.c:1355
 msgid "Priority must be positive nonzero setting it to 10.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1359
+#: src/dird/ua_run.c:1365
 msgid "Verify Job specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1387
+#: src/dird/ua_run.c:1393
 msgid "Migration Job specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1395
+#: src/dird/ua_run.c:1401
 msgid "Pool specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1411
+#: src/dird/ua_run.c:1417
 msgid "Restore Client specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1418
+#: src/dird/ua_run.c:1424
 msgid "Plugin Options not yet implemented.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1421
+#: src/dird/ua_run.c:1427
 msgid "Plugin Options specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1426
+#: src/dird/ua_run.c:1432
 msgid "No authoriztion for \"PluginOptions\" specification.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1433
+#: src/dird/ua_run.c:1439
 msgid "Spool flag specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1440
+#: src/dird/ua_run.c:1446
 msgid "Invalid spooldata flag.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1449
+#: src/dird/ua_run.c:1455
 msgid "IgnoreDuplicateCheck flag specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1456
+#: src/dird/ua_run.c:1462
 msgid "Invalid ignoreduplicatecheck flag.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1461
+#: src/dird/ua_run.c:1467
 msgid "Accurate flag specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1468
+#: src/dird/ua_run.c:1474
 msgid "Invalid accurate flag.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1489
+#: src/dird/ua_run.c:1495
 #, c-format
 msgid "Invalid keyword: %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1504
+#: src/dird/ua_run.c:1510
 #, c-format
 msgid "Catalog \"%s\" not found\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1508
+#: src/dird/ua_run.c:1514
 #, c-format
 msgid "No authorization. Catalog \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1519
+#: src/dird/ua_run.c:1525
 #, c-format
 msgid "Job \"%s\" not found\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1526
+#: src/dird/ua_run.c:1532
 msgid "A job name must be specified.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1532
+#: src/dird/ua_run.c:1538
 #, c-format
 msgid "No authorization. Job \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1540
+#: src/dird/ua_run.c:1546
 #, c-format
 msgid "Pool \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1550
+#: src/dird/ua_run.c:1556
 #, c-format
 msgid "No authorization. Pool \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1560
+#: src/dird/ua_run.c:1566
 #, c-format
 msgid "Storage \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1569 src/dird/job.c:1242
+#: src/dird/ua_run.c:1575 src/dird/job.c:1245
 msgid "No storage specified.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1572
+#: src/dird/ua_run.c:1578
 #, c-format
 msgid "No authorization. Storage \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1592 src/dird/ua_run.c:1612
+#: src/dird/ua_run.c:1598 src/dird/ua_run.c:1618
 #, c-format
 msgid "No authorization. Client \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1602
+#: src/dird/ua_run.c:1608
 #, c-format
 msgid "Restore Client \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1621
+#: src/dird/ua_run.c:1627
 #, c-format
 msgid "FileSet \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1630
+#: src/dird/ua_run.c:1636
 #, c-format
 msgid "No authorization. FileSet \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1638
+#: src/dird/ua_run.c:1644
 #, c-format
 msgid "Verify Job \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1648
+#: src/dird/ua_run.c:1654
 #, c-format
 msgid "Migration Job \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:180 src/stored/sd_plugins.c:183
-#: src/filed/fd_plugins.c:973
+#: src/dird/dir_plugins.c:181 src/stored/sd_plugins.c:194
+#: src/filed/fd_plugins.c:1130
 #, c-format
 msgid "Loaded plugin: %s\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:200 src/stored/sd_plugins.c:203
-#: src/filed/fd_plugins.c:992
+#: src/dird/dir_plugins.c:201 src/stored/sd_plugins.c:214
+#: src/filed/fd_plugins.c:1151
 #, c-format
 msgid "Plugin magic wrong. Plugin=%s wanted=%s got=%s\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:208 src/stored/sd_plugins.c:211
-#: src/filed/fd_plugins.c:1000
+#: src/dird/dir_plugins.c:209 src/stored/sd_plugins.c:222
+#: src/filed/fd_plugins.c:1159
 #, c-format
 msgid "Plugin version incorrect. Plugin=%s wanted=%d got=%d\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:217 src/stored/sd_plugins.c:220
-#: src/filed/fd_plugins.c:1008
+#: src/dird/dir_plugins.c:218 src/stored/sd_plugins.c:231
+#: src/filed/fd_plugins.c:1167
 #, c-format
 msgid "Plugin license incompatible. Plugin=%s license=%s\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:225 src/stored/sd_plugins.c:228
-#: src/filed/fd_plugins.c:1016
+#: src/dird/dir_plugins.c:226 src/stored/sd_plugins.c:239
+#: src/filed/fd_plugins.c:1175
 #, c-format
 msgid "Plugin size incorrect. Plugin=%s wanted=%d got=%d\n"
 msgstr ""
@@ -4943,25 +4988,25 @@ msgstr ""
 msgid "Start Backup JobId %s, Job=%s\n"
 msgstr ""
 
-#: src/dird/backup.c:517
+#: src/dird/backup.c:521
 #, c-format
 msgid "Unexpected Client Job message: %s\n"
 msgstr ""
 
-#: src/dird/backup.c:530
+#: src/dird/backup.c:534
 #, c-format
 msgid "Network error with FD during %s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/backup.c:565
+#: src/dird/backup.c:569
 msgid "No Job status returned from FD.\n"
 msgstr ""
 
-#: src/dird/backup.c:647
+#: src/dird/backup.c:657
 msgid "Backup failed -- incomplete"
 msgstr ""
 
-#: src/dird/backup.c:720
+#: src/dird/backup.c:730
 #, c-format
 msgid ""
 "%s %s %s (%s):\n"
@@ -5000,19 +5045,19 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/backup.c:822
+#: src/dird/backup.c:832
 #, c-format
 msgid "Could not get Job Volume Parameters to update Bootstrap file. ERR=%s\n"
 msgstr ""
 
-#: src/dird/backup.c:858
+#: src/dird/backup.c:868
 #, c-format
 msgid ""
 "Could not open WriteBootstrap file:\n"
 "%s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/restore.c:137 src/dird/msgchan.c:463 src/filed/job.c:2409
+#: src/dird/restore.c:137 src/dird/msgchan.c:476
 #, c-format
 msgid "Could not open bootstrap file %s: ERR=%s\n"
 msgstr ""
@@ -5027,39 +5072,39 @@ msgstr ""
 msgid "Could not acquire read storage lock for \"%s\""
 msgstr ""
 
-#: src/dird/restore.c:502
+#: src/dird/restore.c:505
 msgid ""
 "Cannot restore without a bootstrap file.\n"
 "You probably ran a restore job directly. All restore jobs must\n"
 "be run using the restore command.\n"
 msgstr ""
 
-#: src/dird/restore.c:510
+#: src/dird/restore.c:513
 #, c-format
 msgid "Start Restore Job %s\n"
 msgstr ""
 
-#: src/dird/restore.c:561
+#: src/dird/restore.c:564
 msgid "Restore OK -- warning file count mismatch"
 msgstr ""
 
-#: src/dird/restore.c:563
+#: src/dird/restore.c:566
 msgid "Restore OK"
 msgstr ""
 
-#: src/dird/restore.c:567
+#: src/dird/restore.c:570
 msgid "Restore OK -- with warnings"
 msgstr ""
 
-#: src/dird/restore.c:571
+#: src/dird/restore.c:574
 msgid "*** Restore Error ***"
 msgstr ""
 
-#: src/dird/restore.c:581
+#: src/dird/restore.c:584
 msgid "Restore Canceled"
 msgstr ""
 
-#: src/dird/restore.c:608
+#: src/dird/restore.c:611
 #, c-format
 msgid ""
 "%s %s %s (%s):\n"
@@ -5088,7 +5133,7 @@ msgstr ""
 msgid "Select daemon type for status"
 msgstr ""
 
-#: src/dird/ua_status.c:294 src/stored/status.c:218
+#: src/dird/ua_status.c:294 src/stored/status.c:248
 #, c-format
 msgid "%s Version: %s (%s) %s %s %s\n"
 msgstr ""
@@ -5098,7 +5143,7 @@ msgstr ""
 msgid "Daemon started %s. Jobs: run=%d, running=%d mode=%d,%d\n"
 msgstr ""
 
-#: src/dird/ua_status.c:300 src/stored/status.c:228 src/filed/status.c:142
+#: src/dird/ua_status.c:300 src/stored/status.c:258 src/filed/status.c:142
 #, c-format
 msgid " Heap: heap=%s smbytes=%s max_bytes=%s bufs=%s max_bufs=%s\n"
 msgstr ""
@@ -5137,242 +5182,242 @@ msgstr ""
 msgid "===================================================================================\n"
 msgstr ""
 
-#: src/dird/ua_status.c:487
+#: src/dird/ua_status.c:486
 #, c-format
 msgid "%-14s\t%-8s\t%3d\t%-18s\t%-18s\t%s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:491
+#: src/dird/ua_status.c:490
 #, c-format
 msgid "%-14s %-8s %3d  %-18s %-18s %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:545
+#: src/dird/ua_status.c:544
 msgid "Ignoring invalid value for days. Max is 500.\n"
 msgstr ""
 
-#: src/dird/ua_status.c:588
+#: src/dird/ua_status.c:587
 msgid "No Scheduled Jobs.\n"
 msgstr ""
 
-#: src/dird/ua_status.c:605 src/stored/status.c:396 src/filed/status.c:183
+#: src/dird/ua_status.c:604 src/stored/status.c:450 src/filed/status.c:183
 msgid ""
 "\n"
 "Running Jobs:\n"
 msgstr ""
 
-#: src/dird/ua_status.c:613
+#: src/dird/ua_status.c:612
 #, c-format
 msgid "Console connected at %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:623
+#: src/dird/ua_status.c:622
 msgid ""
 "No Jobs running.\n"
 "====\n"
 msgstr ""
 
-#: src/dird/ua_status.c:629
+#: src/dird/ua_status.c:628
 msgid " JobId Level   Name                       Status\n"
 msgstr ""
 
-#: src/dird/ua_status.c:630 src/filed/status.c:342
+#: src/dird/ua_status.c:629 src/filed/status.c:342
 msgid "======================================================================\n"
 msgstr ""
 
-#: src/dird/ua_status.c:639
+#: src/dird/ua_status.c:638
 msgid "is waiting execution"
 msgstr ""
 
-#: src/dird/ua_status.c:642
+#: src/dird/ua_status.c:641
 msgid "is running"
 msgstr ""
 
-#: src/dird/ua_status.c:645
+#: src/dird/ua_status.c:644
 msgid "is blocked"
 msgstr ""
 
-#: src/dird/ua_status.c:648
+#: src/dird/ua_status.c:647
 msgid "has terminated"
 msgstr ""
 
-#: src/dird/ua_status.c:651
+#: src/dird/ua_status.c:650
 msgid "has terminated with warnings"
 msgstr ""
 
-#: src/dird/ua_status.c:654
+#: src/dird/ua_status.c:653
 msgid "has erred"
 msgstr ""
 
-#: src/dird/ua_status.c:657
+#: src/dird/ua_status.c:656
 msgid "has errors"
 msgstr ""
 
-#: src/dird/ua_status.c:660
+#: src/dird/ua_status.c:659
 msgid "has a fatal error"
 msgstr ""
 
-#: src/dird/ua_status.c:663
+#: src/dird/ua_status.c:662
 msgid "has verify differences"
 msgstr ""
 
-#: src/dird/ua_status.c:666
+#: src/dird/ua_status.c:665
 msgid "has been canceled"
 msgstr ""
 
-#: src/dird/ua_status.c:671
+#: src/dird/ua_status.c:670
 msgid "is waiting on Client"
 msgstr ""
 
-#: src/dird/ua_status.c:673
+#: src/dird/ua_status.c:672
 #, c-format
 msgid "is waiting on Client %s"
 msgstr ""
 
-#: src/dird/ua_status.c:681 src/dird/ua_status.c:683
+#: src/dird/ua_status.c:680 src/dird/ua_status.c:682
 #, c-format
 msgid "is waiting on Storage \"%s\""
 msgstr ""
 
-#: src/dird/ua_status.c:685
+#: src/dird/ua_status.c:684
 msgid "is waiting on Storage"
 msgstr ""
 
-#: src/dird/ua_status.c:691
+#: src/dird/ua_status.c:690
 msgid "is waiting on max Storage jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:694
+#: src/dird/ua_status.c:693
 msgid "is waiting on max Client jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:697
+#: src/dird/ua_status.c:696
 msgid "is waiting on max Job jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:700
+#: src/dird/ua_status.c:699
 msgid "is waiting on max total jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:703
+#: src/dird/ua_status.c:702
 msgid "is waiting for its start time"
 msgstr ""
 
-#: src/dird/ua_status.c:706
+#: src/dird/ua_status.c:705
 msgid "is waiting for higher priority jobs to finish"
 msgstr ""
 
-#: src/dird/ua_status.c:709 src/dird/ua_status.c:760 src/lib/util.c:241
+#: src/dird/ua_status.c:708 src/dird/ua_status.c:759 src/lib/util.c:241
 msgid "SD committing Data"
 msgstr ""
 
-#: src/dird/ua_status.c:712 src/dird/ua_status.c:763 src/lib/util.c:244
+#: src/dird/ua_status.c:711 src/dird/ua_status.c:762 src/lib/util.c:244
 msgid "SD despooling Data"
 msgstr ""
 
-#: src/dird/ua_status.c:715 src/dird/ua_status.c:766 src/lib/util.c:247
+#: src/dird/ua_status.c:714 src/dird/ua_status.c:765 src/lib/util.c:247
 msgid "SD despooling Attributes"
 msgstr ""
 
-#: src/dird/ua_status.c:718 src/dird/ua_status.c:769 src/lib/util.c:250
+#: src/dird/ua_status.c:717 src/dird/ua_status.c:768 src/lib/util.c:250
 msgid "Dir inserting Attributes"
 msgstr ""
 
-#: src/dird/ua_status.c:723
+#: src/dird/ua_status.c:722
 #, c-format
 msgid "is in unknown state %c"
 msgstr ""
 
-#: src/dird/ua_status.c:737
+#: src/dird/ua_status.c:736
 msgid "is waiting for a mount request"
 msgstr ""
 
-#: src/dird/ua_status.c:744
+#: src/dird/ua_status.c:743
 msgid "is waiting for an appendable Volume"
 msgstr ""
 
-#: src/dird/ua_status.c:752
+#: src/dird/ua_status.c:751
 msgid "is waiting for Client to connect to Storage daemon"
 msgstr ""
 
-#: src/dird/ua_status.c:754
+#: src/dird/ua_status.c:753
 #, c-format
 msgid "is waiting for Client %s to connect to Storage %s"
 msgstr ""
 
-#: src/dird/ua_status.c:785
+#: src/dird/ua_status.c:784
 #, c-format
 msgid "%6d\t%-6s\t%-20s\t%s\t%s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:789
+#: src/dird/ua_status.c:788
 #, c-format
 msgid "%6d %-6s  %-20s %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:793
+#: src/dird/ua_status.c:792
 #, c-format
 msgid "               %-30s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:813
+#: src/dird/ua_status.c:812
 msgid "No Terminated Jobs.\n"
 msgstr ""
 
-#: src/dird/ua_status.c:819 src/stored/status.c:507 src/filed/status.c:330
+#: src/dird/ua_status.c:818 src/stored/status.c:572 src/filed/status.c:330
 msgid ""
 "\n"
 "Terminated Jobs:\n"
 msgstr ""
 
-#: src/dird/ua_status.c:820 src/stored/status.c:514 src/filed/status.c:340
+#: src/dird/ua_status.c:819 src/stored/status.c:579 src/filed/status.c:340
 msgid " JobId  Level    Files      Bytes   Status   Finished        Name \n"
 msgstr ""
 
-#: src/dird/ua_status.c:821
+#: src/dird/ua_status.c:820
 msgid "====================================================================\n"
 msgstr ""
 
-#: src/dird/ua_status.c:853 src/stored/status.c:536 src/lib/util.c:180
+#: src/dird/ua_status.c:852 src/stored/status.c:601 src/lib/util.c:180
 #: src/filed/status.c:363
 msgid "Created"
 msgstr ""
 
-#: src/dird/ua_status.c:857 src/stored/status.c:540 src/lib/util.c:196
+#: src/dird/ua_status.c:856 src/stored/status.c:605 src/lib/util.c:196
 #: src/lib/util.c:331 src/lib/util.c:478 src/filed/status.c:367
 msgid "Error"
 msgstr ""
 
-#: src/dird/ua_status.c:860 src/stored/status.c:543 src/filed/status.c:370
+#: src/dird/ua_status.c:859 src/stored/status.c:608 src/filed/status.c:370
 msgid "Diffs"
 msgstr ""
 
-#: src/dird/ua_status.c:866 src/stored/status.c:549 src/stored/btape.c:1521
+#: src/dird/ua_status.c:865 src/stored/status.c:614 src/stored/btape.c:1523
 #: src/lib/util.c:189 src/lib/util.c:324 src/filed/status.c:376
 #: src/wx-console/wxbconfigpanel.cpp:209
 msgid "OK"
 msgstr ""
 
-#: src/dird/ua_status.c:869 src/stored/status.c:552 src/lib/util.c:202
+#: src/dird/ua_status.c:868 src/stored/status.c:617 src/lib/util.c:202
 #: src/lib/util.c:327
 msgid "OK -- with warnings"
 msgstr ""
 
-#: src/dird/ua_status.c:872 src/stored/status.c:555 src/filed/status.c:379
+#: src/dird/ua_status.c:871 src/stored/status.c:620 src/filed/status.c:379
 msgid "Other"
 msgstr ""
 
-#: src/dird/ua_status.c:876 src/stored/status.c:567 src/filed/status.c:391
+#: src/dird/ua_status.c:875 src/stored/status.c:632 src/filed/status.c:391
 #, c-format
 msgid "%6d\t%-6s\t%8s\t%10s\t%-7s\t%-8s\t%s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:884 src/stored/status.c:575 src/filed/status.c:399
+#: src/dird/ua_status.c:883 src/stored/status.c:640 src/filed/status.c:399
 #, c-format
 msgid "%6d  %-6s %8s %10s  %-7s  %-8s %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:893
+#: src/dird/ua_status.c:892
 msgid "\n"
 msgstr ""
 
@@ -5449,8 +5494,8 @@ msgid "Could not add job queue: ERR=%s\n"
 msgstr ""
 
 #: src/dird/job.c:183 src/dird/job.c:433 src/dird/job.c:435 src/dird/job.c:485
-#: src/dird/job.c:487 src/dird/job.c:1126 src/dird/job.c:1167
-#: src/dird/job.c:1176
+#: src/dird/job.c:487 src/dird/job.c:1129 src/dird/job.c:1170
+#: src/dird/job.c:1179
 msgid "Job resource"
 msgstr ""
 
@@ -5498,77 +5543,77 @@ msgstr ""
 msgid "Created database record for Pool \"%s\".\n"
 msgstr ""
 
-#: src/dird/job.c:765 src/dird/job.c:806
+#: src/dird/job.c:766 src/dird/job.c:809
 #, c-format
 msgid "JobId %d already running. Duplicate job not allowed.\n"
 msgstr ""
 
-#: src/dird/job.c:796
+#: src/dird/job.c:797
 #, c-format
 msgid "Cancelling duplicate JobId=%d.\n"
 msgstr ""
 
-#: src/dird/job.c:825 src/dird/job.c:1113
+#: src/dird/job.c:828 src/dird/job.c:1116
 msgid "Run pool override"
 msgstr ""
 
-#: src/dird/job.c:836
+#: src/dird/job.c:839
 msgid "Run FullPool override"
 msgstr ""
 
-#: src/dird/job.c:838
+#: src/dird/job.c:841
 msgid "Job FullPool override"
 msgstr ""
 
-#: src/dird/job.c:847
+#: src/dird/job.c:850
 msgid "Run IncPool override"
 msgstr ""
 
-#: src/dird/job.c:849
+#: src/dird/job.c:852
 msgid "Job IncPool override"
 msgstr ""
 
-#: src/dird/job.c:858
+#: src/dird/job.c:861
 msgid "Run DiffPool override"
 msgstr ""
 
-#: src/dird/job.c:860
+#: src/dird/job.c:863
 msgid "Job DiffPool override"
 msgstr ""
 
-#: src/dird/job.c:890 src/stored/bscan.c:1052
+#: src/dird/job.c:893 src/stored/bscan.c:1056
 #, c-format
 msgid "Could not create Client record. ERR=%s\n"
 msgstr ""
 
-#: src/dird/job.c:926
+#: src/dird/job.c:929
 msgid "FileSet MD5 digest not found.\n"
 msgstr ""
 
-#: src/dird/job.c:931
+#: src/dird/job.c:934
 #, c-format
 msgid "Could not create FileSet \"%s\" record. ERR=%s\n"
 msgstr ""
 
-#: src/dird/job.c:973
+#: src/dird/job.c:976
 #, c-format
 msgid "Error updating job record. %s"
 msgstr ""
 
-#: src/dird/job.c:1118
+#: src/dird/job.c:1121
 msgid "Run storage override"
 msgstr ""
 
-#: src/dird/job.c:1186
+#: src/dird/job.c:1189
 msgid "Client resource"
 msgstr ""
 
-#: src/dird/job.c:1403
+#: src/dird/job.c:1406
 #, c-format
 msgid "Could not start clone job: \"%s\".\n"
 msgstr ""
 
-#: src/dird/job.c:1406
+#: src/dird/job.c:1409
 #, c-format
 msgid "Clone JobId %d started.\n"
 msgstr ""
@@ -5720,90 +5765,91 @@ msgstr ""
 msgid "1000 OK: %s Version: %s (%s)\n"
 msgstr ""
 
-#: src/dird/catreq.c:129 src/dird/catreq.c:356
+#: src/dird/catreq.c:128 src/dird/catreq.c:355
 #, c-format
 msgid "1990 Invalid Catalog Request: %s"
 msgstr ""
 
-#: src/dird/catreq.c:130
+#: src/dird/catreq.c:129
 #, c-format
 msgid "Invalid Catalog request; DB not open: %s"
 msgstr ""
 
-#: src/dird/catreq.c:155
+#: src/dird/catreq.c:154
 msgid "1901 No Media.\n"
 msgstr ""
 
-#: src/dird/catreq.c:183
+#: src/dird/catreq.c:182
 msgid "not in Pool"
 msgstr ""
 
-#: src/dird/catreq.c:185
+#: src/dird/catreq.c:184
 msgid "not correct MediaType"
 msgstr ""
 
-#: src/dird/catreq.c:195
+#: src/dird/catreq.c:194
 msgid "is not Enabled"
 msgstr ""
 
-#: src/dird/catreq.c:204
+#: src/dird/catreq.c:203
 #, c-format
 msgid "1998 Volume \"%s\" catalog status is %s, %s.\n"
 msgstr ""
 
-#: src/dird/catreq.c:209
+#: src/dird/catreq.c:208
 #, c-format
 msgid "1997 Volume \"%s\" not in catalog.\n"
 msgstr ""
 
-#: src/dird/catreq.c:231
+#: src/dird/catreq.c:230
 #, c-format
 msgid "Unable to get Media record for Volume %s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/catreq.c:233
+#: src/dird/catreq.c:232
 #, c-format
 msgid "1991 Catalog Request for vol=%s failed: %s"
 msgstr ""
 
-#: src/dird/catreq.c:260
+#: src/dird/catreq.c:259
 #, c-format
 msgid ""
 "Volume Files at %u being set to %u for Volume \"%s\". This is incorrect.\n"
 msgstr ""
 
-#: src/dird/catreq.c:263
+#: src/dird/catreq.c:262
 #, c-format
 msgid "1992 Update Media error. VolFiles=%u, CatFiles=%u\n"
 msgstr ""
 
-#: src/dird/catreq.c:288
-msgid "Attempt to set StorageId to zero.\n"
-msgstr ""
-
-#: src/dird/catreq.c:319
+#: src/dird/catreq.c:318
 #, c-format
 msgid "Catalog error updating Media record. %s"
 msgstr ""
 
-#: src/dird/catreq.c:321
+#: src/dird/catreq.c:320
 msgid "1993 Update Media error\n"
 msgstr ""
 
-#: src/dird/catreq.c:345
+#: src/dird/catreq.c:344
 #, c-format
 msgid "Catalog error creating JobMedia record. %s"
 msgstr ""
 
-#: src/dird/catreq.c:347
+#: src/dird/catreq.c:346
 msgid "1992 Create JobMedia error\n"
 msgstr ""
 
-#: src/dird/catreq.c:357
+#: src/dird/catreq.c:356
 #, c-format
 msgid "Invalid Catalog request: %s"
 msgstr ""
 
+#: src/dird/catreq.c:443
+#, c-format
+msgid "Attribute create error: ERR=%s"
+msgstr ""
+
 #: src/dird/catreq.c:538
 #, c-format
 msgid "Restore object create error. %s"
@@ -5811,41 +5857,41 @@ msgstr ""
 
 #: src/dird/catreq.c:544
 #, c-format
-msgid "Got %s but not same File as attributes\n"
+msgid "%s not same File=%d as attributes=%d\n"
 msgstr ""
 
-#: src/dird/catreq.c:570
+#: src/dird/catreq.c:571
 #, c-format
 msgid "Catalog error updating file digest. Unsupported digest stream type: %d"
 msgstr ""
 
-#: src/dird/catreq.c:585
+#: src/dird/catreq.c:586
 #, c-format
 msgid "attribute create error. %s"
 msgstr ""
 
-#: src/dird/catreq.c:591
+#: src/dird/catreq.c:592
 #, c-format
 msgid "Catalog error updating file digest. %s"
 msgstr ""
 
-#: src/dird/catreq.c:614
+#: src/dird/catreq.c:615
 #, c-format
 msgid "1994 Invalid Catalog Update: %s"
 msgstr ""
 
-#: src/dird/catreq.c:615
+#: src/dird/catreq.c:616
 #, c-format
 msgid "Invalid Catalog Update; DB not open: %s"
 msgstr ""
 
-#: src/dird/catreq.c:670 src/dird/catreq.c:685 src/lib/bsock.c:605
+#: src/dird/catreq.c:671 src/dird/catreq.c:686 src/lib/bsock.c:645
 #, c-format
 msgid "fread attr spool error. ERR=%s\n"
 msgstr ""
 
 #: src/dird/msgchan.c:106 src/tray-monitor/tray-monitor.c:952
-#: src/filed/job.c:1771 src/qt-console/tray-monitor/tray-monitor.cpp:375
+#: src/filed/job.c:1775 src/qt-console/tray-monitor/tray-monitor.cpp:375
 msgid "Storage daemon"
 msgstr ""
 
@@ -5859,7 +5905,17 @@ msgstr ""
 msgid "<stored: bad response to Job command: %s\n"
 msgstr ""
 
-#: src/dird/msgchan.c:312
+#: src/dird/msgchan.c:273
+#, c-format
+msgid "Using Device \"%s\" to read.\n"
+msgstr ""
+
+#: src/dird/msgchan.c:311
+#, c-format
+msgid "Using Device \"%s\" to write.\n"
+msgstr ""
+
+#: src/dird/msgchan.c:318
 #, c-format
 msgid ""
 "\n"
@@ -5867,21 +5923,20 @@ msgid ""
 "     %s"
 msgstr ""
 
-#: src/dird/msgchan.c:316
+#: src/dird/msgchan.c:322
 #, c-format
 msgid ""
 "\n"
 "     Storage daemon didn't accept Device \"%s\" command.\n"
 msgstr ""
 
-#: src/dird/msgchan.c:321
+#: src/dird/msgchan.c:345 src/dird/msgchan.c:542
 #, c-format
-msgid "Using Device \"%s\"\n"
+msgid "Cannot create message thread: %s\n"
 msgstr ""
 
-#: src/dird/msgchan.c:341 src/dird/msgchan.c:529
-#, c-format
-msgid "Cannot create message thread: %s\n"
+#: src/dird/msgchan.c:417
+msgid "Director's comm line to SD dropped.\n"
 msgstr ""
 
 #: src/tray-monitor/tray_conf.c:177
@@ -6161,14 +6216,14 @@ msgstr ""
 
 #: src/tray-monitor/tray-monitor.c:937
 #: src/qt-console/tray-monitor/tray-monitor.cpp:359
-#: src/qt-console/bcomm/dircomm.cpp:101
+#: src/qt-console/bcomm/dircomm.cpp:103
 #, c-format
 msgid "Connecting to Director %s:%d"
 msgstr ""
 
 #: src/tray-monitor/tray-monitor.c:938 src/wx-console/console_thread.cpp:428
 #: src/qt-console/tray-monitor/tray-monitor.cpp:361
-#: src/qt-console/bcomm/dircomm.cpp:171
+#: src/qt-console/bcomm/dircomm.cpp:173
 msgid "Director daemon"
 msgstr ""
 
@@ -6325,7 +6380,7 @@ msgid ""
 "Please see "
 msgstr ""
 
-#: src/stored/reserve.c:86
+#: src/stored/reserve.c:87
 #, c-format
 msgid "Unable to initialize reservation lock. ERR=%s\n"
 msgstr ""
@@ -6335,21 +6390,21 @@ msgstr ""
 msgid "Hey! num_writers=%d!!!!\n"
 msgstr ""
 
-#: src/stored/reserve.c:255
+#: src/stored/reserve.c:256
 msgid "3939 Could not get dcr\n"
 msgstr ""
 
-#: src/stored/reserve.c:357
+#: src/stored/reserve.c:364
 #, c-format
 msgid "Device reservation failed for JobId=%d: %s\n"
 msgstr ""
 
-#: src/stored/reserve.c:366
+#: src/stored/reserve.c:373
 #, c-format
 msgid "Failed command: %s\n"
 msgstr ""
 
-#: src/stored/reserve.c:625 src/stored/dircmd.c:618
+#: src/stored/reserve.c:632 src/stored/dircmd.c:633
 #, c-format
 msgid ""
 "\n"
@@ -6357,85 +6412,85 @@ msgid ""
 "does not exist.\n"
 msgstr ""
 
-#: src/stored/reserve.c:629 src/stored/dircmd.c:596
+#: src/stored/reserve.c:636 src/stored/dircmd.c:611
 #, c-format
 msgid ""
 "\n"
 "     Device \"%s\" requested by DIR could not be opened or does not exist.\n"
 msgstr ""
 
-#: src/stored/reserve.c:645
+#: src/stored/reserve.c:652
 #, c-format
 msgid "3926 Could not get dcr for device: %s\n"
 msgstr ""
 
-#: src/stored/reserve.c:771
+#: src/stored/reserve.c:778
 #, c-format
 msgid "3601 JobId=%u device %s is BLOCKED due to user unmount.\n"
 msgstr ""
 
-#: src/stored/reserve.c:781
+#: src/stored/reserve.c:788
 #, c-format
 msgid "3602 JobId=%u device %s is busy (already reading/writing).\n"
 msgstr ""
 
-#: src/stored/reserve.c:833
+#: src/stored/reserve.c:840
 #, c-format
 msgid "3603 JobId=%u device %s is busy reading.\n"
 msgstr ""
 
-#: src/stored/reserve.c:842
+#: src/stored/reserve.c:849
 #, c-format
 msgid "3604 JobId=%u device %s is BLOCKED due to user unmount.\n"
 msgstr ""
 
-#: src/stored/reserve.c:884
+#: src/stored/reserve.c:891
 #, c-format
 msgid ""
 "3608 JobId=%u wants Pool=\"%s\" but have Pool=\"%s\" nreserve=%d on drive "
 "%s.\n"
 msgstr ""
 
-#: src/stored/reserve.c:907
+#: src/stored/reserve.c:914
 #, c-format
 msgid "3609 JobId=%u Max concurrent jobs exceeded on drive %s.\n"
 msgstr ""
 
-#: src/stored/reserve.c:919
+#: src/stored/reserve.c:926
 #, c-format
 msgid "3610 JobId=%u Volume max jobs exceeded on drive %s.\n"
 msgstr ""
 
-#: src/stored/reserve.c:971
+#: src/stored/reserve.c:978
 #, c-format
 msgid "3605 JobId=%u wants free drive but device %s is busy.\n"
 msgstr ""
 
-#: src/stored/reserve.c:980
+#: src/stored/reserve.c:987
 #, c-format
 msgid "3606 JobId=%u prefers mounted drives, but drive %s has no Volume.\n"
 msgstr ""
 
-#: src/stored/reserve.c:1002
+#: src/stored/reserve.c:1009
 #, c-format
 msgid "3607 JobId=%u wants Vol=\"%s\" drive has Vol=\"%s\" on drive %s.\n"
 msgstr ""
 
-#: src/stored/reserve.c:1057
+#: src/stored/reserve.c:1064
 #, c-format
 msgid "Logic error!!!! JobId=%u Should not get here.\n"
 msgstr ""
 
-#: src/stored/reserve.c:1058
+#: src/stored/reserve.c:1065
 #, c-format
 msgid "3910 JobId=%u Logic error!!!! drive %s Should not get here.\n"
 msgstr ""
 
-#: src/stored/reserve.c:1061
+#: src/stored/reserve.c:1068
 msgid "Logic error!!!! Should not get here.\n"
 msgstr ""
 
-#: src/stored/reserve.c:1064
+#: src/stored/reserve.c:1071
 #, c-format
 msgid "3911 JobId=%u failed reserve drive %s.\n"
 msgstr ""
@@ -6525,23 +6580,23 @@ msgstr ""
 msgid "FileIndex=%d VolSessionId=%d VolSessionTime=%d Stream=%d DataLen=%d\n"
 msgstr ""
 
-#: src/stored/bls.c:425 src/stored/read_record.c:414 src/stored/bcopy.c:332
+#: src/stored/bls.c:425 src/stored/read_record.c:414 src/stored/bcopy.c:330
 msgid "Fresh Volume Label"
 msgstr ""
 
-#: src/stored/bls.c:428 src/stored/read_record.c:417 src/stored/bcopy.c:335
+#: src/stored/bls.c:428 src/stored/read_record.c:417 src/stored/bcopy.c:333
 msgid "Volume Label"
 msgstr ""
 
-#: src/stored/bls.c:432 src/stored/label.c:1033 src/stored/bcopy.c:339
+#: src/stored/bls.c:432 src/stored/label.c:1028 src/stored/bcopy.c:337
 msgid "Begin Job Session"
 msgstr ""
 
-#: src/stored/bls.c:437 src/stored/label.c:1036 src/stored/bcopy.c:343
+#: src/stored/bls.c:437 src/stored/label.c:1031 src/stored/bcopy.c:341
 msgid "End Job Session"
 msgstr ""
 
-#: src/stored/bls.c:441 src/stored/bcopy.c:348
+#: src/stored/bls.c:441 src/stored/bcopy.c:346
 msgid "End of Medium"
 msgstr ""
 
@@ -6557,17 +6612,17 @@ msgstr ""
 msgid "End of object"
 msgstr ""
 
-#: src/stored/bls.c:453 src/stored/label.c:1045 src/stored/bcopy.c:351
+#: src/stored/bls.c:453 src/stored/label.c:1040 src/stored/bcopy.c:349
 msgid "Unknown"
 msgstr ""
 
-#: src/stored/bls.c:460 src/stored/read_record.c:435 src/stored/bcopy.c:357
+#: src/stored/bls.c:460 src/stored/read_record.c:435 src/stored/bcopy.c:355
 #, c-format
 msgid "%s Record: VolSessionId=%d VolSessionTime=%d JobId=%d DataLen=%d\n"
 msgstr ""
 
-#: src/stored/bls.c:479 src/stored/bextract.c:612 src/stored/bcopy.c:375
-#: src/stored/bscan.c:1370 src/stored/btape.c:3048
+#: src/stored/bls.c:479 src/stored/bextract.c:612 src/stored/bcopy.c:373
+#: src/stored/bscan.c:1374 src/stored/btape.c:3050
 #, c-format
 msgid "Mount Volume \"%s\" on device %s and press return when ready: "
 msgstr ""
@@ -6577,292 +6632,292 @@ msgstr ""
 msgid "Connection request from %s failed.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:165
+#: src/stored/dircmd.c:166
 #, c-format
 msgid "Invalid connection from %s. Len=%d\n"
 msgstr ""
 
-#: src/stored/dircmd.c:208 src/filed/authenticate.c:208
+#: src/stored/dircmd.c:210 src/filed/authenticate.c:208
 msgid "Unable to authenticate Director\n"
 msgstr ""
 
-#: src/stored/dircmd.c:294
+#: src/stored/dircmd.c:299
 #, c-format
 msgid "3991 Bad setdebug command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:317
-#, c-format
-msgid "3904 Job %s not found.\n"
+#: src/stored/dircmd.c:326
+msgid "3903 Error scanning cancel command.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:345
+#: src/stored/dircmd.c:330
 #, c-format
-msgid "3000 JobId=%ld Job=\"%s\" marked to be canceled.\n"
+msgid "3904 Job %s not found.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:349
-msgid "3903 Error scanning cancel command.\n"
+#: src/stored/dircmd.c:358
+#, c-format
+msgid "3000 JobId=%ld Job=\"%s\" marked to be %s.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:425 src/stored/dircmd.c:791 src/stored/dircmd.c:883
-#: src/stored/dircmd.c:994 src/stored/dircmd.c:1116 src/stored/dircmd.c:1159
+#: src/stored/dircmd.c:437 src/stored/dircmd.c:812 src/stored/dircmd.c:904
+#: src/stored/dircmd.c:1015 src/stored/dircmd.c:1137 src/stored/dircmd.c:1179
 #, c-format
 msgid "3999 Device \"%s\" not found or could not be opened.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:430
+#: src/stored/dircmd.c:442
 #, c-format
 msgid "3903 Error scanning label command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:480
+#: src/stored/dircmd.c:492
 #, c-format
 msgid "3910 Unable to open device \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:497
+#: src/stored/dircmd.c:509
 #, c-format
 msgid "3920 Cannot label Volume because it is already labeled: \"%s\"\n"
 msgstr ""
 
-#: src/stored/dircmd.c:504
+#: src/stored/dircmd.c:516
 msgid "3921 Wrong volume mounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:508
+#: src/stored/dircmd.c:520
 msgid "3922 Cannot relabel an ANSI/IBM labeled Volume.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:516
+#: src/stored/dircmd.c:528
 #, c-format
 msgid "3912 Failed to label Volume: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:526
+#: src/stored/dircmd.c:538
 #, c-format
 msgid "3914 Failed to label Volume (no media): ERR=%s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:529
+#: src/stored/dircmd.c:541
 #, c-format
 msgid "3913 Cannot label Volume. Unknown status %d from read_volume_label()\n"
 msgstr ""
 
-#: src/stored/dircmd.c:563
+#: src/stored/dircmd.c:578
 #, c-format
 msgid "3001 Mounted Volume: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:567 src/stored/dircmd.c:1195
+#: src/stored/dircmd.c:582 src/stored/dircmd.c:1215
 #, c-format
 msgid ""
 "3902 Cannot mount Volume on Storage Device \"%s\" because:\n"
 "%s"
 msgstr ""
 
-#: src/stored/dircmd.c:680
+#: src/stored/dircmd.c:696
 msgid "Specified slot ignored. "
 msgstr ""
 
-#: src/stored/dircmd.c:695 src/stored/dircmd.c:752
+#: src/stored/dircmd.c:712 src/stored/dircmd.c:770
 #, c-format
 msgid "3901 Unable to open device \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:715 src/stored/dircmd.c:743
+#: src/stored/dircmd.c:732 src/stored/dircmd.c:761
 #, c-format
 msgid "3001 Device \"%s\" is mounted with Volume \"%s\"\n"
 msgstr ""
 
-#: src/stored/dircmd.c:718 src/stored/dircmd.c:746 src/stored/dircmd.c:761
+#: src/stored/dircmd.c:735 src/stored/dircmd.c:764 src/stored/dircmd.c:779
 #, c-format
 msgid ""
 "3905 Device \"%s\" open but no Bacula volume is mounted.\n"
 "If this is not a blank tape, try unmounting and remounting the Volume.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:728
+#: src/stored/dircmd.c:745
 #, c-format
 msgid "3001 Device \"%s\" is doing acquire.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:733 src/stored/dircmd.c:854
+#: src/stored/dircmd.c:750 src/stored/dircmd.c:875
 #, c-format
 msgid "3903 Device \"%s\" is being labeled.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:758
+#: src/stored/dircmd.c:776
 #, c-format
 msgid "3001 Device \"%s\" is already mounted with Volume \"%s\"\n"
 msgstr ""
 
-#: src/stored/dircmd.c:767
+#: src/stored/dircmd.c:788
 #, c-format
 msgid "3002 Device \"%s\" is mounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:769 src/stored/dircmd.c:826 src/stored/dircmd.c:842
-#: src/stored/dircmd.c:874
+#: src/stored/dircmd.c:790 src/stored/dircmd.c:847 src/stored/dircmd.c:863
+#: src/stored/dircmd.c:895
 #, c-format
 msgid "3907 %s"
 msgstr ""
 
-#: src/stored/dircmd.c:772
+#: src/stored/dircmd.c:793
 #, c-format
 msgid "3906 File device \"%s\" is always mounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:781
+#: src/stored/dircmd.c:802
 #, c-format
 msgid "3930 Device \"%s\" is being released.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:785
+#: src/stored/dircmd.c:806
 #, c-format
 msgid "3905 Unknown wait state %d\n"
 msgstr ""
 
-#: src/stored/dircmd.c:795
+#: src/stored/dircmd.c:816
 #, c-format
 msgid "3909 Error scanning mount command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:823 src/stored/dircmd.c:876
+#: src/stored/dircmd.c:844 src/stored/dircmd.c:897
 #, c-format
 msgid "3002 Device \"%s\" unmounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:830
+#: src/stored/dircmd.c:851
 #, c-format
 msgid "3901 Device \"%s\" is already unmounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:845
+#: src/stored/dircmd.c:866
 #, c-format
 msgid "3001 Device \"%s\" unmounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:850
+#: src/stored/dircmd.c:871
 #, c-format
 msgid "3902 Device \"%s\" is busy in acquire.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:888
+#: src/stored/dircmd.c:909
 #, c-format
 msgid "3907 Error scanning unmount command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:916
+#: src/stored/dircmd.c:937
 msgid "3916 Error scanning action_on_purge command\n"
 msgstr ""
 
-#: src/stored/dircmd.c:959
+#: src/stored/dircmd.c:980
 #, c-format
 msgid "3921 Device \"%s\" already released.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:966
+#: src/stored/dircmd.c:987
 #, c-format
 msgid "3922 Device \"%s\" waiting for sysop.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:972
+#: src/stored/dircmd.c:993
 #, c-format
 msgid "3922 Device \"%s\" waiting for mount.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:976
+#: src/stored/dircmd.c:997
 #, c-format
 msgid "3923 Device \"%s\" is busy in acquire.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:980
+#: src/stored/dircmd.c:1001
 #, c-format
 msgid "3914 Device \"%s\" is being labeled.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:988
+#: src/stored/dircmd.c:1009
 #, c-format
 msgid "3022 Device \"%s\" released.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:999
+#: src/stored/dircmd.c:1020
 #, c-format
 msgid "3927 Error scanning release command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1028 src/filed/job.c:1531
+#: src/stored/dircmd.c:1049 src/filed/job.c:1535
 #, c-format
 msgid "Could not create bootstrap file %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1041
+#: src/stored/dircmd.c:1062
 msgid "Error parsing bootstrap file.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1103
+#: src/stored/dircmd.c:1124
 #, c-format
-msgid "3995 Device \"%s\" is not an autochanger.\n"
+msgid "3998 Device \"%s\" is not an autochanger.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1120
+#: src/stored/dircmd.c:1141
 #, c-format
 msgid "3908 Error scanning autochanger drives/list/slots command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1163
+#: src/stored/dircmd.c:1183
 #, c-format
 msgid "3909 Error scanning readlabel command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1191
+#: src/stored/dircmd.c:1211
 #, c-format
 msgid "3001 Volume=%s Slot=%d\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1223
+#: src/stored/dircmd.c:1243
 #, c-format
 msgid "3931 Device \"%s\" is BLOCKED. user unmounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1227
+#: src/stored/dircmd.c:1247
 #, c-format
 msgid ""
 "3932 Device \"%s\" is BLOCKED. user unmounted during wait for media/mount.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1231
+#: src/stored/dircmd.c:1251
 #, c-format
 msgid "3933 Device \"%s\" is BLOCKED waiting for media.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1235
+#: src/stored/dircmd.c:1255
 #, c-format
 msgid "3934 Device \"%s\" is being initialized.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1239
+#: src/stored/dircmd.c:1259
 #, c-format
 msgid "3935 Device \"%s\" is blocked labeling a Volume.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1243
+#: src/stored/dircmd.c:1263
 #, c-format
 msgid "3935 Device \"%s\" is blocked for unknown reason.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1248
+#: src/stored/dircmd.c:1268
 #, c-format
 msgid "3936 Device \"%s\" is busy reading.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1251
+#: src/stored/dircmd.c:1271
 #, c-format
 msgid "3937 Device \"%s\" is busy with writers=%d reserved=%d.\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:123 src/stored/parse_bsr.c:127
+#: src/stored/parse_bsr.c:122 src/stored/parse_bsr.c:126
 #, c-format
 msgid ""
 "Bootstrap file error: %s\n"
@@ -6870,154 +6925,154 @@ msgid ""
 "%s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:149
+#: src/stored/parse_bsr.c:148
 #, c-format
 msgid "Cannot open bootstrap file %s: %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:280
+#: src/stored/parse_bsr.c:279
 #, c-format
 msgid "MediaType %s in bsr at inappropriate place.\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:312
+#: src/stored/parse_bsr.c:311
 #, c-format
 msgid "Device \"%s\" in bsr at inappropriate place.\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:485
+#: src/stored/parse_bsr.c:484
 #, c-format
 msgid "REGEX '%s' compile error. ERR=%s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:495
+#: src/stored/parse_bsr.c:494
 msgid "JobType not yet implemented\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:503
+#: src/stored/parse_bsr.c:502
 msgid "JobLevel not yet implemented\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:720
+#: src/stored/parse_bsr.c:719
 #, c-format
 msgid "Slot %d in bsr at inappropriate place.\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:744
+#: src/stored/parse_bsr.c:743
 #, c-format
 msgid "VolFile     : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:752
+#: src/stored/parse_bsr.c:751
 #, c-format
 msgid "VolBlock    : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:760
+#: src/stored/parse_bsr.c:759
 #, c-format
 msgid "VolAddr    : %llu-%llu\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:769
+#: src/stored/parse_bsr.c:768
 #, c-format
 msgid "FileIndex   : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:771
+#: src/stored/parse_bsr.c:770
 #, c-format
 msgid "FileIndex   : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:781
+#: src/stored/parse_bsr.c:780
 #, c-format
 msgid "JobId       : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:783
+#: src/stored/parse_bsr.c:782
 #, c-format
 msgid "JobId       : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:793
+#: src/stored/parse_bsr.c:792
 #, c-format
 msgid "SessId      : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:795
+#: src/stored/parse_bsr.c:794
 #, c-format
 msgid "SessId      : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:804
+#: src/stored/parse_bsr.c:803
 #, c-format
 msgid "VolumeName  : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:805
+#: src/stored/parse_bsr.c:804
 #, c-format
 msgid "  MediaType : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:806
+#: src/stored/parse_bsr.c:805
 #, c-format
 msgid "  Device    : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:807
+#: src/stored/parse_bsr.c:806
 #, c-format
 msgid "  Slot      : %d\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:816
+#: src/stored/parse_bsr.c:815
 #, c-format
 msgid "Client      : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:824
+#: src/stored/parse_bsr.c:823
 #, c-format
 msgid "Job          : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:832
+#: src/stored/parse_bsr.c:831
 #, c-format
 msgid "SessTime    : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:843
+#: src/stored/parse_bsr.c:842
 msgid "BSR is NULL\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:847
+#: src/stored/parse_bsr.c:846
 #, c-format
 msgid "Next        : 0x%x\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:848
+#: src/stored/parse_bsr.c:847
 #, c-format
 msgid "Root bsr    : 0x%x\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:860
+#: src/stored/parse_bsr.c:859
 #, c-format
 msgid "count       : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:861
+#: src/stored/parse_bsr.c:860
 #, c-format
 msgid "found       : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:864
+#: src/stored/parse_bsr.c:863
 #, c-format
 msgid "done        : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:865
+#: src/stored/parse_bsr.c:864
 #, c-format
 msgid "positioning : %d\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:866
+#: src/stored/parse_bsr.c:865
 #, c-format
 msgid "fast_reject : %d\n"
 msgstr ""
@@ -7101,76 +7156,69 @@ msgstr ""
 msgid "Unable to set network buffer size.\n"
 msgstr ""
 
-#: src/stored/append.c:96 src/stored/append.c:105 src/stored/append.c:117
-#: src/stored/append.c:297 src/stored/append.c:298 src/stored/askdir.c:339
-#: src/stored/askdir.c:340
+#: src/stored/append.c:95 src/stored/append.c:104 src/stored/append.c:116
+#: src/stored/askdir.c:340 src/stored/askdir.c:341
 msgid "NULL Volume name. This shouldn't happen!!!\n"
 msgstr ""
 
-#: src/stored/append.c:111 src/stored/btape.c:2233
+#: src/stored/append.c:110 src/stored/btape.c:2235
 #, c-format
 msgid "Write session label failed. ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:123
+#: src/stored/append.c:122
 #, c-format
 msgid "Network send error to FD. ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:160
+#: src/stored/append.c:159
 #, c-format
 msgid "Error reading data header from FD. ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:168
+#: src/stored/append.c:167
 #, c-format
 msgid "Malformed data header from FD: %s\n"
 msgstr ""
 
-#: src/stored/append.c:188
+#: src/stored/append.c:187
 #, c-format
 msgid "FI=%d from FD not positive or sequential=%d\n"
 msgstr ""
 
-#: src/stored/append.c:244
+#: src/stored/append.c:235
 #, c-format
 msgid "Network error reading from FD. ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:274
-#, c-format
-msgid ""
-"Job write elapsed time = %02d:%02d:%02d, Transfer rate = %s Bytes/second\n"
-msgstr ""
-
-#: src/stored/append.c:289 src/stored/btape.c:2352
+#: src/stored/append.c:265 src/stored/btape.c:2354
 #, c-format
 msgid "Error writing end session label. ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:305 src/stored/mac.c:126 src/stored/mac.c:247
+#: src/stored/append.c:277 src/stored/mac.c:126 src/stored/mac.c:261
 #: src/stored/spool.c:300
 #, c-format
 msgid "Fatal append error on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:307 src/stored/mac.c:128
+#: src/stored/append.c:279 src/stored/mac.c:128
 msgid "Set ok=FALSE after write_block_to_device.\n"
 msgstr ""
 
-#: src/stored/append.c:360
+#: src/stored/append.c:308 src/stored/mac.c:151
 #, c-format
-msgid "Error updating file attributes. ERR=%s\n"
+msgid "Elapsed time=%02d:%02d:%02d, Transfer rate=%s Bytes/second\n"
 msgstr ""
 
-#: src/stored/vol_mgr.c:93
+#: src/stored/append.c:345
 #, c-format
-msgid "Unable to initialize volume list lock. ERR=%s\n"
+msgid "Error updating file attributes. ERR=%s\n"
 msgstr ""
 
-#: src/stored/vol_mgr.c:491
+#: src/stored/vol_mgr.c:93
 #, c-format
-msgid "Device switch. New device %s chosen.\n"
+msgid "Unable to initialize volume list lock. ERR=%s\n"
 msgstr ""
 
 #: src/stored/label.c:93
@@ -7218,67 +7266,67 @@ msgstr ""
 msgid "Volume on %s has bad Bacula label type: %x\n"
 msgstr ""
 
-#: src/stored/label.c:236 src/stored/label.c:399 src/stored/mount.c:460
+#: src/stored/label.c:236 src/stored/label.c:397 src/stored/mount.c:463
 #, c-format
 msgid "Could not reserve volume %s on %s\n"
 msgstr ""
 
-#: src/stored/label.c:276
+#: src/stored/label.c:277
 #, c-format
 msgid "Cannot write Volume label to block for device %s\n"
 msgstr ""
 
-#: src/stored/label.c:328 src/stored/label.c:429 src/stored/mount.c:216
+#: src/stored/label.c:328 src/stored/label.c:426 src/stored/mount.c:218
 #, c-format
 msgid "Open device %s Volume \"%s\" failed: ERR=%s\n"
 msgstr ""
 
-#: src/stored/label.c:454
+#: src/stored/label.c:451
 #, c-format
 msgid "Rewind error on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/label.c:462
+#: src/stored/label.c:458
 #, c-format
 msgid "Truncate error on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/label.c:468
+#: src/stored/label.c:464
 #, c-format
 msgid "Failed to re-open DVD after truncate on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/label.c:491
+#: src/stored/label.c:487
 #, c-format
 msgid "Unable to write device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/label.c:522
+#: src/stored/label.c:518
 #, c-format
 msgid "Recycled volume \"%s\" on device %s, all previous data lost.\n"
 msgstr ""
 
-#: src/stored/label.c:525
+#: src/stored/label.c:521
 #, c-format
 msgid "Wrote label to prelabeled Volume \"%s\" on device %s\n"
 msgstr ""
 
-#: src/stored/label.c:726
+#: src/stored/label.c:721
 #, c-format
 msgid "Bad Volume session label = %d\n"
 msgstr ""
 
-#: src/stored/label.c:781
+#: src/stored/label.c:776
 #, c-format
 msgid "Expecting Volume Label, got FI=%s Stream=%s len=%d\n"
 msgstr ""
 
-#: src/stored/label.c:908
+#: src/stored/label.c:903
 #, c-format
 msgid "Unknown %d"
 msgstr ""
 
-#: src/stored/label.c:912
+#: src/stored/label.c:907
 #, c-format
 msgid ""
 "\n"
@@ -7295,17 +7343,17 @@ msgid ""
 "HostName          : %s\n"
 msgstr ""
 
-#: src/stored/label.c:934
+#: src/stored/label.c:929
 #, c-format
 msgid "Date label written: %s\n"
 msgstr ""
 
-#: src/stored/label.c:940
+#: src/stored/label.c:935
 #, c-format
 msgid "Date label written: %04d-%02d-%02d at %02d:%02d\n"
 msgstr ""
 
-#: src/stored/label.c:960
+#: src/stored/label.c:955
 #, c-format
 msgid ""
 "\n"
@@ -7318,7 +7366,7 @@ msgid ""
 "ClientName        : %s\n"
 msgstr ""
 
-#: src/stored/label.c:973
+#: src/stored/label.c:968
 #, c-format
 msgid ""
 "Job (unique name) : %s\n"
@@ -7327,7 +7375,7 @@ msgid ""
 "JobLevel          : %c\n"
 msgstr ""
 
-#: src/stored/label.c:982
+#: src/stored/label.c:977
 #, c-format
 msgid ""
 "JobFiles          : %s\n"
@@ -7340,52 +7388,52 @@ msgid ""
 "JobStatus         : %c\n"
 msgstr ""
 
-#: src/stored/label.c:1003
+#: src/stored/label.c:998
 #, c-format
 msgid "Date written      : %s\n"
 msgstr ""
 
-#: src/stored/label.c:1008
+#: src/stored/label.c:1003
 #, c-format
 msgid "Date written      : %04d-%02d-%02d at %02d:%02d\n"
 msgstr ""
 
-#: src/stored/label.c:1027
+#: src/stored/label.c:1022
 msgid "Fresh Volume"
 msgstr ""
 
-#: src/stored/label.c:1030
+#: src/stored/label.c:1025
 msgid "Volume"
 msgstr ""
 
-#: src/stored/label.c:1039 src/stored/read_record.c:428
+#: src/stored/label.c:1034 src/stored/read_record.c:428
 msgid "End of Media"
 msgstr ""
 
-#: src/stored/label.c:1042
+#: src/stored/label.c:1037
 msgid "End of Tape"
 msgstr ""
 
-#: src/stored/label.c:1062 src/stored/label.c:1070 src/stored/label.c:1103
+#: src/stored/label.c:1057 src/stored/label.c:1065 src/stored/label.c:1098
 #, c-format
 msgid "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d DataLen=%d\n"
 msgstr ""
 
-#: src/stored/label.c:1067
+#: src/stored/label.c:1062
 msgid "End of physical tape.\n"
 msgstr ""
 
-#: src/stored/label.c:1082 src/stored/label.c:1091
+#: src/stored/label.c:1077 src/stored/label.c:1086
 #, c-format
 msgid "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d\n"
 msgstr ""
 
-#: src/stored/label.c:1084
+#: src/stored/label.c:1079
 #, c-format
 msgid "   Job=%s Date=%s Level=%c Type=%c\n"
 msgstr ""
 
-#: src/stored/label.c:1093
+#: src/stored/label.c:1088
 #, c-format
 msgid "   Date=%s Level=%c Type=%c Files=%s Bytes=%s Errors=%d Status=%c\n"
 msgstr ""
@@ -7394,82 +7442,101 @@ msgstr ""
 msgid "Used Volume status:\n"
 msgstr ""
 
-#: src/stored/status.c:107 src/stored/status.c:109
+#: src/stored/status.c:117
 msgid ""
-"====\n"
 "\n"
+"SD Resources:\n"
 msgstr ""
 
-#: src/stored/status.c:128
+#: src/stored/status.c:153
 msgid ""
 "\n"
 "Device status:\n"
 msgstr ""
 
-#: src/stored/status.c:132
+#: src/stored/status.c:157
 #, c-format
 msgid "Autochanger \"%s\" with devices:\n"
 msgstr ""
 
-#: src/stored/status.c:150
+#: src/stored/status.c:177
 #, c-format
 msgid ""
-"Device %s is mounted with:\n"
+"\n"
+"Device %s is %s:\n"
 "    Volume:      %s\n"
 "    Pool:        %s\n"
 "    Media type:  %s\n"
 msgstr ""
 
-#: src/stored/status.c:160
+#: src/stored/status.c:182
+msgid "waiting for"
+msgstr ""
+
+#: src/stored/status.c:182
+msgid "mounted with"
+msgstr ""
+
+#: src/stored/status.c:184
+msgid "*unknown*"
+msgstr ""
+
+#: src/stored/status.c:188
 #, c-format
-msgid "Device %s open but no Bacula volume is currently mounted.\n"
+msgid ""
+"\n"
+"Device %s open but no Bacula volume is currently mounted.\n"
 msgstr ""
 
-#: src/stored/status.c:171
+#: src/stored/status.c:199
 #, c-format
 msgid "    Total Bytes=%s Blocks=%s Bytes/block=%s\n"
 msgstr ""
 
-#: src/stored/status.c:186
+#: src/stored/status.c:214
 #, c-format
 msgid "    Total Bytes Read=%s Blocks Read=%s Bytes/block=%s\n"
 msgstr ""
 
-#: src/stored/status.c:192
+#: src/stored/status.c:220
 #, c-format
 msgid "    Positioned at File=%s Block=%s\n"
 msgstr ""
 
-#: src/stored/status.c:199
+#: src/stored/status.c:227
 #, c-format
-msgid "Device %s is not open.\n"
+msgid ""
+"\n"
+"Device %s is not open.\n"
 msgstr ""
 
-#: src/stored/status.c:203
+#: src/stored/status.c:231
 #, c-format
-msgid "Device \"%s\" is not open or does not exist.\n"
+msgid ""
+"\n"
+"Device \"%s\" is not open or does not exist.\n"
 msgstr ""
 
-#: src/stored/status.c:225
+#: src/stored/status.c:255
 #, c-format
 msgid "Daemon started %s. Jobs: run=%d, running=%d.\n"
 msgstr ""
 
-#: src/stored/status.c:248
+#: src/stored/status.c:293
 msgid ""
 "No DEVICE structure.\n"
 "\n"
 msgstr ""
 
-#: src/stored/status.c:254
+#: src/stored/status.c:299
 msgid "    Device is BLOCKED. User unmounted.\n"
 msgstr ""
 
-#: src/stored/status.c:258
+#: src/stored/status.c:303
 msgid "    Device is BLOCKED. User unmounted during wait for media/mount.\n"
 msgstr ""
 
-#: src/stored/status.c:270
+#: src/stored/status.c:313
 #, c-format
 msgid ""
 "    Device is BLOCKED waiting for mount of volume \"%s\",\n"
@@ -7477,7 +7544,7 @@ msgid ""
 "       Media type:  %s\n"
 msgstr ""
 
-#: src/stored/status.c:279
+#: src/stored/status.c:322
 #, c-format
 msgid ""
 "    Device is BLOCKED waiting to create a volume for:\n"
@@ -7485,172 +7552,165 @@ msgid ""
 "       Media type:  %s\n"
 msgstr ""
 
-#: src/stored/status.c:291
+#: src/stored/status.c:333
 msgid "    Device is BLOCKED waiting for media.\n"
 msgstr ""
 
-#: src/stored/status.c:297
+#: src/stored/status.c:339
 msgid "    Device is being initialized.\n"
 msgstr ""
 
-#: src/stored/status.c:301
+#: src/stored/status.c:343
 msgid "    Device is blocked labeling a Volume.\n"
 msgstr ""
 
-#: src/stored/status.c:310
+#: src/stored/status.c:352
 #, c-format
-msgid "    Slot %d is loaded in drive %d.\n"
+msgid "    Slot %d %s loaded in drive %d.\n"
 msgstr ""
 
-#: src/stored/status.c:314
+#: src/stored/status.c:356
 #, c-format
 msgid "    Drive %d is not loaded.\n"
 msgstr ""
 
-#: src/stored/status.c:317
-#, c-format
-msgid "    Drive %d status unknown.\n"
-msgstr ""
-
-#: src/stored/status.c:331 src/stored/btape.c:688
+#: src/stored/status.c:371 src/stored/btape.c:688
 #, c-format
 msgid "Configured device capabilities:\n"
 msgstr ""
 
-#: src/stored/status.c:349
+#: src/stored/status.c:389
 msgid "Device state:\n"
 msgstr ""
 
-#: src/stored/status.c:367
+#: src/stored/status.c:405
 #, c-format
-msgid ""
-"num_writers=%d reserved=%d block=%d\n"
-"\n"
+msgid "  num_writers=%d reserves=%d block=%d\n"
+msgstr ""
+
+#: src/stored/status.c:409
+msgid "Attached Jobs: "
 msgstr ""
 
-#: src/stored/status.c:371 src/stored/btape.c:720
+#: src/stored/status.c:427 src/stored/btape.c:720
 #, c-format
 msgid "Device parameters:\n"
 msgstr ""
 
-#: src/stored/status.c:374
+#: src/stored/status.c:429
 #, c-format
-msgid "Archive name: %s Device name: %s\n"
+msgid "  Archive name: %s Device name: %s\n"
 msgstr ""
 
-#: src/stored/status.c:378
+#: src/stored/status.c:432
 #, c-format
-msgid "File=%u block=%u\n"
+msgid "  File=%u block=%u\n"
 msgstr ""
 
-#: src/stored/status.c:381
+#: src/stored/status.c:434
 #, c-format
-msgid "Min block=%u Max block=%u\n"
+msgid "  Min block=%u Max block=%u\n"
 msgstr ""
 
-#: src/stored/status.c:401
+#: src/stored/status.c:455
 #, c-format
 msgid "%s Job %s waiting for Client connection.\n"
 msgstr ""
 
-#: src/stored/status.c:417
+#: src/stored/status.c:471
 #, c-format
 msgid ""
 "Reading: %s %s job %s JobId=%d Volume=\"%s\"\n"
 "    pool=\"%s\" device=%s\n"
 msgstr ""
 
-#: src/stored/status.c:430
+#: src/stored/status.c:484
 #, c-format
 msgid ""
 "Writing: %s %s job %s JobId=%d Volume=\"%s\"\n"
 "    pool=\"%s\" device=%s\n"
 msgstr ""
 
-#: src/stored/status.c:441
+#: src/stored/status.c:495
 #, c-format
 msgid "    spooling=%d despooling=%d despool_wait=%d\n"
 msgstr ""
 
-#: src/stored/status.c:450
+#: src/stored/status.c:511
 #, c-format
-msgid "    Files=%s Bytes=%s Bytes/sec=%s\n"
+msgid "    Files=%s Bytes=%s AveBytes/sec=%s LastBytes/sec=%s\n"
 msgstr ""
 
-#: src/stored/status.c:458
+#: src/stored/status.c:523
 #, c-format
 msgid "    FDReadSeqNo=%s in_msg=%u out_msg=%d fd=%d\n"
 msgstr ""
 
-#: src/stored/status.c:464
+#: src/stored/status.c:529
 msgid "    FDSocket closed\n"
 msgstr ""
 
-#: src/stored/status.c:485
+#: src/stored/status.c:550
 msgid ""
 "\n"
 "Jobs waiting to reserve a drive:\n"
 msgstr ""
 
-#: src/stored/status.c:516
+#: src/stored/status.c:581
 msgid "===================================================================\n"
 msgstr ""
 
-#: src/stored/status.c:598 src/lib/util.c:423 src/filed/status.c:517
+#: src/stored/status.c:663 src/lib/util.c:423 src/filed/status.c:517
 msgid "Base"
 msgstr ""
 
-#: src/stored/status.c:615 src/filed/status.c:534
+#: src/stored/status.c:680 src/filed/status.c:534
 msgid "Init Catalog"
 msgstr ""
 
-#: src/stored/status.c:618 src/filed/status.c:537
+#: src/stored/status.c:683 src/filed/status.c:537
 msgid "Volume to Catalog"
 msgstr ""
 
-#: src/stored/status.c:621 src/filed/status.c:540
+#: src/stored/status.c:686 src/filed/status.c:540
 msgid "Disk to Catalog"
 msgstr ""
 
-#: src/stored/status.c:624 src/filed/status.c:543
+#: src/stored/status.c:689 src/filed/status.c:543
 msgid "Data"
 msgstr ""
 
-#: src/stored/status.c:630 src/lib/util.c:459 src/filed/status.c:549
+#: src/stored/status.c:695 src/lib/util.c:459 src/filed/status.c:549
 msgid "Unknown Job Level"
 msgstr ""
 
-#: src/stored/status.c:698 src/stored/status.c:744 src/filed/status.c:463
-#: src/filed/status.c:496
+#: src/stored/status.c:763
 #, c-format
-msgid "Bad .status command: %s\n"
-msgstr ""
-
-#: src/stored/status.c:699
-msgid "3900 Bad .status command, missing argument.\n"
+msgid "3900 No arg in .status command: %s\n"
 msgstr ""
 
-#: src/stored/status.c:745
-msgid "3900 Bad .status command, wrong argument.\n"
+#: src/stored/status.c:811
+#, c-format
+msgid "3900 Unknown arg in .status command: %s\n"
 msgstr ""
 
-#: src/stored/status.c:760
+#: src/stored/status.c:826
 msgid "Bacula Storage: Idle"
 msgstr ""
 
-#: src/stored/status.c:771
+#: src/stored/status.c:837
 msgid "Bacula Storage: Running"
 msgstr ""
 
-#: src/stored/status.c:785
+#: src/stored/status.c:851
 msgid "Bacula Storage: Last Job Canceled"
 msgstr ""
 
-#: src/stored/status.c:789
+#: src/stored/status.c:855
 msgid "Bacula Storage: Last Job Failed"
 msgstr ""
 
-#: src/stored/status.c:793
+#: src/stored/status.c:859
 msgid "Bacula Storage: Last Job had Warnings"
 msgstr ""
 
@@ -7719,7 +7779,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/bextract.c:196 src/stored/bcopy.c:163 src/stored/bscan.c:248
+#: src/stored/bextract.c:196 src/stored/bcopy.c:161 src/stored/bscan.c:248
 #: src/tools/bvfs_test.c:201 src/tools/bbatch.c:190 src/tools/ing_test.c:185
 #: src/tools/cats_test.c:321
 msgid "Wrong number of arguments: \n"
@@ -7751,7 +7811,7 @@ msgid "%u files restored.\n"
 msgstr ""
 
 #: src/stored/bextract.c:284 src/stored/bextract.c:290
-#: src/filed/restore.c:1474
+#: src/filed/restore.c:1480
 #, c-format
 msgid "Write error on %s: %s\n"
 msgstr ""
@@ -7760,7 +7820,7 @@ msgstr ""
 msgid "Logic error output file should be open but is not.\n"
 msgstr ""
 
-#: src/stored/bextract.c:335 src/filed/restore.c:566
+#: src/stored/bextract.c:335 src/filed/restore.c:569
 #, c-format
 msgid "%s stream not supported on this Client.\n"
 msgstr ""
@@ -7776,7 +7836,7 @@ msgid "Seek error on %s: %s\n"
 msgstr ""
 
 #: src/stored/bextract.c:429 src/stored/bextract.c:494
-#: src/filed/restore.c:1329
+#: src/filed/restore.c:1335
 #, c-format
 msgid "Seek to %s error on %s: ERR=%s\n"
 msgstr ""
@@ -7786,16 +7846,16 @@ msgstr ""
 msgid "Uncompression error. ERR=%d\n"
 msgstr ""
 
-#: src/stored/bextract.c:462 src/filed/restore.c:1444
+#: src/stored/bextract.c:462 src/filed/restore.c:1450
 msgid "GZIP data stream found, but GZIP not configured!\n"
 msgstr ""
 
-#: src/stored/bextract.c:517 src/filed/restore.c:1370
+#: src/stored/bextract.c:517 src/filed/restore.c:1376
 #, c-format
 msgid "Compressed header version error. version=0x%x\n"
 msgstr ""
 
-#: src/stored/bextract.c:522 src/filed/restore.c:1375
+#: src/stored/bextract.c:522 src/filed/restore.c:1381
 #, c-format
 msgid "Compressed header size error. comp_len=%d, msglen=%d\n"
 msgstr ""
@@ -7805,7 +7865,7 @@ msgstr ""
 msgid "LZO uncompression error. ERR=%d\n"
 msgstr ""
 
-#: src/stored/bextract.c:556 src/filed/restore.c:1408
+#: src/stored/bextract.c:556 src/filed/restore.c:1414
 #, c-format
 msgid "Compression algorithm 0x%x found, but not supported!\n"
 msgstr ""
@@ -7814,12 +7874,12 @@ msgstr ""
 msgid "Got Program Name or Data Stream. Ignored.\n"
 msgstr ""
 
-#: src/stored/bextract.c:592 src/filed/restore.c:325 src/filed/restore.c:1027
+#: src/stored/bextract.c:592 src/filed/restore.c:328 src/filed/restore.c:1033
 #, c-format
 msgid "Unknown stream=%d ignored. This shouldn't happen!\n"
 msgstr ""
 
-#: src/stored/bcopy.c:76
+#: src/stored/bcopy.c:74
 #, c-format
 msgid ""
 "\n"
@@ -7839,48 +7899,48 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/bcopy.c:204 src/stored/device.c:298 src/stored/btape.c:473
+#: src/stored/bcopy.c:202 src/stored/device.c:298 src/stored/btape.c:473
 #, c-format
 msgid "dev open failed: %s\n"
 msgstr ""
 
-#: src/stored/bcopy.c:219
+#: src/stored/bcopy.c:217
 msgid "Write of last block failed.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:223
+#: src/stored/bcopy.c:221
 #, c-format
 msgid "%u Jobs copied. %u records copied.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:240 src/stored/bscan.c:428
+#: src/stored/bcopy.c:238 src/stored/bscan.c:428
 #, c-format
 msgid "Record: SessId=%u SessTim=%u FileIndex=%d Stream=%d len=%u\n"
 msgstr ""
 
-#: src/stored/bcopy.c:256
+#: src/stored/bcopy.c:254
 msgid "Volume is prelabeled. This volume cannot be copied.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:259
+#: src/stored/bcopy.c:257
 msgid "Volume label not copied.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:265
+#: src/stored/bcopy.c:263
 msgid "Copy skipped. Record does not match BSR filter.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:282 src/stored/bcopy.c:290 src/stored/bcopy.c:318
-#: src/stored/btape.c:2754
+#: src/stored/bcopy.c:280 src/stored/bcopy.c:288 src/stored/bcopy.c:316
+#: src/stored/btape.c:2756
 #, c-format
 msgid "Cannot fixup device error. %s\n"
 msgstr ""
 
-#: src/stored/bcopy.c:296
+#: src/stored/bcopy.c:294
 msgid "EOM label not copied.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:299
+#: src/stored/bcopy.c:297
 msgid "EOT label not copied.\n"
 msgstr ""
 
@@ -7918,19 +7978,14 @@ msgstr ""
 msgid "Next Volume part already exists on DVD. Cannot continue: %s\n"
 msgstr ""
 
-#: src/stored/dvd.c:377
-#, c-format
-msgid "open_next_part can't unlink existing part %s, ERR=%s\n"
-msgstr ""
-
-#: src/stored/dvd.c:583
+#: src/stored/dvd.c:563
 #, c-format
 msgid ""
 "Error writing. Current part less than total number of parts (%d/%d, device="
 "%s)\n"
 msgstr ""
 
-#: src/stored/dvd.c:590
+#: src/stored/dvd.c:570
 #, c-format
 msgid "Unable to write last on %s: ERR=%s\n"
 msgstr ""
@@ -8009,125 +8064,125 @@ msgstr ""
 msgid "Unexpected Tape is Off-line\n"
 msgstr ""
 
-#: src/stored/acquire.c:70
+#: src/stored/acquire.c:74
 #, c-format
 msgid "Acquire read: num_writers=%d not zero. Job %d canceled.\n"
 msgstr ""
 
-#: src/stored/acquire.c:79
+#: src/stored/acquire.c:83
 #, c-format
 msgid "No volumes specified for reading. Job %s canceled.\n"
 msgstr ""
 
-#: src/stored/acquire.c:88
+#: src/stored/acquire.c:92
 #, c-format
 msgid "Logic error: no next volume to read. Numvol=%d Curvol=%d\n"
 msgstr ""
 
-#: src/stored/acquire.c:95 src/stored/acquire.c:163 src/stored/acquire.c:431
-msgid "generate_plugin_event(bsdEventDeviceOpen) Failed\n"
-msgstr ""
-
-#: src/stored/acquire.c:119
+#: src/stored/acquire.c:118
 #, c-format
 msgid ""
 "Changing read device. Want Media Type=\"%s\" have=\"%s\"\n"
 "  device=%s\n"
 msgstr ""
 
-#: src/stored/acquire.c:159
+#: src/stored/acquire.c:162
 #, c-format
 msgid "Media Type change.  New read device %s chosen.\n"
 msgstr ""
 
-#: src/stored/acquire.c:175
+#: src/stored/acquire.c:174
 #, c-format
 msgid "No suitable device found to read Volume \"%s\"\n"
 msgstr ""
 
-#: src/stored/acquire.c:214
+#: src/stored/acquire.c:213
 #, c-format
 msgid "Job %s canceled.\n"
 msgstr ""
 
-#: src/stored/acquire.c:232
+#: src/stored/acquire.c:231
 #, c-format
 msgid "Read open device %s Volume \"%s\" failed: ERR=%s\n"
 msgstr ""
 
-#: src/stored/acquire.c:322
+#: src/stored/acquire.c:321
 #, c-format
 msgid "Too many errors trying to mount device %s for reading.\n"
 msgstr ""
 
-#: src/stored/acquire.c:330
+#: src/stored/acquire.c:329
 #, c-format
 msgid "Ready to read from volume \"%s\" on device %s.\n"
 msgstr ""
 
-#: src/stored/acquire.c:383
+#: src/stored/acquire.c:381
 #, c-format
 msgid "Want to append, but device %s is busy reading.\n"
 msgstr ""
 
-#: src/stored/acquire.c:416
+#: src/stored/acquire.c:414
 #, c-format
 msgid "Could not ready device %s for append.\n"
 msgstr ""
 
-#: src/stored/acquire.c:508 src/stored/spool.c:321 src/stored/block.c:368
-#: src/stored/block.c:738 src/stored/block.c:812
+#: src/stored/acquire.c:501 src/stored/spool.c:321 src/stored/block.c:386
+#: src/stored/block.c:769 src/stored/block.c:847
 #, c-format
 msgid "Could not create JobMedia record for Volume=\"%s\" Job=%s\n"
 msgstr ""
 
-#: src/stored/acquire.c:559
+#: src/stored/acquire.c:552
 #, c-format
 msgid "Alert: %s"
 msgstr ""
 
-#: src/stored/acquire.c:567
+#: src/stored/acquire.c:560
 #, c-format
 msgid "3997 Bad alert command: %s: ERR=%s.\n"
 msgstr ""
 
-#: src/stored/acquire.c:637 src/stored/dev.c:263 src/stored/dev.c:281
-#: src/stored/dev.c:287 src/stored/dev.c:298 src/lib/openssl.c:122
-#: src/lib/openssl.c:181
+#: src/stored/acquire.c:629 src/stored/dev.c:270 src/stored/dev.c:311
+#: src/lib/openssl.c:122 src/lib/openssl.c:181
 #, c-format
 msgid "Unable to init mutex: ERR=%s\n"
 msgstr ""
 
-#: src/stored/askdir.c:178
+#: src/stored/acquire.c:635
+#, c-format
+msgid "Unable to init r_mutex: ERR=%s\n"
+msgstr ""
+
+#: src/stored/askdir.c:179
 msgid "Network error on bnet_recv in req_vol_info.\n"
 msgstr ""
 
-#: src/stored/askdir.c:196
+#: src/stored/askdir.c:197
 #, c-format
 msgid "Error getting Volume info: %s"
 msgstr ""
 
-#: src/stored/askdir.c:374
+#: src/stored/askdir.c:376
 #, c-format
 msgid "Didn't get vol info vol=%s: ERR=%s"
 msgstr ""
 
-#: src/stored/askdir.c:429
+#: src/stored/askdir.c:432
 #, c-format
 msgid "Error creating JobMedia record: ERR=%s\n"
 msgstr ""
 
-#: src/stored/askdir.c:436
+#: src/stored/askdir.c:439
 #, c-format
 msgid "Error creating JobMedia record: %s\n"
 msgstr ""
 
-#: src/stored/askdir.c:519
+#: src/stored/askdir.c:522
 #, c-format
 msgid "Job %s canceled while waiting for mount on Storage Device \"%s\".\n"
 msgstr ""
 
-#: src/stored/askdir.c:530
+#: src/stored/askdir.c:533
 #, c-format
 msgid ""
 "Job %s is waiting. Cannot find any appendable volumes.\n"
@@ -8137,38 +8192,38 @@ msgid ""
 "    Media type:   %s\n"
 msgstr ""
 
-#: src/stored/askdir.c:556 src/stored/askdir.c:658
+#: src/stored/askdir.c:558 src/stored/askdir.c:658
 #, c-format
 msgid "Max time exceeded waiting to mount Storage Device %s for Job %s\n"
 msgstr ""
 
-#: src/stored/askdir.c:566
+#: src/stored/askdir.c:568
 msgid "pthread error in mount_next_volume.\n"
 msgstr ""
 
-#: src/stored/askdir.c:600
+#: src/stored/askdir.c:601
 msgid "Cannot request another volume: no volume name given.\n"
 msgstr ""
 
-#: src/stored/askdir.c:606
+#: src/stored/askdir.c:607
 #, c-format
 msgid "Job %s canceled while waiting for mount on Storage Device %s.\n"
 msgstr ""
 
-#: src/stored/askdir.c:623
+#: src/stored/askdir.c:624
 #, c-format
 msgid ""
-"Please mount Volume \"%s\" or label a new one for:\n"
+"Please mount append Volume \"%s\" or label a new one for:\n"
 "    Job:          %s\n"
 "    Storage:      %s\n"
 "    Pool:         %s\n"
 "    Media type:   %s\n"
 msgstr ""
 
-#: src/stored/askdir.c:629
+#: src/stored/askdir.c:630
 #, c-format
 msgid ""
-"Please mount Volume \"%s\" for:\n"
+"Please mount read Volume \"%s\" for:\n"
 "    Job:          %s\n"
 "    Storage:      %s\n"
 "    Pool:         %s\n"
@@ -8184,11 +8239,11 @@ msgstr ""
 msgid "unknown: %d"
 msgstr ""
 
-#: src/stored/record.c:424
+#: src/stored/record.c:392
 msgid "Damaged buffer\n"
 msgstr ""
 
-#: src/stored/record.c:600
+#: src/stored/record.c:670
 #, c-format
 msgid "Sanity check failed. maxlen=%d datalen=%d. Block discarded.\n"
 msgstr ""
@@ -8222,117 +8277,111 @@ msgstr ""
 msgid "No Changer Command given for device %s. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:84
-#, c-format
-msgid ""
-"Media Type not the same for all devices in changer %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:154
+#: src/stored/autochanger.c:139
 #, c-format
 msgid "No slot defined in catalog (slot=%d) for Volume \"%s\" on %s.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:156
+#: src/stored/autochanger.c:141
 msgid "Cartridge change or \"update slots\" may be required.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:162
+#: src/stored/autochanger.c:147
 #, c-format
 msgid "No \"Changer Device\" for %s. Manual load of Volume may be required.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:169
+#: src/stored/autochanger.c:154
 #, c-format
 msgid "No \"Changer Command\" for %s. Manual load of Volume may be requird.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:200
+#: src/stored/autochanger.c:185
 #, c-format
 msgid "3304 Issuing autochanger \"load slot %d, drive %d\" command.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:208
+#: src/stored/autochanger.c:193
 #, c-format
 msgid "3305 Autochanger \"load slot %d, drive %d\", status is OK.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:217
+#: src/stored/autochanger.c:206
 #, c-format
 msgid ""
 "3992 Bad autochanger \"load slot %d, drive %d\": ERR=%s.\n"
 "Results=%s\n"
 msgstr ""
 
-#: src/stored/autochanger.c:280
+#: src/stored/autochanger.c:268
 #, c-format
 msgid "3301 Issuing autochanger \"loaded? drive %d\" command.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:292
+#: src/stored/autochanger.c:280
 #, c-format
 msgid "3302 Autochanger \"loaded? drive %d\", result is Slot %d.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:299
+#: src/stored/autochanger.c:287
 #, c-format
 msgid "3302 Autochanger \"loaded? drive %d\", result: nothing loaded.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:311
+#: src/stored/autochanger.c:299
 #, c-format
 msgid ""
 "3991 Bad autochanger \"loaded? drive %d\" command: ERR=%s.\n"
 "Results=%s\n"
 msgstr ""
 
-#: src/stored/autochanger.c:328
+#: src/stored/autochanger.c:316
 #, c-format
 msgid "Lock failure on autochanger. ERR=%s\n"
 msgstr ""
 
-#: src/stored/autochanger.c:342
+#: src/stored/autochanger.c:330
 #, c-format
 msgid "Unlock failure on autochanger. ERR=%s\n"
 msgstr ""
 
-#: src/stored/autochanger.c:386 src/stored/autochanger.c:508
+#: src/stored/autochanger.c:374 src/stored/autochanger.c:523
 #, c-format
 msgid "3307 Issuing autochanger \"unload slot %d, drive %d\" command.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:399
+#: src/stored/autochanger.c:387
 #, c-format
 msgid ""
 "3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s\n"
 "Results=%s\n"
 msgstr ""
 
-#: src/stored/autochanger.c:465
+#: src/stored/autochanger.c:473
 #, c-format
 msgid "Volume \"%s\" wanted on %s is in use by device %s\n"
 msgstr ""
 
-#: src/stored/autochanger.c:526
+#: src/stored/autochanger.c:541
 #, c-format
-msgid "3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
+msgid "3997 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:570
+#: src/stored/autochanger.c:585
 #, c-format
 msgid "3993 Device %s not an autochanger device.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:591
+#: src/stored/autochanger.c:612
 #, c-format
 msgid "3306 Issuing autochanger \"%s\" command.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:594
+#: src/stored/autochanger.c:615
 msgid "3996 Open bpipe failed.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:621 src/console/console.c:1458
+#: src/stored/autochanger.c:642 src/console/console.c:1458
 #, c-format
 msgid "Autochanger error: ERR=%s\n"
 msgstr ""
@@ -8343,7 +8392,7 @@ msgid ""
 "\n"
 "Version: %s (%s)\n"
 "\n"
-"Usage: stored [options] [-c config_file] [config_file]\n"
+"Usage: bacula-sd [options] [-c config_file] [config_file]\n"
 "        -c <file>   use <file> as configuration file\n"
 "        -d <nn>     set debug level to <nn>\n"
 "        -dt         print timestamp in debug output\n"
@@ -8426,17 +8475,17 @@ msgid ""
 "using \"TLS Verify Peer\".\n"
 msgstr ""
 
-#: src/stored/stored.c:511
+#: src/stored/stored.c:568
 #, c-format
 msgid "Could not initialize %s\n"
 msgstr ""
 
-#: src/stored/stored.c:525
+#: src/stored/stored.c:582
 #, c-format
 msgid "Could not open device %s\n"
 msgstr ""
 
-#: src/stored/stored.c:539
+#: src/stored/stored.c:596
 #, c-format
 msgid "Could not mount device %s\n"
 msgstr ""
@@ -8466,7 +8515,7 @@ msgstr ""
 msgid "Catastrophic error. Cannot write overflow block to device %s. ERR=%s"
 msgstr ""
 
-#: src/stored/device.c:327 src/stored/dev.c:499
+#: src/stored/device.c:327 src/stored/dev.c:512
 #, c-format
 msgid "Unable to open device %s: ERR=%s\n"
 msgstr ""
@@ -8514,32 +8563,32 @@ msgstr ""
 msgid "Attempt to open read on non-open session.\n"
 msgstr ""
 
-#: src/stored/mount.c:96
+#: src/stored/mount.c:98
 #, c-format
 msgid "Too many errors trying to mount device %s.\n"
 msgstr ""
 
-#: src/stored/mount.c:104
+#: src/stored/mount.c:106
 #, c-format
 msgid "Job %d canceled.\n"
 msgstr ""
 
-#: src/stored/mount.c:280
+#: src/stored/mount.c:282
 #, c-format
 msgid "Volume \"%s\" previously written, moving to end of data.\n"
 msgstr ""
 
-#: src/stored/mount.c:286
+#: src/stored/mount.c:288
 #, c-format
 msgid "Unable to position to end of data on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/mount.c:408 src/stored/mount.c:730
+#: src/stored/mount.c:411 src/stored/mount.c:737
 #, c-format
 msgid "Volume \"%s\" not on device %s.\n"
 msgstr ""
 
-#: src/stored/mount.c:441
+#: src/stored/mount.c:444
 #, c-format
 msgid ""
 "Director wanted Volume \"%s\".\n"
@@ -8547,24 +8596,24 @@ msgid ""
 "    %s"
 msgstr ""
 
-#: src/stored/mount.c:596
+#: src/stored/mount.c:603
 #, c-format
 msgid "Ready to append to end of Volume \"%s\" part=%d size=%s\n"
 msgstr ""
 
-#: src/stored/mount.c:600
+#: src/stored/mount.c:607
 #, c-format
 msgid ""
 "Bacula cannot write on DVD Volume \"%s\" because: The sizes do not match! "
 "Volume=%s Catalog=%s\n"
 msgstr ""
 
-#: src/stored/mount.c:614
+#: src/stored/mount.c:621
 #, c-format
 msgid "Ready to append to end of Volume \"%s\" at file=%d.\n"
 msgstr ""
 
-#: src/stored/mount.c:617
+#: src/stored/mount.c:624
 #, c-format
 msgid ""
 "For Volume \"%s\":\n"
@@ -8572,23 +8621,23 @@ msgid ""
 "Correcting Catalog\n"
 msgstr ""
 
-#: src/stored/mount.c:624 src/stored/mount.c:652
+#: src/stored/mount.c:631 src/stored/mount.c:659
 msgid "Error updating Catalog\n"
 msgstr ""
 
-#: src/stored/mount.c:629
+#: src/stored/mount.c:636
 #, c-format
 msgid ""
 "Bacula cannot write on tape Volume \"%s\" because:\n"
 "The number of files mismatch! Volume=%u Catalog=%u\n"
 msgstr ""
 
-#: src/stored/mount.c:640
+#: src/stored/mount.c:647
 #, c-format
 msgid "Ready to append to end of Volume \"%s\" size=%s\n"
 msgstr ""
 
-#: src/stored/mount.c:644
+#: src/stored/mount.c:651
 #, c-format
 msgid ""
 "For Volume \"%s\":\n"
@@ -8596,46 +8645,46 @@ msgid ""
 "Correcting Catalog\n"
 msgstr ""
 
-#: src/stored/mount.c:657
+#: src/stored/mount.c:664
 #, c-format
 msgid ""
 "Bacula cannot write on disk Volume \"%s\" because: The sizes do not match! "
 "Volume=%s Catalog=%s\n"
 msgstr ""
 
-#: src/stored/mount.c:720
+#: src/stored/mount.c:727
 #, c-format
 msgid "Labeled new Volume \"%s\" on device %s.\n"
 msgstr ""
 
-#: src/stored/mount.c:725
+#: src/stored/mount.c:732
 #, c-format
 msgid "Device %s not configured to autolabel Volumes.\n"
 msgstr ""
 
-#: src/stored/mount.c:744
+#: src/stored/mount.c:751
 #, c-format
 msgid "Marking Volume \"%s\" in Error in Catalog.\n"
 msgstr ""
 
-#: src/stored/mount.c:761
+#: src/stored/mount.c:768
 #, c-format
 msgid ""
 "Autochanger Volume \"%s\" not found in slot %d.\n"
 "    Setting InChanger to zero in catalog.\n"
 msgstr ""
 
-#: src/stored/mount.c:780
+#: src/stored/mount.c:787
 msgid "Hey!!!!! WroteVol non-zero !!!!!\n"
 msgstr ""
 
-#: src/stored/mount.c:827
+#: src/stored/mount.c:834
 #, c-format
 msgid ""
 "Invalid tape position on volume \"%s\" on device %s. Expected %d, got %d\n"
 msgstr ""
 
-#: src/stored/mount.c:864 src/stored/btape.c:3120
+#: src/stored/mount.c:875 src/stored/btape.c:3122
 #, c-format
 msgid "Cannot open Dev=%s, Vol=%s\n"
 msgstr ""
@@ -8721,7 +8770,7 @@ msgid ""
 "Despooling elapsed time = %02d:%02d:%02d, Transfer rate = %s Bytes/second\n"
 msgstr ""
 
-#: src/stored/spool.c:348 src/stored/spool.c:546 src/stored/spool.c:592
+#: src/stored/spool.c:348 src/stored/spool.c:549 src/stored/spool.c:595
 #, c-format
 msgid "Ftruncate spool file failed: ERR=%s\n"
 msgstr ""
@@ -8751,77 +8800,86 @@ msgstr ""
 msgid "Spool data read error. Wanted %u bytes, got %d\n"
 msgstr ""
 
-#: src/stored/spool.c:487
-msgid "User specified spool size reached.\n"
+#: src/stored/spool.c:480
+#, c-format
+msgid ""
+"User specified Job spool size reached: JobSpoolSize=%s MaxJobSpoolSize=%s\n"
 msgstr ""
 
-#: src/stored/spool.c:489
+#: src/stored/spool.c:485
+#, c-format
+msgid ""
+"User specified Device spool size reached: DevSpoolSize=%s MaxDevSpoolSize="
+"%s\n"
+msgstr ""
+
+#: src/stored/spool.c:492
 msgid "Bad return from despool in write_block.\n"
 msgstr ""
 
-#: src/stored/spool.c:497
+#: src/stored/spool.c:500
 msgid "Spooling data again ...\n"
 msgstr ""
 
-#: src/stored/spool.c:529
+#: src/stored/spool.c:532
 #, c-format
 msgid "Error writing header to spool file. ERR=%s\n"
 msgstr ""
 
-#: src/stored/spool.c:534
+#: src/stored/spool.c:537
 #, c-format
 msgid ""
 "Error writing header to spool file. Disk probably full. Attempting recovery. "
 "Wanted to write=%d got=%d\n"
 msgstr ""
 
-#: src/stored/spool.c:552 src/stored/spool.c:598
+#: src/stored/spool.c:555 src/stored/spool.c:601
 msgid "Fatal despooling error."
 msgstr ""
 
-#: src/stored/spool.c:560
+#: src/stored/spool.c:563
 msgid "Retrying after header spooling error failed.\n"
 msgstr ""
 
-#: src/stored/spool.c:576
+#: src/stored/spool.c:579
 #, c-format
 msgid "Error writing data to spool file. ERR=%s\n"
 msgstr ""
 
-#: src/stored/spool.c:609
+#: src/stored/spool.c:612
 msgid "Retrying after data spooling error failed.\n"
 msgstr ""
 
-#: src/stored/spool.c:679
+#: src/stored/spool.c:682
 msgid "Network error on BlastAttributes.\n"
 msgstr ""
 
-#: src/stored/spool.c:703 src/stored/spool.c:727
+#: src/stored/spool.c:706 src/stored/spool.c:730
 #, c-format
 msgid "Fseek on attributes file failed: ERR=%s\n"
 msgstr ""
 
-#: src/stored/spool.c:715
+#: src/stored/spool.c:718
 #, c-format
 msgid "Truncate on attributes file failed: ERR=%s\n"
 msgstr ""
 
-#: src/stored/spool.c:739
+#: src/stored/spool.c:742
 #, c-format
 msgid "Sending spooled attrs to the Director. Despooling %s bytes ...\n"
 msgstr ""
 
-#: src/stored/spool.c:765
+#: src/stored/spool.c:768
 #, c-format
 msgid "fopen attr spool file %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/stored/lock.c:235
+#: src/stored/lock.c:405
 #, c-format
 msgid "pthread_cond_wait failure. ERR=%s\n"
 msgstr ""
 
-#: src/stored/lock.c:335
+#: src/stored/lock.c:504
 msgid "unknown blocked code"
 msgstr ""
 
@@ -8890,252 +8948,267 @@ msgid ""
 "Attempt to define second \"%s\" resource named \"%s\" is not permitted.\n"
 msgstr ""
 
-#: src/stored/dev.c:119
+#: src/stored/dev.c:127
 #, c-format
 msgid "Unable to stat device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:137
+#: src/stored/dev.c:145
 #, c-format
 msgid ""
 "%s is an unknown device type. Must be tape or directory\n"
 " or have RequiresMount=yes for DVD. st_mode=%x\n"
 msgstr ""
 
-#: src/stored/dev.c:147
+#: src/stored/dev.c:155
 msgid "DVD support is now deprecated\n"
 msgstr ""
 
-#: src/stored/dev.c:224
+#: src/stored/dev.c:231
 #, c-format
 msgid "Unable to stat mount point %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:229
+#: src/stored/dev.c:236
 msgid ""
 "Mount and unmount commands must defined for a device which requires mount.\n"
 msgstr ""
 
-#: src/stored/dev.c:240
+#: src/stored/dev.c:247
 #, c-format
 msgid "Min block size > max on device %s\n"
 msgstr ""
 
-#: src/stored/dev.c:244
+#: src/stored/dev.c:251
 #, c-format
 msgid "Block size %u on device %s is too large, using default %u\n"
 msgstr ""
 
-#: src/stored/dev.c:249
+#: src/stored/dev.c:256
 #, c-format
 msgid "Max block size %u not multiple of device %s block size=%d.\n"
 msgstr ""
 
-#: src/stored/dev.c:253
+#: src/stored/dev.c:260
 #, c-format
 msgid "Max Vol Size < 8 * Max Block Size for device %s\n"
 msgstr ""
 
-#: src/stored/dev.c:269 src/stored/dev.c:275
+#: src/stored/dev.c:276 src/stored/dev.c:282
 #, c-format
 msgid "Unable to init cond variable: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:403
+#: src/stored/dev.c:288
+#, c-format
+msgid "Unable to init spool mutex: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:294
+#, c-format
+msgid "Unable to init acquire mutex: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:300
+#, c-format
+msgid "Unable to init read acquire mutex: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:416
 msgid "Illegal mode given to open dev.\n"
 msgstr ""
 
-#: src/stored/dev.c:538
+#: src/stored/dev.c:551
 #, c-format
 msgid "Could not open file device %s. No Volume name given.\n"
 msgstr ""
 
-#: src/stored/dev.c:561
+#: src/stored/dev.c:574
 #, c-format
 msgid "Could not open: %s, ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:626
+#: src/stored/dev.c:639
 #, c-format
 msgid "No tape loaded or drive offline on %s.\n"
 msgstr ""
 
-#: src/stored/dev.c:636
+#: src/stored/dev.c:649
 #, c-format
 msgid "Rewind error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:646 src/stored/dev.c:724 src/stored/dev.c:865
-#: src/stored/dev.c:1454
+#: src/stored/dev.c:659 src/stored/dev.c:737 src/stored/dev.c:878
+#: src/stored/dev.c:1469
 #, c-format
 msgid "lseek error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:695
+#: src/stored/dev.c:708
 #, c-format
 msgid "Bad call to eod. Device %s not open\n"
 msgstr ""
 
-#: src/stored/dev.c:762
+#: src/stored/dev.c:775
 #, c-format
 msgid "ioctl MTEOM error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:772 src/stored/dev.c:906
+#: src/stored/dev.c:785 src/stored/dev.c:919
 #, c-format
 msgid "ioctl MTIOCGET error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:852
+#: src/stored/dev.c:865
 msgid "Bad device call. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:864
+#: src/stored/dev.c:877
 #, c-format
 msgid "Seek error: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:901
+#: src/stored/dev.c:914
 msgid " Bacula status:"
 msgstr ""
 
-#: src/stored/dev.c:902 src/stored/dev.c:985 src/stored/dev.c:987
+#: src/stored/dev.c:915 src/stored/dev.c:998 src/stored/dev.c:1000
 #, c-format
 msgid " file=%d block=%d\n"
 msgstr ""
 
-#: src/stored/dev.c:910
+#: src/stored/dev.c:923
 msgid " Device status:"
 msgstr ""
 
-#: src/stored/dev.c:1009
+#: src/stored/dev.c:1022
 msgid "Bad call to load_dev. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1020 src/stored/dev.c:1033
+#: src/stored/dev.c:1033 src/stored/dev.c:1046
 #, c-format
 msgid "ioctl MTLOAD error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1064
+#: src/stored/dev.c:1077
 #, c-format
 msgid "ioctl MTOFFL error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1105
+#: src/stored/dev.c:1118
 msgid "Bad call to fsf. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1116 src/stored/dev.c:1243
+#: src/stored/dev.c:1129 src/stored/dev.c:1256
 #, c-format
 msgid "Device %s at End of Tape.\n"
 msgstr ""
 
-#: src/stored/dev.c:1147 src/stored/dev.c:1223
+#: src/stored/dev.c:1160 src/stored/dev.c:1236
 #, c-format
 msgid "ioctl MTFSF error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1194 src/stored/btape.c:1975
+#: src/stored/dev.c:1207 src/stored/btape.c:1977
 #, c-format
 msgid "read error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1272
+#: src/stored/dev.c:1285
 msgid "Bad call to bsf. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1278
+#: src/stored/dev.c:1291
 #, c-format
 msgid "Device %s cannot BSF because it is not a tape.\n"
 msgstr ""
 
-#: src/stored/dev.c:1295
+#: src/stored/dev.c:1308
 #, c-format
 msgid "ioctl MTBSF error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1314
+#: src/stored/dev.c:1327
 msgid "Bad call to fsr. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1324
+#: src/stored/dev.c:1337
 #, c-format
 msgid "ioctl MTFSR not permitted on %s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1352
+#: src/stored/dev.c:1365
 #, c-format
 msgid "ioctl MTFSR %d error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1370
+#: src/stored/dev.c:1383
 msgid "Bad call to bsr_dev. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1380
+#: src/stored/dev.c:1393
 #, c-format
 msgid "ioctl MTBSR not permitted on %s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1394
+#: src/stored/dev.c:1407
 #, c-format
 msgid "ioctl MTBSR error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1443
+#: src/stored/dev.c:1458
 msgid "Bad call to reposition. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1522
+#: src/stored/dev.c:1537
 msgid "Bad call to weof_dev. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1532
+#: src/stored/dev.c:1547
 msgid "Attempt to WEOF on non-appendable Volume\n"
 msgstr ""
 
-#: src/stored/dev.c:1550
+#: src/stored/dev.c:1565
 #, c-format
 msgid "ioctl MTWEOF error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1649
+#: src/stored/dev.c:1664
 #, c-format
 msgid "unknown func code %d"
 msgstr ""
 
-#: src/stored/dev.c:1655
+#: src/stored/dev.c:1670
 #, c-format
 msgid "I/O function \"%s\" not supported on this device.\n"
 msgstr ""
 
-#: src/stored/dev.c:1824
+#: src/stored/dev.c:1844
 #, c-format
 msgid "Unable to truncate device %s. ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:1841
+#: src/stored/dev.c:1861
 #, c-format
 msgid "Unable to stat device %s. ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:1855
+#: src/stored/dev.c:1875
 #, c-format
 msgid "Device %s doesn't support ftruncate(). Recreating file %s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1867
+#: src/stored/dev.c:1887
 #, c-format
 msgid "Could not reopen: %s, ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:1989 src/stored/dev.c:2060
+#: src/stored/dev.c:2010 src/stored/dev.c:2081
 #, c-format
 msgid "Device %s cannot be %smounted. ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:2456
+#: src/stored/dev.c:2481
 #, c-format
 msgid "Unable to set eotmodel on device %s: ERR=%s\n"
 msgstr ""
@@ -9289,7 +9362,7 @@ msgstr ""
 msgid "SOS_LABEL: PoolId mismatch for JobId=%u. DB=%d Vol=%d\n"
 msgstr ""
 
-#: src/stored/bscan.c:601 src/stored/bscan.c:1157
+#: src/stored/bscan.c:601 src/stored/bscan.c:1161
 #, c-format
 msgid "Could not find SessId=%d SessTime=%d for EOS record.\n"
 msgstr ""
@@ -9347,107 +9420,107 @@ msgstr ""
 msgid "Got Prog Data Stream record.\n"
 msgstr ""
 
-#: src/stored/bscan.c:858
+#: src/stored/bscan.c:862
 #, c-format
 msgid "Unknown stream type!!! stream=%d len=%i\n"
 msgstr ""
 
-#: src/stored/bscan.c:926
+#: src/stored/bscan.c:930
 #, c-format
 msgid "Could not create File Attributes record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:932
+#: src/stored/bscan.c:936
 #, c-format
 msgid "Created File record: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:977
+#: src/stored/bscan.c:981
 #, c-format
 msgid "Could not create media record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:981 src/stored/bscan.c:1002
+#: src/stored/bscan.c:985 src/stored/bscan.c:1006
 #, c-format
 msgid "Could not update media record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:985
+#: src/stored/bscan.c:989
 #, c-format
 msgid "Created Media record for Volume: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1006
+#: src/stored/bscan.c:1010
 #, c-format
 msgid "Updated Media record at end of Volume: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1023
+#: src/stored/bscan.c:1027
 #, c-format
 msgid "Could not create pool record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1027
+#: src/stored/bscan.c:1031
 #, c-format
 msgid "Created Pool record for Pool: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1046
+#: src/stored/bscan.c:1050
 #, c-format
 msgid "Could not get Client record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1056
+#: src/stored/bscan.c:1060
 #, c-format
 msgid "Created Client record for Client: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1073
+#: src/stored/bscan.c:1077
 #, c-format
 msgid "Fileset \"%s\" already exists.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1077
+#: src/stored/bscan.c:1081
 #, c-format
 msgid "Could not create FileSet record \"%s\". ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1082
+#: src/stored/bscan.c:1086
 #, c-format
 msgid "Created FileSet record \"%s\"\n"
 msgstr ""
 
-#: src/stored/bscan.c:1129
+#: src/stored/bscan.c:1133
 #, c-format
 msgid "Could not create JobId record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1135
+#: src/stored/bscan.c:1139
 #, c-format
 msgid "Could not update job start record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1138
+#: src/stored/bscan.c:1142
 #, c-format
 msgid "Created new JobId=%u record for original JobId=%u\n"
 msgstr ""
 
-#: src/stored/bscan.c:1191
+#: src/stored/bscan.c:1195
 #, c-format
 msgid "Could not update JobId=%u record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1196
+#: src/stored/bscan.c:1200
 #, c-format
 msgid "Updated Job termination record for JobId=%u Level=%s TermStat=%c\n"
 msgstr ""
 
-#: src/stored/bscan.c:1221
+#: src/stored/bscan.c:1225
 #, c-format
 msgid "Job Termination code: %d"
 msgstr ""
 
-#: src/stored/bscan.c:1226
+#: src/stored/bscan.c:1230
 #, c-format
 msgid ""
 "%s\n"
@@ -9467,45 +9540,45 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/bscan.c:1284
+#: src/stored/bscan.c:1288
 #, c-format
 msgid "Could not create JobMedia record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1288
+#: src/stored/bscan.c:1292
 #, c-format
 msgid "Created JobMedia record JobId %d, MediaId %d\n"
 msgstr ""
 
-#: src/stored/bscan.c:1304
+#: src/stored/bscan.c:1308
 #, c-format
 msgid "Could not find SessId=%d SessTime=%d for MD5/SHA1 record.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1318
+#: src/stored/bscan.c:1322
 #, c-format
 msgid "Could not add MD5/SHA1 to File record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1323
+#: src/stored/bscan.c:1327
 msgid "Updated MD5/SHA1 record\n"
 msgstr ""
 
-#: src/stored/job.c:231
+#: src/stored/job.c:234
 #, c-format
 msgid "FD connect failed: Job name not found: %s\n"
 msgstr ""
 
-#: src/stored/job.c:241
+#: src/stored/job.c:244
 #, c-format
 msgid "Hey!!!! JobId %u Job %s already authenticated.\n"
 msgstr ""
 
-#: src/stored/job.c:258
+#: src/stored/job.c:261
 msgid "Unable to authenticate File daemon\n"
 msgstr ""
 
-#: src/stored/job.c:387
+#: src/stored/job.c:390
 msgid "In free_jcr(), but still attached to device!!!!\n"
 msgstr ""
 
@@ -9623,18 +9696,18 @@ msgstr ""
 msgid "Loaded %s\n"
 msgstr ""
 
-#: src/stored/btape.c:576 src/stored/btape.c:1137 src/stored/btape.c:1210
-#: src/stored/btape.c:1290 src/stored/btape.c:1561
+#: src/stored/btape.c:576 src/stored/btape.c:1139 src/stored/btape.c:1212
+#: src/stored/btape.c:1292 src/stored/btape.c:1563
 #, c-format
 msgid "Bad status from rewind. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:579 src/stored/btape.c:1569
+#: src/stored/btape.c:579 src/stored/btape.c:1571
 #, c-format
 msgid "Rewound %s\n"
 msgstr ""
 
-#: src/stored/btape.c:605 src/stored/btape.c:1573
+#: src/stored/btape.c:605 src/stored/btape.c:1575
 #, c-format
 msgid "Bad status from weof. ERR=%s\n"
 msgstr ""
@@ -9696,20 +9769,20 @@ msgstr ""
 msgid "Do you want to continue? (y/n): "
 msgstr ""
 
-#: src/stored/btape.c:748 src/stored/btape.c:2198
+#: src/stored/btape.c:748 src/stored/btape.c:2200
 msgid "Command aborted.\n"
 msgstr ""
 
-#: src/stored/btape.c:764
+#: src/stored/btape.c:765
 #, c-format
 msgid "Block %d i=%d\n"
 msgstr ""
 
-#: src/stored/btape.c:790
+#: src/stored/btape.c:792
 msgid "Skipping read backwards test because BSR turned off.\n"
 msgstr ""
 
-#: src/stored/btape.c:794
+#: src/stored/btape.c:796
 msgid ""
 "\n"
 "=== Write, backup, and re-read test ===\n"
@@ -9723,73 +9796,73 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:807 src/stored/btape.c:818 src/stored/btape.c:829
-#: src/stored/btape.c:1147 src/stored/btape.c:1163 src/stored/btape.c:1905
-#: src/stored/btape.c:2821
+#: src/stored/btape.c:809 src/stored/btape.c:820 src/stored/btape.c:831
+#: src/stored/btape.c:1149 src/stored/btape.c:1165 src/stored/btape.c:1907
+#: src/stored/btape.c:2823
 msgid "Error writing record to block.\n"
 msgstr ""
 
-#: src/stored/btape.c:811 src/stored/btape.c:822 src/stored/btape.c:833
-#: src/stored/btape.c:1151 src/stored/btape.c:1167 src/stored/btape.c:1909
-#: src/stored/btape.c:2825
+#: src/stored/btape.c:813 src/stored/btape.c:824 src/stored/btape.c:835
+#: src/stored/btape.c:1153 src/stored/btape.c:1169 src/stored/btape.c:1911
+#: src/stored/btape.c:2827
 msgid "Error writing block to device.\n"
 msgstr ""
 
-#: src/stored/btape.c:814
+#: src/stored/btape.c:816
 #, c-format
 msgid "Wrote first record of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:825
+#: src/stored/btape.c:827
 #, c-format
 msgid "Wrote second record of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:836
+#: src/stored/btape.c:838
 #, c-format
 msgid "Wrote third record of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:843 src/stored/btape.c:848
+#: src/stored/btape.c:845 src/stored/btape.c:850
 #, c-format
 msgid "Backspace file failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:852
+#: src/stored/btape.c:854
 msgid "Backspaced over EOF OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:854
+#: src/stored/btape.c:856
 #, c-format
 msgid "Backspace record failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:857
+#: src/stored/btape.c:859
 msgid "Backspace record OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:860 src/stored/btape.c:866
+#: src/stored/btape.c:862 src/stored/btape.c:868
 #, c-format
 msgid "Read block failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:871
+#: src/stored/btape.c:873
 msgid "Bad data in record. Test failed!\n"
 msgstr ""
 
-#: src/stored/btape.c:875
+#: src/stored/btape.c:877
 msgid ""
 "\n"
 "Block re-read correct. Test succeeded!\n"
 msgstr ""
 
-#: src/stored/btape.c:876
+#: src/stored/btape.c:878
 msgid ""
 "=== End Write, backup, and re-read test ===\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:883
+#: src/stored/btape.c:885
 msgid ""
 "This is not terribly serious since Bacula only uses\n"
 "this function to verify the last block written to the\n"
@@ -9801,50 +9874,50 @@ msgid ""
 "to your Storage daemon's Device resource definition.\n"
 msgstr ""
 
-#: src/stored/btape.c:905
+#: src/stored/btape.c:907
 #, c-format
 msgid "Begin writing %i files of %sB with raw blocks of %u bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:926 src/stored/btape.c:2877
+#: src/stored/btape.c:928 src/stored/btape.c:2879
 #, c-format
 msgid "Write failed at block %u. stat=%d ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:960
+#: src/stored/btape.c:962
 #, c-format
 msgid "Begin writing %i files of %sB with blocks of %u bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:969
+#: src/stored/btape.c:971
 msgid ""
 "\n"
 "Error writing record to block.\n"
 msgstr ""
 
-#: src/stored/btape.c:973
+#: src/stored/btape.c:975
 msgid ""
 "\n"
 "Error writing block to device.\n"
 msgstr ""
 
-#: src/stored/btape.c:1028
+#: src/stored/btape.c:1030
 msgid "The file_size is too big, stop this test with Ctrl-c.\n"
 msgstr ""
 
-#: src/stored/btape.c:1056
+#: src/stored/btape.c:1058
 msgid "Test with zero data, should give the maximum throughput.\n"
 msgstr ""
 
-#: src/stored/btape.c:1068 src/stored/btape.c:1094
+#: src/stored/btape.c:1070 src/stored/btape.c:1096
 msgid "Test with random data, should give the minimum throughput.\n"
 msgstr ""
 
-#: src/stored/btape.c:1083
+#: src/stored/btape.c:1085
 msgid "Test with zero data and bacula block structure.\n"
 msgstr ""
 
-#: src/stored/btape.c:1123
+#: src/stored/btape.c:1125
 #, c-format
 msgid ""
 "\n"
@@ -9858,66 +9931,66 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1155 src/stored/btape.c:1171
+#: src/stored/btape.c:1157 src/stored/btape.c:1173
 #, c-format
 msgid "Wrote %d blocks of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:1213 src/stored/btape.c:1293
+#: src/stored/btape.c:1215 src/stored/btape.c:1295
 msgid "Rewind OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:1226 src/stored/btape.c:1345
+#: src/stored/btape.c:1228 src/stored/btape.c:1347
 msgid "Got EOF on tape.\n"
 msgstr ""
 
-#: src/stored/btape.c:1231
+#: src/stored/btape.c:1233
 #, c-format
 msgid "Read block %d failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1237
+#: src/stored/btape.c:1239
 #, c-format
 msgid "Read record failed. Block %d! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1243 src/stored/btape.c:1375
+#: src/stored/btape.c:1245 src/stored/btape.c:1377
 #, c-format
 msgid "Bad data in record. Expected %d, got %d at byte %d. Test failed!\n"
 msgstr ""
 
-#: src/stored/btape.c:1250
+#: src/stored/btape.c:1252
 #, c-format
 msgid "%d blocks re-read correctly.\n"
 msgstr ""
 
-#: src/stored/btape.c:1253 src/stored/btape.c:1382
+#: src/stored/btape.c:1255 src/stored/btape.c:1384
 msgid ""
 "=== Test Succeeded. End Write, rewind, and re-read test ===\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1281
+#: src/stored/btape.c:1283
 msgid "Block position test\n"
 msgstr ""
 
-#: src/stored/btape.c:1336
+#: src/stored/btape.c:1338
 #, c-format
 msgid "Reposition to file:block %d:%d\n"
 msgstr ""
 
-#: src/stored/btape.c:1338
+#: src/stored/btape.c:1340
 msgid "Reposition error.\n"
 msgstr ""
 
-#: src/stored/btape.c:1351
+#: src/stored/btape.c:1353
 #, c-format
 msgid ""
 "Read block %d failed! file=%d blk=%d. ERR=%s\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1353
+#: src/stored/btape.c:1355
 msgid ""
 "This may be because the tape drive block size is not\n"
 " set to variable blocking as normally used by Bacula.\n"
@@ -9931,17 +10004,17 @@ msgid ""
 " in your Device resource.\n"
 msgstr ""
 
-#: src/stored/btape.c:1369
+#: src/stored/btape.c:1371
 #, c-format
 msgid "Read record failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1380
+#: src/stored/btape.c:1382
 #, c-format
 msgid "Block %d re-read correctly.\n"
 msgstr ""
 
-#: src/stored/btape.c:1401
+#: src/stored/btape.c:1403
 msgid ""
 "\n"
 "\n"
@@ -9955,58 +10028,58 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1425
+#: src/stored/btape.c:1427
 msgid "Now moving to end of medium.\n"
 msgstr ""
 
-#: src/stored/btape.c:1427 src/stored/btape.c:1656
+#: src/stored/btape.c:1429 src/stored/btape.c:1658
 #, c-format
 msgid "We should be in file 3. I am at file %d. %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1428 src/stored/btape.c:1446 src/stored/btape.c:1645
-#: src/stored/btape.c:1657 src/stored/btape.c:1670 src/stored/btape.c:1687
+#: src/stored/btape.c:1430 src/stored/btape.c:1448 src/stored/btape.c:1647
+#: src/stored/btape.c:1659 src/stored/btape.c:1672 src/stored/btape.c:1689
 msgid "This is correct!"
 msgstr ""
 
-#: src/stored/btape.c:1428 src/stored/btape.c:1446 src/stored/btape.c:1645
-#: src/stored/btape.c:1657 src/stored/btape.c:1670 src/stored/btape.c:1687
+#: src/stored/btape.c:1430 src/stored/btape.c:1448 src/stored/btape.c:1647
+#: src/stored/btape.c:1659 src/stored/btape.c:1672 src/stored/btape.c:1689
 msgid "This is NOT correct!!!!"
 msgstr ""
 
-#: src/stored/btape.c:1434
+#: src/stored/btape.c:1436
 msgid ""
 "\n"
 "Now the important part, I am going to attempt to append to the tape.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1441
+#: src/stored/btape.c:1443
 msgid ""
 "Done appending, there should be no I/O errors\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1442
+#: src/stored/btape.c:1444
 msgid "Doing Bacula scan of blocks:\n"
 msgstr ""
 
-#: src/stored/btape.c:1444
+#: src/stored/btape.c:1446
 msgid "End scanning the tape.\n"
 msgstr ""
 
-#: src/stored/btape.c:1445 src/stored/btape.c:1669
+#: src/stored/btape.c:1447 src/stored/btape.c:1671
 #, c-format
 msgid "We should be in file 4. I am at file %d. %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1470
+#: src/stored/btape.c:1472
 msgid ""
 "\n"
 "Autochanger enabled, but no name or no command device specified.\n"
 msgstr ""
 
-#: src/stored/btape.c:1474
+#: src/stored/btape.c:1476
 msgid ""
 "\n"
 "Ah, I see you have an autochanger configured.\n"
@@ -10014,13 +10087,13 @@ msgid ""
 " that I can write on in Slot 1.\n"
 msgstr ""
 
-#: src/stored/btape.c:1477
+#: src/stored/btape.c:1479
 msgid ""
 "\n"
 "Do you wish to continue with the Autochanger test? (y/n): "
 msgstr ""
 
-#: src/stored/btape.c:1484
+#: src/stored/btape.c:1486
 msgid ""
 "\n"
 "\n"
@@ -10028,74 +10101,74 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1493
+#: src/stored/btape.c:1495
 msgid "3301 Issuing autochanger \"loaded\" command.\n"
 msgstr ""
 
-#: src/stored/btape.c:1502
+#: src/stored/btape.c:1504
 #, c-format
 msgid "3991 Bad autochanger command: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1503
+#: src/stored/btape.c:1505
 #, c-format
 msgid "3991 result=\"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1507
+#: src/stored/btape.c:1509
 #, c-format
 msgid "Slot %d loaded. I am going to unload it.\n"
 msgstr ""
 
-#: src/stored/btape.c:1509
+#: src/stored/btape.c:1511
 msgid "Nothing loaded in the drive. OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:1516
+#: src/stored/btape.c:1518
 #, c-format
 msgid "3302 Issuing autochanger \"unload %d %d\" command.\n"
 msgstr ""
 
-#: src/stored/btape.c:1521
+#: src/stored/btape.c:1523
 #, c-format
 msgid "unload status=%s %d\n"
 msgstr ""
 
-#: src/stored/btape.c:1521
+#: src/stored/btape.c:1523
 msgid "Bad"
 msgstr ""
 
-#: src/stored/btape.c:1524
+#: src/stored/btape.c:1526
 #, c-format
 msgid "3992 Bad autochanger command: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1525
+#: src/stored/btape.c:1527
 #, c-format
 msgid "3992 result=\"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1535
+#: src/stored/btape.c:1537
 #, c-format
 msgid "3303 Issuing autochanger \"load %d %d\" command.\n"
 msgstr ""
 
-#: src/stored/btape.c:1543
+#: src/stored/btape.c:1545
 #, c-format
 msgid "3303 Autochanger \"load %d %d\" status is OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:1547
+#: src/stored/btape.c:1549
 #, c-format
 msgid "3993 Bad autochanger command: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1548
+#: src/stored/btape.c:1550
 #, c-format
 msgid "3993 result=\"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1563
+#: src/stored/btape.c:1565
 msgid ""
 "\n"
 "The test failed, probably because you need to put\n"
@@ -10103,12 +10176,12 @@ msgid ""
 "Adding a 30 second sleep and trying again ...\n"
 msgstr ""
 
-#: src/stored/btape.c:1576
+#: src/stored/btape.c:1578
 #, c-format
 msgid "Wrote EOF to %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1580
+#: src/stored/btape.c:1582
 #, c-format
 msgid ""
 "\n"
@@ -10120,18 +10193,18 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1585
+#: src/stored/btape.c:1587
 msgid ""
 "\n"
 "The test autochanger worked!!\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1596
+#: src/stored/btape.c:1598
 msgid "You must correct this error or the Autochanger will not work.\n"
 msgstr ""
 
-#: src/stored/btape.c:1614
+#: src/stored/btape.c:1616
 msgid ""
 "\n"
 "\n"
@@ -10143,30 +10216,30 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1639
+#: src/stored/btape.c:1641
 msgid "Now forward spacing 1 file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1641 src/stored/btape.c:1653 src/stored/btape.c:1666
-#: src/stored/btape.c:1684 src/stored/btape.c:1860
+#: src/stored/btape.c:1643 src/stored/btape.c:1655 src/stored/btape.c:1668
+#: src/stored/btape.c:1686 src/stored/btape.c:1862
 #, c-format
 msgid "Bad status from fsr. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1644
+#: src/stored/btape.c:1646
 #, c-format
 msgid "We should be in file 1. I am at file %d. %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1651
+#: src/stored/btape.c:1653
 msgid "Now forward spacing 2 files.\n"
 msgstr ""
 
-#: src/stored/btape.c:1664
+#: src/stored/btape.c:1666
 msgid "Now forward spacing 4 files.\n"
 msgstr ""
 
-#: src/stored/btape.c:1676
+#: src/stored/btape.c:1678
 msgid ""
 "The test worked this time. Please add:\n"
 "\n"
@@ -10175,35 +10248,35 @@ msgid ""
 "to your Device resource for this drive.\n"
 msgstr ""
 
-#: src/stored/btape.c:1682
+#: src/stored/btape.c:1684
 msgid "Now forward spacing 1 more file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1686
+#: src/stored/btape.c:1688
 #, c-format
 msgid "We should be in file 5. I am at file %d. %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1691
+#: src/stored/btape.c:1693
 msgid ""
 "\n"
 "=== End Forward space files test ===\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1695
+#: src/stored/btape.c:1697
 msgid ""
 "\n"
 "The forward space file test failed.\n"
 msgstr ""
 
-#: src/stored/btape.c:1697
+#: src/stored/btape.c:1699
 msgid ""
 "You have Fast Forward Space File enabled.\n"
 "I am turning it off then retrying the test.\n"
 msgstr ""
 
-#: src/stored/btape.c:1703
+#: src/stored/btape.c:1705
 msgid ""
 "You must correct this error or Bacula will not work.\n"
 "Some systems, e.g. OpenBSD, require you to set\n"
@@ -10211,7 +10284,7 @@ msgid ""
 "in your device resource. Use with caution.\n"
 msgstr ""
 
-#: src/stored/btape.c:1737
+#: src/stored/btape.c:1739
 msgid ""
 "\n"
 "Append test failed. Attempting again.\n"
@@ -10221,7 +10294,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1745
+#: src/stored/btape.c:1747
 msgid ""
 "\n"
 "\n"
@@ -10233,14 +10306,14 @@ msgid ""
 "to your Device resource in the Storage conf file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1752
+#: src/stored/btape.c:1754
 msgid ""
 "\n"
 "\n"
 "That appears *NOT* to have corrected the problem.\n"
 msgstr ""
 
-#: src/stored/btape.c:1757
+#: src/stored/btape.c:1759
 msgid ""
 "\n"
 "\n"
@@ -10248,7 +10321,7 @@ msgid ""
 "Setting \"BSF at EOM = yes\" and retrying append test.\n"
 msgstr ""
 
-#: src/stored/btape.c:1762
+#: src/stored/btape.c:1764
 msgid ""
 "\n"
 "\n"
@@ -10261,7 +10334,7 @@ msgid ""
 "to your Device resource in the Storage conf file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1773
+#: src/stored/btape.c:1775
 msgid ""
 "\n"
 "Append test failed.\n"
@@ -10288,7 +10361,7 @@ msgid ""
 "in your device resource. Use with caution.\n"
 msgstr ""
 
-#: src/stored/btape.c:1795
+#: src/stored/btape.c:1797
 msgid ""
 "\n"
 "The above Bacula scan should have output identical to what follows.\n"
@@ -10312,111 +10385,111 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1838
+#: src/stored/btape.c:1840
 #, c-format
 msgid "Bad status from fsf. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1842
+#: src/stored/btape.c:1844
 msgid "Forward spaced 1 file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1845
+#: src/stored/btape.c:1847
 #, c-format
 msgid "Forward spaced %d files.\n"
 msgstr ""
 
-#: src/stored/btape.c:1864
+#: src/stored/btape.c:1866
 msgid "Forward spaced 1 record.\n"
 msgstr ""
 
-#: src/stored/btape.c:1867
+#: src/stored/btape.c:1869
 #, c-format
 msgid "Forward spaced %d records.\n"
 msgstr ""
 
-#: src/stored/btape.c:1912
+#: src/stored/btape.c:1914
 #, c-format
 msgid "Wrote one record of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:1914
+#: src/stored/btape.c:1916
 msgid "Wrote block to device.\n"
 msgstr ""
 
-#: src/stored/btape.c:1928
+#: src/stored/btape.c:1930
 msgid "Enter length to read: "
 msgstr ""
 
-#: src/stored/btape.c:1933
+#: src/stored/btape.c:1935
 msgid "Bad length entered, using default of 1024 bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:1942
+#: src/stored/btape.c:1944
 #, c-format
 msgid "Read of %d bytes gives stat=%d. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1965 src/stored/btape.c:2014
+#: src/stored/btape.c:1967 src/stored/btape.c:2016
 #, c-format
 msgid "End of tape\n"
 msgstr ""
 
-#: src/stored/btape.c:1970
+#: src/stored/btape.c:1972
 #, c-format
 msgid "Starting scan at file %u\n"
 msgstr ""
 
-#: src/stored/btape.c:1977
+#: src/stored/btape.c:1979
 #, c-format
 msgid "Bad status from read %d. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1980 src/stored/btape.c:1994 src/stored/btape.c:2058
-#: src/stored/btape.c:2070 src/stored/btape.c:2083 src/stored/btape.c:2099
+#: src/stored/btape.c:1982 src/stored/btape.c:1996 src/stored/btape.c:2060
+#: src/stored/btape.c:2072 src/stored/btape.c:2085 src/stored/btape.c:2101
 #, c-format
 msgid "1 block of %d bytes in file %d\n"
 msgstr ""
 
-#: src/stored/btape.c:1983 src/stored/btape.c:1997 src/stored/btape.c:2061
-#: src/stored/btape.c:2073 src/stored/btape.c:2086 src/stored/btape.c:2102
+#: src/stored/btape.c:1985 src/stored/btape.c:1999 src/stored/btape.c:2063
+#: src/stored/btape.c:2075 src/stored/btape.c:2088 src/stored/btape.c:2104
 #, c-format
 msgid "%d blocks of %d bytes in file %d\n"
 msgstr ""
 
-#: src/stored/btape.c:2005 src/stored/btape.c:2077
+#: src/stored/btape.c:2007 src/stored/btape.c:2079
 #, c-format
 msgid "End of File mark.\n"
 msgstr ""
 
-#: src/stored/btape.c:2026 src/stored/btape.c:2130
+#: src/stored/btape.c:2028 src/stored/btape.c:2132
 #, c-format
 msgid "Total files=%d, blocks=%d, bytes = %s\n"
 msgstr ""
 
-#: src/stored/btape.c:2090
+#: src/stored/btape.c:2092
 #, c-format
 msgid "Short block read.\n"
 msgstr ""
 
-#: src/stored/btape.c:2093
+#: src/stored/btape.c:2095
 #, c-format
 msgid "Error reading block. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2117
+#: src/stored/btape.c:2119
 #, c-format
 msgid ""
 "Block=%u file,blk=%u,%u blen=%u First rec FI=%s SessId=%u SessTim=%u Strm=%s "
 "rlen=%d\n"
 msgstr ""
 
-#: src/stored/btape.c:2139
+#: src/stored/btape.c:2141
 #, c-format
 msgid "Device status: %u. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2171
+#: src/stored/btape.c:2173
 #, c-format
 msgid ""
 "\n"
@@ -10442,79 +10515,79 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2189
+#: src/stored/btape.c:2191
 msgid ""
 "Do you want to run the simplified test (s) with one tape\n"
 "or the complete multiple tape (m) test: (s/m) "
 msgstr ""
 
-#: src/stored/btape.c:2192
+#: src/stored/btape.c:2194
 msgid "Simple test (single tape) selected.\n"
 msgstr ""
 
-#: src/stored/btape.c:2195
+#: src/stored/btape.c:2197
 msgid "Multiple tape test selected.\n"
 msgstr ""
 
-#: src/stored/btape.c:2237
+#: src/stored/btape.c:2239
 msgid "Wrote Start of Session label.\n"
 msgstr ""
 
-#: src/stored/btape.c:2256
+#: src/stored/btape.c:2258
 #, c-format
 msgid "%s Begin writing Bacula records to tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2258
+#: src/stored/btape.c:2260
 #, c-format
 msgid "%s Begin writing Bacula records to first tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2284
+#: src/stored/btape.c:2286
 msgid "Flush block failed.\n"
 msgstr ""
 
-#: src/stored/btape.c:2298
+#: src/stored/btape.c:2300
 #, c-format
 msgid "Wrote block=%u, file,blk=%u,%u VolBytes=%s rate=%sB/s\n"
 msgstr ""
 
-#: src/stored/btape.c:2309
+#: src/stored/btape.c:2311
 #, c-format
 msgid "%s Flush block, write EOF\n"
 msgstr ""
 
-#: src/stored/btape.c:2318
+#: src/stored/btape.c:2320
 msgid "Wrote 1000 blocks on second tape. Done.\n"
 msgstr ""
 
-#: src/stored/btape.c:2323
+#: src/stored/btape.c:2325
 msgid "Not OK\n"
 msgstr ""
 
-#: src/stored/btape.c:2347
+#: src/stored/btape.c:2349
 msgid "Job canceled.\n"
 msgstr ""
 
-#: src/stored/btape.c:2358
+#: src/stored/btape.c:2360
 msgid "Set ok=false after write_block_to_device.\n"
 msgstr ""
 
-#: src/stored/btape.c:2362
+#: src/stored/btape.c:2364
 msgid "Wrote End of Session label.\n"
 msgstr ""
 
-#: src/stored/btape.c:2386
+#: src/stored/btape.c:2388
 #, c-format
 msgid "Wrote state file last_block_num1=%d last_block_num2=%d\n"
 msgstr ""
 
-#: src/stored/btape.c:2390
+#: src/stored/btape.c:2392
 #, c-format
 msgid "Could not create state file: %s ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2401
+#: src/stored/btape.c:2403
 #, c-format
 msgid ""
 "\n"
@@ -10522,7 +10595,7 @@ msgid ""
 "%s Done filling tape at %d:%d. Now beginning re-read of tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2404
+#: src/stored/btape.c:2406
 #, c-format
 msgid ""
 "\n"
@@ -10530,23 +10603,23 @@ msgid ""
 "%s Done filling tapes at %d:%d. Now beginning re-read of first tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2410
+#: src/stored/btape.c:2412
 msgid "do_unfill failed.\n"
 msgstr ""
 
-#: src/stored/btape.c:2415
+#: src/stored/btape.c:2417
 #, c-format
 msgid "%s: Error during test.\n"
 msgstr ""
 
-#: src/stored/btape.c:2450
+#: src/stored/btape.c:2452
 msgid ""
 "\n"
 "The state file level has changed. You must redo\n"
 "the fill command.\n"
 msgstr ""
 
-#: src/stored/btape.c:2457
+#: src/stored/btape.c:2459
 #, c-format
 msgid ""
 "\n"
@@ -10554,95 +10627,95 @@ msgid ""
 "You must redo the fill command.\n"
 msgstr ""
 
-#: src/stored/btape.c:2523
+#: src/stored/btape.c:2525
 msgid "Mount first tape. Press enter when ready: "
 msgstr ""
 
-#: src/stored/btape.c:2539
+#: src/stored/btape.c:2541
 msgid "Rewinding.\n"
 msgstr ""
 
-#: src/stored/btape.c:2544
+#: src/stored/btape.c:2546
 #, c-format
 msgid "Reading the first 10000 records from %u:%u.\n"
 msgstr ""
 
-#: src/stored/btape.c:2548 src/stored/btape.c:2616
+#: src/stored/btape.c:2550 src/stored/btape.c:2618
 #, c-format
 msgid "Reposition from %u:%u to %u:%u\n"
 msgstr ""
 
-#: src/stored/btape.c:2551 src/stored/btape.c:2603 src/stored/btape.c:2619
+#: src/stored/btape.c:2553 src/stored/btape.c:2605 src/stored/btape.c:2621
 #, c-format
 msgid "Reposition error. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2554
+#: src/stored/btape.c:2556
 #, c-format
 msgid "Reading block %u.\n"
 msgstr ""
 
-#: src/stored/btape.c:2556 src/stored/btape.c:2608 src/stored/btape.c:2624
+#: src/stored/btape.c:2558 src/stored/btape.c:2610 src/stored/btape.c:2626
 #, c-format
 msgid "Error reading block: ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2561
+#: src/stored/btape.c:2563
 msgid ""
 "\n"
 "The last block on the tape matches. Test succeeded.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2564
+#: src/stored/btape.c:2566
 msgid ""
 "\n"
 "The last block of the first tape matches.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2588
+#: src/stored/btape.c:2590
 msgid "Mount second tape. Press enter when ready: "
 msgstr ""
 
-#: src/stored/btape.c:2601
+#: src/stored/btape.c:2603
 #, c-format
 msgid "Reposition from %u:%u to 0:1\n"
 msgstr ""
 
-#: src/stored/btape.c:2606 src/stored/btape.c:2622
+#: src/stored/btape.c:2608 src/stored/btape.c:2624
 #, c-format
 msgid "Reading block %d.\n"
 msgstr ""
 
-#: src/stored/btape.c:2612
+#: src/stored/btape.c:2614
 msgid ""
 "\n"
 "The first block on the second tape matches.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2628
+#: src/stored/btape.c:2630
 msgid ""
 "\n"
 "The last block on the second tape matches. Test succeeded.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2645
+#: src/stored/btape.c:2647
 #, c-format
 msgid "10000 records read now at %d:%d\n"
 msgstr ""
 
-#: src/stored/btape.c:2671 src/stored/btape.c:2682 src/stored/btape.c:2727
+#: src/stored/btape.c:2673 src/stored/btape.c:2684 src/stored/btape.c:2729
 msgid "Last block written"
 msgstr ""
 
-#: src/stored/btape.c:2673 src/stored/btape.c:2683
+#: src/stored/btape.c:2675 src/stored/btape.c:2685
 msgid "Block read back"
 msgstr ""
 
-#: src/stored/btape.c:2674
+#: src/stored/btape.c:2676
 #, c-format
 msgid ""
 "\n"
@@ -10650,7 +10723,7 @@ msgid ""
 "The blocks differ at byte %u\n"
 msgstr ""
 
-#: src/stored/btape.c:2675
+#: src/stored/btape.c:2677
 msgid ""
 "\n"
 "\n"
@@ -10660,172 +10733,172 @@ msgid ""
 "to write multi-tape Volumes.!!!!\n"
 msgstr ""
 
-#: src/stored/btape.c:2711
+#: src/stored/btape.c:2713
 #, c-format
 msgid "Last block at: %u:%u this_dev_block_num=%d\n"
 msgstr ""
 
-#: src/stored/btape.c:2725
+#: src/stored/btape.c:2727
 #, c-format
 msgid "Block not written: FileIndex=%u blk_block=%u Size=%u\n"
 msgstr ""
 
-#: src/stored/btape.c:2729
+#: src/stored/btape.c:2731
 msgid "Block not written"
 msgstr ""
 
-#: src/stored/btape.c:2744
+#: src/stored/btape.c:2746
 #, c-format
 msgid "End of tape %d:%d. Volume Bytes=%s. Write rate = %sB/s\n"
 msgstr ""
 
-#: src/stored/btape.c:2795
+#: src/stored/btape.c:2797
 msgid "Test writing blocks of 64512 bytes to tape.\n"
 msgstr ""
 
-#: src/stored/btape.c:2797
+#: src/stored/btape.c:2799
 msgid "How many blocks do you want to write? (1000): "
 msgstr ""
 
-#: src/stored/btape.c:2814
+#: src/stored/btape.c:2816
 #, c-format
 msgid "Begin writing %d Bacula blocks to tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2857
+#: src/stored/btape.c:2859
 #, c-format
 msgid "Begin writing raw blocks of %u bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:2888
+#: src/stored/btape.c:2890
 msgid "test autochanger"
 msgstr ""
 
-#: src/stored/btape.c:2889
+#: src/stored/btape.c:2891
 msgid "backspace file"
 msgstr ""
 
-#: src/stored/btape.c:2890
+#: src/stored/btape.c:2892
 msgid "backspace record"
 msgstr ""
 
-#: src/stored/btape.c:2891
+#: src/stored/btape.c:2893
 msgid "list device capabilities"
 msgstr ""
 
-#: src/stored/btape.c:2892
+#: src/stored/btape.c:2894
 msgid "clear tape errors"
 msgstr ""
 
-#: src/stored/btape.c:2893
+#: src/stored/btape.c:2895
 msgid "go to end of Bacula data for append"
 msgstr ""
 
-#: src/stored/btape.c:2894
+#: src/stored/btape.c:2896
 msgid "go to the physical end of medium"
 msgstr ""
 
-#: src/stored/btape.c:2895
+#: src/stored/btape.c:2897
 msgid "fill tape, write onto second volume"
 msgstr ""
 
-#: src/stored/btape.c:2896
+#: src/stored/btape.c:2898
 msgid "read filled tape"
 msgstr ""
 
-#: src/stored/btape.c:2897
+#: src/stored/btape.c:2899
 msgid "forward space a file"
 msgstr ""
 
-#: src/stored/btape.c:2898
+#: src/stored/btape.c:2900
 msgid "forward space a record"
 msgstr ""
 
-#: src/stored/btape.c:2899
+#: src/stored/btape.c:2901
 msgid "print this command"
 msgstr ""
 
-#: src/stored/btape.c:2900
+#: src/stored/btape.c:2902
 msgid "write a Bacula label to the tape"
 msgstr ""
 
-#: src/stored/btape.c:2901
+#: src/stored/btape.c:2903
 msgid "load a tape"
 msgstr ""
 
-#: src/stored/btape.c:2902
+#: src/stored/btape.c:2904
 msgid "quit btape"
 msgstr ""
 
-#: src/stored/btape.c:2903
+#: src/stored/btape.c:2905
 msgid "use write() to fill tape"
 msgstr ""
 
-#: src/stored/btape.c:2904
+#: src/stored/btape.c:2906
 msgid "read and print the Bacula tape label"
 msgstr ""
 
-#: src/stored/btape.c:2905
+#: src/stored/btape.c:2907
 msgid "test record handling functions"
 msgstr ""
 
-#: src/stored/btape.c:2906
+#: src/stored/btape.c:2908
 msgid "rewind the tape"
 msgstr ""
 
-#: src/stored/btape.c:2907
+#: src/stored/btape.c:2909
 msgid "read() tape block by block to EOT and report"
 msgstr ""
 
-#: src/stored/btape.c:2908
+#: src/stored/btape.c:2910
 msgid "Bacula read block by block to EOT and report"
 msgstr ""
 
-#: src/stored/btape.c:2909
+#: src/stored/btape.c:2911
 msgid ""
 "[file_size=n(GB)|nb_file=3|skip_zero|skip_random|skip_raw|skip_block] report "
 "drive speed"
 msgstr ""
 
-#: src/stored/btape.c:2910
+#: src/stored/btape.c:2912
 msgid "print tape status"
 msgstr ""
 
-#: src/stored/btape.c:2911
+#: src/stored/btape.c:2913
 msgid "General test Bacula tape functions"
 msgstr ""
 
-#: src/stored/btape.c:2912
+#: src/stored/btape.c:2914
 msgid "write an EOF on the tape"
 msgstr ""
 
-#: src/stored/btape.c:2913
+#: src/stored/btape.c:2915
 msgid "write a single Bacula block"
 msgstr ""
 
-#: src/stored/btape.c:2914
+#: src/stored/btape.c:2916
 msgid "read a single record"
 msgstr ""
 
-#: src/stored/btape.c:2915
+#: src/stored/btape.c:2917
 msgid "read a single Bacula block"
 msgstr ""
 
-#: src/stored/btape.c:2916
+#: src/stored/btape.c:2918
 msgid "quick fill command"
 msgstr ""
 
-#: src/stored/btape.c:2937
+#: src/stored/btape.c:2939
 #, c-format
 msgid "\"%s\" is an invalid command\n"
 msgstr ""
 
-#: src/stored/btape.c:2946
+#: src/stored/btape.c:2948
 #, c-format
 msgid "Interactive commands:\n"
 msgstr ""
 
-#: src/stored/btape.c:2957
+#: src/stored/btape.c:2959
 #, c-format
 msgid ""
 "\n"
@@ -10843,22 +10916,22 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:3045
+#: src/stored/btape.c:3047
 #, c-format
 msgid "Mount second Volume on device %s and press return when ready: "
 msgstr ""
 
-#: src/stored/btape.c:3073
+#: src/stored/btape.c:3075
 #, c-format
 msgid "Mount blank Volume on device %s and press return when ready: "
 msgstr ""
 
-#: src/stored/btape.c:3093
+#: src/stored/btape.c:3095
 #, c-format
 msgid "End of Volume \"%s\" %d records.\n"
 msgstr ""
 
-#: src/stored/btape.c:3107
+#: src/stored/btape.c:3109
 #, c-format
 msgid "Read block=%u, VolBytes=%s rate=%sB/s\n"
 msgstr ""
@@ -10930,220 +11003,242 @@ msgstr ""
 msgid "JobId=%s, Job %s waiting to reserve a device.\n"
 msgstr ""
 
-#: src/stored/block.c:89
+#: src/stored/block.c:102
 #, c-format
 msgid ""
 "Dump block %s %x: size=%d BlkNum=%d\n"
 "               Hdrcksum=%x cksum=%x\n"
 msgstr ""
 
-#: src/stored/block.c:102
+#: src/stored/block.c:115
 #, c-format
 msgid "   Rec: VId=%u VT=%u FI=%s Strm=%s len=%d p=%x\n"
 msgstr ""
 
-#: src/stored/block.c:158
+#: src/stored/block.c:171
 #, c-format
 msgid "%d block read errors not printed.\n"
 msgstr ""
 
-#: src/stored/block.c:248 src/stored/block.c:264 src/stored/block.c:274
+#: src/stored/block.c:264 src/stored/block.c:280 src/stored/block.c:290
 #, c-format
 msgid ""
 "Volume data error at %u:%u! Wanted ID: \"%s\", got \"%s\". Buffer "
 "discarded.\n"
 msgstr ""
 
-#: src/stored/block.c:289
+#: src/stored/block.c:305
 #, c-format
 msgid ""
 "Volume data error at %u:%u! Block length %u is insane (too large), probably "
 "due to a bad archive.\n"
 msgstr ""
 
-#: src/stored/block.c:315
+#: src/stored/block.c:331
 #, c-format
 msgid ""
 "Volume data error at %u:%u!\n"
 "Block checksum mismatch in block=%u len=%d: calc=%x blk=%x\n"
 msgstr ""
 
-#: src/stored/block.c:434
+#: src/stored/block.c:452
 #, c-format
 msgid "Cannot write block. Device at EOM. dev=%s\n"
 msgstr ""
 
-#: src/stored/block.c:439
+#: src/stored/block.c:458
 #, c-format
 msgid "Attempt to write on read-only Volume. dev=%s\n"
 msgstr ""
 
-#: src/stored/block.c:444
+#: src/stored/block.c:464
 #, c-format
 msgid "Attempt to write on closed device=%s\n"
 msgstr ""
 
-#: src/stored/block.c:491
+#: src/stored/block.c:513
 #, c-format
 msgid "User defined maximum volume capacity %s exceeded on device %s.\n"
 msgstr ""
 
-#: src/stored/block.c:506
+#: src/stored/block.c:528
 #, c-format
 msgid "Unable to write EOF. ERR=%s\n"
 msgstr ""
 
-#: src/stored/block.c:532 src/stored/block.c:557
+#: src/stored/block.c:554 src/stored/block.c:588
 msgid "Write block header zeroed.\n"
 msgstr ""
 
-#: src/stored/block.c:576
+#: src/stored/block.c:580
+#, c-format
+msgid "Block checksum changed during write: before=%ud after=%ud\n"
+msgstr ""
+
+#: src/stored/block.c:607
 #, c-format
 msgid "Write error at %u:%u on device %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/block.c:583
+#: src/stored/block.c:614
 #, c-format
 msgid "End of Volume \"%s\" at %u:%u on device %s. Write of %u bytes got %d.\n"
 msgstr ""
 
-#: src/stored/block.c:664 src/stored/block.c:670
+#: src/stored/block.c:695 src/stored/block.c:701
 #, c-format
 msgid "Backspace file at EOT failed. ERR=%s\n"
 msgstr ""
 
-#: src/stored/block.c:677
+#: src/stored/block.c:708
 #, c-format
 msgid "Backspace record at EOT failed. ERR=%s\n"
 msgstr ""
 
-#: src/stored/block.c:694
+#: src/stored/block.c:725
 #, c-format
 msgid "Re-read last block at EOT failed. ERR=%s"
 msgstr ""
 
-#: src/stored/block.c:704
+#: src/stored/block.c:735
 #, c-format
 msgid ""
 "Re-read of last block: block numbers differ by more than one.\n"
 "Probable tape misconfiguration and data loss. Read block=%u Want block=%u.\n"
 msgstr ""
 
-#: src/stored/block.c:709
+#: src/stored/block.c:740
 #, c-format
 msgid ""
 "Re-read of last block OK, but block numbers differ. Read block=%u Want block="
 "%u.\n"
 msgstr ""
 
-#: src/stored/block.c:713
+#: src/stored/block.c:744
 msgid "Re-read of last block succeeded.\n"
 msgstr ""
 
-#: src/stored/block.c:745
+#: src/stored/block.c:777
 #, c-format
 msgid ""
 "Error writing final EOF to tape. This Volume may not be readable.\n"
 "%s"
 msgstr ""
 
-#: src/stored/block.c:759
+#: src/stored/block.c:791
 #, c-format
 msgid ""
 "Error writing final part to DVD. This Volume may not be readable.\n"
 "%s"
 msgstr ""
 
-#: src/stored/block.c:861
+#: src/stored/block.c:801
+msgid "Error sending Volume info to Director.\n"
+msgstr ""
+
+#: src/stored/block.c:896
 #, c-format
 msgid ""
 "Error while writing, current part number is less than the total number of "
 "parts (%d/%d, device=%s)\n"
 msgstr ""
 
-#: src/stored/block.c:869
+#: src/stored/block.c:904
 #, c-format
 msgid "Unable to open device next part %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/block.c:889
+#: src/stored/block.c:924
 #, c-format
 msgid ""
 "End of Volume \"%s\" at %u:%u on device %s (part_size=%s, free_space=%s, "
 "free_space_errno=%d, errmsg=%s).\n"
 msgstr ""
 
-#: src/stored/block.c:902
+#: src/stored/block.c:937
 #, c-format
 msgid ""
 "End of Volume \"%s\" at %u:%u on device %s (part_size=%s, free_space=%s, "
 "free_space_errno=%d).\n"
 msgstr ""
 
-#: src/stored/block.c:962
+#: src/stored/block.c:980
+msgid "Job failed or canceled.\n"
+msgstr ""
+
+#: src/stored/block.c:986
+msgid "Attempt to read past end of tape or file.\n"
+msgstr ""
+
+#: src/stored/block.c:995
+#, c-format
+msgid "Attempt to read closed device: fd=%d at file:blk %u:%u on device %s\n"
+msgstr ""
+
+#: src/stored/block.c:1005
 #, c-format
 msgid "Block buffer size looping problem on device %s\n"
 msgstr ""
 
-#: src/stored/block.c:974
+#: src/stored/block.c:1017
 #, c-format
 msgid "Unable to open device part=%d %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/block.c:1000
+#: src/stored/block.c:1044
 #, c-format
 msgid "Read error on fd=%d at file:blk %u:%u on device %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/block.c:1013
+#: src/stored/block.c:1057
 #, c-format
 msgid "Read zero bytes at %u:%u on device %s.\n"
 msgstr ""
 
-#: src/stored/block.c:1037
+#: src/stored/block.c:1081
 #, c-format
 msgid ""
 "Volume data error at %u:%u! Very short block of %d bytes on device %s "
 "discarded.\n"
 msgstr ""
 
-#: src/stored/block.c:1062
+#: src/stored/block.c:1107
 #, c-format
 msgid "Block length %u is greater than buffer %u. Attempting recovery.\n"
 msgstr ""
 
-#: src/stored/block.c:1081
+#: src/stored/block.c:1127
 #, c-format
 msgid "Setting block buffer size to %u bytes.\n"
 msgstr ""
 
-#: src/stored/block.c:1096
+#: src/stored/block.c:1142
 #, c-format
 msgid ""
 "Volume data error at %u:%u! Short block of %d bytes on device %s discarded.\n"
 msgstr ""
 
-#: src/lib/plugins.c:112
+#: src/lib/plugins.c:117
 #, c-format
 msgid "Failed to open Plugin directory %s: ERR=%s\n"
 msgstr ""
 
-#: src/lib/plugins.c:129
+#: src/lib/plugins.c:134
 #, c-format
 msgid "Failed to find any plugins in %s\n"
 msgstr ""
 
-#: src/lib/plugins.c:163
+#: src/lib/plugins.c:168
 #, c-format
 msgid "dlopen plugin %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/plugins.c:174
+#: src/lib/plugins.c:179
 #, c-format
 msgid "Lookup of loadPlugin in plugin %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/plugins.c:183
+#: src/lib/plugins.c:188
 #, c-format
 msgid "Lookup of unloadPlugin in plugin %s failed: ERR=%s\n"
 msgstr ""
@@ -11313,56 +11408,72 @@ msgstr ""
 msgid "Damaged buffer:  %6u bytes allocated at line %d of %s %s\n"
 msgstr ""
 
-#: src/lib/rwlock.c:302
-msgid "rwl_writeunlock called too many times.\n"
+#: src/lib/sellist.c:69
+msgid "Negative numbers not permitted.\n"
+msgstr ""
+
+#: src/lib/sellist.c:106
+msgid "Selection items must be be greater than zero.\n"
+msgstr ""
+
+#: src/lib/sellist.c:110
+msgid "Selection item too large.\n"
+msgstr ""
+
+#: src/lib/sellist.c:167
+msgid "No input string given.\n"
 msgstr ""
 
 #: src/lib/rwlock.c:307
+msgid "rwl_writeunlock called too many times.\n"
+msgstr ""
+
+#: src/lib/rwlock.c:312
 msgid "rwl_writeunlock by non-owner.\n"
 msgstr ""
 
-#: src/lib/rwlock.c:432 src/lib/save/devlock.c:501 src/lib/devlock.c:501
+#: src/lib/rwlock.c:437 src/lib/save/devlock.c:501 src/lib/devlock.c:501
 #, c-format
 msgid "Thread %d found unchanged elements %d times\n"
 msgstr ""
 
-#: src/lib/rwlock.c:502 src/lib/save/devlock.c:571 src/lib/devlock.c:571
+#: src/lib/rwlock.c:507 src/lib/save/devlock.c:571 src/lib/devlock.c:571
 #, c-format
 msgid "%02d: interval %d, writes %d, reads %d\n"
 msgstr ""
 
-#: src/lib/rwlock.c:512 src/lib/save/devlock.c:581 src/lib/devlock.c:581
+#: src/lib/rwlock.c:517 src/lib/save/devlock.c:581 src/lib/devlock.c:581
 #, c-format
 msgid "data %02d: value %d, %d writes\n"
 msgstr ""
 
-#: src/lib/rwlock.c:517 src/lib/save/devlock.c:586 src/lib/devlock.c:586
+#: src/lib/rwlock.c:522 src/lib/save/devlock.c:586 src/lib/devlock.c:586
 #, c-format
 msgid "Total: %d thread writes, %d data writes\n"
 msgstr ""
 
-#: src/lib/rwlock.c:589 src/lib/save/devlock.c:658 src/lib/devlock.c:658
+#: src/lib/rwlock.c:594 src/lib/save/devlock.c:658 src/lib/devlock.c:658
 msgid "Try write lock"
 msgstr ""
 
-#: src/lib/rwlock.c:595 src/lib/save/devlock.c:664 src/lib/devlock.c:664
+#: src/lib/rwlock.c:600 src/lib/save/devlock.c:664 src/lib/devlock.c:664
 msgid "Try read lock"
 msgstr ""
 
-#: src/lib/rwlock.c:651 src/lib/save/devlock.c:720 src/lib/devlock.c:720
+#: src/lib/rwlock.c:656 src/lib/save/devlock.c:720 src/lib/devlock.c:720
 msgid "Create thread"
 msgstr ""
 
-#: src/lib/rwlock.c:661 src/lib/save/devlock.c:730 src/lib/devlock.c:730
+#: src/lib/rwlock.c:666 src/lib/save/devlock.c:730 src/lib/devlock.c:730
 msgid "Join thread"
 msgstr ""
 
-#: src/lib/rwlock.c:663 src/lib/save/devlock.c:732 src/lib/devlock.c:732
+#: src/lib/rwlock.c:668 src/lib/save/devlock.c:732 src/lib/devlock.c:732
 #, c-format
 msgid "%02d: interval %d, updates %d, r_collisions %d, w_collisions %d\n"
 msgstr ""
 
-#: src/lib/rwlock.c:675 src/lib/save/devlock.c:744 src/lib/devlock.c:744
+#: src/lib/rwlock.c:680 src/lib/save/devlock.c:744 src/lib/devlock.c:744
 #, c-format
 msgid "data %02d: value %d, %d updates\n"
 msgstr ""
@@ -11376,158 +11487,153 @@ msgstr ""
 msgid "bget_msg: unknown signal %d\n"
 msgstr ""
 
-#: src/lib/bsock.c:126
+#: src/lib/bsock.c:131
 #, c-format
 msgid ""
 "Could not connect to %s on %s:%d. ERR=%s\n"
 "Retrying ...\n"
 msgstr ""
 
-#: src/lib/bsock.c:132
+#: src/lib/bsock.c:137
 #, c-format
 msgid "Unable to connect to %s on %s:%d. ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:202
+#: src/lib/bsock.c:207
 #, c-format
-msgid "gethostbyname() for host \"%s\" failed: ERR=%s\n"
+msgid "bnet_host2ipaddrs() for host \"%s\" failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:222
+#: src/lib/bsock.c:260
 #, c-format
 msgid "Socket open error. proto=%d port=%d. ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:233
+#: src/lib/bsock.c:273
 #, c-format
 msgid "Source address bind error. proto=%d. ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:244 src/lib/bsock.c:280 src/lib/bnet_server.c:201
+#: src/lib/bsock.c:284 src/lib/bsock.c:320 src/lib/bnet_server.c:218
 #, c-format
 msgid "Cannot set SO_KEEPALIVE on socket: %s\n"
 msgstr ""
 
-#: src/lib/bsock.c:252
+#: src/lib/bsock.c:292
 #, c-format
-msgid "Cannot set SO_KEEPIDLE on socket: %s\n"
+msgid "Cannot set TCP_KEEPIDLE on socket: %s\n"
 msgstr ""
 
-#: src/lib/bsock.c:299
+#: src/lib/bsock.c:339
 #, c-format
 msgid "Could not init bsock mutex. ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:334
+#: src/lib/bsock.c:374
 #, c-format
 msgid "Socket has errors=%d on call to %s:%s:%d\n"
 msgstr ""
 
-#: src/lib/bsock.c:341
+#: src/lib/bsock.c:381
 #, c-format
 msgid "Socket is terminated=%d on call to %s:%s:%d\n"
 msgstr ""
 
-#: src/lib/bsock.c:349
+#: src/lib/bsock.c:389
 #, c-format
 msgid "Socket has insane msglen=%d on call to %s:%s:%d\n"
 msgstr ""
 
-#: src/lib/bsock.c:387
+#: src/lib/bsock.c:427
 #, c-format
 msgid "Write error sending %d bytes to %s:%s:%d: ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:393
+#: src/lib/bsock.c:433
 #, c-format
 msgid "Wrote %d bytes to %s:%s:%d, but only %d accepted.\n"
 msgstr ""
 
-#: src/lib/bsock.c:482 src/lib/bsock.c:543
+#: src/lib/bsock.c:522 src/lib/bsock.c:583
 #, c-format
 msgid "Read expected %d got %d from %s:%s:%d\n"
 msgstr ""
 
-#: src/lib/bsock.c:502
+#: src/lib/bsock.c:542
 #, c-format
 msgid "Packet size too big from \"%s:%s:%d. Terminating connection.\n"
 msgstr ""
 
-#: src/lib/bsock.c:532
+#: src/lib/bsock.c:572
 #, c-format
 msgid "Read error from %s:%s:%d: ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:623
+#: src/lib/bsock.c:663
 msgid "fread attr spool I/O error.\n"
 msgstr ""
 
-#: src/lib/bsock.c:684
+#: src/lib/bsock.c:724
 msgid "Could not malloc BSOCK data buffer\n"
 msgstr ""
 
-#: src/lib/bsock.c:702 src/lib/bsock.c:726
+#: src/lib/bsock.c:742 src/lib/bsock.c:761
 #, c-format
 msgid "sockopt error: %s\n"
 msgstr ""
 
-#: src/lib/bsock.c:708 src/lib/bsock.c:732
+#: src/lib/bsock.c:748 src/lib/bsock.c:767
 #, c-format
 msgid "Warning network buffer = %d bytes not max size.\n"
 msgstr ""
 
-#: src/lib/bsock.c:712 src/lib/bsock.c:736
-#, c-format
-msgid "Network buffer size %d not multiple of tape block size.\n"
-msgstr ""
-
-#: src/lib/bsock.c:757 src/lib/bsock.c:791
+#: src/lib/bsock.c:787 src/lib/bsock.c:821
 #, c-format
 msgid "fcntl F_GETFL error. ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:763 src/lib/bsock.c:797 src/lib/bsock.c:829
+#: src/lib/bsock.c:793 src/lib/bsock.c:827 src/lib/bsock.c:859
 #, c-format
 msgid "fcntl F_SETFL error. ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:1002 src/qt-console/bcomm/dircomm_auth.cpp:112
+#: src/lib/bsock.c:1032 src/qt-console/bcomm/dircomm_auth.cpp:112
 #, c-format
 msgid "Director authorization problem at \"%s:%d\"\n"
 msgstr ""
 
-#: src/lib/bsock.c:1009 src/qt-console/bcomm/dircomm_auth.cpp:119
+#: src/lib/bsock.c:1039 src/qt-console/bcomm/dircomm_auth.cpp:119
 #, c-format
 msgid ""
 "Authorization problem: Remote server at \"%s:%d\" did not advertise required "
 "TLS support.\n"
 msgstr ""
 
-#: src/lib/bsock.c:1017 src/qt-console/bcomm/dircomm_auth.cpp:127
+#: src/lib/bsock.c:1047 src/qt-console/bcomm/dircomm_auth.cpp:127
 #, c-format
 msgid ""
 "Authorization problem with Director at \"%s:%d\": Remote server requires "
 "TLS.\n"
 msgstr ""
 
-#: src/lib/bsock.c:1029 src/qt-console/bcomm/dircomm_auth.cpp:138
+#: src/lib/bsock.c:1059 src/qt-console/bcomm/dircomm_auth.cpp:138
 #, c-format
 msgid "TLS negotiation failed with Director at \"%s:%d\"\n"
 msgstr ""
 
-#: src/lib/bsock.c:1039 src/qt-console/bcomm/dircomm_auth.cpp:150
+#: src/lib/bsock.c:1069 src/qt-console/bcomm/dircomm_auth.cpp:150
 #, c-format
 msgid ""
 "Bad response to Hello command: ERR=%s\n"
 "The Director at \"%s:%d\" is probably not running.\n"
 msgstr ""
 
-#: src/lib/bsock.c:1048 src/qt-console/bcomm/dircomm_auth.cpp:159
+#: src/lib/bsock.c:1078 src/qt-console/bcomm/dircomm_auth.cpp:159
 #, c-format
 msgid "Director at \"%s:%d\" rejected Hello command\n"
 msgstr ""
 
-#: src/lib/bsock.c:1058 src/qt-console/bcomm/dircomm_auth.cpp:171
+#: src/lib/bsock.c:1088 src/qt-console/bcomm/dircomm_auth.cpp:171
 #, c-format
 msgid ""
 "Authorization problem with Director at \"%s:%d\"\n"
@@ -11537,40 +11643,40 @@ msgid ""
 "Please see "
 msgstr ""
 
-#: src/lib/message.c:340 src/lib/message.c:350
+#: src/lib/message.c:362 src/lib/message.c:372
 #, c-format
 msgid "Could not open console message file %s: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:355
+#: src/lib/message.c:377
 #, c-format
 msgid "Could not get con mutex: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:460
+#: src/lib/message.c:482
 msgid "Bacula Message"
 msgstr ""
 
-#: src/lib/message.c:464
+#: src/lib/message.c:486
 #, c-format
 msgid "open mail pipe %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:532
+#: src/lib/message.c:577
 msgid "open mail pipe failed.\n"
 msgstr ""
 
-#: src/lib/message.c:544
+#: src/lib/message.c:590
 #, c-format
 msgid "close error: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:555
+#: src/lib/message.c:601
 #, c-format
 msgid "Mail prog: %s"
 msgstr ""
 
-#: src/lib/message.c:564
+#: src/lib/message.c:610
 #, c-format
 msgid ""
 "Mail program terminated in error.\n"
@@ -11578,12 +11684,16 @@ msgid ""
 "ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:662
+#: src/lib/message.c:713
 #, c-format
 msgid "fopen %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:835
+#: src/lib/message.c:835 src/lib/message.c:838
+msgid "Msg delivery error: Unable to store data in database.\n"
+msgstr ""
+
+#: src/lib/message.c:890
 #, c-format
 msgid ""
 "Msg delivery error: Operator mail program terminated in error.\n"
@@ -11591,126 +11701,126 @@ msgid ""
 "ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:856
+#: src/lib/message.c:911
 #, c-format
 msgid "Msg delivery error: fopen %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:1175
+#: src/lib/message.c:1230
 #, c-format
 msgid "%s: ABORTING due to ERROR in %s:%d\n"
 msgstr ""
 
-#: src/lib/message.c:1179
+#: src/lib/message.c:1234
 #, c-format
 msgid "%s: ERROR TERMINATION at %s:%d\n"
 msgstr ""
 
-#: src/lib/message.c:1184
+#: src/lib/message.c:1239
 #, c-format
 msgid "%s: Fatal Error because: "
 msgstr ""
 
-#: src/lib/message.c:1186
+#: src/lib/message.c:1241
 #, c-format
 msgid "%s: Fatal Error at %s:%d because:\n"
 msgstr ""
 
-#: src/lib/message.c:1190
+#: src/lib/message.c:1245
 #, c-format
 msgid "%s: ERROR: "
 msgstr ""
 
-#: src/lib/message.c:1192
+#: src/lib/message.c:1247
 #, c-format
 msgid "%s: ERROR in %s:%d "
 msgstr ""
 
-#: src/lib/message.c:1195
+#: src/lib/message.c:1250
 #, c-format
 msgid "%s: Warning: "
 msgstr ""
 
-#: src/lib/message.c:1198
+#: src/lib/message.c:1253
 #, c-format
 msgid "%s: Security violation: "
 msgstr ""
 
-#: src/lib/message.c:1286
+#: src/lib/message.c:1341
 #, c-format
 msgid "%s ABORTING due to ERROR\n"
 msgstr ""
 
-#: src/lib/message.c:1289
+#: src/lib/message.c:1344
 #, c-format
 msgid "%s ERROR TERMINATION\n"
 msgstr ""
 
-#: src/lib/message.c:1292
+#: src/lib/message.c:1347
 #, c-format
 msgid "%s JobId %u: Fatal error: "
 msgstr ""
 
-#: src/lib/message.c:1301
+#: src/lib/message.c:1356
 #, c-format
 msgid "%s JobId %u: Error: "
 msgstr ""
 
-#: src/lib/message.c:1307
+#: src/lib/message.c:1362
 #, c-format
 msgid "%s JobId %u: Warning: "
 msgstr ""
 
-#: src/lib/message.c:1313
+#: src/lib/message.c:1368
 #, c-format
 msgid "%s JobId %u: Security violation: "
 msgstr ""
 
-#: src/lib/bnet_server.c:108
+#: src/lib/bnet_server.c:125
 #, c-format
 msgid "Cannot open stream socket. ERR=%s. Current %s All %s\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:121
+#: src/lib/bnet_server.c:138
 #, c-format
 msgid "Cannot set SO_REUSEADDR on socket: %s\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:130
+#: src/lib/bnet_server.c:147
 #, c-format
 msgid "Cannot bind port %d: ERR=%s: Retrying ...\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:135
+#: src/lib/bnet_server.c:152
 #, c-format
 msgid "Cannot bind port %d: ERR=%s.\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:146
+#: src/lib/bnet_server.c:163
 #, c-format
 msgid "Could not init client queue: ERR=%s\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:165
+#: src/lib/bnet_server.c:182
 #, c-format
 msgid "Error in select: %s\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:186
+#: src/lib/bnet_server.c:203
 #, c-format
 msgid "Connection from %s:%d refused by hosts.access\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:212
+#: src/lib/bnet_server.c:229
 msgid "Could not create client BSOCK.\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:219
+#: src/lib/bnet_server.c:236
 #, c-format
 msgid "Could not add job to client queue: ERR=%s\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:236
+#: src/lib/bnet_server.c:253
 #, c-format
 msgid "Could not destroy client queue: ERR=%s\n"
 msgstr ""
@@ -12164,7 +12274,7 @@ msgstr ""
 msgid "Truncate"
 msgstr ""
 
-#: src/lib/util.c:409 src/filed/restore.c:1158
+#: src/lib/util.c:409 src/filed/restore.c:1164
 msgid "None"
 msgstr ""
 
@@ -12214,7 +12324,7 @@ msgstr ""
 
 #: src/lib/util.c:753 src/lib/util.c:763 src/lib/util.c:771 src/lib/util.c:778
 #: src/lib/util.c:785 src/lib/util.c:799 src/lib/util.c:809 src/lib/util.c:822
-#: src/lib/util.c:833 src/filed/restore.c:1174
+#: src/lib/util.c:833 src/filed/restore.c:1180
 msgid "*none*"
 msgstr ""
 
@@ -12240,7 +12350,7 @@ msgstr ""
 msgid "writeunlock by non-owner.\n"
 msgstr ""
 
-#: src/lib/daemon.c:64
+#: src/lib/daemon.c:65
 #, c-format
 msgid "Cannot fork to become daemon: ERR=%s\n"
 msgstr ""
@@ -12426,20 +12536,20 @@ msgstr ""
 msgid "pthread_setspecific failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/jcr.c:1097
+#: src/lib/jcr.c:1103
 #, c-format
 msgid ""
 "Watchdog sending kill after %d secs to thread stalled reading Storage "
 "daemon.\n"
 msgstr ""
 
-#: src/lib/jcr.c:1109
+#: src/lib/jcr.c:1115
 #, c-format
 msgid ""
 "Watchdog sending kill after %d secs to thread stalled reading File daemon.\n"
 msgstr ""
 
-#: src/lib/jcr.c:1121
+#: src/lib/jcr.c:1127
 #, c-format
 msgid ""
 "Watchdog sending kill after %d secs to thread stalled reading Director.\n"
@@ -12659,31 +12769,31 @@ msgstr ""
 msgid "TLS enable but not configured.\n"
 msgstr ""
 
-#: src/lib/bnet.c:423
+#: src/lib/bnet.c:481
 msgid "No problem."
 msgstr ""
 
-#: src/lib/bnet.c:426
+#: src/lib/bnet.c:484
 msgid "Authoritative answer for host not found."
 msgstr ""
 
-#: src/lib/bnet.c:429
+#: src/lib/bnet.c:487
 msgid "Non-authoritative for host not found, or ServerFail."
 msgstr ""
 
-#: src/lib/bnet.c:432
+#: src/lib/bnet.c:490
 msgid "Non-recoverable errors, FORMERR, REFUSED, or NOTIMP."
 msgstr ""
 
-#: src/lib/bnet.c:435
+#: src/lib/bnet.c:493
 msgid "Valid name, no data record of resquested type."
 msgstr ""
 
-#: src/lib/bnet.c:438
+#: src/lib/bnet.c:496
 msgid "Unknown error."
 msgstr ""
 
-#: src/lib/bnet.c:697
+#: src/lib/bnet.c:755
 #, c-format
 msgid "Unknown sig %d"
 msgstr ""
@@ -12692,247 +12802,270 @@ msgstr ""
 msgid "Invalid signal number"
 msgstr ""
 
-#: src/lib/signal.c:151 src/lib/signal.c:153
+#: src/lib/signal.c:152 src/lib/signal.c:154
 #, c-format
 msgid "Bacula interrupted by signal %d: %s\n"
 msgstr ""
 
-#: src/lib/signal.c:166
+#: src/lib/signal.c:167
 #, c-format
 msgid "Kaboom! %s, %s got signal %d - %s. Attempting traceback.\n"
 msgstr ""
 
-#: src/lib/signal.c:168
+#: src/lib/signal.c:169
 #, c-format
 msgid "Kaboom! exepath=%s\n"
 msgstr ""
 
-#: src/lib/signal.c:202
+#: src/lib/signal.c:210
 #, c-format
 msgid "Fork error: ERR=%s\n"
 msgstr ""
 
-#: src/lib/signal.c:210
+#: src/lib/signal.c:218
 #, c-format
 msgid "Calling: %s %s %s %s\n"
 msgstr ""
 
-#: src/lib/signal.c:214
+#: src/lib/signal.c:222
 #, c-format
 msgid "execv: %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/signal.c:235
+#: src/lib/signal.c:244
+#, c-format
+msgid "It looks like the traceback worked...\n"
+msgstr ""
+
+#: src/lib/signal.c:246
 #, c-format
-msgid "It looks like the traceback worked ...\n"
+msgid "The btraceback call returned %d\n"
 msgstr ""
 
-#: src/lib/signal.c:289
+#: src/lib/signal.c:306
 #, c-format
 msgid "BA_NSIG too small (%d) should be (%d)\n"
 msgstr ""
 
-#: src/lib/signal.c:295
+#: src/lib/signal.c:312
 msgid "UNKNOWN SIGNAL"
 msgstr ""
 
-#: src/lib/signal.c:296
+#: src/lib/signal.c:313
 msgid "Hangup"
 msgstr ""
 
-#: src/lib/signal.c:297
+#: src/lib/signal.c:314
 msgid "Interrupt"
 msgstr ""
 
-#: src/lib/signal.c:298
+#: src/lib/signal.c:315
 msgid "Quit"
 msgstr ""
 
-#: src/lib/signal.c:299
+#: src/lib/signal.c:316
 msgid "Illegal instruction"
 msgstr ""
 
-#: src/lib/signal.c:300
+#: src/lib/signal.c:317
 msgid "Trace/Breakpoint trap"
 msgstr ""
 
-#: src/lib/signal.c:301
+#: src/lib/signal.c:318
 msgid "Abort"
 msgstr ""
 
-#: src/lib/signal.c:303
+#: src/lib/signal.c:320
 msgid "EMT instruction (Emulation Trap)"
 msgstr ""
 
-#: src/lib/signal.c:306
+#: src/lib/signal.c:323
 msgid "IOT trap"
 msgstr ""
 
-#: src/lib/signal.c:308
+#: src/lib/signal.c:325
 msgid "BUS error"
 msgstr ""
 
-#: src/lib/signal.c:309
+#: src/lib/signal.c:326
 msgid "Floating-point exception"
 msgstr ""
 
-#: src/lib/signal.c:310
+#: src/lib/signal.c:327
 msgid "Kill, unblockable"
 msgstr ""
 
-#: src/lib/signal.c:311
+#: src/lib/signal.c:328
 msgid "User-defined signal 1"
 msgstr ""
 
-#: src/lib/signal.c:312
+#: src/lib/signal.c:329
 msgid "Segmentation violation"
 msgstr ""
 
-#: src/lib/signal.c:313
+#: src/lib/signal.c:330
 msgid "User-defined signal 2"
 msgstr ""
 
-#: src/lib/signal.c:314
+#: src/lib/signal.c:331
 msgid "Broken pipe"
 msgstr ""
 
-#: src/lib/signal.c:315
+#: src/lib/signal.c:332
 msgid "Alarm clock"
 msgstr ""
 
-#: src/lib/signal.c:316
+#: src/lib/signal.c:333
 msgid "Termination"
 msgstr ""
 
-#: src/lib/signal.c:318
+#: src/lib/signal.c:335
 msgid "Stack fault"
 msgstr ""
 
-#: src/lib/signal.c:320
+#: src/lib/signal.c:337
 msgid "Child status has changed"
 msgstr ""
 
-#: src/lib/signal.c:321
+#: src/lib/signal.c:338
 msgid "Continue"
 msgstr ""
 
-#: src/lib/signal.c:322
+#: src/lib/signal.c:339
 msgid "Stop, unblockable"
 msgstr ""
 
-#: src/lib/signal.c:323
+#: src/lib/signal.c:340
 msgid "Keyboard stop"
 msgstr ""
 
-#: src/lib/signal.c:324
+#: src/lib/signal.c:341
 msgid "Background read from tty"
 msgstr ""
 
-#: src/lib/signal.c:325
+#: src/lib/signal.c:342
 msgid "Background write to tty"
 msgstr ""
 
-#: src/lib/signal.c:326
+#: src/lib/signal.c:343
 msgid "Urgent condition on socket"
 msgstr ""
 
-#: src/lib/signal.c:327
+#: src/lib/signal.c:344
 msgid "CPU limit exceeded"
 msgstr ""
 
-#: src/lib/signal.c:328
+#: src/lib/signal.c:345
 msgid "File size limit exceeded"
 msgstr ""
 
-#: src/lib/signal.c:329
+#: src/lib/signal.c:346
 msgid "Virtual alarm clock"
 msgstr ""
 
-#: src/lib/signal.c:330
+#: src/lib/signal.c:347
 msgid "Profiling alarm clock"
 msgstr ""
 
-#: src/lib/signal.c:331
+#: src/lib/signal.c:348
 msgid "Window size change"
 msgstr ""
 
-#: src/lib/signal.c:332
+#: src/lib/signal.c:349
 msgid "I/O now possible"
 msgstr ""
 
-#: src/lib/signal.c:334
+#: src/lib/signal.c:351
 msgid "Power failure restart"
 msgstr ""
 
-#: src/lib/signal.c:337
+#: src/lib/signal.c:354
 msgid "No runnable lwp"
 msgstr ""
 
-#: src/lib/signal.c:340
+#: src/lib/signal.c:357
 msgid "SIGLWP special signal used by thread library"
 msgstr ""
 
-#: src/lib/signal.c:343
+#: src/lib/signal.c:360
 msgid "Checkpoint Freeze"
 msgstr ""
 
-#: src/lib/signal.c:346
+#: src/lib/signal.c:363
 msgid "Checkpoint Thaw"
 msgstr ""
 
-#: src/lib/signal.c:349
+#: src/lib/signal.c:366
 msgid "Thread Cancellation"
 msgstr ""
 
-#: src/lib/signal.c:352
+#: src/lib/signal.c:369
 msgid "Resource Lost (e.g. record-lock lost)"
 msgstr ""
 
+#: src/lib/ini.c:106 src/lib/ini.c:118
+#, c-format
+msgid ""
+"Config file error: %s\n"
+"            : Line %d, col %d of file %s\n"
+"%s\n"
+msgstr ""
+
+#: src/lib/ini.c:308 src/lib/ini.c:383
+#, c-format
+msgid "Cannot open config file %s: %s\n"
+msgstr ""
+
 #: src/lib/btimers.c:265
 msgid "stop_btimer called with NULL btimer_id\n"
 msgstr ""
 
-#: src/lib/bsys.c:215 src/lib/bsys.c:232 src/lib/bsys.c:256 src/lib/bsys.c:269
+#: src/lib/bsys.c:72
+#, c-format
+msgid "safe_unlink could not compile regex pattern \"%s\" ERR=%s\n"
+msgstr ""
+
+#: src/lib/bsys.c:261 src/lib/bsys.c:278 src/lib/bsys.c:302 src/lib/bsys.c:315
 #, c-format
 msgid "Out of memory: ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsys.c:311
+#: src/lib/bsys.c:357
 msgid "Buffer overflow.\n"
 msgstr ""
 
-#: src/lib/bsys.c:377
+#: src/lib/bsys.c:423
 msgid "Bad errno"
 msgstr ""
 
-#: src/lib/bsys.c:392
+#: src/lib/bsys.c:438
 #, c-format
 msgid "Memset for %d bytes at %s:%d\n"
 msgstr ""
 
-#: src/lib/bsys.c:422
+#: src/lib/bsys.c:468
 #, c-format
 msgid "Cannot open pid file. %s ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsys.c:437
+#: src/lib/bsys.c:483
 #, c-format
 msgid ""
 "%s is already running. pid=%d\n"
 "Check file %s\n"
 msgstr ""
 
-#: src/lib/bsys.c:451
+#: src/lib/bsys.c:497
 #, c-format
 msgid "Could not open pid file. %s ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsys.c:562
+#: src/lib/bsys.c:608
 #, c-format
 msgid "Could not create state file. %s ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsys.c:581
+#: src/lib/bsys.c:627
 #, c-format
 msgid "Write final hdr error: ERR=%s\n"
 msgstr ""
@@ -12980,98 +13113,98 @@ msgstr ""
 msgid "Close of NULL file\n"
 msgstr ""
 
-#: src/lib/lex.c:224
+#: src/lib/lex.c:226
 msgid ""
 "get_char: called after EOF. You may have a open double quote without the "
 "closing double quote.\n"
 msgstr ""
 
-#: src/lib/lex.c:267
+#: src/lib/lex.c:268
 #, c-format
 msgid "Config token too long, file: %s, line %d, begins at line %d\n"
 msgstr ""
 
-#: src/lib/lex.c:291
+#: src/lib/lex.c:292
 msgid "none"
 msgstr ""
 
-#: src/lib/lex.c:292
+#: src/lib/lex.c:293
 msgid "comment"
 msgstr ""
 
-#: src/lib/lex.c:293
+#: src/lib/lex.c:294
 msgid "number"
 msgstr ""
 
-#: src/lib/lex.c:294
+#: src/lib/lex.c:295
 msgid "ip_addr"
 msgstr ""
 
-#: src/lib/lex.c:295
+#: src/lib/lex.c:296
 msgid "identifier"
 msgstr ""
 
-#: src/lib/lex.c:296
+#: src/lib/lex.c:297
 msgid "string"
 msgstr ""
 
-#: src/lib/lex.c:297
+#: src/lib/lex.c:298
 msgid "quoted_string"
 msgstr ""
 
-#: src/lib/lex.c:298
+#: src/lib/lex.c:299
 msgid "include"
 msgstr ""
 
-#: src/lib/lex.c:299
+#: src/lib/lex.c:300
 msgid "include_quoted_string"
 msgstr ""
 
-#: src/lib/lex.c:300
+#: src/lib/lex.c:301
 msgid "UTF-8 Byte Order Mark"
 msgstr ""
 
-#: src/lib/lex.c:301
+#: src/lib/lex.c:302
 msgid "UTF-16le Byte Order Mark"
 msgstr ""
 
-#: src/lib/lex.c:339 src/lib/lex.c:345 src/lib/lex.c:356 src/lib/lex.c:362
+#: src/lib/lex.c:340 src/lib/lex.c:346 src/lib/lex.c:357 src/lib/lex.c:363
 #, c-format
 msgid "expected a positive integer number, got: %s"
 msgstr ""
 
-#: src/lib/lex.c:478
+#: src/lib/lex.c:479
 msgid ""
 "This config file appears to be in an unsupported Unicode format (UTF-16be). "
 "Please resave as UTF-8\n"
 msgstr ""
 
-#: src/lib/lex.c:617 src/lib/lex.c:645
+#: src/lib/lex.c:625 src/lib/lex.c:653
 #, c-format
 msgid "Cannot open included config file %s: %s\n"
 msgstr ""
 
-#: src/lib/lex.c:704 src/lib/lex.c:761
+#: src/lib/lex.c:712 src/lib/lex.c:769
 #, c-format
 msgid "expected an integer or a range, got %s: %s"
 msgstr ""
 
-#: src/lib/lex.c:718 src/lib/lex.c:726 src/lib/lex.c:737 src/lib/lex.c:745
+#: src/lib/lex.c:726 src/lib/lex.c:734 src/lib/lex.c:745 src/lib/lex.c:753
 #, c-format
 msgid "expected an integer number, got %s: %s"
 msgstr ""
 
-#: src/lib/lex.c:775
+#: src/lib/lex.c:783
 #, c-format
 msgid "expected a name, got %s: %s"
 msgstr ""
 
-#: src/lib/lex.c:779
+#: src/lib/lex.c:787
 #, c-format
 msgid "name %s length %d too long, max is %d\n"
 msgstr ""
 
-#: src/lib/lex.c:787
+#: src/lib/lex.c:795
 #, c-format
 msgid "expected a string, got %s: %s"
 msgstr ""
@@ -13501,7 +13634,7 @@ msgstr ""
 msgid "bpkt already open fid=%d\n"
 msgstr ""
 
-#: src/findlib/create_file.c:226 src/filed/fd_plugins.c:890
+#: src/findlib/create_file.c:226 src/filed/fd_plugins.c:1009
 #, c-format
 msgid "Could not create %s: ERR=%s\n"
 msgstr ""
@@ -13745,86 +13878,98 @@ msgid "FreeBSD Specific NFSv4/ZFS ACL attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:191
-msgid "IRIX Specific Extended attribs"
+msgid "GNU Hurd Specific Default ACL attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:193
-msgid "TRU64 Specific Extended attribs"
+msgid "GNU Hurd Specific Access ACL attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:195
-msgid "AIX Specific Extended attribs"
+msgid "GNU Hurd Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:197
-msgid "OpenBSD Specific Extended attribs"
+msgid "IRIX Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:199
-msgid "Solaris Specific Extensible attribs or System Extended attribs"
+msgid "TRU64 Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:201
-msgid "Solaris Specific Extended attribs"
+msgid "AIX Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:203
-msgid "Darwin Specific Extended attribs"
+msgid "OpenBSD Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:205
-msgid "FreeBSD Specific Extended attribs"
+msgid "Solaris Specific Extensible attribs or System Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:207
-msgid "Linux Specific Extended attribs"
+msgid "Solaris Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:209
+msgid "Darwin Specific Extended attribs"
+msgstr ""
+
+#: src/findlib/bfile.c:211
+msgid "FreeBSD Specific Extended attribs"
+msgstr ""
+
+#: src/findlib/bfile.c:213
+msgid "Linux Specific Extended attribs"
+msgstr ""
+
+#: src/findlib/bfile.c:215
 msgid "NetBSD Specific Extended attribs"
 msgstr ""
 
-#: src/findlib/find.c:226
+#: src/findlib/find.c:237
 #, c-format
 msgid "Plugin: \"%s\" not found.\n"
 msgstr ""
 
-#: src/findlib/match.c:210 src/tools/testfind.c:654 src/filed/job.c:1456
+#: src/findlib/match.c:210 src/tools/testfind.c:654 src/filed/job.c:1460
 #, c-format
 msgid "Unknown include/exclude option: %c\n"
 msgstr ""
 
-#: src/findlib/find_one.c:223
+#: src/findlib/find_one.c:227
 #, c-format
 msgid "     NODUMP flag set - will not process %s\n"
 msgstr ""
 
-#: src/findlib/find_one.c:244
+#: src/findlib/find_one.c:248
 #, c-format
 msgid "Cannot stat file %s: ERR=%s\n"
 msgstr ""
 
-#: src/findlib/find_one.c:250
+#: src/findlib/find_one.c:253
 #, c-format
 msgid "%s mtime changed during backup.\n"
 msgstr ""
 
-#: src/findlib/find_one.c:256
+#: src/findlib/find_one.c:260
 #, c-format
 msgid "%s ctime changed during backup.\n"
 msgstr ""
 
-#: src/findlib/find_one.c:262 src/findlib/find_one.c:269
+#: src/findlib/find_one.c:268 src/findlib/find_one.c:276
 #, c-format
 msgid "%s size changed during backup.\n"
 msgstr ""
 
-#: src/findlib/find_one.c:398
+#: src/findlib/find_one.c:403
 #, c-format
 msgid "Top level directory \"%s\" has unlisted fstype \"%s\"\n"
 msgstr ""
 
-#: src/findlib/find_one.c:413
+#: src/findlib/find_one.c:418
 #, c-format
 msgid "Top level directory \"%s\" has an unlisted drive type \"%s\"\n"
 msgstr ""
@@ -13914,24 +14059,24 @@ msgstr ""
 msgid "Create DB Client record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:588 src/cats/sql_get.c:251
+#: src/cats/sql_create.c:589 src/cats/sql_get.c:251
 #, c-format
 msgid "More than one Path!: %s for path: %s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:595 src/cats/sql_get.c:205 src/cats/sql_get.c:258
-#: src/cats/sql_get.c:640 src/cats/sql_get.c:722 src/cats/sql_get.c:1041
-#: src/cats/sql.c:340 src/cats/sql.c:347 src/cats/postgresql.c:158
+#: src/cats/sql_create.c:596 src/cats/sql_get.c:205 src/cats/sql_get.c:258
+#: src/cats/sql_get.c:640 src/cats/sql_get.c:722 src/cats/sql_get.c:1039
+#: src/cats/sql.c:340 src/cats/sql.c:347 src/cats/postgresql.c:165
 #, c-format
 msgid "error fetching row: %s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:620
+#: src/cats/sql_create.c:621
 #, c-format
 msgid "Create db Path record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:665
+#: src/cats/sql_create.c:666
 #, c-format
 msgid "Create DB Counters record %s failed. ERR=%s\n"
 msgstr ""
@@ -13951,40 +14096,40 @@ msgstr ""
 msgid "Create DB FileSet record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:994
+#: src/cats/sql_create.c:989
 #, c-format
 msgid "Create db File record %s failed. ERR=%s"
 msgstr ""
 
-#: src/cats/sql_create.c:1019
+#: src/cats/sql_create.c:1015
 #, c-format
 msgid "More than one Filename! %s for file: %s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:1025
+#: src/cats/sql_create.c:1021
 #, c-format
 msgid "Error fetching row for file=%s: ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:1042
+#: src/cats/sql_create.c:1038
 #, c-format
 msgid "Create db Filename record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:1061
+#: src/cats/sql_create.c:1058
 #, c-format
 msgid "Attempt to put non-attributes into catalog. Stream=%d\n"
 msgstr ""
 
 #: src/cats/sql_create.c:1074
-msgid "Cannot Copy/Migrate job using BaseJob"
+msgid "Cannot Copy/Migrate job using BaseJob.\n"
 msgstr ""
 
-#: src/cats/sql_create.c:1165 src/cats/sql_get.c:1138
+#: src/cats/sql_create.c:1166 src/cats/sql_get.c:1136
 msgid "ERR=JobIds are empty\n"
 msgstr ""
 
-#: src/cats/sql_create.c:1218
+#: src/cats/sql_create.c:1219
 #, c-format
 msgid "Create db Object record %s failed. ERR=%s"
 msgstr ""
@@ -14091,66 +14236,66 @@ msgstr ""
 msgid "Client record not found in Catalog.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:767
+#: src/cats/sql_get.c:765
 #, c-format
 msgid "More than one Counter!: %d\n"
 msgstr ""
 
-#: src/cats/sql_get.c:772
+#: src/cats/sql_get.c:770
 #, c-format
 msgid "error fetching Counter row: %s\n"
 msgstr ""
 
-#: src/cats/sql_get.c:792
+#: src/cats/sql_get.c:790
 #, c-format
 msgid "Counter record: %s not found in Catalog.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:832
+#: src/cats/sql_get.c:830
 #, c-format
 msgid "Error got %s FileSets but expected only one!\n"
 msgstr ""
 
-#: src/cats/sql_get.c:837
+#: src/cats/sql_get.c:835
 #, c-format
 msgid "FileSet record \"%s\" not found.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:847
+#: src/cats/sql_get.c:845
 msgid "FileSet record not found in Catalog.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:943
+#: src/cats/sql_get.c:941
 #, c-format
 msgid "Media id select failed: ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_get.c:981
+#: src/cats/sql_get.c:979
 #, c-format
 msgid "query dbids failed: ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_get.c:1036
+#: src/cats/sql_get.c:1034
 #, c-format
 msgid "More than one Volume!: %s\n"
 msgstr ""
 
-#: src/cats/sql_get.c:1092
+#: src/cats/sql_get.c:1090
 #, c-format
 msgid "Media record MediaId=%s not found.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:1095
+#: src/cats/sql_get.c:1093
 #, c-format
 msgid "Media record for Volume \"%s\" not found.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:1102
+#: src/cats/sql_get.c:1100
 #, c-format
 msgid "Media record for MediaId=%u not found in Catalog.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:1105
+#: src/cats/sql_get.c:1103
 #, c-format
 msgid "Media record for Vol=%s not found in Catalog.\n"
 msgstr ""
@@ -14203,29 +14348,29 @@ msgstr ""
 msgid "No Volume record found for item %d.\n"
 msgstr ""
 
-#: src/cats/sqlite.c:159 src/cats/ingres.c:248 src/cats/postgresql.c:203
-#: src/cats/dbi.c:221 src/cats/mysql.c:157
+#: src/cats/sqlite.c:166 src/cats/ingres.c:255 src/cats/postgresql.c:210
+#: src/cats/dbi.c:228 src/cats/mysql.c:164
 #, c-format
 msgid "Unable to initialize DB lock. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sqlite.c:174
+#: src/cats/sqlite.c:181
 #, c-format
 msgid "Database %s does not exist, please create it.\n"
 msgstr ""
 
-#: src/cats/sqlite.c:196
+#: src/cats/sqlite.c:203
 #, c-format
 msgid "Unable to open Database=%s. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sqlite.c:197
+#: src/cats/sqlite.c:204
 msgid "unknown"
 msgstr ""
 
-#: src/cats/sqlite.c:449 src/cats/ingres.c:483 src/cats/postgresql.c:493
-#: src/cats/postgresql.c:540 src/cats/dbi.c:618 src/cats/cats.c:147
-#: src/cats/mysql.c:380
+#: src/cats/sqlite.c:462 src/cats/ingres.c:496 src/cats/postgresql.c:506
+#: src/cats/postgresql.c:553 src/cats/dbi.c:631 src/cats/cats.c:149
+#: src/cats/mysql.c:393
 #, c-format
 msgid "Query failed: %s: ERR=%s\n"
 msgstr ""
@@ -14238,7 +14383,7 @@ msgstr ""
 msgid "Failed to allocate space for query filters.\n"
 msgstr ""
 
-#: src/cats/ingres.c:260
+#: src/cats/ingres.c:267
 #, c-format
 msgid ""
 "Unable to connect to Ingres server.\n"
@@ -14246,7 +14391,7 @@ msgid ""
 "It is probably not running or your password is incorrect.\n"
 msgstr ""
 
-#: src/cats/ingres.c:1074
+#: src/cats/ingres.c:1087
 msgid "A user name for Ingres must be supplied.\n"
 msgstr ""
 
@@ -14305,21 +14450,21 @@ msgstr ""
 msgid "No results to list.\n"
 msgstr ""
 
-#: src/cats/sql.c:724
-msgid "Could not init database batch connection"
+#: src/cats/sql.c:721
+msgid "Could not init database batch connection\n"
 msgstr ""
 
-#: src/cats/sql.c:730
+#: src/cats/sql.c:727
 #, c-format
 msgid "Could not open database \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/cats/postgresql.c:174
+#: src/cats/postgresql.c:181
 #, c-format
 msgid "Encoding error for database \"%s\". Wanted SQL_ASCII, got %s\n"
 msgstr ""
 
-#: src/cats/postgresql.c:239
+#: src/cats/postgresql.c:246
 #, c-format
 msgid ""
 "Unable to connect to PostgreSQL server. Database=%s User=%s\n"
@@ -14327,39 +14472,39 @@ msgid ""
 "exceeded.\n"
 msgstr ""
 
-#: src/cats/postgresql.c:337
+#: src/cats/postgresql.c:350
 msgid "PQescapeStringConn returned non-zero.\n"
 msgstr ""
 
-#: src/cats/postgresql.c:355
+#: src/cats/postgresql.c:368
 msgid "PQescapeByteaConn returned NULL.\n"
 msgstr ""
 
-#: src/cats/postgresql.c:386
+#: src/cats/postgresql.c:399
 msgid "PQunescapeByteaConn returned NULL.\n"
 msgstr ""
 
-#: src/cats/postgresql.c:800
+#: src/cats/postgresql.c:813
 #, c-format
 msgid "error fetching currval: %s\n"
 msgstr ""
 
-#: src/cats/postgresql.c:991 src/cats/dbi.c:1264
+#: src/cats/postgresql.c:1004 src/cats/dbi.c:1277
 #, c-format
 msgid "error starting batch mode: %s"
 msgstr ""
 
-#: src/cats/postgresql.c:1021 src/cats/postgresql.c:1028
+#: src/cats/postgresql.c:1034 src/cats/postgresql.c:1041
 #, c-format
 msgid "error ending batch mode: %s"
 msgstr ""
 
-#: src/cats/postgresql.c:1075
+#: src/cats/postgresql.c:1088
 #, c-format
 msgid "error copying in batch mode: %s"
 msgstr ""
 
-#: src/cats/postgresql.c:1097
+#: src/cats/postgresql.c:1110
 msgid "A user name for PostgreSQL must be supplied.\n"
 msgstr ""
 
@@ -14381,14 +14526,14 @@ msgstr ""
 msgid "Unknown database type: %s\n"
 msgstr ""
 
-#: src/cats/dbi.c:235
+#: src/cats/dbi.c:242
 #, c-format
 msgid ""
 "Unable to locate the DBD drivers to DBI interface in: \n"
 "db_driverdir=%s. It is probaly not found any drivers\n"
 msgstr ""
 
-#: src/cats/dbi.c:292
+#: src/cats/dbi.c:299
 #, c-format
 msgid ""
 "Unable to connect to DBI interface. Type=%s Database=%s User=%s\n"
@@ -14396,20 +14541,20 @@ msgid ""
 "exceeded.\n"
 msgstr ""
 
-#: src/cats/dbi.c:1426
+#: src/cats/dbi.c:1439
 #, c-format
 msgid "error inserting batch mode: %s"
 msgstr ""
 
-#: src/cats/dbi.c:1443
+#: src/cats/dbi.c:1456
 msgid "Driver type not specified in Catalog resource.\n"
 msgstr ""
 
-#: src/cats/dbi.c:1447
+#: src/cats/dbi.c:1460
 msgid "Invalid driver type, must be \"dbi:<type>\"\n"
 msgstr ""
 
-#: src/cats/dbi.c:1451
+#: src/cats/dbi.c:1464
 msgid "A user name for DBI must be supplied.\n"
 msgstr ""
 
@@ -14432,7 +14577,7 @@ msgstr ""
 msgid "Error fetching row %s\n"
 msgstr ""
 
-#: src/cats/mysql.c:200
+#: src/cats/mysql.c:207
 #, c-format
 msgid ""
 "Unable to connect to MySQL server.\n"
@@ -14441,7 +14586,7 @@ msgid ""
 "incorrect.\n"
 msgstr ""
 
-#: src/cats/mysql.c:639
+#: src/cats/mysql.c:692
 msgid "A user name for MySQL must be supplied.\n"
 msgstr ""
 
@@ -14579,13 +14724,13 @@ msgid "You must enter a number between 1 and %d\n"
 msgstr ""
 
 #: src/console/console.c:1160 src/wx-console/console_thread.cpp:399
-#: src/qt-console/bcomm/dircomm.cpp:129
+#: src/qt-console/bcomm/dircomm.cpp:131
 #, c-format
 msgid "Failed to initialize TLS context for Console \"%s\".\n"
 msgstr ""
 
 #: src/console/console.c:1180 src/wx-console/console_thread.cpp:420
-#: src/qt-console/bcomm/dircomm.cpp:152
+#: src/qt-console/bcomm/dircomm.cpp:154
 #, c-format
 msgid "Failed to initialize TLS context for Director \"%s\".\n"
 msgstr ""
@@ -14943,22 +15088,25 @@ msgstr ""
 msgid "Could not open, database \"%s\".\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:145
+#: src/tools/bsmtp.c:151
 #, c-format
 msgid "Fatal malformed reply from %s: %s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:153
+#: src/tools/bsmtp.c:159
 #, c-format
 msgid "Fatal fgets error: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:186
+#: src/tools/bsmtp.c:192
 #, c-format
 msgid ""
 "\n"
 "Usage: %s [-f from] [-h mailhost] [-s subject] [-c copy] [recipient ...]\n"
+"       -4          forces bsmtp to use IPv4 addresses only.\n"
+"       -6          forces bsmtp to use IPv6 addresses only.\n"
 "       -8          set charset to UTF-8\n"
+"       -a          use any ip protocol for address resolution\n"
 "       -c          set the Cc: field\n"
 "       -d <nn>     set debug level to <nn>\n"
 "       -dt         print a timestamp in debug output\n"
@@ -14972,56 +15120,66 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:343
+#: src/tools/bsmtp.c:379
 msgid "Fatal error: no recipient given.\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:372
+#: src/tools/bsmtp.c:407
 #, c-format
 msgid "Fatal gethostname error: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:376
+#: src/tools/bsmtp.c:418
+#, c-format
+msgid "Fatal getaddrinfo for myself failed \"%s\": ERR=%s\n"
+msgstr ""
+
+#: src/tools/bsmtp.c:426
 #, c-format
 msgid "Fatal gethostbyname for myself failed \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:412
+#: src/tools/bsmtp.c:486 src/tools/bsmtp.c:521
 #, c-format
 msgid "Error unknown mail host \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:415
+#: src/tools/bsmtp.c:489 src/tools/bsmtp.c:524
 msgid "Retrying connection using \"localhost\".\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:423
+#: src/tools/bsmtp.c:514
+#, c-format
+msgid "Failed to connect to mailhost %s\n"
+msgstr ""
+
+#: src/tools/bsmtp.c:532
 #, c-format
 msgid "Fatal error: Unknown address family for smtp host: %d\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:432 src/tools/bsmtp.c:437
+#: src/tools/bsmtp.c:541 src/tools/bsmtp.c:546
 #, c-format
 msgid "Fatal socket error: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:442
+#: src/tools/bsmtp.c:551
 #, c-format
 msgid "Fatal connect error to %s: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:450
+#: src/tools/bsmtp.c:560
 #, c-format
 msgid "Fatal _open_osfhandle error: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:457 src/tools/bsmtp.c:461 src/tools/bsmtp.c:470
-#: src/tools/bsmtp.c:474
+#: src/tools/bsmtp.c:567 src/tools/bsmtp.c:571 src/tools/bsmtp.c:580
+#: src/tools/bsmtp.c:584
 #, c-format
 msgid "Fatal fdopen error: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:466
+#: src/tools/bsmtp.c:576
 #, c-format
 msgid "Fatal dup error: ERR=%s\n"
 msgstr ""
@@ -15485,7 +15643,7 @@ msgstr ""
 msgid "Network error in send to Director: ERR=%s\n"
 msgstr ""
 
-#: src/filed/verify.c:247 src/filed/accurate.c:428 src/filed/backup.c:503
+#: src/filed/verify.c:247 src/filed/accurate.c:429 src/filed/backup.c:506
 #, c-format
 msgid "%s digest initialization failed\n"
 msgstr ""
@@ -15510,12 +15668,12 @@ msgstr ""
 msgid "Space saved with Base jobs: %lld MB\n"
 msgstr ""
 
-#: src/filed/accurate.c:399
+#: src/filed/accurate.c:400
 #, c-format
 msgid "Cannot verify checksum for %s\n"
 msgstr ""
 
-#: src/filed/accurate.c:507
+#: src/filed/accurate.c:508
 msgid "2991 Bad accurate command\n"
 msgstr ""
 
@@ -15571,6 +15729,11 @@ msgstr ""
 msgid " SDSocket=closed\n"
 msgstr ""
 
+#: src/filed/status.c:463 src/filed/status.c:496
+#, c-format
+msgid "Bad .status command: %s\n"
+msgstr ""
+
 #: src/filed/status.c:464
 msgid "2900 Bad .status command, missing argument.\n"
 msgstr ""
@@ -15599,316 +15762,317 @@ msgstr ""
 msgid "Bacula Client: Last Job had Warnings"
 msgstr ""
 
-#: src/filed/xattr.c:96 src/filed/xattr.c:111 src/filed/xattr.c:119
-#: src/filed/fd_plugins.c:696 src/filed/fd_plugins.c:710 src/filed/acl.c:105
-#: src/filed/acl.c:120 src/filed/acl.c:128 src/filed/backup.c:993
-#: src/filed/backup.c:1189 src/filed/backup.c:1226 src/filed/backup.c:1239
-#: src/filed/backup.c:1315 src/filed/backup.c:1413
+#: src/filed/xattr.c:97 src/filed/xattr.c:112 src/filed/xattr.c:120
+#: src/filed/fd_plugins.c:789 src/filed/fd_plugins.c:805 src/filed/acl.c:108
+#: src/filed/acl.c:123 src/filed/acl.c:131 src/filed/backup.c:999
+#: src/filed/backup.c:1199 src/filed/backup.c:1236 src/filed/backup.c:1249
+#: src/filed/backup.c:1325 src/filed/backup.c:1424
 #, c-format
 msgid "Network send error to SD. ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:244
+#: src/filed/xattr.c:245
 #, c-format
 msgid "Illegal xattr stream, no XATTR_MAGIC on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:258
+#: src/filed/xattr.c:259
 #, c-format
 msgid "Illegal xattr stream, xattr name length <= 0 on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:376 src/filed/xattr.c:408
+#: src/filed/xattr.c:381 src/filed/xattr.c:417
 #, c-format
 msgid "llistea error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:472 src/filed/xattr.c:500
+#: src/filed/xattr.c:467 src/filed/xattr.c:520
 #, c-format
 msgid "lgetea error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:519 src/filed/xattr.c:807 src/filed/xattr.c:1249
-#: src/filed/xattr.c:1702 src/filed/xattr.c:2064 src/filed/xattr.c:2843
+#: src/filed/xattr.c:556 src/filed/xattr.c:877 src/filed/xattr.c:1352
+#: src/filed/xattr.c:1820 src/filed/xattr.c:2176 src/filed/xattr.c:2968
 #, c-format
 msgid "Xattr stream on file \"%s\" exceeds maximum size of %d bytes\n"
 msgstr ""
 
-#: src/filed/xattr.c:550 src/filed/xattr.c:841 src/filed/xattr.c:1280
-#: src/filed/xattr.c:1743 src/filed/xattr.c:2089
+#: src/filed/xattr.c:576 src/filed/xattr.c:903 src/filed/xattr.c:1372
+#: src/filed/xattr.c:1850 src/filed/xattr.c:2193
 #, c-format
 msgid "Failed to serialize extended attributes on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:624
+#: src/filed/xattr.c:643
 #, c-format
 msgid "lsetea error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:710 src/filed/xattr.c:777 src/filed/xattr.c:789
+#: src/filed/xattr.c:731 src/filed/xattr.c:769 src/filed/xattr.c:832
+#: src/filed/xattr.c:844
 #, c-format
 msgid "attr_list error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:916
+#: src/filed/xattr.c:968
 #, c-format
 msgid "Received illegal xattr named %s on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:947 src/filed/xattr.c:957
+#: src/filed/xattr.c:1001 src/filed/xattr.c:1011
 #, c-format
 msgid "attr_set error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:1092 src/filed/xattr.c:1123
+#: src/filed/xattr.c:1161 src/filed/xattr.c:1196
 #, c-format
 msgid "llistxattr error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:1204 src/filed/xattr.c:1231
+#: src/filed/xattr.c:1264 src/filed/xattr.c:1316
 #, c-format
 msgid "lgetxattr error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:1350
+#: src/filed/xattr.c:1435
 #, c-format
 msgid "lsetxattr error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:1507 src/filed/xattr.c:1539
+#: src/filed/xattr.c:1593 src/filed/xattr.c:1628
 #, c-format
 msgid "extattr_list_link error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:1558
+#: src/filed/xattr.c:1648
 #, c-format
 msgid "Failed to convert %d into namespace on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:1653 src/filed/xattr.c:1682
+#: src/filed/xattr.c:1728 src/filed/xattr.c:1783
 #, c-format
 msgid "extattr_get_link error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:1809
+#: src/filed/xattr.c:1907
 #, c-format
 msgid "Failed to split %s into namespace and name part on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:1822
+#: src/filed/xattr.c:1920
 #, c-format
 msgid "Failed to convert %s into namespace on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:1841
+#: src/filed/xattr.c:1941
 #, c-format
 msgid "extattr_set_link error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:1943 src/filed/xattr.c:1965
+#: src/filed/xattr.c:2044 src/filed/xattr.c:2069
 #, c-format
 msgid "getproplist error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2169
+#: src/filed/xattr.c:2262
 #, c-format
 msgid "Unable create proper proplist to restore xattrs on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:2196
+#: src/filed/xattr.c:2291
 #, c-format
 msgid "setproplist error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2496 src/filed/xattr.c:2547
+#: src/filed/xattr.c:2609 src/filed/xattr.c:2662
 #, c-format
 msgid "Unable to get acl on xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2562
+#: src/filed/xattr.c:2679
 #, c-format
 msgid "Unable to get acl text on xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2632
+#: src/filed/xattr.c:2753
 #, c-format
 msgid "Unable to get status on xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2763
+#: src/filed/xattr.c:2886
 #, c-format
 msgid "Unable to open xattr %s on \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2784
+#: src/filed/xattr.c:2909
 #, c-format
 msgid "Unable to read symlin %s on \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2859
+#: src/filed/xattr.c:2984
 #, c-format
 msgid "Unable to read content of xattr %s on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:2897
+#: src/filed/xattr.c:3024
 #, c-format
 msgid "Unable to chdir to xattr space of file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2953 src/filed/xattr.c:3193
+#: src/filed/xattr.c:3081 src/filed/xattr.c:3330
 #, c-format
 msgid "Unable to open file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2979 src/filed/xattr.c:3246
+#: src/filed/xattr.c:3109 src/filed/xattr.c:3391
 #, c-format
 msgid "Unable to open xattr space %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2993 src/filed/xattr.c:3214
+#: src/filed/xattr.c:3125 src/filed/xattr.c:3355
 #, c-format
 msgid "Unable to chdir to xattr space on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3012
+#: src/filed/xattr.c:3146
 #, c-format
 msgid "Unable to list the xattr space on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3105
+#: src/filed/xattr.c:3238
 #, c-format
 msgid "Unable to convert acl from text on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:3113 src/filed/xattr.c:3135
+#: src/filed/xattr.c:3248 src/filed/xattr.c:3271
 #, c-format
 msgid "Unable to restore acl of xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3205
+#: src/filed/xattr.c:3344
 #, c-format
 msgid "Unable to open xattr space on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3231 src/filed/xattr.c:3379
+#: src/filed/xattr.c:3374 src/filed/xattr.c:3536
 #, c-format
 msgid "Unable to open xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3261
+#: src/filed/xattr.c:3408
 #, c-format
 msgid "Unable to chdir to xattr space %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3299
+#: src/filed/xattr.c:3448
 #, c-format
 msgid "Unable to mkfifo xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3315
+#: src/filed/xattr.c:3466
 #, c-format
 msgid "Unable to mknod xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3331
+#: src/filed/xattr.c:3484
 #, c-format
 msgid "Unable to mkdir xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3349
+#: src/filed/xattr.c:3504
 #, c-format
 msgid "Unable to link xattr %s to %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3400
+#: src/filed/xattr.c:3557
 #, c-format
 msgid ""
 "Unable to restore data of xattr %s on file \"%s\": Not all data available in "
 "xattr stream\n"
 msgstr ""
 
-#: src/filed/xattr.c:3411
+#: src/filed/xattr.c:3570
 #, c-format
 msgid "Unable to restore data of xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3432
+#: src/filed/xattr.c:3593
 #, c-format
 msgid "Unable to symlink xattr %s to %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3466
+#: src/filed/xattr.c:3629
 #, c-format
 msgid "Unable to restore owner of xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3492
+#: src/filed/xattr.c:3657
 #, c-format
 msgid "Unable to restore filetimes of xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3508
+#: src/filed/xattr.c:3673
 #, c-format
 msgid "Illegal xattr stream, failed to parse xattr stream on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:3570
+#: src/filed/xattr.c:3734
 #, c-format
 msgid "Failed to restore extensible attributes on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:3583
+#: src/filed/xattr.c:3747
 #, c-format
 msgid "Failed to restore extended attributes on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:3672 src/filed/acl.c:2109
+#: src/filed/xattr.c:3841 src/filed/acl.c:2265
 #, c-format
 msgid "Unable to stat file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3719
+#: src/filed/xattr.c:3891
 #, c-format
 msgid ""
 "Can't restore Extended Attributes of %s - incompatible xattr stream "
 "encountered - %d\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:480 src/filed/fd_plugins.c:619
+#: src/filed/fd_plugins.c:550 src/filed/fd_plugins.c:694
 #, c-format
 msgid "Command plugin \"%s\": no type in startBackupFile packet.\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:493
+#: src/filed/fd_plugins.c:563
 #, c-format
 msgid "Command plugin \"%s\": no object_name in startBackupFile packet.\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:505 src/filed/fd_plugins.c:626
+#: src/filed/fd_plugins.c:576 src/filed/fd_plugins.c:701
 #, c-format
 msgid "Command plugin \"%s\": no fname in startBackupFile packet.\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:683
+#: src/filed/fd_plugins.c:775
 msgid "Plugin save packet not found.\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:806
+#: src/filed/fd_plugins.c:910
 #, c-format
 msgid "Plugin=%s not found.\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:863
+#: src/filed/fd_plugins.c:977
 #, c-format
 msgid "Plugin createFile call failed. Stat=%d file=%s\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:874
+#: src/filed/fd_plugins.c:982
 #, c-format
 msgid "Plugin createFile call failed. Returned CF_ERROR file=%s\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:1621
+#: src/filed/fd_plugins.c:1859
 msgid "Command plugin: no fname in baculaCheckChanges packet.\n"
 msgstr ""
 
@@ -16006,179 +16170,189 @@ msgstr ""
 msgid "No Director resource defined in %s\n"
 msgstr ""
 
-#: src/filed/acl.c:225 src/filed/acl.c:248
+#: src/filed/acl.c:229 src/filed/acl.c:254
 #, c-format
 msgid "aclx_get error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:274
+#: src/filed/acl.c:280
 #, c-format
 msgid "Unknown acl type encountered on file \"%s\": %ld\n"
 msgstr ""
 
-#: src/filed/acl.c:298 src/filed/acl.c:307
+#: src/filed/acl.c:304 src/filed/acl.c:313
 #, c-format
 msgid "Failed to convert acl into text on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/acl.c:381
+#: src/filed/acl.c:386
 #, c-format
 msgid ""
 "Trying to restore POSIX acl on file \"%s\" on filesystem without AIXC acl "
 "support\n"
 msgstr ""
 
-#: src/filed/acl.c:389
+#: src/filed/acl.c:394
 #, c-format
 msgid ""
 "Trying to restore NFSv4 acl on file \"%s\" on filesystem without NFS4 acl "
 "support\n"
 msgstr ""
 
-#: src/filed/acl.c:433 src/filed/acl.c:443
+#: src/filed/acl.c:442 src/filed/acl.c:452
 #, c-format
 msgid "aclx_scanStr error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:467
+#: src/filed/acl.c:478
 #, c-format
 msgid "aclx_put error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:809
+#: src/filed/acl.c:823
 #, c-format
 msgid "acl_to_text error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:837
+#: src/filed/acl.c:853
 #, c-format
 msgid "acl_get_file error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:889
+#: src/filed/acl.c:906
 #, c-format
 msgid ""
 "acl_delete_def_file error on file \"%s\": filesystem doesn't support ACLs\n"
 msgstr ""
 
-#: src/filed/acl.c:895
+#: src/filed/acl.c:912
 #, c-format
 msgid "acl_delete_def_file error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:904
+#: src/filed/acl.c:923
 #, c-format
 msgid "acl_from_text error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:918
+#: src/filed/acl.c:939
 #, c-format
 msgid "acl_valid error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:948
+#: src/filed/acl.c:971
 #, c-format
 msgid "acl_set_file error on file \"%s\": filesystem doesn't support ACLs\n"
 msgstr ""
 
-#: src/filed/acl.c:957
+#: src/filed/acl.c:980
 #, c-format
 msgid "acl_set_file error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1063 src/filed/acl.c:1089 src/filed/acl.c:1201
-#: src/filed/acl.c:1692 src/filed/acl.c:1795
+#: src/filed/acl.c:1087 src/filed/acl.c:1116 src/filed/acl.c:1230
+#: src/filed/acl.c:1738 src/filed/acl.c:1845
 #, c-format
 msgid "pathconf error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1216
+#: src/filed/acl.c:1246
 #, c-format
 msgid ""
 "Trying to restore acl on file \"%s\" on filesystem without %s acl support\n"
 msgstr ""
 
-#: src/filed/acl.c:1492
+#: src/filed/acl.c:1531
 #, c-format
 msgid "getacl error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1525
+#: src/filed/acl.c:1566
 #, c-format
 msgid "acltostr error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1546 src/filed/acl.c:1554
+#: src/filed/acl.c:1588 src/filed/acl.c:1598
 #, c-format
 msgid "strtoacl error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1582
+#: src/filed/acl.c:1627
 #, c-format
 msgid "setacl error on file \"%s\": filesystem doesn't support ACLs\n"
 msgstr ""
 
-#: src/filed/acl.c:1590
+#: src/filed/acl.c:1635
 #, c-format
 msgid "setacl error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1711
+#: src/filed/acl.c:1760
 #, c-format
 msgid "acl_get error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1786
+#: src/filed/acl.c:1834
 #, c-format
 msgid ""
 "Trying to restore acl on file \"%s\" on filesystem without acl support\n"
 msgstr ""
 
-#: src/filed/acl.c:1812
+#: src/filed/acl.c:1863
 #, c-format
 msgid ""
 "Trying to restore POSIX acl on file \"%s\" on filesystem without aclent acl "
 "support\n"
 msgstr ""
 
-#: src/filed/acl.c:1823
+#: src/filed/acl.c:1874
 #, c-format
 msgid ""
 "Trying to restore NFSv4 acl on file \"%s\" on filesystem without ace acl "
 "support\n"
 msgstr ""
 
-#: src/filed/acl.c:1839
+#: src/filed/acl.c:1890
 #, c-format
 msgid "acl_fromtext error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1853 src/filed/acl.c:1861
+#: src/filed/acl.c:1904 src/filed/acl.c:1912
 #, c-format
 msgid "wrong encoding of acl type in acl stream on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/acl.c:1886
+#: src/filed/acl.c:1937
 #, c-format
 msgid "acl_set error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1971
+#: src/filed/acl.c:2023
 #, c-format
 msgid "acltotext error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1993
+#: src/filed/acl.c:2046
 #, c-format
 msgid "aclfromtext error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:2011
+#: src/filed/acl.c:2066
 #, c-format
 msgid "acl(SETACL) error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:2181
+#: src/filed/acl.c:2132
+#, c-format
+msgid "pioctl VIOCGETAL error on file \"%s\": ERR=%s\n"
+msgstr ""
+
+#: src/filed/acl.c:2160
+#, c-format
+msgid "pioctl VIOCSETAL error on file \"%s\": ERR=%s\n"
+msgstr ""
+
+#: src/filed/acl.c:2363
 #, c-format
 msgid "Can't restore ACLs of %s - incompatible acl stream encountered - %d\n"
 msgstr ""
@@ -16187,17 +16361,17 @@ msgstr ""
 msgid "Storage command not issued before Verify.\n"
 msgstr ""
 
-#: src/filed/verify_vol.c:97 src/filed/restore.c:483
+#: src/filed/verify_vol.c:97 src/filed/restore.c:486
 #, c-format
 msgid "Record header scan error: %s\n"
 msgstr ""
 
-#: src/filed/verify_vol.c:106 src/filed/restore.c:495
+#: src/filed/verify_vol.c:106 src/filed/restore.c:498
 #, c-format
 msgid "Data record error. ERR=%s\n"
 msgstr ""
 
-#: src/filed/verify_vol.c:110 src/filed/restore.c:499
+#: src/filed/verify_vol.c:110 src/filed/restore.c:502
 #, c-format
 msgid "Actual data size %d not same as header %d\n"
 msgstr ""
@@ -16275,89 +16449,89 @@ msgstr ""
 msgid "     Could not open directory \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/backup.c:463
+#: src/filed/backup.c:466
 #, c-format
 msgid "     Unknown file type %d; not saved: %s\n"
 msgstr ""
 
-#: src/filed/backup.c:519
+#: src/filed/backup.c:522
 #, c-format
 msgid "%s signature digest initialization failed\n"
 msgstr ""
 
-#: src/filed/backup.c:624
+#: src/filed/backup.c:630
 #, c-format
 msgid "     Cannot open \"%s\": ERR=%s.\n"
 msgstr ""
 
-#: src/filed/backup.c:661
+#: src/filed/backup.c:667
 #, c-format
 msgid "     Cannot open resource fork for \"%s\": ERR=%s.\n"
 msgstr ""
 
-#: src/filed/backup.c:757
+#: src/filed/backup.c:763
 msgid "Failed to allocate memory for crypto signature.\n"
 msgstr ""
 
-#: src/filed/backup.c:762 src/filed/backup.c:768 src/filed/backup.c:783
+#: src/filed/backup.c:768 src/filed/backup.c:774 src/filed/backup.c:789
 msgid "An error occurred while signing the stream.\n"
 msgstr ""
 
-#: src/filed/backup.c:807
+#: src/filed/backup.c:813
 msgid "An error occurred finalizing signing the stream.\n"
 msgstr ""
 
-#: src/filed/backup.c:925
+#: src/filed/backup.c:931
 #, c-format
 msgid "Compression deflateParams error: %d\n"
 msgstr ""
 
-#: src/filed/backup.c:962
+#: src/filed/backup.c:968
 msgid "Encrypting sparse or offset data not supported.\n"
 msgstr ""
 
-#: src/filed/backup.c:969
+#: src/filed/backup.c:975
 msgid "Failed to initialize encryption context.\n"
 msgstr ""
 
-#: src/filed/backup.c:1079
+#: src/filed/backup.c:1085
 #, c-format
 msgid "Compression deflate error: %d\n"
 msgstr ""
 
-#: src/filed/backup.c:1086
+#: src/filed/backup.c:1092
 #, c-format
 msgid "Compression deflateReset error: %d\n"
 msgstr ""
 
-#: src/filed/backup.c:1116
+#: src/filed/backup.c:1126
 #, c-format
 msgid "Compression LZO error: %d\n"
 msgstr ""
 
-#: src/filed/backup.c:1161 src/filed/backup.c:1177
+#: src/filed/backup.c:1171 src/filed/backup.c:1187
 msgid "Encryption error\n"
 msgstr ""
 
-#: src/filed/backup.c:1203
+#: src/filed/backup.c:1213
 #, c-format
 msgid "Read error on file %s. ERR=%s\n"
 msgstr ""
 
-#: src/filed/backup.c:1206
+#: src/filed/backup.c:1216
 #, c-format
 msgid "Too many errors. JobErrors=%d.\n"
 msgstr ""
 
-#: src/filed/backup.c:1216
+#: src/filed/backup.c:1226
 msgid "Encryption padding error\n"
 msgstr ""
 
-#: src/filed/backup.c:1280
+#: src/filed/backup.c:1290
 msgid "Invalid file flags, no supported data stream type.\n"
 msgstr ""
 
-#: src/filed/backup.c:1536
+#: src/filed/backup.c:1549
 #, c-format
 msgid "VSS Writer (BackupComplete): %s\n"
 msgstr ""
@@ -16377,434 +16551,436 @@ msgstr ""
 msgid "Could not set Finder Info on %s\n"
 msgstr ""
 
-#: src/filed/restore.c:415
+#: src/filed/restore.c:418
 msgid "LZO init failed\n"
 msgstr ""
 
-#: src/filed/restore.c:657
+#: src/filed/restore.c:660
 msgid "Unexpected cryptographic session data stream.\n"
 msgstr ""
 
-#: src/filed/restore.c:667
+#: src/filed/restore.c:670
 msgid ""
 "No private decryption keys have been defined to decrypt encrypted backup "
 "data.\n"
 msgstr ""
 
-#: src/filed/restore.c:678
+#: src/filed/restore.c:681
 msgid "Could not create digest.\n"
 msgstr ""
 
-#: src/filed/restore.c:696
+#: src/filed/restore.c:699
 msgid "Missing private key required to decrypt encrypted backup data.\n"
 msgstr ""
 
-#: src/filed/restore.c:699
+#: src/filed/restore.c:702
 msgid "Decrypt of the session key failed.\n"
 msgstr ""
 
-#: src/filed/restore.c:705
+#: src/filed/restore.c:708
 #, c-format
 msgid "An error occurred while decoding encrypted session data stream: %s\n"
 msgstr ""
 
-#: src/filed/restore.c:772 src/filed/restore.c:825
+#: src/filed/restore.c:775 src/filed/restore.c:828
 #, c-format
 msgid "Missing encryption session data stream for %s\n"
 msgstr ""
 
-#: src/filed/restore.c:780 src/filed/restore.c:832
+#: src/filed/restore.c:783 src/filed/restore.c:835
 #, c-format
 msgid "Failed to initialize decryption context for %s\n"
 msgstr ""
 
-#: src/filed/restore.c:844
+#: src/filed/restore.c:847
 #, c-format
 msgid "Cannot open resource fork for %s.\n"
 msgstr ""
 
-#: src/filed/restore.c:986
+#: src/filed/restore.c:992
 msgid "Unexpected cryptographic signature data stream.\n"
 msgstr ""
 
-#: src/filed/restore.c:994
+#: src/filed/restore.c:1000
 #, c-format
 msgid "Failed to decode message signature for %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1058
+#: src/filed/restore.c:1064
 #, c-format
 msgid "Encountered %ld acl errors while doing restore\n"
 msgstr ""
 
-#: src/filed/restore.c:1062
+#: src/filed/restore.c:1068
 #, c-format
 msgid "Encountered %ld xattr errors while doing restore\n"
 msgstr ""
 
-#: src/filed/restore.c:1066
+#: src/filed/restore.c:1072
 #, c-format
 msgid ""
 "%d non-supported data streams and %d non-supported attrib streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1070
+#: src/filed/restore.c:1076
 #, c-format
 msgid "%d non-supported resource fork streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1073
+#: src/filed/restore.c:1079
 #, c-format
 msgid "%d non-supported Finder Info streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1076
+#: src/filed/restore.c:1082
 #, c-format
 msgid "%d non-supported acl streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1079
+#: src/filed/restore.c:1085
 #, c-format
 msgid "%d non-supported crypto streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1082
+#: src/filed/restore.c:1088
 #, c-format
 msgid "%d non-supported xattr streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1162
+#: src/filed/restore.c:1168
 msgid "Zlib errno"
 msgstr ""
 
-#: src/filed/restore.c:1164
+#: src/filed/restore.c:1170
 msgid "Zlib stream error"
 msgstr ""
 
-#: src/filed/restore.c:1166
+#: src/filed/restore.c:1172
 msgid "Zlib data error"
 msgstr ""
 
-#: src/filed/restore.c:1168
+#: src/filed/restore.c:1174
 msgid "Zlib memory error"
 msgstr ""
 
-#: src/filed/restore.c:1170
+#: src/filed/restore.c:1176
 msgid "Zlib buffer error"
 msgstr ""
 
-#: src/filed/restore.c:1172
+#: src/filed/restore.c:1178
 msgid "Zlib version error"
 msgstr ""
 
-#: src/filed/restore.c:1212
+#: src/filed/restore.c:1218
 #, c-format
 msgid "Missing cryptographic signature for %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1245 src/filed/restore.c:1274
+#: src/filed/restore.c:1251 src/filed/restore.c:1280
 #, c-format
 msgid "Signature validation failed for file %s: ERR=%s\n"
 msgstr ""
 
-#: src/filed/restore.c:1262
+#: src/filed/restore.c:1268
 #, c-format
 msgid "Digest one file failed for file: %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1301
+#: src/filed/restore.c:1307
 #, c-format
 msgid "Signature validation failed for %s: %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1398
+#: src/filed/restore.c:1404
 #, c-format
 msgid "LZO uncompression error on file %s. ERR=%d\n"
 msgstr ""
 
-#: src/filed/restore.c:1435
+#: src/filed/restore.c:1441
 #, c-format
 msgid "Uncompression error on file %s. ERR=%s\n"
 msgstr ""
 
-#: src/filed/restore.c:1468
+#: src/filed/restore.c:1474
 #, c-format
 msgid "Write error in Win32 Block Decomposition on %s: %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1527
+#: src/filed/restore.c:1533
 msgid "Decryption error\n"
 msgstr ""
 
-#: src/filed/restore.c:1620
+#: src/filed/restore.c:1626
 msgid "Logic error: output file should be open\n"
 msgstr ""
 
-#: src/filed/restore.c:1658
+#: src/filed/restore.c:1664
 msgid "Logic error: output file should not be open\n"
 msgstr ""
 
-#: src/filed/restore.c:1692
+#: src/filed/restore.c:1698
 #, c-format
 msgid "Decryption error. buf_len=%d decrypt_len=%d on file %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1813
+#: src/filed/restore.c:1819
 msgid "Open File Manager paused\n"
 msgstr ""
 
-#: src/filed/restore.c:1817
+#: src/filed/restore.c:1823
 msgid "FAILED to pause Open File Manager\n"
 msgstr ""
 
-#: src/filed/restore.c:1825
+#: src/filed/restore.c:1831
 #, c-format
 msgid "Running as '%s'. Privmask=%#08x\n"
 msgstr ""
 
-#: src/filed/restore.c:1827
+#: src/filed/restore.c:1833
 msgid "Failed to retrieve current UserName\n"
 msgstr ""
 
-#: src/filed/job.c:458
+#: src/filed/job.c:456
 #, c-format
 msgid "2901 Job %s not found.\n"
 msgstr ""
 
-#: src/filed/job.c:468
+#: src/filed/job.c:466
 #, c-format
 msgid "2001 Job %s marked to be canceled.\n"
 msgstr ""
 
-#: src/filed/job.c:471
+#: src/filed/job.c:469
 msgid "2902 Error scanning cancel command.\n"
 msgstr ""
 
-#: src/filed/job.c:494
+#: src/filed/job.c:492
 #, c-format
 msgid "2991 Bad setdebug command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:517
+#: src/filed/job.c:515
 #, c-format
 msgid "Bad estimate command: %s"
 msgstr ""
 
-#: src/filed/job.c:518
+#: src/filed/job.c:516
 msgid "2992 Bad estimate command.\n"
 msgstr ""
 
-#: src/filed/job.c:541
+#: src/filed/job.c:539
 #, c-format
 msgid "Bad Job Command: %s"
 msgstr ""
 
-#: src/filed/job.c:580
+#: src/filed/job.c:578
 #, c-format
 msgid "Bad RunBeforeJob command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:581 src/filed/job.c:600
+#: src/filed/job.c:579 src/filed/job.c:598
 msgid "2905 Bad RunBeforeJob command.\n"
 msgstr ""
 
-#: src/filed/job.c:611
+#: src/filed/job.c:609
 msgid "2905 Bad RunBeforeNow command.\n"
 msgstr ""
 
-#: src/filed/job.c:630
+#: src/filed/job.c:628
 #, c-format
 msgid "Bad RunAfter command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:631
+#: src/filed/job.c:629
 msgid "2905 Bad RunAfterJob command.\n"
 msgstr ""
 
-#: src/filed/job.c:667
+#: src/filed/job.c:665
 #, c-format
 msgid "Bad RunScript command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:668
+#: src/filed/job.c:666
 msgid "2905 Bad RunScript command.\n"
 msgstr ""
 
-#: src/filed/job.c:722
+#: src/filed/job.c:720
 #, c-format
 msgid "Bad RestoreObject command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:789
+#: src/filed/job.c:785
 msgid "2909 Bad RestoreObject command.\n"
 msgstr ""
 
-#: src/filed/job.c:828
+#: src/filed/job.c:824
 #, c-format
 msgid "Plugin Directory not defined. Cannot use plugin: \"%s\"\n"
 msgstr ""
 
-#: src/filed/job.c:870
+#: src/filed/job.c:866
 #, c-format
 msgid "Error running program: %s. stat=%d: ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:881
+#: src/filed/job.c:877
 #, c-format
 msgid "Cannot open FileSet input file: %s. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:1027
+#: src/filed/job.c:1031
 #, c-format
 msgid "REGEX %s compile error. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:1178
+#: src/filed/job.c:1182
 #, c-format
 msgid "Invalid FileSet command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:1651
+#: src/filed/job.c:1655
 #, c-format
 msgid ""
 "DIR and FD clocks differ by %lld seconds, FD automatically compensating.\n"
 msgstr ""
 
-#: src/filed/job.c:1660
+#: src/filed/job.c:1664
 #, c-format
 msgid "Unknown backup level: %s\n"
 msgstr ""
 
-#: src/filed/job.c:1673
+#: src/filed/job.c:1677
 #, c-format
 msgid "Bad level command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:1695
+#: src/filed/job.c:1699
 #, c-format
 msgid "Bad session command: %s"
 msgstr ""
 
-#: src/filed/job.c:1756
+#: src/filed/job.c:1760
 #, c-format
 msgid "Bad storage command: %s"
 msgstr ""
 
-#: src/filed/job.c:1777
+#: src/filed/job.c:1781
 #, c-format
 msgid "Failed to connect to Storage daemon: %s:%d\n"
 msgstr ""
 
-#: src/filed/job.c:1789
+#: src/filed/job.c:1793
 msgid "Failed to authenticate Storage daemon.\n"
 msgstr ""
 
-#: src/filed/job.c:1836
+#: src/filed/job.c:1840
 msgid "ACL support not configured for your machine.\n"
 msgstr ""
 
-#: src/filed/job.c:1840
+#: src/filed/job.c:1844
 msgid "XATTR support not configured for your machine.\n"
 msgstr ""
 
-#: src/filed/job.c:1849
+#: src/filed/job.c:1853
 msgid "Cannot contact Storage daemon\n"
 msgstr ""
 
-#: src/filed/job.c:1868
+#: src/filed/job.c:1872
 #, c-format
 msgid "Bad response to append open: %s\n"
 msgstr ""
 
-#: src/filed/job.c:1873
+#: src/filed/job.c:1877
 msgid "Bad response from stored to open command\n"
 msgstr ""
 
-#: src/filed/job.c:1904
+#: src/filed/job.c:1909
 #, c-format
 msgid "Generate VSS snapshots. Driver=\"%s\", Drive(s)=\"%s\"\n"
 msgstr ""
 
-#: src/filed/job.c:1906
-msgid "CreateSGenerate VSS snapshots failed.\n"
+#: src/filed/job.c:1912
+#, c-format
+msgid "CreateSGenerate VSS snapshots failed. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:1912
+#: src/filed/job.c:1919
 #, c-format
 msgid "Generate VSS snapshot of drive \"%c:\\\" failed.\n"
 msgstr ""
 
-#: src/filed/job.c:1918
+#: src/filed/job.c:1925
 #, c-format
 msgid "VSS Writer (PrepareForBackup): %s\n"
 msgstr ""
 
-#: src/filed/job.c:1923
+#: src/filed/job.c:1930
 msgid "No drive letters found for generating VSS snapshots.\n"
 msgstr ""
 
-#: src/filed/job.c:1926
-msgid "VSS was not initialized properly.\n"
+#: src/filed/job.c:1934
+#, c-format
+msgid "VSS was not initialized properly. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:1976
+#: src/filed/job.c:1985
 msgid "Append Close with SD failed.\n"
 msgstr ""
 
-#: src/filed/job.c:1980
+#: src/filed/job.c:1989
 #, c-format
 msgid "Bad status %d returned from Storage Daemon.\n"
 msgstr ""
 
-#: src/filed/job.c:2010
+#: src/filed/job.c:2019
 #, c-format
 msgid "2994 Bad verify command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:2025 src/filed/job.c:2066
+#: src/filed/job.c:2034 src/filed/job.c:2075
 #, c-format
 msgid "2994 Bad verify level: %s\n"
 msgstr ""
 
-#: src/filed/job.c:2138
+#: src/filed/job.c:2146
 #, c-format
 msgid "Bad replace command. CMD=%s\n"
 msgstr ""
 
-#: src/filed/job.c:2161
+#: src/filed/job.c:2169
 #, c-format
 msgid "Bad where regexp. where=%s\n"
 msgstr ""
 
-#: src/filed/job.c:2199
+#: src/filed/job.c:2207
 #, c-format
 msgid "VSS was not initialized properly. VSS support is disabled. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:2244
+#: src/filed/job.c:2252
 #, c-format
 msgid "VSS Writer (RestoreComplete): %s\n"
 msgstr ""
 
-#: src/filed/job.c:2292
+#: src/filed/job.c:2302
 msgid "Improper calling sequence.\n"
 msgstr ""
 
-#: src/filed/job.c:2312
+#: src/filed/job.c:2322
 #, c-format
 msgid "Bad response to SD read open: %s\n"
 msgstr ""
 
-#: src/filed/job.c:2317
+#: src/filed/job.c:2327
 msgid "Bad response from stored to read open command\n"
 msgstr ""
 
-#: src/filed/job.c:2385
+#: src/filed/job.c:2391
 #, c-format
 msgid "Comm error with SD. bad response to %s. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:2388
+#: src/filed/job.c:2394
 #, c-format
 msgid "Bad response to %s command. Wanted %s, got %s\n"
 msgstr ""
@@ -16839,7 +17015,7 @@ msgid ""
 "Version: "
 msgstr ""
 
-#: src/baconfig.h:72 src/baconfig.h:73
+#: src/baconfig.h:72 src/baconfig.h:73 src/baconfig.h:78 src/baconfig.h:79
 #, c-format
 msgid "Failed ASSERT: %s\n"
 msgstr ""
@@ -17768,47 +17944,47 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:90
+#: src/qt-console/bcomm/dircomm.cpp:92
 #, c-format
 msgid "Already connected\"%s\".\n"
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:103
+#: src/qt-console/bcomm/dircomm.cpp:105
 #, c-format
 msgid ""
 "Connecting to Director %s:%d\n"
 "\n"
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:206
+#: src/qt-console/bcomm/dircomm.cpp:208
 msgid "Initializing ..."
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:221 src/qt-console/console/console.cpp:142
+#: src/qt-console/bcomm/dircomm.cpp:224 src/qt-console/console/console.cpp:142
 msgid "Connected"
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:345
+#: src/qt-console/bcomm/dircomm.cpp:348
 msgid "Command completed ..."
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:352 src/qt-console/console/console.cpp:373
+#: src/qt-console/bcomm/dircomm.cpp:355 src/qt-console/console/console.cpp:379
 msgid "Processing command ..."
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:359
+#: src/qt-console/bcomm/dircomm.cpp:362
 msgid "At main prompt waiting for input ..."
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:366 src/qt-console/bcomm/dircomm.cpp:378
+#: src/qt-console/bcomm/dircomm.cpp:369 src/qt-console/bcomm/dircomm.cpp:382
 msgid "At prompt waiting for input ..."
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:386
+#: src/qt-console/bcomm/dircomm.cpp:390
 msgid "Command failed."
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:458
+#: src/qt-console/bcomm/dircomm.cpp:463
 msgid "Director disconnected."
 msgstr ""
 
diff --git a/po/de.po b/po/de.po
index 4029496..2f671cb 100644
--- a/po/de.po
+++ b/po/de.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: de\n"
 "Report-Msgid-Bugs-To: bacula-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2012-01-17 20:45+0100\n"
+"POT-Creation-Date: 2013-02-19 18:26+0100\n"
 "PO-Revision-Date: 2007-06-25 20:38+0200\n"
 "Last-Translator: Philipp Storz <philipp.storz at dass-it.de>\n"
 "Language-Team: \n"
@@ -51,8 +51,8 @@ msgstr "pthread_cond_wait: ERR=%s\n"
 msgid "Job %s waiting %d seconds for scheduled start time.\n"
 msgstr "Job %s wartet %d Sekunden auf die geplante Startzeit.\n"
 
-#: src/dird/jobq.c:220 src/dird/job.c:113 src/stored/dircmd.c:198
-#: src/stored/stored.c:503
+#: src/dird/jobq.c:220 src/dird/job.c:113 src/stored/dircmd.c:200
+#: src/stored/stored.c:560
 #, c-format
 msgid "Unable to init job cond variable: ERR=%s\n"
 msgstr "konnte job cond Variable nicht initialisieren: ERR=%s\n"
@@ -101,7 +101,7 @@ msgstr ""
 msgid "Continue? (yes/mod/no): "
 msgstr ""
 
-#: src/dird/ua_select.c:62 src/dird/ua_run.c:232
+#: src/dird/ua_select.c:62 src/dird/ua_run.c:219
 msgid "mod"
 msgstr ""
 
@@ -121,8 +121,8 @@ msgstr ""
 msgid "The defined Storage resources are:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:167 src/dird/ua_dotcmds.c:715 src/dird/ua_cmds.c:996
-#: src/dird/ua_run.c:237 src/wx-console/wxbrestorepanel.cpp:339
+#: src/dird/ua_select.c:167 src/dird/ua_dotcmds.c:734 src/dird/ua_cmds.c:995
+#: src/dird/ua_run.c:224 src/wx-console/wxbrestorepanel.cpp:339
 #: src/wx-console/wxbrestorepanel.cpp:355
 #: src/wx-console/wxbrestorepanel.cpp:479
 #: src/wx-console/wxbrestorepanel.cpp:480
@@ -143,7 +143,7 @@ msgstr ""
 msgid "The defined FileSet resources are:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:190 src/dird/ua_restore.c:1300 src/dird/ua_run.c:239
+#: src/dird/ua_select.c:190 src/dird/ua_restore.c:1300 src/dird/ua_run.c:226
 msgid "FileSet"
 msgstr ""
 
@@ -151,7 +151,7 @@ msgstr ""
 msgid "Select FileSet resource"
 msgstr ""
 
-#: src/dird/ua_select.c:220 src/dird/ua_cmds.c:1983
+#: src/dird/ua_select.c:220 src/dird/ua_cmds.c:2029
 msgid "Could not find a Catalog resource\n"
 msgstr ""
 
@@ -176,8 +176,8 @@ msgid "The defined Job resources are:\n"
 msgstr ""
 
 #: src/dird/ua_select.c:266 src/dird/ua_select.c:289 src/dird/ua_select.c:330
-#: src/dird/ua_select.c:1187 src/dird/dird_conf.c:650 src/dird/ua_prune.c:593
-#: src/dird/ua_run.c:238
+#: src/dird/ua_select.c:1186 src/dird/dird_conf.c:670 src/dird/ua_prune.c:601
+#: src/dird/ua_run.c:225
 msgid "Job"
 msgstr "Job"
 
@@ -202,8 +202,8 @@ msgstr ""
 msgid "The defined Client resources are:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:355 src/dird/ua_select.c:464 src/dird/ua_dotcmds.c:716
-#: src/dird/ua_cmds.c:997 src/dird/ua_run.c:243
+#: src/dird/ua_select.c:355 src/dird/ua_select.c:464 src/dird/ua_dotcmds.c:735
+#: src/dird/ua_cmds.c:996 src/dird/ua_run.c:230
 #: src/wx-console/wxbrestorepanel.cpp:336
 #: src/wx-console/wxbrestorepanel.cpp:354
 #: src/wx-console/wxbrestorepanel.cpp:431
@@ -262,7 +262,7 @@ msgstr ""
 msgid "Could not find Pool \"%s\": ERR=%s"
 msgstr ""
 
-#: src/dird/ua_select.c:532 src/dird/ua_output.c:474 src/dird/ua_update.c:437
+#: src/dird/ua_select.c:532 src/dird/ua_output.c:476 src/dird/ua_update.c:436
 #, c-format
 msgid "Error obtaining pool ids. ERR=%s\n"
 msgstr ""
@@ -275,13 +275,13 @@ msgstr ""
 msgid "Defined Pools:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:542 src/dird/ua_select.c:562 src/dird/ua_update.c:364
-#: src/baconfig.h:80
+#: src/dird/ua_select.c:542 src/dird/ua_select.c:562 src/dird/ua_update.c:365
+#: src/baconfig.h:88
 msgid "*None*"
 msgstr ""
 
-#: src/dird/ua_select.c:553 src/dird/ua_select.c:667 src/dird/ua_update.c:615
-#: src/dird/ua_run.c:251 src/wx-console/wxbrestorepanel.cpp:338
+#: src/dird/ua_select.c:553 src/dird/ua_select.c:666 src/dird/ua_update.c:616
+#: src/dird/ua_run.c:238 src/wx-console/wxbrestorepanel.cpp:338
 #: src/wx-console/wxbrestorepanel.cpp:527
 #: src/wx-console/wxbrestorepanel.cpp:537
 #: src/wx-console/wxbrestorepanel.cpp:1834
@@ -297,154 +297,154 @@ msgstr ""
 msgid "No access to Pool \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_select.c:624
+#: src/dird/ua_select.c:623
 msgid "Enter *MediaId or Volume name: "
 msgstr ""
 
-#: src/dird/ua_select.c:659
+#: src/dird/ua_select.c:658
 msgid "The defined Pool resources are:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:667
+#: src/dird/ua_select.c:666
 msgid "Select Pool resource"
 msgstr ""
 
-#: src/dird/ua_select.c:691 src/dird/ua_restore.c:555
+#: src/dird/ua_select.c:690 src/dird/ua_restore.c:555
 #, c-format
 msgid "Error: Pool resource \"%s\" does not exist.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:702
+#: src/dird/ua_select.c:701
 msgid "Enter the JobId to select: "
 msgstr ""
 
-#: src/dird/ua_select.c:740
+#: src/dird/ua_select.c:739
 #, c-format
 msgid "Could not find Job \"%s\": ERR=%s"
 msgstr ""
 
-#: src/dird/ua_select.c:820
+#: src/dird/ua_select.c:819
 #, c-format
 msgid "Automatically selected %s: %s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:831
+#: src/dird/ua_select.c:830
 #, c-format
 msgid ""
 "Your request has multiple choices for \"%s\". Selection is not possible in "
 "batch mode.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:849
+#: src/dird/ua_select.c:848
 #, c-format
 msgid "Selection list for \"%s\" is empty!\n"
 msgstr ""
 
-#: src/dird/ua_select.c:855
+#: src/dird/ua_select.c:854
 #, c-format
 msgid "Automatically selected: %s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:867
+#: src/dird/ua_select.c:866
 msgid "Selection aborted, nothing done.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:872
+#: src/dird/ua_select.c:871
 #, c-format
 msgid "Please enter a number between 1 and %d\n"
 msgstr ""
 
-#: src/dird/ua_select.c:921
+#: src/dird/ua_select.c:920
 msgid "Storage name given twice.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:938
+#: src/dird/ua_select.c:937
 #, c-format
 msgid "Expecting jobid=nn command, got: %s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:942
+#: src/dird/ua_select.c:941
 #, c-format
 msgid "JobId %s is not running.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:952
+#: src/dird/ua_select.c:951
 #, c-format
 msgid "Expecting job=xxx, got: %s.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:956 src/dird/ua_select.c:968
+#: src/dird/ua_select.c:955 src/dird/ua_select.c:967
 #, c-format
 msgid "Job \"%s\" is not running.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:964
+#: src/dird/ua_select.c:963
 #, c-format
 msgid "Expecting ujobid=xxx, got: %s.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:984
+#: src/dird/ua_select.c:983
 #, c-format
 msgid "Storage resource \"%s\": not found\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1016
+#: src/dird/ua_select.c:1015
 msgid "Enter autochanger drive[0]: "
 msgstr ""
 
-#: src/dird/ua_select.c:1037
+#: src/dird/ua_select.c:1036
 msgid "Enter autochanger slot: "
 msgstr ""
 
-#: src/dird/ua_select.c:1067
+#: src/dird/ua_select.c:1066
 msgid "Media Types defined in conf file:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1073
+#: src/dird/ua_select.c:1072
 msgid "Media Type"
 msgstr ""
 
-#: src/dird/ua_select.c:1073
+#: src/dird/ua_select.c:1072
 msgid "Select the Media Type"
 msgstr ""
 
-#: src/dird/ua_select.c:1112
+#: src/dird/ua_select.c:1111
 #, c-format
 msgid "JobId %s is not running. Use Job name to %s inactive jobs.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1121 src/dird/ua_select.c:1131
+#: src/dird/ua_select.c:1120 src/dird/ua_select.c:1130
 #, c-format
 msgid "Warning Job %s is not running. Continuing anyway ...\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1141 src/dird/ua_cmds.c:693 src/dird/ua_cmds.c:739
+#: src/dird/ua_select.c:1140 src/dird/ua_cmds.c:692 src/dird/ua_cmds.c:738
 msgid "Unauthorized command from this console.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1166 src/stored/status.c:473 src/filed/status.c:241
+#: src/dird/ua_select.c:1165 src/stored/status.c:538 src/filed/status.c:241
 msgid "No Jobs running.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1168
+#: src/dird/ua_select.c:1167
 msgid "None of your jobs are running.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1173
+#: src/dird/ua_select.c:1172
 msgid "Select Job:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1182
+#: src/dird/ua_select.c:1181
 #, c-format
 msgid "JobId=%s Job=%s"
 msgstr ""
 
-#: src/dird/ua_select.c:1186
+#: src/dird/ua_select.c:1185
 #, c-format
 msgid "Choose Job to %s"
 msgstr ""
 
-#: src/dird/ua_select.c:1193
+#: src/dird/ua_select.c:1192
 #, c-format
 msgid ""
 "Cancel: %s\n"
@@ -452,15 +452,15 @@ msgid ""
 "%s"
 msgstr ""
 
-#: src/dird/ua_select.c:1194
+#: src/dird/ua_select.c:1193
 msgid "Confirm cancel?"
 msgstr ""
 
-#: src/dird/ua_select.c:1200
+#: src/dird/ua_select.c:1199
 msgid "Confirm cancel (yes/no): "
 msgstr ""
 
-#: src/dird/ua_select.c:1209 src/dird/ua_cmds.c:734 src/dird/ua_cmds.c:1101
+#: src/dird/ua_select.c:1208 src/dird/ua_cmds.c:733 src/dird/ua_cmds.c:1100
 #, c-format
 msgid "Job \"%s\" not found.\n"
 msgstr ""
@@ -758,31 +758,31 @@ msgstr ""
 msgid "File: %s\n"
 msgstr ""
 
-#: src/dird/admin.c:66
+#: src/dird/admin.c:65
 #, c-format
 msgid "Start Admin JobId %d, Job=%s\n"
 msgstr "Starte Admin JobId %d, Job=%s\n"
 
-#: src/dird/admin.c:92 src/dird/vbackup.c:304 src/dird/migrate.c:1226
-#: src/dird/backup.c:618
+#: src/dird/admin.c:90 src/dird/vbackup.c:306 src/dird/migrate.c:1227
+#: src/dird/backup.c:628
 #, fuzzy, c-format
 msgid "Error getting Job record for Job report: ERR=%s"
 msgstr "Fehler beim Holen des job Eintrags f�r den job Bericht: %s"
 
-#: src/dird/admin.c:100
+#: src/dird/admin.c:98
 msgid "Admin OK"
 msgstr "Admin OK"
 
-#: src/dird/admin.c:104
+#: src/dird/admin.c:102
 msgid "*** Admin Error ***"
 msgstr "*** Admin Fehler ***"
 
-#: src/dird/admin.c:108
+#: src/dird/admin.c:106
 msgid "Admin Canceled"
 msgstr "Admin abgebrochen"
 
-#: src/dird/admin.c:112 src/dird/vbackup.c:354 src/dird/backup.c:674
-#: src/dird/restore.c:591
+#: src/dird/admin.c:110 src/dird/vbackup.c:356 src/dird/backup.c:684
+#: src/dird/restore.c:594
 #, c-format
 msgid "Inappropriate term code: %c\n"
 msgstr "Unangebrachter Beendigungskode: %c\n"
@@ -791,13 +791,13 @@ msgstr "Unangebrachter Beendigungskode: %c\n"
 msgid "Bacula "
 msgstr "Bacula "
 
-#: src/dird/dird.c:112
+#: src/dird/dird.c:150
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Version: %s (%s)\n"
 "\n"
-"Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
+"Usage: bacula-dir [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
 "       -c <file>   set configuration file to file\n"
 "       -d <nn>     set debug level to <nn>\n"
 "       -dt         print timestamp in debug output\n"
@@ -828,31 +828,31 @@ msgstr ""
 "       -?          diese Meldung ausgeben.\n"
 "\n"
 
-#: src/dird/dird.c:258 src/stored/stored.c:227 src/console/console.c:1109
+#: src/dird/dird.c:296 src/stored/stored.c:227 src/console/console.c:1109
 #: src/filed/filed.c:218 src/qt-console/main.cpp:165
 msgid "Cryptography library initialization failed.\n"
 msgstr "Initialisierung der Verschl�sselungsbibliothek fehlgeschlagen.\n"
 
-#: src/dird/dird.c:262 src/dird/dird.c:292 src/dird/dird.c:538
-#: src/dird/dird.c:541 src/stored/stored.c:231 src/console/console.c:1113
+#: src/dird/dird.c:300 src/dird/dird.c:328 src/dird/dird.c:560
+#: src/dird/dird.c:563 src/stored/stored.c:231 src/console/console.c:1113
 #: src/filed/filed.c:223 src/qt-console/main.cpp:169
 #, c-format
 msgid "Please correct configuration file: %s\n"
 msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
 
-#: src/dird/dird.c:524
+#: src/dird/dird.c:546
 msgid "Too many open reload requests. Request ignored.\n"
 msgstr "zu viele offene reload Anforderungen, Anforderung ignoriert.\n"
 
-#: src/dird/dird.c:539
+#: src/dird/dird.c:561
 msgid "Out of reload table entries. Giving up.\n"
 msgstr "Keine reload table Eintr�ge �brig. Gebe auf.\n"
 
-#: src/dird/dird.c:542
+#: src/dird/dird.c:564
 msgid "Resetting previous configuration.\n"
 msgstr "Vorherige Konfiguration zur�ckgesetzt.\n"
 
-#: src/dird/dird.c:606
+#: src/dird/dird.c:628
 #, c-format
 msgid ""
 "No Director resource defined in %s\n"
@@ -861,35 +861,35 @@ msgstr ""
 "Keine Director resource definiert in %s\n"
 "Ohne dies weiss ich nicht wer ich bin :-(\n"
 
-#: src/dird/dird.c:614 src/filed/filed.c:350
+#: src/dird/dird.c:636 src/filed/filed.c:350
 #, c-format
 msgid "No Messages resource defined in %s\n"
 msgstr "Keine Messages resource definiert in %s\n"
 
-#: src/dird/dird.c:619
+#: src/dird/dird.c:641
 #, c-format
 msgid "Only one Director resource permitted in %s\n"
 msgstr "Nur eine Director resource erlaubt in %s\n"
 
-#: src/dird/dird.c:628 src/dird/dird.c:834 src/dird/dird.c:889
-#: src/dird/dird.c:1056 src/stored/stored.c:354 src/console/console.c:1296
+#: src/dird/dird.c:650 src/dird/dird.c:856 src/dird/dird.c:911
+#: src/dird/dird.c:950 src/stored/stored.c:354 src/console/console.c:1296
 #: src/console/console.c:1326 src/filed/filed.c:357 src/filed/filed.c:516
 #: src/wx-console/console_thread.cpp:118 src/wx-console/console_thread.cpp:144
 #: src/qt-console/main.cpp:224 src/qt-console/main.cpp:254
 msgid "TLS required but not configured in Bacula.\n"
 msgstr "TLS ben�tigt aber nicht konfiguriert in Bacula.\n"
 
-#: src/dird/dird.c:636 src/stored/stored.c:410 src/filed/filed.c:526
+#: src/dird/dird.c:658 src/stored/stored.c:410 src/filed/filed.c:526
 #, c-format
 msgid "\"TLS Certificate\" file not defined for Director \"%s\" in %s.\n"
 msgstr "\"TLS Certificate\" Datei nicht f�r Director definiert \"%s\" in %s.\n"
 
-#: src/dird/dird.c:642 src/stored/stored.c:416 src/filed/filed.c:532
+#: src/dird/dird.c:664 src/stored/stored.c:416 src/filed/filed.c:532
 #, c-format
 msgid "\"TLS Key\" file not defined for Director \"%s\" in %s.\n"
 msgstr "\"TLS Key\" Datei nicht f�r Director definiert \"%s\" in %s.\n"
 
-#: src/dird/dird.c:649 src/stored/stored.c:422 src/filed/filed.c:538
+#: src/dird/dird.c:671 src/stored/stored.c:422 src/filed/filed.c:538
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
@@ -900,48 +900,48 @@ msgstr ""
 "Director \"%s\" in %s definert. Mindestens ein CA certificate store wird "
 "ben�tigt wenn \"TLS Verify Peer\" eingesetzt wird.\n"
 
-#: src/dird/dird.c:668 src/stored/stored.c:441 src/filed/filed.c:557
+#: src/dird/dird.c:690 src/stored/stored.c:441 src/filed/filed.c:557
 #, c-format
 msgid "Failed to initialize TLS context for Director \"%s\" in %s.\n"
 msgstr "Konnte TLS context f�r Director nicht initialisieren \"%s\" in %s.\n"
 
-#: src/dird/dird.c:676
+#: src/dird/dird.c:698
 #, c-format
 msgid "No Job records defined in %s\n"
 msgstr "Keine Job records definiert in %s\n"
 
-#: src/dird/dird.c:734 src/dird/dird.c:747
+#: src/dird/dird.c:756 src/dird/dird.c:769
 #, c-format
 msgid "Hey something is wrong. p=0x%lu\n"
 msgstr "Hey etwas l�uft schief. p=0x%lu\n"
 
-#: src/dird/dird.c:808
+#: src/dird/dird.c:830
 #, c-format
 msgid "\"%s\" directive in Job \"%s\" resource is required, but not found.\n"
 msgstr ""
 "\"%s\" Directive in Job \"%s\" resource wird ben�tigt, wurde aber nicht "
 "gefunden.\n"
 
-#: src/dird/dird.c:815
+#: src/dird/dird.c:837
 msgid "Too many items in Job resource\n"
 msgstr "zu viele items in Job resource\n"
 
-#: src/dird/dird.c:819
+#: src/dird/dird.c:841
 #, c-format
 msgid "No storage specified in Job \"%s\" nor in Pool.\n"
 msgstr "Weder storage noch Pool in Job \"%s\" definiert.\n"
 
-#: src/dird/dird.c:843
+#: src/dird/dird.c:865
 #, c-format
 msgid "\"TLS Certificate\" file not defined for Console \"%s\" in %s.\n"
 msgstr "\"TLS Certificate\" Datei nicht definiert f�r Console \"%s\" in %s.\n"
 
-#: src/dird/dird.c:849
+#: src/dird/dird.c:871
 #, c-format
 msgid "\"TLS Key\" file not defined for Console \"%s\" in %s.\n"
 msgstr "\"TLS Key\" Datei nicht definiert f�r Console \"%s\" in %s.\n"
 
-#: src/dird/dird.c:856
+#: src/dird/dird.c:878
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
@@ -952,13 +952,13 @@ msgstr ""
 "f�rConsole \"%s\" in %s. Mindestens ein CA certificate store wird ben�tigt "
 "beiEinsatz von \"TLS Verify Peer\".\n"
 
-#: src/dird/dird.c:873 src/dird/dird.c:913 src/filed/filed.c:382
+#: src/dird/dird.c:895 src/dird/dird.c:935 src/filed/filed.c:382
 #, c-format
 msgid "Failed to initialize TLS context for File daemon \"%s\" in %s.\n"
 msgstr ""
 "Konnte TLS context f�r File daemon \"%s\" in %s nicht initialisieren.\n"
 
-#: src/dird/dird.c:896
+#: src/dird/dird.c:918
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
@@ -967,39 +967,44 @@ msgstr ""
 "Weder \"TLS CA Certificate\" noch \"TLS CA Certificate Dir\" sind definiert "
 "f�r File daemon \"%s\" in %s.\n"
 
-#: src/dird/dird.c:953 src/dird/dird.c:955
+#: src/dird/dird.c:959
+#, c-format
+msgid ""
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Storage \"%s\" in %s.\n"
+msgstr ""
+"Weder \"TLS CA Certificate\" noch \"TLS CA Certificate Dir\" sind definiert "
+"f�rStorage \"%s\" in %s.\n"
+
+#: src/dird/dird.c:975 src/stored/stored.c:394
+#, c-format
+msgid "Failed to initialize TLS context for Storage \"%s\" in %s.\n"
+msgstr "Konnte TLS context f�r Storage \"%s\" in %s nicht initialisieren.\n"
+
+#: src/dird/dird.c:1014 src/dird/dird.c:1016
 #, c-format
 msgid "Could not open Catalog \"%s\", database \"%s\".\n"
 msgstr "Konnte Catalog \"%s\", database \"%s\" nicht �ffnen.\n"
 
-#: src/dird/dird.c:958 src/tools/cats_test.c:377
+#: src/dird/dird.c:1019 src/tools/cats_test.c:377
 #, c-format
 msgid "%s"
 msgstr ""
 
-#: src/dird/dird.c:1037
+#: src/dird/dird.c:1098
 #, fuzzy, c-format
 msgid "Could not create storage record for %s\n"
 msgstr "Kann Storage resource %s nicht finden\n"
 
-#: src/dird/dird.c:1045
+#: src/dird/dird.c:1106
 #, fuzzy, c-format
 msgid "Could not update storage record for %s\n"
 msgstr "Kann Storage resource %s nicht finden\n"
 
-#: src/dird/dird.c:1064
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Storage \"%s\" in %s.\n"
-msgstr ""
-"Weder \"TLS CA Certificate\" noch \"TLS CA Certificate Dir\" sind definiert "
-"f�rStorage \"%s\" in %s.\n"
-
-#: src/dird/dird.c:1080 src/stored/stored.c:394
+#: src/dird/dird.c:1181 src/dird/migrate.c:1072 src/stored/stored.c:491
 #, c-format
-msgid "Failed to initialize TLS context for Storage \"%s\" in %s.\n"
-msgstr "Konnte TLS context f�r Storage \"%s\" in %s nicht initialisieren.\n"
+msgid "Could not compile regex pattern \"%s\" ERR=%s\n"
+msgstr "Konnte regex pattern \"%s\" nicht kompilieren ERR=%s\n"
 
 #: src/dird/inc_conf.c:312
 #, fuzzy, c-format
@@ -1015,18 +1020,18 @@ msgstr "FileSet option Schl
 msgid "Old style Include/Exclude not supported\n"
 msgstr "veraltete Include/Exclude Anweisung nicht unterst�tzt\n"
 
-#: src/dird/inc_conf.c:393 src/dird/inc_conf.c:739 src/dird/dird_conf.c:1993
+#: src/dird/inc_conf.c:393 src/dird/inc_conf.c:739 src/dird/dird_conf.c:2022
 #, c-format
 msgid "Expecting keyword, got: %s\n"
 msgstr "Schl�sselwort erwartet, erhalten:%s\n"
 
-#: src/dird/inc_conf.c:401 src/dird/inc_conf.c:745 src/dird/dird_conf.c:1999
+#: src/dird/inc_conf.c:401 src/dird/inc_conf.c:745 src/dird/dird_conf.c:2028
 #: src/lib/parse_conf.c:976
 #, c-format
 msgid "expected an equals, got: %s"
 msgstr "Erwartete ein \"ist gleich\", erhalten: %s"
 
-#: src/dird/inc_conf.c:411 src/dird/inc_conf.c:754 src/dird/dird_conf.c:2010
+#: src/dird/inc_conf.c:411 src/dird/inc_conf.c:754 src/dird/dird_conf.c:2039
 #, c-format
 msgid "Keyword %s not permitted in this resource"
 msgstr "Schl�sselwort %s ist in dieser Ressource nicht erlaubt."
@@ -1080,7 +1085,7 @@ msgstr ""
 msgid "Options section not permitted in Exclude\n"
 msgstr ""
 
-#: src/dird/inc_conf.c:724 src/dird/dird_conf.c:1979
+#: src/dird/inc_conf.c:724 src/dird/dird_conf.c:2008
 #, c-format
 msgid "Expecting open brace. Got %s"
 msgstr "Geschweifte Klammer auf erwartet, erhalten: %s"
@@ -1136,7 +1141,7 @@ msgstr ""
 msgid "End query mode.\n"
 msgstr ""
 
-#: src/dird/newvol.c:91
+#: src/dird/newvol.c:90
 #, c-format
 msgid "Illegal character in Volume name \"%s\"\n"
 msgstr "Illegales Zeichen in \"Volume name\" \"%s\"\n"
@@ -1151,13 +1156,13 @@ msgstr "Neues Volume \"%s\" in catalog erzeugt.\n"
 msgid "SQL failed, but ignored. ERR=%s\n"
 msgstr "SQL fehlgeschlagen ERR=%s\n"
 
-#: src/dird/newvol.c:142
+#: src/dird/newvol.c:141
 #, c-format
 msgid "Wanted to create Volume \"%s\", but it already exists. Trying again.\n"
 msgstr ""
 "Wollte Volume \"%s\"erzeugen, aber , but it already exists. Trying again.\n"
 
-#: src/dird/newvol.c:151
+#: src/dird/newvol.c:150
 msgid "Too many failures. Giving up creating Volume name.\n"
 msgstr "Zu viele Fehler. Gebe Versuch einen Volumennamen zu erzeugen auf.\n"
 
@@ -1196,7 +1201,7 @@ msgstr "Kann Ausdruck\"%s\"nicht aufl
 msgid "Cannot destroy var context: ERR=%s\n"
 msgstr "kann Variable context nicht zerst�ren: ERR=%s\n"
 
-#: src/dird/recycle.c:65
+#: src/dird/recycle.c:69
 #, c-format
 msgid "Recycled volume \"%s\"\n"
 msgstr ""
@@ -1261,27 +1266,27 @@ msgid ""
 "There are no more Jobs associated with Volume \"%s\". Marking it purged.\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:556 src/dird/ua_label.c:759
+#: src/dird/ua_purge.c:556 src/dird/ua_label.c:774
 #, c-format
 msgid "Connecting to Storage daemon %s at %s:%d ...\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:559 src/dird/ua_dotcmds.c:606 src/dird/ua_cmds.c:772
-#: src/dird/ua_cmds.c:1531 src/dird/ua_label.c:762 src/dird/job.c:448
+#: src/dird/ua_purge.c:559 src/dird/ua_dotcmds.c:625 src/dird/ua_cmds.c:771
+#: src/dird/ua_cmds.c:1577 src/dird/ua_label.c:777 src/dird/job.c:448
 msgid "Failed to connect to Storage daemon.\n"
 msgstr "Verbindung zu Storage daemon fehlgeschlagen.\n"
 
-#: src/dird/ua_purge.c:622
+#: src/dird/ua_purge.c:623
 #, fuzzy
 msgid "Can't update volume size in the catalog\n"
 msgstr "Neues Volume \"%s\" in catalog erzeugt.\n"
 
-#: src/dird/ua_purge.c:624
+#: src/dird/ua_purge.c:625
 #, c-format
 msgid "The volume \"%s\" has been truncated\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:626
+#: src/dird/ua_purge.c:627
 #, fuzzy, c-format
 msgid "Unable to truncate volume \"%s\"\n"
 msgstr "Kann Konsole \"%s\" an %s:%s:%d nicht authentisieren.\n"
@@ -1291,17 +1296,17 @@ msgstr "Kann Konsole \"%s\" an %s:%s:%d nicht authentisieren.\n"
 msgid "No Volumes found to perform %s action.\n"
 msgstr "Keine Volumes zum Wiederherstellen gefunden.\n"
 
-#: src/dird/ua_purge.c:785
+#: src/dird/ua_purge.c:786
 #, c-format
 msgid "Unable move recycled Volume in full Pool \"%s\" MaxVols=%d\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:799
+#: src/dird/ua_purge.c:800
 #, c-format
 msgid "All records pruned from Volume \"%s\"; marking it \"Purged\"\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:804
+#: src/dird/ua_purge.c:805
 #, c-format
 msgid "Cannot purge Volume with VolStatus=%s\n"
 msgstr ""
@@ -1311,8 +1316,8 @@ msgid "Could not get or create a Pool record.\n"
 msgstr "Konnte keinen Pool Eintrag holen oder erzeugen.\n"
 
 #: src/dird/vbackup.c:89 src/dird/migrate.c:227 src/dird/migrate.c:228
-#: src/dird/backup.c:93 src/dird/job.c:185 src/dird/job.c:868
-#: src/dird/job.c:1123 src/dird/job.c:1169 src/dird/job.c:1183
+#: src/dird/backup.c:93 src/dird/job.c:185 src/dird/job.c:871
+#: src/dird/job.c:1126 src/dird/job.c:1172 src/dird/job.c:1186
 msgid "Pool resource"
 msgstr "Pool Ressource"
 
@@ -1344,34 +1349,34 @@ msgstr "Fehler beim Holen des job Eintrags f
 msgid "Could not get or create the FileSet record.\n"
 msgstr "Konnte FileSet Eintrag weder holen noch erzeugen.\n"
 
-#: src/dird/vbackup.c:311 src/dird/backup.c:625
+#: src/dird/vbackup.c:313 src/dird/backup.c:635
 #, fuzzy, c-format
 msgid "Error getting Client record for Job report: ERR=%s"
 msgstr "Fehler beim holen des Datensatzes f�r Volume \"%s\": ERR=%s"
 
-#: src/dird/vbackup.c:317 src/dird/migrate.c:1256 src/dird/backup.c:631
+#: src/dird/vbackup.c:319 src/dird/migrate.c:1257 src/dird/backup.c:641
 #, c-format
 msgid "Error getting Media record for Volume \"%s\": ERR=%s"
 msgstr "Fehler beim holen des Datensatzes f�r Volume \"%s\": ERR=%s"
 
-#: src/dird/vbackup.c:327 src/dird/backup.c:641 src/dird/backup.c:650
-#: src/stored/bscan.c:1210
+#: src/dird/vbackup.c:329 src/dird/backup.c:651 src/dird/backup.c:660
+#: src/stored/bscan.c:1214
 msgid "Backup OK -- with warnings"
 msgstr "Sicherung OK -- mit Warnungen"
 
-#: src/dird/vbackup.c:329 src/dird/backup.c:643 src/stored/bscan.c:1207
+#: src/dird/vbackup.c:331 src/dird/backup.c:653 src/stored/bscan.c:1211
 msgid "Backup OK"
 msgstr "Sicherung OK"
 
-#: src/dird/vbackup.c:334 src/dird/backup.c:654 src/stored/bscan.c:1214
+#: src/dird/vbackup.c:336 src/dird/backup.c:664 src/stored/bscan.c:1218
 msgid "*** Backup Error ***"
 msgstr "*** Sicherungsfehler ***"
 
-#: src/dird/vbackup.c:344 src/dird/backup.c:664 src/stored/bscan.c:1217
+#: src/dird/vbackup.c:346 src/dird/backup.c:674 src/stored/bscan.c:1221
 msgid "Backup Canceled"
 msgstr "Sicherung Abgebrochen"
 
-#: src/dird/vbackup.c:391
+#: src/dird/vbackup.c:393
 #, fuzzy, c-format
 msgid ""
 "%s %s %s (%s):\n"
@@ -1447,93 +1452,93 @@ msgstr ""
 msgid "disabled"
 msgstr "ist nicht aktiviert"
 
-#: src/dird/ua_output.c:208
+#: src/dird/ua_output.c:211
 msgid "Keywords for the show command are:\n"
 msgstr ""
 
-#: src/dird/ua_output.c:214
+#: src/dird/ua_output.c:217
 #, c-format
 msgid "%s resource %s not found.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:217
+#: src/dird/ua_output.c:220
 #, c-format
 msgid "Resource %s not found\n"
 msgstr ""
 
-#: src/dird/ua_output.c:288
+#: src/dird/ua_output.c:290
 msgid "Hey! DB is NULL\n"
 msgstr ""
 
-#: src/dird/ua_output.c:445
+#: src/dird/ua_output.c:447
 #, c-format
 msgid "Jobid %d used %d Volume(s): %s\n"
 msgstr ""
 
-#: src/dird/ua_output.c:463
+#: src/dird/ua_output.c:465
 msgid "No Pool specified.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:484
+#: src/dird/ua_output.c:486
 #, c-format
 msgid "Pool: %s\n"
 msgstr ""
 
-#: src/dird/ua_output.c:500
+#: src/dird/ua_output.c:502
 msgid "Ignoring invalid value for days. Max is 50.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:522
+#: src/dird/ua_output.c:524
 #, c-format
 msgid "Unknown list keyword: %s\n"
 msgstr ""
 
-#: src/dird/ua_output.c:548
+#: src/dird/ua_output.c:549
 #, c-format
 msgid "%s is not a job name.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:562
+#: src/dird/ua_output.c:563
 #, fuzzy, c-format
 msgid "Could not find Pool for Job %s\n"
 msgstr "Konnte Datenbank \"%s\" nicht �ffen.\n"
 
-#: src/dird/ua_output.c:575
+#: src/dird/ua_output.c:576
 #, c-format
 msgid "Could not find next Volume for Job %s (Pool=%s, Level=%s).\n"
 msgstr ""
 
-#: src/dird/ua_output.c:579
+#: src/dird/ua_output.c:580
 #, c-format
 msgid ""
 "The next Volume to be used by Job \"%s\" (Pool=%s, Level=%s) will be %s\n"
 msgstr ""
 
-#: src/dird/ua_output.c:592
+#: src/dird/ua_output.c:593
 #, c-format
 msgid "Could not find next Volume for Job %s.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:719 src/dird/job.c:133 src/tools/cats_test.c:375
+#: src/dird/ua_output.c:720 src/dird/job.c:133 src/tools/cats_test.c:375
 #, c-format
 msgid "Could not open database \"%s\".\n"
 msgstr "Konnte Datenbank \"%s\" nicht �ffen.\n"
 
-#: src/dird/ua_output.c:732
+#: src/dird/ua_output.c:733
 #, c-format
 msgid "Pool %s not in database. %s"
 msgstr "Pool %s nicht in der Datenbank. %s"
 
-#: src/dird/ua_output.c:740
+#: src/dird/ua_output.c:741
 #, c-format
 msgid "Pool %s created in database.\n"
 msgstr "Pool %s in der Datenbank angelegt.\n"
 
-#: src/dird/ua_output.c:793
+#: src/dird/ua_output.c:794
 msgid "You have no messages.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:873
+#: src/dird/ua_output.c:874
 msgid "Message too long to display.\n"
 msgstr ""
 
@@ -1546,162 +1551,162 @@ msgstr ""
 msgid ": is an invalid command.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:540 src/dird/ua_restore.c:780
+#: src/dird/ua_dotcmds.c:553 src/dird/ua_restore.c:780
 #: src/dird/ua_restore.c:823
 #, c-format
 msgid "Unable to get Job record for JobId=%s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:600 src/dird/ua_cmds.c:766 src/dird/ua_cmds.c:1520
+#: src/dird/ua_dotcmds.c:619 src/dird/ua_cmds.c:765 src/dird/ua_cmds.c:1566
 #: src/dird/ua_status.c:352 src/dird/job.c:147 src/dird/job.c:153
-#: src/dird/job.c:1157 src/dird/job.c:1161
+#: src/dird/job.c:1160 src/dird/job.c:1164
 msgid "unknown source"
 msgstr "unbekannte Quelle"
 
-#: src/dird/ua_dotcmds.c:603 src/dird/ua_cmds.c:769 src/dird/ua_status.c:355
+#: src/dird/ua_dotcmds.c:622 src/dird/ua_cmds.c:768 src/dird/ua_status.c:355
 #, c-format
 msgid "Connecting to Storage daemon %s at %s:%d\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:609 src/dird/ua_cmds.c:775 src/dird/ua_status.c:366
+#: src/dird/ua_dotcmds.c:628 src/dird/ua_cmds.c:774 src/dird/ua_status.c:366
 msgid "Connected to storage daemon\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:629 src/dird/ua_cmds.c:804 src/dird/ua_cmds.c:1202
+#: src/dird/ua_dotcmds.c:648 src/dird/ua_cmds.c:803 src/dird/ua_cmds.c:1208
 #: src/dird/ua_status.c:397
 #, c-format
 msgid "Connecting to Client %s at %s:%d\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:632 src/dird/ua_cmds.c:807 src/dird/ua_cmds.c:1205
+#: src/dird/ua_dotcmds.c:651 src/dird/ua_cmds.c:806 src/dird/ua_cmds.c:1211
 msgid "Failed to connect to Client.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:675 src/dird/ua_dotcmds.c:769
+#: src/dird/ua_dotcmds.c:694 src/dird/ua_dotcmds.c:788
 #, fuzzy, c-format
 msgid "Unknown command: %s\n"
 msgstr "unbekannt"
 
-#: src/dird/ua_dotcmds.c:713 src/dird/ua_cmds.c:994
+#: src/dird/ua_dotcmds.c:732 src/dird/ua_cmds.c:993
 msgid "Available daemons are: \n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:714 src/dird/ua_cmds.c:995
+#: src/dird/ua_dotcmds.c:733 src/dird/ua_cmds.c:994
 msgid "Director"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:717
+#: src/dird/ua_dotcmds.c:736
 msgid "Select daemon type to make die"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:743
+#: src/dird/ua_dotcmds.c:762
 msgid "The Director will generate a deadlock.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:747
+#: src/dird/ua_dotcmds.c:766
 msgid "The Director will segment fault.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:936
+#: src/dird/ua_dotcmds.c:955
 msgid "Access to specified Client or FileSet not allowed.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:941 src/dird/ua_dotcmds.c:985
+#: src/dird/ua_dotcmds.c:960 src/dird/ua_dotcmds.c:1004
 #: src/dird/ua_restore.c:941 src/dird/ua_restore.c:969
 #: src/dird/ua_restore.c:990
 #, c-format
 msgid "Query failed: %s. ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:980
+#: src/dird/ua_dotcmds.c:999
 #, fuzzy
 msgid "query keyword not found.\n"
 msgstr "Path record: %s nicht gefunden.\n"
 
-#: src/dird/ua_dotcmds.c:1007
+#: src/dird/ua_dotcmds.c:1026
 #, fuzzy, c-format
 msgid "List MediaType failed: ERR=%s\n"
 msgstr "Media id select fehlgeschlagen: ERR=%s\n"
 
-#: src/dird/ua_dotcmds.c:1021
+#: src/dird/ua_dotcmds.c:1040
 #, fuzzy, c-format
 msgid "List Media failed: ERR=%s\n"
 msgstr "Media id select fehlgeschlagen: ERR=%s\n"
 
-#: src/dird/ua_dotcmds.c:1035
+#: src/dird/ua_dotcmds.c:1054
 #, fuzzy, c-format
 msgid "List Location failed: ERR=%s\n"
 msgstr "Client id select fehlgeschlagen: ERR=%s\n"
 
-#: src/dird/next_vol.c:149
+#: src/dird/next_vol.c:166
 #, c-format
 msgid "Purging oldest volume \"%s\"\n"
 msgstr ""
 
-#: src/dird/next_vol.c:155
+#: src/dird/next_vol.c:172
 #, c-format
 msgid "Pruning oldest volume \"%s\"\n"
 msgstr ""
 
-#: src/dird/next_vol.c:174
+#: src/dird/next_vol.c:191
 msgid "We seem to be looping trying to find the next volume. I give up.\n"
 msgstr ""
 
-#: src/dird/next_vol.c:201
+#: src/dird/next_vol.c:218
 #, fuzzy, c-format
 msgid "Max Volume bytes=%s exceeded. Marking Volume \"%s\" as Full.\n"
 msgstr "\"Max Volume bytes\"erreicht. Markiere Volume \"%s\" als Voll.\n"
 
-#: src/dird/next_vol.c:209
+#: src/dird/next_vol.c:226
 #, c-format
 msgid "Volume used once. Marking Volume \"%s\" as Used.\n"
 msgstr "Volume erstmalig benutzt. Markiere Volume \"%s\" als Used.\n"
 
-#: src/dird/next_vol.c:216
+#: src/dird/next_vol.c:233
 #, fuzzy, c-format
 msgid "Max Volume jobs=%s exceeded. Marking Volume \"%s\" as Used.\n"
 msgstr "\"Max Volume bytes\"erreicht. Markiere Volume \"%s\" als Voll.\n"
 
-#: src/dird/next_vol.c:226
+#: src/dird/next_vol.c:243
 #, fuzzy, c-format
 msgid "Max Volume files=%s exceeded. Marking Volume \"%s\" as Used.\n"
 msgstr "\"Max Volume bytes\"erreicht. Markiere Volume \"%s\" als Voll.\n"
 
-#: src/dird/next_vol.c:237
+#: src/dird/next_vol.c:254
 #, fuzzy, c-format
 msgid ""
 "Max configured use duration=%s sec. exceeded. Marking Volume \"%s\" as "
 "Used.\n"
 msgstr "Volume erstmalig benutzt. Markiere Volume \"%s\" als Used.\n"
 
-#: src/dird/next_vol.c:249
+#: src/dird/next_vol.c:267
 #, c-format
 msgid "Catalog error updating volume \"%s\". ERR=%s"
 msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/dird/next_vol.c:271
+#: src/dird/next_vol.c:289
 msgid "volume has expired"
 msgstr "volume ist abgelaufen"
 
-#: src/dird/next_vol.c:289 src/dird/next_vol.c:333
+#: src/dird/next_vol.c:307 src/dird/next_vol.c:351
 #, c-format
 msgid "Recycled current volume \"%s\"\n"
 msgstr "Recycled current volume \"%s\"\n"
 
-#: src/dird/next_vol.c:294
+#: src/dird/next_vol.c:312
 msgid "and recycling of current volume failed"
 msgstr "und das Wiederverwenden des aktuellen volumes ist fehlgeschlagen "
 
-#: src/dird/next_vol.c:300
+#: src/dird/next_vol.c:318
 msgid "but should be Append, Purged or Recycle"
 msgstr "aber sollte Append, Purged oder Recycle sein"
 
-#: src/dird/next_vol.c:309
+#: src/dird/next_vol.c:327
 #, fuzzy
 msgid "volume has recycling disabled"
 msgstr "volume ist abgelaufen"
 
-#: src/dird/next_vol.c:336
+#: src/dird/next_vol.c:354
 msgid ""
 "but should be Append, Purged or Recycle (recycling of the current volume "
 "failed)"
@@ -1709,29 +1714,29 @@ msgstr ""
 "aber sollte Append, Purged oder Recycle (das Recycling des des aktuellen "
 "Volumens ist fehlgeschlagen)"
 
-#: src/dird/next_vol.c:340
+#: src/dird/next_vol.c:358
 msgid ""
 "but should be Append, Purged or Recycle (cannot automatically recycle "
 "current volume, as it still contains unpruned data or the Volume Retention "
 "time has not expired.)"
 msgstr ""
 
-#: src/dird/next_vol.c:402
+#: src/dird/next_vol.c:421
 #, c-format
 msgid "Unable to get Pool record: ERR=%s"
 msgstr ""
 
-#: src/dird/next_vol.c:409
+#: src/dird/next_vol.c:428
 #, c-format
 msgid "Unable add Scratch Volume, Pool \"%s\" full MaxVols=%d\n"
 msgstr ""
 
-#: src/dird/next_vol.c:428
+#: src/dird/next_vol.c:448
 #, c-format
 msgid "Failed to move Scratch Volume. ERR=%s\n"
 msgstr ""
 
-#: src/dird/next_vol.c:433
+#: src/dird/next_vol.c:453
 #, c-format
 msgid "Using Volume \"%s\" from 'Scratch' pool.\n"
 msgstr ""
@@ -1920,166 +1925,166 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:307
+#: src/dird/ua_cmds.c:306
 #, c-format
 msgid "Pool already has maximum volumes=%d\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:308
+#: src/dird/ua_cmds.c:307
 msgid "Enter new maximum (zero for unlimited): "
 msgstr ""
 
-#: src/dird/ua_cmds.c:328
+#: src/dird/ua_cmds.c:327
 #, c-format
 msgid "Enter number of Volumes to create. 0=>fixed name. Max=%d: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:334
+#: src/dird/ua_cmds.c:333
 #, c-format
 msgid "The number must be between 0 and %d\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:342
+#: src/dird/ua_cmds.c:341
 msgid "Enter Volume name: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:346
+#: src/dird/ua_cmds.c:345
 msgid "Enter base volume name: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:355 src/dird/ua_label.c:648
+#: src/dird/ua_cmds.c:354 src/dird/ua_label.c:663
 msgid "Volume name too long.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:359 src/dird/ua_label.c:654 src/lib/edit.c:501
+#: src/dird/ua_cmds.c:358 src/dird/ua_label.c:669 src/lib/edit.c:501
 msgid "Volume name must be at least one character long.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:370
+#: src/dird/ua_cmds.c:369
 msgid "Enter the starting number: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:375
+#: src/dird/ua_cmds.c:374
 msgid "Start number must be greater than zero.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:386
+#: src/dird/ua_cmds.c:385
 msgid "Enter slot (0 for none): "
 msgstr ""
 
-#: src/dird/ua_cmds.c:390
+#: src/dird/ua_cmds.c:389
 msgid "InChanger? yes/no: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:415
+#: src/dird/ua_cmds.c:414
 #, c-format
 msgid "%d Volumes created in pool %s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:431 src/dird/ua_cmds.c:1033
+#: src/dird/ua_cmds.c:430 src/dird/ua_cmds.c:1032
 msgid "Turn on or off? "
 msgstr ""
 
-#: src/dird/ua_cmds.c:545
+#: src/dird/ua_cmds.c:544
 #, c-format
 msgid ""
 "Can't set %s RecyclePool to %s, %s is not in database.\n"
 "Try to update it with 'update pool=%s'\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:563
+#: src/dird/ua_cmds.c:562
 #, c-format
 msgid ""
 "Can't set %s ScratchPool to %s, %s is not in database.\n"
 "Try to update it with 'update pool=%s'\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:632
+#: src/dird/ua_cmds.c:631
 #, c-format
 msgid ""
 "Error: Pool %s already exists.\n"
 "Use update to change it.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:643
+#: src/dird/ua_cmds.c:642
 #, c-format
 msgid "Pool %s created.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:673
+#: src/dird/ua_cmds.c:672
 msgid "Python interpreter restarted.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:676 src/dird/ua_cmds.c:1331
+#: src/dird/ua_cmds.c:675 src/dird/ua_cmds.c:1337
 msgid "Nothing done.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:700 src/dird/ua_cmds.c:1084 src/dird/ua_run.c:1582
+#: src/dird/ua_cmds.c:699 src/dird/ua_cmds.c:1083 src/dird/ua_run.c:1588
 #, c-format
 msgid "Client \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:709
+#: src/dird/ua_cmds.c:708
 #, c-format
 msgid "Client \"%s\" address set to %s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:743
+#: src/dird/ua_cmds.c:742
 #, c-format
 msgid "Job \"%s\" %sabled\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:921
+#: src/dird/ua_cmds.c:920
 msgid "Enter new debug level: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:998
+#: src/dird/ua_cmds.c:997
 msgid "All"
 msgstr ""
 
-#: src/dird/ua_cmds.c:999
+#: src/dird/ua_cmds.c:998
 msgid "Select daemon type to set debug level"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1088 src/dird/ua_cmds.c:1926
+#: src/dird/ua_cmds.c:1087 src/dird/ua_cmds.c:1972
 #, c-format
 msgid "No authorization for Client \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1093
+#: src/dird/ua_cmds.c:1092
 msgid "Client name missing.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1105 src/dird/ua_cmds.c:1166 src/dird/ua_cmds.c:1948
+#: src/dird/ua_cmds.c:1104 src/dird/ua_cmds.c:1171 src/dird/ua_cmds.c:1994
 #, c-format
 msgid "No authorization for Job \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1110
+#: src/dird/ua_cmds.c:1109
 msgid "Job name missing.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1119
+#: src/dird/ua_cmds.c:1118
 #, fuzzy, c-format
 msgid "Fileset \"%s\" not found.\n"
 msgstr "FileSet Eintrag \"%s\" nicht gefunden\n"
 
-#: src/dird/ua_cmds.c:1123
+#: src/dird/ua_cmds.c:1122
 #, c-format
 msgid "No authorization for FileSet \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1128
+#: src/dird/ua_cmds.c:1127
 #, fuzzy
 msgid "Fileset name missing.\n"
 msgstr "FileSet: name=%s\n"
 
-#: src/dird/ua_cmds.c:1139 src/dird/ua_run.c:563
+#: src/dird/ua_cmds.c:1138 src/dird/ua_run.c:550
 #, fuzzy, c-format
 msgid "Level \"%s\" not valid.\n"
 msgstr "Pool Ressource \"%s\" nicht gefunden.\n"
 
-#: src/dird/ua_cmds.c:1143
+#: src/dird/ua_cmds.c:1142
 msgid "Level value missing.\n"
 msgstr ""
 
@@ -2087,39 +2092,64 @@ msgstr ""
 msgid "Invalid value for accurate. It must be yes or no.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1162
+#: src/dird/ua_cmds.c:1154
+#, fuzzy
+msgid "Accurate value missing.\n"
+msgstr "FileSet: name=%s\n"
+
+#: src/dird/ua_cmds.c:1167
 msgid "No job specified.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1210
+#: src/dird/ua_cmds.c:1227
 msgid "Error sending include list.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1215
+#: src/dird/ua_cmds.c:1232
 msgid "Error sending exclude list.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1317
+#: src/dird/ua_cmds.c:1323
 msgid ""
 "In general it is not a good idea to delete either a\n"
 "Pool or a Volume since they may contain data.\n"
 "\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1320
+#: src/dird/ua_cmds.c:1326
 msgid "Choose catalog item to delete"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1384
+#: src/dird/ua_cmds.c:1376 src/dird/ua_cmds.c:1391 src/dird/ua_cmds.c:1401
+#, fuzzy, c-format
+msgid "Illegal JobId %s ignored\n"
+msgstr "Clone JobId %d gestartet.\n"
+
+#: src/dird/ua_cmds.c:1404
 msgid "Enter JobId to delete: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:1423
+#: src/dird/ua_cmds.c:1440
+#, c-format
+msgid "Are you sure you want to delete %d JobIds ? (yes/no): "
+msgstr ""
+
+#: src/dird/ua_cmds.c:1450
+#, c-format
+msgid "Illegal JobId range %s - %s should define increasing JobIds, ignored\n"
+msgstr ""
+
+#: src/dird/ua_cmds.c:1454
+#, c-format
+msgid "Illegal JobId range %s - %s, ignored\n"
+msgstr ""
+
+#: src/dird/ua_cmds.c:1469
 #, c-format
-msgid "Job %s and associated records deleted from the catalog.\n"
+msgid "Jobid %s and associated records deleted from the catalog.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1438
+#: src/dird/ua_cmds.c:1484
 #, c-format
 msgid ""
 "\n"
@@ -2127,44 +2157,44 @@ msgid ""
 "and all Jobs saved on that volume from the Catalog\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1445
+#: src/dird/ua_cmds.c:1491
 #, c-format
 msgid "Are you sure you want to delete Volume \"%s\"? (yes/no): "
 msgstr ""
 
-#: src/dird/ua_cmds.c:1458
+#: src/dird/ua_cmds.c:1504
 msgid "Can't list jobs on this volume\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1483
+#: src/dird/ua_cmds.c:1529
 #, c-format
 msgid "Are you sure you want to delete Pool \"%s\"? (yes/no): "
 msgstr ""
 
-#: src/dird/ua_cmds.c:1598
+#: src/dird/ua_cmds.c:1644
 #, c-format
 msgid "Using Catalog name=%s DB=%s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1666
+#: src/dird/ua_cmds.c:1712
 msgid "ERR: Can't open db\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1713
+#: src/dird/ua_cmds.c:1759
 msgid "Wait on mount timed out\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1723
+#: src/dird/ua_cmds.c:1769
 msgid "ERR: Job was not found\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1799
+#: src/dird/ua_cmds.c:1845
 msgid ""
 "  Command       Description\n"
 "  =======       ===========\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1803
+#: src/dird/ua_cmds.c:1849
 #, c-format
 msgid ""
 "  %-13s %s\n"
@@ -2173,12 +2203,12 @@ msgid ""
 "\t%s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1808
+#: src/dird/ua_cmds.c:1854
 #, fuzzy, c-format
 msgid "  %-13s %s\n"
 msgstr "  --> Run=%s\n"
 
-#: src/dird/ua_cmds.c:1812
+#: src/dird/ua_cmds.c:1858
 #, c-format
 msgid ""
 "\n"
@@ -2186,29 +2216,29 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1814
+#: src/dird/ua_cmds.c:1860
 msgid ""
 "\n"
 "When at a prompt, entering a period cancels the command.\n"
 "\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1850 src/filed/status.c:85
+#: src/dird/ua_cmds.c:1896 src/filed/status.c:85
 #, c-format
 msgid "%s Version: %s (%s) %s %s %s %s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1909 src/dird/ua_cmds.c:1936 src/dird/ua_cmds.c:1958
+#: src/dird/ua_cmds.c:1955 src/dird/ua_cmds.c:1982 src/dird/ua_cmds.c:2004
 #, c-format
 msgid "No authorization for Catalog \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:2003
+#: src/dird/ua_cmds.c:2049
 #, c-format
 msgid "Could not open catalog database \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:2013
+#: src/dird/ua_cmds.c:2059
 #, c-format
 msgid "Using Catalog \"%s\"\n"
 msgstr ""
@@ -2303,7 +2333,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:129 src/dird/ua_tree.c:827
+#: src/dird/ua_tree.c:129 src/dird/ua_tree.c:831
 #, c-format
 msgid "cwd is: %s\n"
 msgstr ""
@@ -2313,142 +2343,150 @@ msgstr ""
 msgid "Invalid command \"%s\". Enter \"done\" to exit.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:370 src/dird/ua_tree.c:382 src/dird/ua_tree.c:399
+#: src/dird/ua_tree.c:227
+#, c-format
+msgid ""
+"Something is wrong with the Delta sequence of %s, skiping new parts. Current "
+"sequence is %d\n"
+msgstr ""
+
+#: src/dird/ua_tree.c:373 src/dird/ua_tree.c:385 src/dird/ua_tree.c:402
 msgid "No files marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:384
+#: src/dird/ua_tree.c:387
 msgid "1 file marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:386
+#: src/dird/ua_tree.c:389
 #, c-format
 msgid "%s files marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:414
+#: src/dird/ua_tree.c:417
 msgid "No directories marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:416
+#: src/dird/ua_tree.c:419
 msgid "1 directory marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:418
+#: src/dird/ua_tree.c:421
 #, c-format
 msgid "%s directories marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:439
+#: src/dird/ua_tree.c:442
 #, c-format
 msgid "%s total files/dirs. %s marked to be restored.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:450
+#: src/dird/ua_tree.c:453
 msgid "No file specification given.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:671
+#: src/dird/ua_tree.c:674
 #, c-format
 msgid "Node %s has no children.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:764
+#: src/dird/ua_tree.c:767
 #, c-format
 msgid "%d total files; %d marked to be restored; %s bytes.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:775 src/stored/btape.c:2947
+#: src/dird/ua_tree.c:778 src/stored/btape.c:2949
 #, c-format
 msgid ""
 "  Command    Description\n"
 "  =======    ===========\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:798
+#: src/dird/ua_tree.c:801
 msgid "Too few or too many arguments. Try using double quotes.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:810
+#: src/dird/ua_tree.c:814
 msgid "Invalid path given.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:846 src/dird/ua_tree.c:858
+#: src/dird/ua_tree.c:850 src/dird/ua_tree.c:862
 msgid "No files unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:860
+#: src/dird/ua_tree.c:864
 msgid "1 file unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:863
+#: src/dird/ua_tree.c:867
 #, c-format
 msgid "%s files unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:874 src/dird/ua_tree.c:891
+#: src/dird/ua_tree.c:878 src/dird/ua_tree.c:895
 msgid "No directories unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:893
+#: src/dird/ua_tree.c:897
 msgid "1 directory unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:895
+#: src/dird/ua_tree.c:899
 #, c-format
 msgid "%d directories unmarked.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:559 src/tray-monitor/tray_conf.c:168
+#: src/dird/dird_conf.c:567 src/tray-monitor/tray_conf.c:168
 #: src/qt-console/tray-monitor/tray_conf.cpp:168
 #, c-format
 msgid "No %s resource defined\n"
 msgstr "Keine %s resource definiert\n"
 
-#: src/dird/dird_conf.c:568
+#: src/dird/dird_conf.c:576
 #, c-format
 msgid "Director: name=%s MaxJobs=%d FDtimeout=%s SDtimeout=%s\n"
 msgstr "Director: name=%s MaxJobs=%d FDtimeout=%s SDtimeout=%s\n"
 
-#: src/dird/dird_conf.c:573
+#: src/dird/dird_conf.c:581
 #, c-format
 msgid "   query_file=%s\n"
 msgstr "   query_file=%s\n"
 
-#: src/dird/dird_conf.c:576 src/dird/dird_conf.c:596 src/dird/dird_conf.c:610
-#: src/dird/dird_conf.c:669 src/dird/dird_conf.c:673 src/dird/dird_conf.c:677
-#: src/dird/dird_conf.c:710 src/dird/dird_conf.c:733 src/dird/dird_conf.c:737
-#: src/dird/dird_conf.c:741 src/dird/dird_conf.c:745 src/dird/dird_conf.c:749
-#: src/dird/dird_conf.c:762 src/dird/dird_conf.c:989 src/dird/dird_conf.c:996
+#: src/dird/dird_conf.c:584 src/dird/dird_conf.c:604 src/dird/dird_conf.c:621
+#: src/dird/dird_conf.c:689 src/dird/dird_conf.c:693 src/dird/dird_conf.c:697
+#: src/dird/dird_conf.c:730 src/dird/dird_conf.c:753 src/dird/dird_conf.c:757
+#: src/dird/dird_conf.c:761 src/dird/dird_conf.c:765 src/dird/dird_conf.c:769
+#: src/dird/dird_conf.c:782 src/dird/dird_conf.c:1018
+#: src/dird/dird_conf.c:1025
 msgid "  --> "
 msgstr "  --> "
 
-#: src/dird/dird_conf.c:581
+#: src/dird/dird_conf.c:589
 #, c-format
 msgid "Console: name=%s SSL=%d\n"
 msgstr "Console: name=%s SSL=%d\n"
 
-#: src/dird/dird_conf.c:586
+#: src/dird/dird_conf.c:594
 #, c-format
 msgid "Counter: name=%s min=%d max=%d cur=%d wrapcntr=%s\n"
 msgstr "Counter: name=%s min=%d max=%d cur=%d wrapcntr=%s\n"
 
-#: src/dird/dird_conf.c:591
+#: src/dird/dird_conf.c:599
 #, c-format
 msgid "Counter: name=%s min=%d max=%d\n"
 msgstr "Counter: name=%s min=%d max=%d\n"
 
-#: src/dird/dird_conf.c:602
+#: src/dird/dird_conf.c:613
 #, c-format
 msgid "Client: name=%s address=%s FDport=%d MaxJobs=%u\n"
 msgstr "Client: name=%s address=%s FDport=%d MaxJobs=%u\n"
 
-#: src/dird/dird_conf.c:605
+#: src/dird/dird_conf.c:616
 #, c-format
 msgid "      JobRetention=%s FileRetention=%s AutoPrune=%d\n"
 msgstr "      JobRetention=%s FileRetention=%s AutoPrune=%d\n"
 
-#: src/dird/dird_conf.c:618
+#: src/dird/dird_conf.c:629
 #, c-format
 msgid ""
 "Device: name=%s ok=%d num_writers=%d max_writers=%d\n"
@@ -2461,7 +2499,7 @@ msgstr ""
 "%d\n"
 "      poolid=%s volname=%s MediaType=%s\n"
 
-#: src/dird/dird_conf.c:629
+#: src/dird/dird_conf.c:643
 #, c-format
 msgid ""
 "Storage: name=%s address=%s SDport=%d MaxJobs=%u\n"
@@ -2470,7 +2508,7 @@ msgstr ""
 "Storage: name=%s address=%s SDport=%d MaxJobs=%u\n"
 "      DeviceName=%s MediaType=%s StorageId=%s\n"
 
-#: src/dird/dird_conf.c:639
+#: src/dird/dird_conf.c:656
 #, fuzzy, c-format
 msgid ""
 "Catalog: name=%s address=%s DBport=%d db_name=%s\n"
@@ -2479,16 +2517,16 @@ msgstr ""
 "Catalog: name=%s address=%s DBport=%d db_name=%s\n"
 "      db_user=%s MutliDBConn=%d\n"
 
-#: src/dird/dird_conf.c:649
+#: src/dird/dird_conf.c:669
 #, c-format
 msgid "%s: name=%s JobType=%d level=%s Priority=%d Enabled=%d\n"
 msgstr "%s: name=%s JobType=%d level=%s Priority=%d Enabled=%d\n"
 
-#: src/dird/dird_conf.c:650
+#: src/dird/dird_conf.c:670
 msgid "JobDefs"
 msgstr "JobDefs"
 
-#: src/dird/dird_conf.c:654
+#: src/dird/dird_conf.c:674
 #, c-format
 msgid ""
 "     MaxJobs=%u Resched=%d Times=%d Interval=%s Spool=%d WritePartAfterJob="
@@ -2497,256 +2535,256 @@ msgstr ""
 "     MaxJobs=%u Resched=%d Times=%d Interval=%s Spool=%d WritePartAfterJob="
 "%d\n"
 
-#: src/dird/dird_conf.c:660
+#: src/dird/dird_conf.c:680
 #, fuzzy, c-format
 msgid "     SpoolSize=%s\n"
 msgstr "      opcmd=%s\n"
 
-#: src/dird/dird_conf.c:663
+#: src/dird/dird_conf.c:683
 #, fuzzy, c-format
 msgid "     Accurate=%d\n"
 msgstr "     SelectionType=%d\n"
 
-#: src/dird/dird_conf.c:666
+#: src/dird/dird_conf.c:686
 #, c-format
 msgid "     SelectionType=%d\n"
 msgstr "     SelectionType=%d\n"
 
-#: src/dird/dird_conf.c:681
+#: src/dird/dird_conf.c:701
 #, c-format
 msgid "  --> Where=%s\n"
 msgstr "  --> Where=%s\n"
 
-#: src/dird/dird_conf.c:684
+#: src/dird/dird_conf.c:704
 #, fuzzy, c-format
 msgid "  --> RegexWhere=%s\n"
 msgstr "  --> Where=%s\n"
 
-#: src/dird/dird_conf.c:687
+#: src/dird/dird_conf.c:707
 #, c-format
 msgid "  --> Bootstrap=%s\n"
 msgstr "  --> Bootstrap=%s\n"
 
-#: src/dird/dird_conf.c:690
+#: src/dird/dird_conf.c:710
 #, c-format
 msgid "  --> WriteBootstrap=%s\n"
 msgstr "  --> WriteBootstrap=%s\n"
 
-#: src/dird/dird_conf.c:693
+#: src/dird/dird_conf.c:713
 #, fuzzy, c-format
 msgid "  --> PluginOptions=%s\n"
 msgstr "  --> Run=%s\n"
 
-#: src/dird/dird_conf.c:696
+#: src/dird/dird_conf.c:716
 #, fuzzy, c-format
 msgid "  --> MaxRunTime=%u\n"
 msgstr "  --> RunWhen=%u\n"
 
-#: src/dird/dird_conf.c:699
+#: src/dird/dird_conf.c:719
 #, fuzzy, c-format
 msgid "  --> MaxWaitTime=%u\n"
 msgstr "  --> RunWhen=%u\n"
 
-#: src/dird/dird_conf.c:702
+#: src/dird/dird_conf.c:722
 #, fuzzy, c-format
 msgid "  --> MaxStartDelay=%u\n"
 msgstr "  --> Target=%s\n"
 
-#: src/dird/dird_conf.c:705
+#: src/dird/dird_conf.c:725
 #, fuzzy, c-format
 msgid "  --> MaxRunSchedTime=%u\n"
 msgstr "  --> RunWhen=%u\n"
 
-#: src/dird/dird_conf.c:717
+#: src/dird/dird_conf.c:737
 #, fuzzy, c-format
 msgid "  --> Base %s\n"
 msgstr "  --> Target=%s\n"
 
-#: src/dird/dird_conf.c:723 src/lib/runscript.c:297
+#: src/dird/dird_conf.c:743 src/lib/runscript.c:297
 msgid " --> RunScript\n"
 msgstr " --> RunScript\n"
 
-#: src/dird/dird_conf.c:724 src/lib/runscript.c:298
+#: src/dird/dird_conf.c:744 src/lib/runscript.c:298
 #, c-format
 msgid "  --> Command=%s\n"
 msgstr "  --> Command=%s\n"
 
-#: src/dird/dird_conf.c:725 src/lib/runscript.c:299
+#: src/dird/dird_conf.c:745 src/lib/runscript.c:299
 #, c-format
 msgid "  --> Target=%s\n"
 msgstr "  --> Target=%s\n"
 
-#: src/dird/dird_conf.c:726 src/lib/runscript.c:300
+#: src/dird/dird_conf.c:746 src/lib/runscript.c:300
 #, c-format
 msgid "  --> RunOnSuccess=%u\n"
 msgstr "  --> RunOnSuccess=%u\n"
 
-#: src/dird/dird_conf.c:727 src/lib/runscript.c:301
+#: src/dird/dird_conf.c:747 src/lib/runscript.c:301
 #, c-format
 msgid "  --> RunOnFailure=%u\n"
 msgstr "  --> RunOnFailure=%u\n"
 
-#: src/dird/dird_conf.c:728 src/lib/runscript.c:302
+#: src/dird/dird_conf.c:748 src/lib/runscript.c:302
 #, fuzzy, c-format
 msgid "  --> FailJobOnError=%u\n"
 msgstr "  --> AbortJobOnError=%u\n"
 
-#: src/dird/dird_conf.c:729 src/lib/runscript.c:303
+#: src/dird/dird_conf.c:749 src/lib/runscript.c:303
 #, c-format
 msgid "  --> RunWhen=%u\n"
 msgstr "  --> RunWhen=%u\n"
 
-#: src/dird/dird_conf.c:755
+#: src/dird/dird_conf.c:775
 #, c-format
 msgid "  --> Run=%s\n"
 msgstr "  --> Run=%s\n"
 
-#: src/dird/dird_conf.c:759
+#: src/dird/dird_conf.c:779
 #, c-format
 msgid "  --> SelectionPattern=%s\n"
 msgstr "  --> SelectionPattern=%s\n"
 
-#: src/dird/dird_conf.c:770
+#: src/dird/dird_conf.c:793
 #, c-format
 msgid "FileSet: name=%s\n"
 msgstr "FileSet: name=%s\n"
 
-#: src/dird/dird_conf.c:861 src/dird/dird_conf.c:940
+#: src/dird/dird_conf.c:887 src/dird/dird_conf.c:966
 #, c-format
 msgid "Schedule: name=%s\n"
 msgstr "Schedule: name=%s\n"
 
-#: src/dird/dird_conf.c:866
+#: src/dird/dird_conf.c:892
 #, c-format
 msgid "  --> Run Level=%s\n"
 msgstr "  --> Run Level=%s\n"
 
-#: src/dird/dird_conf.c:867
+#: src/dird/dird_conf.c:893
 msgid "      hour="
 msgstr "      hour="
 
-#: src/dird/dird_conf.c:876
+#: src/dird/dird_conf.c:902
 msgid "      mday="
 msgstr "      mday="
 
-#: src/dird/dird_conf.c:885
+#: src/dird/dird_conf.c:911
 msgid "      month="
 msgstr "      month="
 
-#: src/dird/dird_conf.c:894
+#: src/dird/dird_conf.c:920
 msgid "      wday="
 msgstr "      wday="
 
-#: src/dird/dird_conf.c:903
+#: src/dird/dird_conf.c:929
 msgid "      wom="
 msgstr "      wom="
 
-#: src/dird/dird_conf.c:912
+#: src/dird/dird_conf.c:938
 msgid "      woy="
 msgstr "      woy="
 
-#: src/dird/dird_conf.c:921
+#: src/dird/dird_conf.c:947
 #, c-format
 msgid "      mins=%d\n"
 msgstr "      mins=%d\n"
 
-#: src/dird/dird_conf.c:923 src/dird/dird_conf.c:927 src/dird/dird_conf.c:931
+#: src/dird/dird_conf.c:949 src/dird/dird_conf.c:953 src/dird/dird_conf.c:957
 msgid "     --> "
 msgstr "     --> "
 
-#: src/dird/dird_conf.c:945
+#: src/dird/dird_conf.c:974
 #, c-format
 msgid "Pool: name=%s PoolType=%s\n"
 msgstr "Pool: name=%s PoolType=%s\n"
 
-#: src/dird/dird_conf.c:947
+#: src/dird/dird_conf.c:976
 #, c-format
 msgid "      use_cat=%d use_once=%d cat_files=%d\n"
 msgstr "      use_cat=%d use_once=%d cat_files=%d\n"
 
-#: src/dird/dird_conf.c:950
+#: src/dird/dird_conf.c:979
 #, c-format
 msgid "      max_vols=%d auto_prune=%d VolRetention=%s\n"
 msgstr "      max_vols=%d auto_prune=%d VolRetention=%s\n"
 
-#: src/dird/dird_conf.c:953
+#: src/dird/dird_conf.c:982
 #, c-format
 msgid "      VolUse=%s recycle=%d LabelFormat=%s\n"
 msgstr "      VolUse=%s recycle=%d LabelFormat=%s\n"
 
-#: src/dird/dird_conf.c:957
+#: src/dird/dird_conf.c:986
 #, c-format
 msgid "      CleaningPrefix=%s LabelType=%d\n"
 msgstr "      CleaningPrefix=%s LabelType=%d\n"
 
-#: src/dird/dird_conf.c:959
+#: src/dird/dird_conf.c:988
 #, fuzzy, c-format
 msgid "      RecyleOldest=%d PurgeOldest=%d ActionOnPurge=%d\n"
 msgstr "      RecyleOldest=%d PurgeOldest=%d MaxVolJobs=%d MaxVolFiles=%d\n"
 
-#: src/dird/dird_conf.c:963
+#: src/dird/dird_conf.c:992
 #, fuzzy, c-format
 msgid "      MaxVolJobs=%d MaxVolFiles=%d MaxVolBytes=%s\n"
 msgstr "      max_vols=%d auto_prune=%d VolRetention=%s\n"
 
-#: src/dird/dird_conf.c:967
+#: src/dird/dird_conf.c:996
 #, c-format
 msgid "      MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"
 msgstr "      MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"
 
-#: src/dird/dird_conf.c:971
+#: src/dird/dird_conf.c:1000
 #, fuzzy, c-format
 msgid "      JobRetention=%s FileRetention=%s\n"
 msgstr "      JobRetention=%s FileRetention=%s AutoPrune=%d\n"
 
-#: src/dird/dird_conf.c:975
+#: src/dird/dird_conf.c:1004
 #, fuzzy, c-format
 msgid "      NextPool=%s\n"
 msgstr "      opcmd=%s\n"
 
-#: src/dird/dird_conf.c:978
+#: src/dird/dird_conf.c:1007
 #, fuzzy, c-format
 msgid "      RecyclePool=%s\n"
 msgstr "      opcmd=%s\n"
 
-#: src/dird/dird_conf.c:981
+#: src/dird/dird_conf.c:1010
 #, fuzzy, c-format
 msgid "      ScratchPool=%s\n"
 msgstr "      opcmd=%s\n"
 
-#: src/dird/dird_conf.c:984
+#: src/dird/dird_conf.c:1013
 #, fuzzy, c-format
 msgid "      Catalog=%s\n"
 msgstr "      mailcmd=%s\n"
 
-#: src/dird/dird_conf.c:1004
+#: src/dird/dird_conf.c:1033
 #, c-format
 msgid "Messages: name=%s\n"
 msgstr "Messages: name=%s\n"
 
-#: src/dird/dird_conf.c:1006
+#: src/dird/dird_conf.c:1035
 #, c-format
 msgid "      mailcmd=%s\n"
 msgstr "      mailcmd=%s\n"
 
-#: src/dird/dird_conf.c:1008
+#: src/dird/dird_conf.c:1037
 #, c-format
 msgid "      opcmd=%s\n"
 msgstr "      opcmd=%s\n"
 
-#: src/dird/dird_conf.c:1012 src/tray-monitor/tray_conf.c:199
+#: src/dird/dird_conf.c:1041 src/tray-monitor/tray_conf.c:199
 #: src/qt-console/tray-monitor/tray_conf.cpp:199
 #, c-format
 msgid "Unknown resource type %d in dump_resource.\n"
 msgstr "Unbekannter resource type %d in dump_resource.\n"
 
-#: src/dird/dird_conf.c:1343 src/tray-monitor/tray_conf.c:257
+#: src/dird/dird_conf.c:1372 src/tray-monitor/tray_conf.c:257
 #: src/qt-console/tray-monitor/tray_conf.cpp:257
 #, c-format
 msgid "Unknown resource type %d in free_resource.\n"
 msgstr "Unbekannter resource type %d in free_resource.\n"
 
-#: src/dird/dird_conf.c:1375 src/dird/dird_conf.c:1390
+#: src/dird/dird_conf.c:1404 src/dird/dird_conf.c:1419
 #: src/tray-monitor/tray_conf.c:288 src/wx-console/console_conf.c:265
 #: src/console/console_conf.c:259 src/filed/filed_conf.c:361
 #: src/qt-console/tray-monitor/tray_conf.cpp:288
@@ -2755,54 +2793,54 @@ msgstr "Unbekannter resource type %d in free_resource.\n"
 msgid "%s item is required in %s resource, but not found.\n"
 msgstr "%s item wird in %s resource ben�tigt, wurde aber nicht gefunden.\n"
 
-#: src/dird/dird_conf.c:1381 src/tray-monitor/tray_conf.c:294
+#: src/dird/dird_conf.c:1410 src/tray-monitor/tray_conf.c:294
 #: src/lib/parse_conf.c:225 src/qt-console/tray-monitor/tray_conf.cpp:294
 #, c-format
 msgid "Too many items in %s resource\n"
 msgstr "zu viele items in %s resource\n"
 
-#: src/dird/dird_conf.c:1421
+#: src/dird/dird_conf.c:1450
 #, c-format
 msgid "Cannot find Pool resource %s\n"
 msgstr "Kann Pool resource %s nicht finden\n"
 
-#: src/dird/dird_conf.c:1432
+#: src/dird/dird_conf.c:1461
 #, c-format
 msgid "Cannot find Console resource %s\n"
 msgstr "Kann Console resource %s nicht finden\n"
 
-#: src/dird/dird_conf.c:1438 src/stored/stored_conf.c:611
+#: src/dird/dird_conf.c:1467 src/stored/stored_conf.c:611
 #: src/filed/filed_conf.c:381
 #, c-format
 msgid "Cannot find Director resource %s\n"
 msgstr "Kann Director resource %s nicht finden\n"
 
-#: src/dird/dird_conf.c:1445 src/stored/stored_conf.c:617
+#: src/dird/dird_conf.c:1474 src/stored/stored_conf.c:617
 #, c-format
 msgid "Cannot find Storage resource %s\n"
 msgstr "Kann Storage resource %s nicht finden\n"
 
-#: src/dird/dird_conf.c:1454
+#: src/dird/dird_conf.c:1483
 #, c-format
 msgid "Cannot find Job resource %s\n"
 msgstr "Kann Job resource %s nicht finden\n"
 
-#: src/dird/dird_conf.c:1504
+#: src/dird/dird_conf.c:1533
 #, c-format
 msgid "Cannot find Counter resource %s\n"
 msgstr "Kann Counter resource %s nicht finden\n"
 
-#: src/dird/dird_conf.c:1512 src/filed/filed_conf.c:387
+#: src/dird/dird_conf.c:1541 src/filed/filed_conf.c:387
 #, c-format
 msgid "Cannot find Client resource %s\n"
 msgstr "Kann Client resource %s nicht finden\n"
 
-#: src/dird/dird_conf.c:1525
+#: src/dird/dird_conf.c:1554
 #, c-format
 msgid "Cannot find Schedule resource %s\n"
 msgstr "Kann Schedule resource %s nicht finden\n"
 
-#: src/dird/dird_conf.c:1530 src/dird/dird_conf.c:1590
+#: src/dird/dird_conf.c:1559 src/dird/dird_conf.c:1619
 #: src/tray-monitor/tray_conf.c:314 src/tray-monitor/tray_conf.c:352
 #: src/qt-console/tray-monitor/tray_conf.cpp:314
 #: src/qt-console/tray-monitor/tray_conf.cpp:352
@@ -2810,12 +2848,12 @@ msgstr "Kann Schedule resource %s nicht finden\n"
 msgid "Unknown resource type %d in save_resource.\n"
 msgstr "Unbekannter resource type %d in save_resource.\n"
 
-#: src/dird/dird_conf.c:1605
+#: src/dird/dird_conf.c:1634
 #, c-format
 msgid "Name item is required in %s resource, but not found.\n"
 msgstr "Name item wird ben�tigt in %s resource, wurde aber nicht gefunden.\n"
 
-#: src/dird/dird_conf.c:1613 src/tray-monitor/tray_conf.c:372
+#: src/dird/dird_conf.c:1642 src/tray-monitor/tray_conf.c:372
 #: src/wx-console/console_conf.c:328 src/console/console_conf.c:322
 #: src/filed/filed_conf.c:446 src/qt-console/tray-monitor/tray_conf.cpp:372
 #: src/qt-console/bat_conf.cpp:334
@@ -2825,43 +2863,43 @@ msgstr ""
 "Der Versuch der Definition einer zweiten  %s resource mit dem Namen \"%s\" "
 "ist nicht erlaubt.\n"
 
-#: src/dird/dird_conf.c:1618
+#: src/dird/dird_conf.c:1647
 #, c-format
 msgid "Inserting %s res: %s index=%d pass=%d\n"
 msgstr "Inserting %s res: %s index=%d pass=%d\n"
 
-#: src/dird/dird_conf.c:1631
+#: src/dird/dird_conf.c:1660
 #, fuzzy, c-format
 msgid "Expected one of: %s, got: %s"
 msgstr "Erwartet: %s, erhalten: %s"
 
-#: src/dird/dird_conf.c:1703
+#: src/dird/dird_conf.c:1732
 #, c-format
 msgid "Expected a Migration Job Type keyword, got: %s"
 msgstr " Migration Job Type  Schl�sselwort erwartet, erhalten: %s"
 
-#: src/dird/dird_conf.c:1729
+#: src/dird/dird_conf.c:1758
 #, c-format
 msgid "Expected a Job Type keyword, got: %s"
 msgstr "Job Type Schl�sselwort erwartet, erhalten: %s"
 
-#: src/dird/dird_conf.c:1753
+#: src/dird/dird_conf.c:1782
 #, c-format
 msgid "Expected a Job Level keyword, got: %s"
 msgstr "Job Level Schl�sselwort erwartet, erhalten: %s"
 
-#: src/dird/dird_conf.c:1773
+#: src/dird/dird_conf.c:1802
 #, c-format
 msgid "Expected a Restore replacement option, got: %s"
 msgstr "Restore replacement Option erwartet, erhalten: %s"
 
-#: src/dird/dird_conf.c:1823 src/dird/dird_conf.c:1939
-#: src/lib/parse_conf.c:761 src/lib/parse_conf.c:777
+#: src/dird/dird_conf.c:1852 src/dird/dird_conf.c:1968
+#: src/lib/parse_conf.c:761 src/lib/parse_conf.c:777 src/lib/ini.c:593
 #, c-format
 msgid "Expect %s, got: %s"
 msgstr "Erwartet: %s, erhalten: %s"
 
-#: src/dird/dird_conf.c:1845 src/lib/parse_conf.c:478
+#: src/dird/dird_conf.c:1874 src/lib/parse_conf.c:478
 #, c-format
 msgid "Could not find config Resource %s referenced on line %d : %s\n"
 msgstr ""
@@ -2990,7 +3028,7 @@ msgstr ""
 msgid "Select full restore to a specified Job date"
 msgstr ""
 
-#: src/dird/ua_restore.c:446 src/dird/ua_status.c:863 src/stored/status.c:546
+#: src/dird/ua_restore.c:446 src/dird/ua_status.c:862 src/stored/status.c:611
 #: src/filed/status.c:373 src/wx-console/wxbconfigpanel.cpp:220
 msgid "Cancel"
 msgstr ""
@@ -3000,7 +3038,7 @@ msgstr ""
 msgid "Unknown keyword: %s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:520 src/dird/ua_update.c:955
+#: src/dird/ua_restore.c:520 src/dird/ua_update.c:957
 #, c-format
 msgid "Improper date format: %s\n"
 msgstr ""
@@ -3240,12 +3278,17 @@ msgstr ""
 msgid "Warning default storage overridden by \"%s\" on command line.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1533
+#: src/dird/ua_restore.c:1534
+#, c-format
+msgid "Using Storage \"%s\" from MediaType \"%s\".\n"
+msgstr ""
+
+#: src/dird/ua_restore.c:1537
 #, c-format
 msgid "Storage \"%s\" not found, using Storage \"%s\" from MediaType \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1541
+#: src/dird/ua_restore.c:1546
 #, c-format
 msgid ""
 "\n"
@@ -3313,7 +3356,7 @@ msgid ""
 "resource.\n"
 msgstr ""
 
-#: src/dird/fd_cmds.c:500 src/filed/job.c:858
+#: src/dird/fd_cmds.c:500 src/filed/job.c:854
 #, c-format
 msgid "Cannot run program: %s. ERR=%s\n"
 msgstr "Kann Programm: %s nicht starten. ERR=%s\n"
@@ -3358,9 +3401,9 @@ msgstr ""
 "<filed: fehlerhafte Attribute, 3 erwartet, erhalten: %d\n"
 "msglen=%d msg=%s\n"
 
-#: src/dird/fd_cmds.c:825 src/dird/fd_cmds.c:884 src/dird/catreq.c:443
-#: src/cats/sqlite.c:374 src/cats/ingres.c:451 src/cats/postgresql.c:441
-#: src/cats/dbi.c:552 src/cats/mysql.c:358
+#: src/dird/fd_cmds.c:825 src/dird/fd_cmds.c:884 src/cats/sqlite.c:387
+#: src/cats/ingres.c:464 src/cats/postgresql.c:454 src/cats/dbi.c:565
+#: src/cats/mysql.c:371
 #, c-format
 msgid "Attribute create error. %s"
 msgstr "Attribute create error. %s"
@@ -3379,19 +3422,19 @@ msgstr "<filed: Netzwerkfehler beim Holen der Attribute. ERR=%s\n"
 msgid "Negative numbers not permitted\n"
 msgstr ""
 
-#: src/dird/ua_label.c:110
+#: src/dird/ua_label.c:110 src/lib/sellist.c:76
 msgid "Range end is not integer.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:115
+#: src/dird/ua_label.c:115 src/lib/sellist.c:81
 msgid "Range start is not an integer.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:121
+#: src/dird/ua_label.c:121 src/lib/sellist.c:87
 msgid "Range end not bigger than start.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:127
+#: src/dird/ua_label.c:127 src/lib/sellist.c:94
 msgid "Input value is not an integer.\n"
 msgstr ""
 
@@ -3403,180 +3446,180 @@ msgstr ""
 msgid "Slot too large.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:187 src/dird/ua_label.c:352 src/dird/ua_label.c:1214
-#: src/dird/ua_run.c:1557
+#: src/dird/ua_label.c:189 src/dird/ua_label.c:366 src/dird/ua_label.c:1228
+#: src/dird/ua_run.c:1563
 msgid "command line"
 msgstr ""
 
-#: src/dird/ua_label.c:205 src/dird/ua_label.c:516 src/dird/ua_label.c:1221
+#: src/dird/ua_label.c:207 src/dird/ua_label.c:531 src/dird/ua_label.c:1235
 msgid "No slots in changer to scan.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:217 src/dird/ua_label.c:527
+#: src/dird/ua_label.c:219 src/dird/ua_label.c:542
 msgid "No Volumes found to label, or no barcodes.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:227 src/dird/ua_label.c:1242
+#: src/dird/ua_label.c:229 src/dird/ua_label.c:1256
 #, c-format
 msgid "Slot %d greater than max %d ignored.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:256
+#: src/dird/ua_label.c:267
 #, c-format
 msgid "No VolName for Slot=%d InChanger set to zero.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:274
+#: src/dird/ua_label.c:288
 #, c-format
 msgid "Catalog record for Volume \"%s\" updated to reference slot %d.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:278
+#: src/dird/ua_label.c:292
 #, c-format
 msgid "Catalog record for Volume \"%s\" is up to date.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:284
+#: src/dird/ua_label.c:298
 #, c-format
 msgid "Volume \"%s\" not found in catalog. Slot=%d InChanger set to zero.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:381
+#: src/dird/ua_label.c:394
 #, c-format
 msgid ""
 "Volume \"%s\" has VolStatus %s. It must be Purged or Recycled before "
 "relabeling.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:397
+#: src/dird/ua_label.c:410
 msgid "Enter new Volume name: "
 msgstr ""
 
-#: src/dird/ua_label.c:410
+#: src/dird/ua_label.c:425
 #, c-format
 msgid "Media record for new Volume \"%s\" already exists.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:428
+#: src/dird/ua_label.c:443
 msgid "Enter slot (0 or Enter for none): "
 msgstr ""
 
-#: src/dird/ua_label.c:456
+#: src/dird/ua_label.c:471
 #, c-format
 msgid "Delete of Volume \"%s\" failed. ERR=%s"
 msgstr ""
 
-#: src/dird/ua_label.c:459
+#: src/dird/ua_label.c:474
 #, c-format
 msgid "Old volume \"%s\" deleted from catalog.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:470
+#: src/dird/ua_label.c:485
 #, c-format
 msgid "Requesting to mount %s ...\n"
 msgstr ""
 
-#: src/dird/ua_label.c:492
+#: src/dird/ua_label.c:507
 msgid "Do not forget to mount the drive!!!\n"
 msgstr ""
 
-#: src/dird/ua_label.c:532
+#: src/dird/ua_label.c:547
 msgid ""
 "The following Volumes will be labeled:\n"
 "Slot  Volume\n"
 "==============\n"
 msgstr ""
 
-#: src/dird/ua_label.c:541
+#: src/dird/ua_label.c:556
 msgid "Do you want to label these Volumes? (yes|no): "
 msgstr ""
 
-#: src/dird/ua_label.c:562
+#: src/dird/ua_label.c:576
 #, c-format
 msgid "Media record for Slot %d Volume \"%s\" already exists.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:568
+#: src/dird/ua_label.c:582
 #, c-format
 msgid "Error setting InChanger: ERR=%s"
 msgstr ""
 
-#: src/dird/ua_label.c:591
+#: src/dird/ua_label.c:605
 #, c-format
 msgid "Maximum pool Volumes=%d reached.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:598
+#: src/dird/ua_label.c:613
 #, c-format
 msgid "Catalog record for cleaning tape \"%s\" successfully created.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:605
+#: src/dird/ua_label.c:620
 #, c-format
 msgid "Catalog error on cleaning tape: %s"
 msgstr ""
 
-#: src/dird/ua_label.c:641
+#: src/dird/ua_label.c:656
 #, c-format
 msgid "Illegal character \"%c\" in a volume name.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:688
+#: src/dird/ua_label.c:703
 #, c-format
 msgid "Sending relabel command from \"%s\" to \"%s\" ...\n"
 msgstr ""
 
-#: src/dird/ua_label.c:695
+#: src/dird/ua_label.c:710
 #, c-format
 msgid "Sending label command for Volume \"%s\" Slot %d ...\n"
 msgstr ""
 
-#: src/dird/ua_label.c:736
+#: src/dird/ua_label.c:751
 #, c-format
 msgid "Catalog record for Volume \"%s\", Slot %d  successfully created.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:749
+#: src/dird/ua_label.c:764
 #, c-format
 msgid "Label command failed for Volume %s.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:787
+#: src/dird/ua_label.c:802
 msgid "Could not open SD socket.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:859 src/dird/ua_label.c:869
+#: src/dird/ua_label.c:874 src/dird/ua_label.c:884
 #, c-format
 msgid "Invalid Slot number: %s\n"
 msgstr ""
 
-#: src/dird/ua_label.c:878
+#: src/dird/ua_label.c:893
 #, c-format
 msgid "Invalid Volume name: %s\n"
 msgstr ""
 
-#: src/dird/ua_label.c:972
+#: src/dird/ua_label.c:987
 #, c-format
 msgid "Device \"%s\" has %d slots.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:1018
+#: src/dird/ua_label.c:1033
 #, c-format
 msgid "Pool \"%s\" resource not found for volume \"%s\"!\n"
 msgstr ""
 
-#: src/dird/ua_label.c:1233
+#: src/dird/ua_label.c:1247
 #, fuzzy
 msgid "No Volumes found, or no barcodes.\n"
 msgstr "Keine Volumes zum Wiederherstellen gefunden.\n"
 
-#: src/dird/ua_label.c:1236
+#: src/dird/ua_label.c:1250
 msgid ""
 " Slot |   Volume Name    |   Status  |     Media Type       |      "
 "Pool          |\n"
 msgstr ""
 
-#: src/dird/ua_label.c:1237
+#: src/dird/ua_label.c:1251
 msgid ""
 "------+------------------+-----------+----------------------"
 "+--------------------|\n"
@@ -3796,16 +3839,16 @@ msgstr ""
 msgid "New Recycle flag is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:257 src/dird/ua_update.c:277 src/dird/ua_update.c:698
-#: src/dird/ua_run.c:180 src/dird/backup.c:778 src/dird/backup.c:779
-#: src/dird/backup.c:780 src/dird/ua_input.c:131 src/stored/parse_bsr.c:864
+#: src/dird/ua_update.c:257 src/dird/ua_update.c:277 src/dird/ua_update.c:699
+#: src/dird/ua_run.c:180 src/dird/backup.c:788 src/dird/backup.c:789
+#: src/dird/backup.c:790 src/dird/ua_input.c:131 src/stored/parse_bsr.c:863
 #: src/tools/dbcheck.c:1352
 msgid "yes"
 msgstr ""
 
-#: src/dird/ua_update.c:257 src/dird/ua_update.c:277 src/dird/ua_update.c:698
-#: src/dird/backup.c:778 src/dird/backup.c:779 src/dird/backup.c:780
-#: src/dird/ua_input.c:135 src/stored/parse_bsr.c:864
+#: src/dird/ua_update.c:257 src/dird/ua_update.c:277 src/dird/ua_update.c:699
+#: src/dird/ua_run.c:200 src/dird/backup.c:788 src/dird/backup.c:789
+#: src/dird/backup.c:790 src/dird/ua_input.c:135 src/stored/parse_bsr.c:863
 msgid "no"
 msgstr ""
 
@@ -3819,47 +3862,47 @@ msgstr ""
 msgid "Invalid slot, it must be between 0 and MaxVols=%d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:303 src/dird/ua_update.c:726
+#: src/dird/ua_update.c:304 src/dird/ua_update.c:728
 #, c-format
 msgid "Error updating media record Slot: ERR=%s"
 msgstr ""
 
-#: src/dird/ua_update.c:305
+#: src/dird/ua_update.c:306
 #, c-format
 msgid "New Slot is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:330
+#: src/dird/ua_update.c:331
 #, c-format
 msgid "New Pool is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:373
+#: src/dird/ua_update.c:374
 #, c-format
 msgid "New RecyclePool is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:393
+#: src/dird/ua_update.c:394
 #, c-format
 msgid "Error updating Volume record: ERR=%s"
 msgstr ""
 
-#: src/dird/ua_update.c:395
+#: src/dird/ua_update.c:396
 #, c-format
 msgid "Volume defaults updated from \"%s\" Pool record.\n"
 msgstr ""
 
-#: src/dird/ua_update.c:419 src/dird/ua_update.c:452
+#: src/dird/ua_update.c:419 src/dird/ua_update.c:451
 #, c-format
 msgid "Error updating Volume records: ERR=%s"
 msgstr ""
 
-#: src/dird/ua_update.c:421 src/dird/ua_update.c:454
+#: src/dird/ua_update.c:421 src/dird/ua_update.c:453
 #, c-format
 msgid "All Volume defaults updated from \"%s\" Pool record.\n"
 msgstr ""
 
-#: src/dird/ua_update.c:444
+#: src/dird/ua_update.c:443
 #, c-format
 msgid "Updating all pools, but skipped PoolId=%d. ERR=%s\n"
 msgstr ""
@@ -3874,277 +3917,277 @@ msgstr ""
 msgid "New Enabled is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:486
+#: src/dird/ua_update.c:487
 #, fuzzy, c-format
 msgid "Error updating media record ActionOnPurge: ERR=%s"
 msgstr "Fehler beim Aktualisieren des Client Eintrags. ERR=%s\n"
 
-#: src/dird/ua_update.c:489
+#: src/dird/ua_update.c:490
 #, c-format
 msgid "New ActionOnPurge is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:604 src/dird/ua_run.c:235
+#: src/dird/ua_update.c:605 src/dird/ua_run.c:222
 msgid "Parameters to modify:\n"
 msgstr ""
 
-#: src/dird/ua_update.c:605
+#: src/dird/ua_update.c:606
 msgid "Volume Status"
 msgstr ""
 
-#: src/dird/ua_update.c:606
+#: src/dird/ua_update.c:607
 msgid "Volume Retention Period"
 msgstr ""
 
-#: src/dird/ua_update.c:607
+#: src/dird/ua_update.c:608
 msgid "Volume Use Duration"
 msgstr ""
 
-#: src/dird/ua_update.c:608
+#: src/dird/ua_update.c:609
 msgid "Maximum Volume Jobs"
 msgstr ""
 
-#: src/dird/ua_update.c:609
+#: src/dird/ua_update.c:610
 msgid "Maximum Volume Files"
 msgstr ""
 
-#: src/dird/ua_update.c:610
+#: src/dird/ua_update.c:611
 msgid "Maximum Volume Bytes"
 msgstr ""
 
-#: src/dird/ua_update.c:611
+#: src/dird/ua_update.c:612
 msgid "Recycle Flag"
 msgstr ""
 
-#: src/dird/ua_update.c:612
+#: src/dird/ua_update.c:613
 msgid "Slot"
 msgstr ""
 
-#: src/dird/ua_update.c:613
+#: src/dird/ua_update.c:614
 msgid "InChanger Flag"
 msgstr ""
 
-#: src/dird/ua_update.c:614
+#: src/dird/ua_update.c:615
 msgid "Volume Files"
 msgstr ""
 
-#: src/dird/ua_update.c:616
+#: src/dird/ua_update.c:617
 msgid "Volume from Pool"
 msgstr ""
 
-#: src/dird/ua_update.c:617
+#: src/dird/ua_update.c:618
 msgid "All Volumes from Pool"
 msgstr ""
 
-#: src/dird/ua_update.c:618
+#: src/dird/ua_update.c:619
 msgid "All Volumes from all Pools"
 msgstr ""
 
-#: src/dird/ua_update.c:619
+#: src/dird/ua_update.c:620
 msgid "Enabled"
 msgstr ""
 
-#: src/dird/ua_update.c:620
+#: src/dird/ua_update.c:621
 msgid "RecyclePool"
 msgstr ""
 
-#: src/dird/ua_update.c:621
+#: src/dird/ua_update.c:622
 msgid "Action On Purge"
 msgstr ""
 
-#: src/dird/ua_update.c:622
+#: src/dird/ua_update.c:623
 msgid "Done"
 msgstr ""
 
-#: src/dird/ua_update.c:623 src/dird/ua_run.c:265 src/dird/ua_run.c:594
+#: src/dird/ua_update.c:624 src/dird/ua_run.c:252 src/dird/ua_run.c:600
 msgid "Select parameter to modify"
 msgstr ""
 
-#: src/dird/ua_update.c:631
+#: src/dird/ua_update.c:632
 #, c-format
 msgid "Updating Volume \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_update.c:636
+#: src/dird/ua_update.c:637
 #, c-format
 msgid "Current Volume status is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:637
+#: src/dird/ua_update.c:638
 msgid "Possible Values are:\n"
 msgstr ""
 
-#: src/dird/ua_update.c:648
+#: src/dird/ua_update.c:649
 msgid "Choose new Volume Status"
 msgstr ""
 
-#: src/dird/ua_update.c:654
+#: src/dird/ua_update.c:655
 #, c-format
 msgid "Current retention period is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:656
+#: src/dird/ua_update.c:657
 msgid "Enter Volume Retention period: "
 msgstr ""
 
-#: src/dird/ua_update.c:663
+#: src/dird/ua_update.c:664
 #, c-format
 msgid "Current use duration is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:665
+#: src/dird/ua_update.c:666
 msgid "Enter Volume Use Duration: "
 msgstr ""
 
-#: src/dird/ua_update.c:672
+#: src/dird/ua_update.c:673
 #, c-format
 msgid "Current max jobs is: %u\n"
 msgstr ""
 
-#: src/dird/ua_update.c:673
+#: src/dird/ua_update.c:674
 msgid "Enter new Maximum Jobs: "
 msgstr ""
 
-#: src/dird/ua_update.c:680
+#: src/dird/ua_update.c:681
 #, c-format
 msgid "Current max files is: %u\n"
 msgstr ""
 
-#: src/dird/ua_update.c:681
+#: src/dird/ua_update.c:682
 msgid "Enter new Maximum Files: "
 msgstr ""
 
-#: src/dird/ua_update.c:688
+#: src/dird/ua_update.c:689
 #, c-format
 msgid "Current value is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:689
+#: src/dird/ua_update.c:690
 msgid "Enter new Maximum Bytes: "
 msgstr ""
 
-#: src/dird/ua_update.c:697
+#: src/dird/ua_update.c:698
 #, c-format
 msgid "Current recycle flag is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:699
+#: src/dird/ua_update.c:700
 msgid "Enter new Recycle status: "
 msgstr ""
 
-#: src/dird/ua_update.c:706
+#: src/dird/ua_update.c:707
 #, c-format
 msgid "Current Slot is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:707
+#: src/dird/ua_update.c:708
 msgid "Enter new Slot: "
 msgstr ""
 
-#: src/dird/ua_update.c:714
+#: src/dird/ua_update.c:715
 #, c-format
 msgid "Current InChanger flag is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:715
+#: src/dird/ua_update.c:716
 #, c-format
 msgid "Set InChanger flag for Volume \"%s\": yes/no: "
 msgstr ""
 
-#: src/dird/ua_update.c:728
+#: src/dird/ua_update.c:730
 #, c-format
 msgid "New InChanger flag is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:735
+#: src/dird/ua_update.c:737
 msgid ""
 "Warning changing Volume Files can result\n"
 "in loss of data on your Volume\n"
 "\n"
 msgstr ""
 
-#: src/dird/ua_update.c:737
+#: src/dird/ua_update.c:739
 #, c-format
 msgid "Current Volume Files is: %u\n"
 msgstr ""
 
-#: src/dird/ua_update.c:738
+#: src/dird/ua_update.c:740
 msgid "Enter new number of Files for Volume: "
 msgstr ""
 
-#: src/dird/ua_update.c:743
+#: src/dird/ua_update.c:745
 msgid "Normally, you should only increase Volume Files by one!\n"
 msgstr ""
 
-#: src/dird/ua_update.c:744
+#: src/dird/ua_update.c:746
 msgid "Increase Volume Files? (yes/no): "
 msgstr ""
 
-#: src/dird/ua_update.c:754
+#: src/dird/ua_update.c:756
 #, c-format
 msgid "New Volume Files is: %u\n"
 msgstr ""
 
-#: src/dird/ua_update.c:766
+#: src/dird/ua_update.c:768
 #, c-format
 msgid "Current Pool is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:767
+#: src/dird/ua_update.c:769
 msgid "Enter new Pool name: "
 msgstr ""
 
-#: src/dird/ua_update.c:788
+#: src/dird/ua_update.c:790
 #, c-format
 msgid "Current Enabled is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:789
+#: src/dird/ua_update.c:791
 msgid "Enter new Enabled: "
 msgstr ""
 
-#: src/dird/ua_update.c:808
+#: src/dird/ua_update.c:810
 #, c-format
 msgid "Current RecyclePool is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:810
+#: src/dird/ua_update.c:812
 msgid "No current RecyclePool\n"
 msgstr ""
 
-#: src/dird/ua_update.c:820
+#: src/dird/ua_update.c:822
 #, c-format
 msgid "Current ActionOnPurge is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:822
+#: src/dird/ua_update.c:824
 msgid "Enter new ActionOnPurge (one of: Truncate, None): "
 msgstr ""
 
-#: src/dird/ua_update.c:830
+#: src/dird/ua_update.c:832
 msgid "Selection terminated.\n"
 msgstr ""
 
-#: src/dird/ua_update.c:850
+#: src/dird/ua_update.c:852
 #, c-format
 msgid "Updating %i job(s).\n"
 msgstr ""
 
-#: src/dird/ua_update.c:882
+#: src/dird/ua_update.c:884
 #, c-format
 msgid "db_update_pool_record returned %d. ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:889
+#: src/dird/ua_update.c:891
 msgid "Pool DB record updated from resource.\n"
 msgstr ""
 
-#: src/dird/ua_update.c:916
+#: src/dird/ua_update.c:918
 #, fuzzy
 msgid "Expect JobId keyword, not found.\n"
 msgstr "Job Type Schl�sselwort erwartet, erhalten: %s"
 
-#: src/dird/ua_update.c:941
+#: src/dird/ua_update.c:943
 #, fuzzy
 msgid "Neither Client nor StartTime specified.\n"
 msgstr "Kein storage angegeben.\n"
@@ -4188,7 +4231,7 @@ msgstr "Pool f
 msgid "Pool resource \"%s\" not found.\n"
 msgstr "Pool Ressource \"%s\" nicht gefunden.\n"
 
-#: src/dird/migrate.c:316 src/dird/migrate.c:896
+#: src/dird/migrate.c:316 src/dird/migrate.c:898
 #, fuzzy, c-format
 msgid "Could not get job record for JobId %s to %s. ERR=%s"
 msgstr "Konnte job record f�r JobId %s zum migrieren nicht holen. ERR=%s"
@@ -4203,145 +4246,140 @@ msgstr ""
 msgid "Start %s JobId %s, Job=%s\n"
 msgstr "Start Sicherung JobId %s, Job=%s\n"
 
-#: src/dird/migrate.c:710
+#: src/dird/migrate.c:712
 #, fuzzy, c-format
 msgid "No %s SQL selection pattern specified.\n"
 msgstr "Kein \"Migration SQL selection pattern\" spezifiziert.\n"
 
-#: src/dird/migrate.c:717 src/dird/migrate.c:736 src/dird/migrate.c:757
-#: src/dird/migrate.c:793 src/dird/migrate.c:820 src/dird/migrate.c:954
-#: src/dird/migrate.c:987 src/dird/migrate.c:1116
+#: src/dird/migrate.c:719 src/dird/migrate.c:738 src/dird/migrate.c:759
+#: src/dird/migrate.c:795 src/dird/migrate.c:822 src/dird/migrate.c:956
+#: src/dird/migrate.c:989 src/dird/migrate.c:1118
 #, c-format
 msgid "SQL failed. ERR=%s\n"
 msgstr "SQL fehlgeschlagen ERR=%s\n"
 
-#: src/dird/migrate.c:740 src/dird/migrate.c:747 src/dird/migrate.c:761
-#: src/dird/migrate.c:824
+#: src/dird/migrate.c:742 src/dird/migrate.c:749 src/dird/migrate.c:763
+#: src/dird/migrate.c:826
 #, fuzzy, c-format
 msgid "No Volumes found to %s.\n"
 msgstr "Keine Volumes zum Wiederherstellen gefunden.\n"
 
-#: src/dird/migrate.c:775 src/dird/migrate.c:864 src/dird/migrate.c:884
+#: src/dird/migrate.c:777 src/dird/migrate.c:866 src/dird/migrate.c:886
 msgid "Invalid JobId found.\n"
 msgstr "Ung�ltige JobId gefunden.\n"
 
-#: src/dird/migrate.c:835
+#: src/dird/migrate.c:837
 #, fuzzy, c-format
 msgid "Unknown %s Selection Type.\n"
 msgstr "Unbekannter \"Migration Selection Type\".\n"
 
-#: src/dird/migrate.c:846 src/dird/migrate.c:867 src/dird/migrate.c:887
+#: src/dird/migrate.c:848 src/dird/migrate.c:869 src/dird/migrate.c:889
 #, fuzzy, c-format
 msgid "No JobIds found to %s.\n"
 msgstr "Kein Job gefunden f�r: %s.\n"
 
-#: src/dird/migrate.c:850
+#: src/dird/migrate.c:852
 #, fuzzy, c-format
 msgid "The following %u JobId%s chosen to be %s: %s\n"
 msgstr "Die folgende %u JobId%s wird migriert werden: %s\n"
 
-#: src/dird/migrate.c:851
+#: src/dird/migrate.c:853
 msgid " was"
 msgstr ""
 
-#: src/dird/migrate.c:851
+#: src/dird/migrate.c:853
 msgid "s were"
 msgstr ""
 
-#: src/dird/migrate.c:903
+#: src/dird/migrate.c:905
 #, fuzzy, c-format
 msgid "%s using JobId=%s Job=%s\n"
 msgstr "Migration benutzt JobId=%s Job=%s\n"
 
-#: src/dird/migrate.c:937
+#: src/dird/migrate.c:939
 msgid "Could not start migration job.\n"
 msgstr "Konnte Migrationsjob nicht starten.\n"
 
-#: src/dird/migrate.c:939
+#: src/dird/migrate.c:941
 #, fuzzy, c-format
 msgid "%s JobId %d started.\n"
 msgstr "Clone JobId %d gestartet.\n"
 
-#: src/dird/migrate.c:958
+#: src/dird/migrate.c:960
 #, fuzzy, c-format
 msgid "No %s found to %s.\n"
 msgstr "Keine %ss zum Migrieren gefunden.\n"
 
-#: src/dird/migrate.c:962
+#: src/dird/migrate.c:964
 #, c-format
 msgid "SQL error. Expected 1 MediaId got %d\n"
 msgstr "SQL Fehler. Erwartet 1 MediaId erhalten: %d\n"
 
-#: src/dird/migrate.c:991 src/dird/migrate.c:1121
+#: src/dird/migrate.c:993 src/dird/migrate.c:1123
 #, fuzzy, c-format
 msgid "No %ss found to %s.\n"
 msgstr "Keine %ss zum Migrieren gefunden.\n"
 
-#: src/dird/migrate.c:1013
+#: src/dird/migrate.c:1015
 msgid "Selection Type 'pooluncopiedjobs' only applies to Copy Jobs"
 msgstr ""
 
-#: src/dird/migrate.c:1022
+#: src/dird/migrate.c:1024
 #, fuzzy, c-format
 msgid "SQL to get uncopied jobs failed. ERR=%s\n"
 msgstr "SQL um %s zu holen fehlgeschlagen. ERR=%s\n"
 
-#: src/dird/migrate.c:1045
+#: src/dird/migrate.c:1047
 #, fuzzy, c-format
 msgid "No %s %s selection pattern specified.\n"
 msgstr "Kein Migration %s selection pattern spezifiziert.\n"
 
-#: src/dird/migrate.c:1056
+#: src/dird/migrate.c:1058
 #, c-format
 msgid "SQL to get %s failed. ERR=%s\n"
 msgstr "SQL um %s zu holen fehlgeschlagen. ERR=%s\n"
 
-#: src/dird/migrate.c:1061
+#: src/dird/migrate.c:1063
 #, fuzzy, c-format
 msgid "Query of Pool \"%s\" returned no Jobs to %s.\n"
 msgstr "Abfrage nach Pool \"%s\" ergab keine Jobs f�r die Migration.\n"
 
-#: src/dird/migrate.c:1070
-#, c-format
-msgid "Could not compile regex pattern \"%s\" ERR=%s\n"
-msgstr "Konnte regex pattern \"%s\" nicht kompilieren ERR=%s\n"
-
-#: src/dird/migrate.c:1099
+#: src/dird/migrate.c:1101
 #, fuzzy, c-format
 msgid "Regex pattern matched no Jobs to %s.\n"
 msgstr "Regex pattern hat auf keine Jobs f�r die Migration zugetroffen.\n"
 
-#: src/dird/migrate.c:1264
+#: src/dird/migrate.c:1265
 #, c-format
 msgid "%s OK -- with warnings"
 msgstr "%s OK -- mit Warnungen"
 
-#: src/dird/migrate.c:1266
+#: src/dird/migrate.c:1267
 #, c-format
 msgid "%s OK"
 msgstr "%s OK"
 
-#: src/dird/migrate.c:1271
+#: src/dird/migrate.c:1272
 #, c-format
 msgid "*** %s Error ***"
 msgstr "*** %s Fehler ***"
 
-#: src/dird/migrate.c:1281
+#: src/dird/migrate.c:1282
 #, c-format
 msgid "%s Canceled"
 msgstr "%s Abgebrochen"
 
-#: src/dird/migrate.c:1290
+#: src/dird/migrate.c:1291
 #, c-format
 msgid "Inappropriate %s term code"
 msgstr "Unzutreffender %s Beendigungskode"
 
-#: src/dird/migrate.c:1300
+#: src/dird/migrate.c:1301
 #, fuzzy, c-format
 msgid "%s -- no files to %s"
 msgstr "%s -- keine Dateien zur Migration."
 
-#: src/dird/migrate.c:1315
+#: src/dird/migrate.c:1316
 #, fuzzy, c-format
 msgid ""
 "%s %s %s (%s):\n"
@@ -4403,17 +4441,17 @@ msgstr ""
 "  Beendigungsstatus:      %s\n"
 "\n"
 
-#: src/dird/migrate.c:1426
+#: src/dird/migrate.c:1427
 #, c-format
 msgid "No Next Pool specification found in Pool \"%s\".\n"
 msgstr "Keine \"Next Pool\" Spezifikation in Pool \"%s\" gefunden.\n"
 
-#: src/dird/migrate.c:1432
+#: src/dird/migrate.c:1433
 #, c-format
 msgid "No Storage specification found in Next Pool \"%s\".\n"
 msgstr "Keine \"Storage\" Spezifikation in \"Next Pool\" \"%s\" gefunden.\n"
 
-#: src/dird/migrate.c:1438
+#: src/dird/migrate.c:1439
 msgid "Storage from Pool's NextPool resource"
 msgstr "Storage aus der \"NextPool\" Ressource des Pools."
 
@@ -4421,48 +4459,48 @@ msgstr "Storage aus der \"NextPool\" Ressource des Pools."
 msgid "Choose item to prune"
 msgstr ""
 
-#: src/dird/ua_prune.c:171
+#: src/dird/ua_prune.c:175
 #, c-format
 msgid "Cannot prune Volume \"%s\" because it is archived.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:213
+#: src/dird/ua_prune.c:217
 msgid "Pruned Jobs from JobHisto catalog.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:301
+#: src/dird/ua_prune.c:305
 #, fuzzy
 msgid "Begin pruning Files.\n"
 msgstr "Beginn automatische S�uberung von Dateien.\n"
 
-#: src/dird/ua_prune.c:316
+#: src/dird/ua_prune.c:320
 msgid "No Files found to prune.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:339
+#: src/dird/ua_prune.c:343
 #, c-format
 msgid "Pruned Files from %s Jobs for client %s from catalog.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:481
+#: src/dird/ua_prune.c:489
 #, fuzzy, c-format
 msgid "Begin pruning Jobs older than %s.\n"
 msgstr "Beginn automatische S�uberung von Auftr�gen.\n"
 
-#: src/dird/ua_prune.c:592
+#: src/dird/ua_prune.c:600
 #, c-format
 msgid "Pruned %d %s for client %s from catalog.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:593
+#: src/dird/ua_prune.c:601
 msgid "Jobs"
 msgstr ""
 
-#: src/dird/ua_prune.c:595
+#: src/dird/ua_prune.c:603
 msgid "No Jobs found to prune.\n"
 msgstr ""
 
-#: src/dird/autoprune.c:76
+#: src/dird/autoprune.c:75
 msgid ""
 "End auto prune.\n"
 "\n"
@@ -4483,52 +4521,60 @@ msgstr ""
 msgid "Job queued. JobId=%s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:202
+#: src/dird/ua_run.c:203
+#, c-format
+msgid ""
+"\n"
+"Bad response: %s. You must answer yes, mod, or no.\n"
+"\n"
+msgstr ""
+
+#: src/dird/ua_run.c:207
 msgid "Job not run.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:236
+#: src/dird/ua_run.c:223
 msgid "Level"
 msgstr ""
 
-#: src/dird/ua_run.c:241
+#: src/dird/ua_run.c:228
 #, fuzzy
 msgid "Restore Client"
 msgstr "Wiederherstellung l�uft..."
 
-#: src/dird/ua_run.c:245 src/wx-console/wxbrestorepanel.cpp:356
+#: src/dird/ua_run.c:232 src/wx-console/wxbrestorepanel.cpp:356
 #: src/wx-console/wxbrestorepanel.cpp:854
 #: src/wx-console/wxbrestorepanel.cpp:1918
 msgid "When"
 msgstr ""
 
-#: src/dird/ua_run.c:246 src/wx-console/wxbrestorepanel.cpp:357
+#: src/dird/ua_run.c:233 src/wx-console/wxbrestorepanel.cpp:357
 #: src/wx-console/wxbrestorepanel.cpp:1128
 #: src/wx-console/wxbrestorepanel.cpp:1921
 msgid "Priority"
 msgstr ""
 
-#: src/dird/ua_run.c:253
+#: src/dird/ua_run.c:240
 msgid "Verify Job"
 msgstr ""
 
-#: src/dird/ua_run.c:256 src/wx-console/wxbrestorepanel.cpp:349
+#: src/dird/ua_run.c:243 src/wx-console/wxbrestorepanel.cpp:349
 #: src/wx-console/wxbrestorepanel.cpp:1899
 msgid "Bootstrap"
 msgstr ""
 
-#: src/dird/ua_run.c:257 src/wx-console/wxbrestorepanel.cpp:350
+#: src/dird/ua_run.c:244 src/wx-console/wxbrestorepanel.cpp:350
 #: src/wx-console/wxbrestorepanel.cpp:1104
 #: src/wx-console/wxbrestorepanel.cpp:1901
 msgid "Where"
 msgstr ""
 
-#: src/dird/ua_run.c:258
+#: src/dird/ua_run.c:245
 #, fuzzy
 msgid "File Relocation"
 msgstr "File daemon"
 
-#: src/dird/ua_run.c:259 src/wx-console/wxbrestorepanel.cpp:352
+#: src/dird/ua_run.c:246 src/wx-console/wxbrestorepanel.cpp:352
 #: src/wx-console/wxbrestorepanel.cpp:1112
 #: src/wx-console/wxbrestorepanel.cpp:1905
 #: src/wx-console/wxbrestorepanel.cpp:1906
@@ -4538,212 +4584,212 @@ msgstr "File daemon"
 msgid "Replace"
 msgstr ""
 
-#: src/dird/ua_run.c:260
+#: src/dird/ua_run.c:247
 msgid "JobId"
 msgstr ""
 
-#: src/dird/ua_run.c:263
+#: src/dird/ua_run.c:250
 msgid "Plugin Options"
 msgstr ""
 
-#: src/dird/ua_run.c:274 src/dird/ua_run.c:1563
+#: src/dird/ua_run.c:261 src/dird/ua_run.c:1569
 msgid "user selection"
 msgstr ""
 
-#: src/dird/ua_run.c:306
+#: src/dird/ua_run.c:293
 msgid ""
 "Please enter desired start time as YYYY-MM-DD HH:MM:SS (return for now): "
 msgstr ""
 
-#: src/dird/ua_run.c:314 src/dird/ua_run.c:490
+#: src/dird/ua_run.c:301 src/dird/ua_run.c:477
 msgid "Invalid time, using current time.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:321
+#: src/dird/ua_run.c:308
 msgid "Enter new Priority: "
 msgstr ""
 
-#: src/dird/ua_run.c:325
+#: src/dird/ua_run.c:312
 msgid "Priority must be a positive integer.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:346
+#: src/dird/ua_run.c:333
 msgid "Please enter the Bootstrap file name: "
 msgstr ""
 
-#: src/dird/ua_run.c:358
+#: src/dird/ua_run.c:345
 #, c-format
 msgid "Warning cannot open %s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:377
-msgid "Please enter path prefix for restore (/ for none): "
+#: src/dird/ua_run.c:364
+msgid "Please enter the full path prefix for restore (/ for none): "
 msgstr ""
 
-#: src/dird/ua_run.c:399
+#: src/dird/ua_run.c:386
 msgid "Replace:\n"
 msgstr ""
 
-#: src/dird/ua_run.c:403
+#: src/dird/ua_run.c:390
 msgid "Select replace option"
 msgstr ""
 
-#: src/dird/ua_run.c:414
+#: src/dird/ua_run.c:401
 msgid ""
 "You must set the bootstrap file to NULL to be able to specify a JobId.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:419
+#: src/dird/ua_run.c:406
 msgid "Please Plugin Options string: "
 msgstr ""
 
-#: src/dird/ua_run.c:457 src/dird/ua_run.c:466
+#: src/dird/ua_run.c:444 src/dird/ua_run.c:453
 msgid "User input"
 msgstr ""
 
-#: src/dird/ua_run.c:520
+#: src/dird/ua_run.c:507
 #, c-format
 msgid "Invalid replace option: %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:583
+#: src/dird/ua_run.c:589
 #, c-format
 msgid "strip_prefix=%s add_prefix=%s add_suffix=%s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:586
+#: src/dird/ua_run.c:592
 msgid "This will replace your current Where value\n"
 msgstr ""
 
-#: src/dird/ua_run.c:587
+#: src/dird/ua_run.c:593
 msgid "Strip prefix"
 msgstr ""
 
-#: src/dird/ua_run.c:588
+#: src/dird/ua_run.c:594
 msgid "Add prefix"
 msgstr ""
 
-#: src/dird/ua_run.c:589
+#: src/dird/ua_run.c:595
 msgid "Add file suffix"
 msgstr ""
 
-#: src/dird/ua_run.c:590
+#: src/dird/ua_run.c:596
 msgid "Enter a regexp"
 msgstr ""
 
-#: src/dird/ua_run.c:591
+#: src/dird/ua_run.c:597
 msgid "Test filename manipulation"
 msgstr ""
 
-#: src/dird/ua_run.c:592
+#: src/dird/ua_run.c:598
 msgid "Use this ?"
 msgstr ""
 
-#: src/dird/ua_run.c:597
-msgid "Please enter path prefix to strip: "
+#: src/dird/ua_run.c:603
+msgid "Please enter the path prefix to strip: "
 msgstr ""
 
-#: src/dird/ua_run.c:605
-msgid "Please enter path prefix to add (/ for none): "
+#: src/dird/ua_run.c:611
+msgid "Please enter the path prefix to add (/ for none): "
 msgstr ""
 
-#: src/dird/ua_run.c:616
-msgid "Please enter file suffix to add: "
+#: src/dird/ua_run.c:622
+msgid "Please enter the file suffix to add: "
 msgstr ""
 
-#: src/dird/ua_run.c:623
+#: src/dird/ua_run.c:629
 msgid "Please enter a valid regexp (!from!to!): "
 msgstr ""
 
-#: src/dird/ua_run.c:636
+#: src/dird/ua_run.c:642
 #, c-format
 msgid "regexwhere=%s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:642
+#: src/dird/ua_run.c:648
 #, c-format
 msgid "strip_prefix=%s add_prefix=%s add_suffix=%s result=%s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:649
+#: src/dird/ua_run.c:655
 msgid "Cannot use your regexp\n"
 msgstr ""
 
-#: src/dird/ua_run.c:652
+#: src/dird/ua_run.c:658
 msgid "Enter a period (.) to stop this test\n"
 msgstr ""
 
-#: src/dird/ua_run.c:653
+#: src/dird/ua_run.c:659
 msgid "Please enter filename to test: "
 msgstr ""
 
-#: src/dird/ua_run.c:655
+#: src/dird/ua_run.c:661
 #, fuzzy, c-format
 msgid "%s -> %s\n"
 msgstr "  --> Run=%s\n"
 
-#: src/dird/ua_run.c:699
+#: src/dird/ua_run.c:705
 msgid "Cannot use your regexp.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:712 src/dird/ua_run.c:742
+#: src/dird/ua_run.c:718 src/dird/ua_run.c:748
 msgid "Levels:\n"
 msgstr ""
 
-#: src/dird/ua_run.c:714 src/stored/status.c:600 src/lib/util.c:426
+#: src/dird/ua_run.c:720 src/stored/status.c:665 src/lib/util.c:426
 #: src/lib/util.c:472 src/filed/status.c:519
 msgid "Full"
 msgstr ""
 
-#: src/dird/ua_run.c:715 src/stored/status.c:603 src/lib/util.c:429
+#: src/dird/ua_run.c:721 src/stored/status.c:668 src/lib/util.c:429
 #: src/filed/status.c:522
 msgid "Incremental"
 msgstr ""
 
-#: src/dird/ua_run.c:716 src/stored/status.c:606 src/lib/util.c:432
+#: src/dird/ua_run.c:722 src/stored/status.c:671 src/lib/util.c:432
 #: src/filed/status.c:525
 msgid "Differential"
 msgstr ""
 
-#: src/dird/ua_run.c:717 src/stored/status.c:609 src/lib/util.c:435
+#: src/dird/ua_run.c:723 src/stored/status.c:674 src/lib/util.c:435
 #: src/filed/status.c:528
 msgid "Since"
 msgstr ""
 
-#: src/dird/ua_run.c:718
+#: src/dird/ua_run.c:724
 msgid "VirtualFull"
 msgstr ""
 
-#: src/dird/ua_run.c:719 src/dird/ua_run.c:748
+#: src/dird/ua_run.c:725 src/dird/ua_run.c:754
 msgid "Select level"
 msgstr ""
 
-#: src/dird/ua_run.c:743
+#: src/dird/ua_run.c:749
 msgid "Initialize Catalog"
 msgstr ""
 
-#: src/dird/ua_run.c:744 src/stored/status.c:612 src/lib/util.c:438
+#: src/dird/ua_run.c:750 src/stored/status.c:677 src/lib/util.c:438
 #: src/filed/status.c:531
 msgid "Verify Catalog"
 msgstr ""
 
-#: src/dird/ua_run.c:745 src/lib/util.c:444
+#: src/dird/ua_run.c:751 src/lib/util.c:444
 msgid "Verify Volume to Catalog"
 msgstr ""
 
-#: src/dird/ua_run.c:746 src/lib/util.c:447
+#: src/dird/ua_run.c:752 src/lib/util.c:447
 msgid "Verify Disk to Catalog"
 msgstr ""
 
-#: src/dird/ua_run.c:747
+#: src/dird/ua_run.c:753
 msgid "Verify Volume Data (not yet implemented)"
 msgstr ""
 
-#: src/dird/ua_run.c:768
+#: src/dird/ua_run.c:774
 msgid "Level not appropriate for this Job. Cannot be changed.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:799
+#: src/dird/ua_run.c:805
 #, c-format
 msgid ""
 "Run Admin Job\n"
@@ -4755,7 +4801,7 @@ msgid ""
 "Priority: %d\n"
 msgstr ""
 
-#: src/dird/ua_run.c:843
+#: src/dird/ua_run.c:849
 #, c-format
 msgid ""
 "Run Backup job\n"
@@ -4770,12 +4816,12 @@ msgid ""
 "%s%s%s"
 msgstr ""
 
-#: src/dird/ua_run.c:874
+#: src/dird/ua_run.c:880
 #, fuzzy, c-format
 msgid "Could not get job record for selected JobId. ERR=%s"
 msgstr "Konnte job record f�r JobId %s zum migrieren nicht holen. ERR=%s"
 
-#: src/dird/ua_run.c:913
+#: src/dird/ua_run.c:919
 #, c-format
 msgid ""
 "Run Verify Job\n"
@@ -4791,11 +4837,11 @@ msgid ""
 "Priority:    %d\n"
 msgstr ""
 
-#: src/dird/ua_run.c:942
+#: src/dird/ua_run.c:948
 msgid "Please enter a JobId for restore: "
 msgstr ""
 
-#: src/dird/ua_run.c:982
+#: src/dird/ua_run.c:988
 #, c-format
 msgid ""
 "Run Restore job\n"
@@ -4813,7 +4859,7 @@ msgid ""
 "Plugin Options:  %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1038
+#: src/dird/ua_run.c:1044
 #, c-format
 msgid ""
 "Run Restore job\n"
@@ -4831,7 +4877,7 @@ msgid ""
 "Plugin Options:  %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1069
+#: src/dird/ua_run.c:1075
 #, c-format
 msgid ""
 "Run Restore job\n"
@@ -4839,17 +4885,17 @@ msgid ""
 "Bootstrap:  %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1077
+#: src/dird/ua_run.c:1083
 #, c-format
 msgid "RegexWhere: %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1080
+#: src/dird/ua_run.c:1086
 #, fuzzy, c-format
 msgid "Where:      %s\n"
 msgstr "      opcmd=%s\n"
 
-#: src/dird/ua_run.c:1084
+#: src/dird/ua_run.c:1090
 #, c-format
 msgid ""
 "Replace:         %s\n"
@@ -4862,255 +4908,255 @@ msgid ""
 "Plugin Options:  %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1139
+#: src/dird/ua_run.c:1145
 msgid "Run Copy job\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1141
+#: src/dird/ua_run.c:1147
 #, fuzzy
 msgid "Run Migration job\n"
 msgstr "Konnte Migrationsjob nicht starten.\n"
 
-#: src/dird/ua_run.c:1170
+#: src/dird/ua_run.c:1176
 #, c-format
 msgid "Unknown Job Type=%d\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1239
+#: src/dird/ua_run.c:1245
 #, c-format
 msgid "Value missing for keyword %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1246
+#: src/dird/ua_run.c:1252
 msgid "Job name specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1254
+#: src/dird/ua_run.c:1260
 msgid "JobId specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1263 src/dird/ua_run.c:1403
+#: src/dird/ua_run.c:1269 src/dird/ua_run.c:1409
 msgid "Client specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1271
+#: src/dird/ua_run.c:1277
 msgid "FileSet specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1279
+#: src/dird/ua_run.c:1285
 msgid "Level specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1288
+#: src/dird/ua_run.c:1294
 msgid "Storage specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1296
+#: src/dird/ua_run.c:1302
 msgid "RegexWhere or Where specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1301
+#: src/dird/ua_run.c:1307
 msgid "No authorization for \"regexwhere\" specification.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1308
+#: src/dird/ua_run.c:1314
 msgid "Where or RegexWhere specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1313
+#: src/dird/ua_run.c:1319
 msgid "No authoriztion for \"where\" specification.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1320
+#: src/dird/ua_run.c:1326
 msgid "Bootstrap specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1328
+#: src/dird/ua_run.c:1334
 msgid "Replace specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1336
+#: src/dird/ua_run.c:1342
 msgid "When specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1344
+#: src/dird/ua_run.c:1350
 msgid "Priority specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1349
+#: src/dird/ua_run.c:1355
 msgid "Priority must be positive nonzero setting it to 10.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1359
+#: src/dird/ua_run.c:1365
 msgid "Verify Job specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1387
+#: src/dird/ua_run.c:1393
 msgid "Migration Job specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1395
+#: src/dird/ua_run.c:1401
 msgid "Pool specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1411
+#: src/dird/ua_run.c:1417
 #, fuzzy
 msgid "Restore Client specified twice.\n"
 msgstr "Kein storage angegeben.\n"
 
-#: src/dird/ua_run.c:1418
+#: src/dird/ua_run.c:1424
 #, fuzzy
 msgid "Plugin Options not yet implemented.\n"
 msgstr "Kein storage angegeben.\n"
 
-#: src/dird/ua_run.c:1421
+#: src/dird/ua_run.c:1427
 #, fuzzy
 msgid "Plugin Options specified twice.\n"
 msgstr "Kein storage angegeben.\n"
 
-#: src/dird/ua_run.c:1426
+#: src/dird/ua_run.c:1432
 msgid "No authoriztion for \"PluginOptions\" specification.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1433
+#: src/dird/ua_run.c:1439
 #, fuzzy
 msgid "Spool flag specified twice.\n"
 msgstr "Kein storage angegeben.\n"
 
-#: src/dird/ua_run.c:1440
+#: src/dird/ua_run.c:1446
 #, fuzzy
 msgid "Invalid spooldata flag.\n"
 msgstr "Ung�ltige JobId gefunden.\n"
 
-#: src/dird/ua_run.c:1449
+#: src/dird/ua_run.c:1455
 #, fuzzy
 msgid "IgnoreDuplicateCheck flag specified twice.\n"
 msgstr "Kein storage angegeben.\n"
 
-#: src/dird/ua_run.c:1456
+#: src/dird/ua_run.c:1462
 #, fuzzy
 msgid "Invalid ignoreduplicatecheck flag.\n"
 msgstr "Ung�ltige JobId gefunden.\n"
 
-#: src/dird/ua_run.c:1461
+#: src/dird/ua_run.c:1467
 #, fuzzy
 msgid "Accurate flag specified twice.\n"
 msgstr "Kein storage angegeben.\n"
 
-#: src/dird/ua_run.c:1468
+#: src/dird/ua_run.c:1474
 #, fuzzy
 msgid "Invalid accurate flag.\n"
 msgstr "Ung�ltige JobId gefunden.\n"
 
-#: src/dird/ua_run.c:1489
+#: src/dird/ua_run.c:1495
 #, c-format
 msgid "Invalid keyword: %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1504
+#: src/dird/ua_run.c:1510
 #, c-format
 msgid "Catalog \"%s\" not found\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1508
+#: src/dird/ua_run.c:1514
 #, c-format
 msgid "No authorization. Catalog \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1519
+#: src/dird/ua_run.c:1525
 #, c-format
 msgid "Job \"%s\" not found\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1526
+#: src/dird/ua_run.c:1532
 msgid "A job name must be specified.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1532
+#: src/dird/ua_run.c:1538
 #, c-format
 msgid "No authorization. Job \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1540
+#: src/dird/ua_run.c:1546
 #, c-format
 msgid "Pool \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1550
+#: src/dird/ua_run.c:1556
 #, c-format
 msgid "No authorization. Pool \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1560
+#: src/dird/ua_run.c:1566
 #, c-format
 msgid "Storage \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1569 src/dird/job.c:1242
+#: src/dird/ua_run.c:1575 src/dird/job.c:1245
 msgid "No storage specified.\n"
 msgstr "Kein storage angegeben.\n"
 
-#: src/dird/ua_run.c:1572
+#: src/dird/ua_run.c:1578
 #, c-format
 msgid "No authorization. Storage \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1592 src/dird/ua_run.c:1612
+#: src/dird/ua_run.c:1598 src/dird/ua_run.c:1618
 #, c-format
 msgid "No authorization. Client \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1602
+#: src/dird/ua_run.c:1608
 #, fuzzy, c-format
 msgid "Restore Client \"%s\" not found.\n"
 msgstr "Pool Ressource \"%s\" nicht gefunden.\n"
 
-#: src/dird/ua_run.c:1621
+#: src/dird/ua_run.c:1627
 #, c-format
 msgid "FileSet \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1630
+#: src/dird/ua_run.c:1636
 #, c-format
 msgid "No authorization. FileSet \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1638
+#: src/dird/ua_run.c:1644
 #, c-format
 msgid "Verify Job \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1648
+#: src/dird/ua_run.c:1654
 #, c-format
 msgid "Migration Job \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:180 src/stored/sd_plugins.c:183
-#: src/filed/fd_plugins.c:973
+#: src/dird/dir_plugins.c:181 src/stored/sd_plugins.c:194
+#: src/filed/fd_plugins.c:1130
 #, c-format
 msgid "Loaded plugin: %s\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:200 src/stored/sd_plugins.c:203
-#: src/filed/fd_plugins.c:992
+#: src/dird/dir_plugins.c:201 src/stored/sd_plugins.c:214
+#: src/filed/fd_plugins.c:1151
 #, c-format
 msgid "Plugin magic wrong. Plugin=%s wanted=%s got=%s\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:208 src/stored/sd_plugins.c:211
-#: src/filed/fd_plugins.c:1000
+#: src/dird/dir_plugins.c:209 src/stored/sd_plugins.c:222
+#: src/filed/fd_plugins.c:1159
 #, c-format
 msgid "Plugin version incorrect. Plugin=%s wanted=%d got=%d\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:217 src/stored/sd_plugins.c:220
-#: src/filed/fd_plugins.c:1008
+#: src/dird/dir_plugins.c:218 src/stored/sd_plugins.c:231
+#: src/filed/fd_plugins.c:1167
 #, c-format
 msgid "Plugin license incompatible. Plugin=%s license=%s\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:225 src/stored/sd_plugins.c:228
-#: src/filed/fd_plugins.c:1016
+#: src/dird/dir_plugins.c:226 src/stored/sd_plugins.c:239
+#: src/filed/fd_plugins.c:1175
 #, c-format
 msgid "Plugin size incorrect. Plugin=%s wanted=%d got=%d\n"
 msgstr ""
@@ -5138,25 +5184,25 @@ msgstr ""
 msgid "Start Backup JobId %s, Job=%s\n"
 msgstr "Start Sicherung JobId %s, Job=%s\n"
 
-#: src/dird/backup.c:517
+#: src/dird/backup.c:521
 #, c-format
 msgid "Unexpected Client Job message: %s\n"
 msgstr "Unerwartete Client Job Nachricht: %s\n"
 
-#: src/dird/backup.c:530
+#: src/dird/backup.c:534
 #, c-format
 msgid "Network error with FD during %s: ERR=%s\n"
 msgstr "Netzwerkfehler mit FD bei %s: ERR=%s\n"
 
-#: src/dird/backup.c:565
+#: src/dird/backup.c:569
 msgid "No Job status returned from FD.\n"
 msgstr "FD hat keinen Jobstatus zur�ckgegeben.\n"
 
-#: src/dird/backup.c:647
+#: src/dird/backup.c:657
 msgid "Backup failed -- incomplete"
 msgstr ""
 
-#: src/dird/backup.c:720
+#: src/dird/backup.c:730
 #, fuzzy, c-format
 msgid ""
 "%s %s %s (%s):\n"
@@ -5226,14 +5272,14 @@ msgstr ""
 "  Beendigungsstatus:      %s\n"
 "\n"
 
-#: src/dird/backup.c:822
+#: src/dird/backup.c:832
 #, c-format
 msgid "Could not get Job Volume Parameters to update Bootstrap file. ERR=%s\n"
 msgstr ""
 "Konnte Job Volume Parameter  nicht holen um die Bootstrap Datei zu "
 "aktualisieren. ERR=%s\n"
 
-#: src/dird/backup.c:858
+#: src/dird/backup.c:868
 #, c-format
 msgid ""
 "Could not open WriteBootstrap file:\n"
@@ -5242,7 +5288,7 @@ msgstr ""
 "Konnte  WriteBootstrap nicht �ffnen. Datei:\n"
 "%s: ERR=%s\n"
 
-#: src/dird/restore.c:137 src/dird/msgchan.c:463 src/filed/job.c:2409
+#: src/dird/restore.c:137 src/dird/msgchan.c:476
 #, c-format
 msgid "Could not open bootstrap file %s: ERR=%s\n"
 msgstr "Kann  bootstrap Datei nicht �ffnen: %s: ERR=%s\n"
@@ -5257,40 +5303,40 @@ msgstr "Kann Storage resource %s nicht finden\n"
 msgid "Could not acquire read storage lock for \"%s\""
 msgstr "Kann Storage resource %s nicht finden\n"
 
-#: src/dird/restore.c:502
+#: src/dird/restore.c:505
 msgid ""
 "Cannot restore without a bootstrap file.\n"
 "You probably ran a restore job directly. All restore jobs must\n"
 "be run using the restore command.\n"
 msgstr ""
 
-#: src/dird/restore.c:510
+#: src/dird/restore.c:513
 #, c-format
 msgid "Start Restore Job %s\n"
 msgstr ""
 
-#: src/dird/restore.c:561
+#: src/dird/restore.c:564
 msgid "Restore OK -- warning file count mismatch"
 msgstr ""
 
-#: src/dird/restore.c:563
+#: src/dird/restore.c:566
 msgid "Restore OK"
 msgstr ""
 
-#: src/dird/restore.c:567
+#: src/dird/restore.c:570
 #, fuzzy
 msgid "Restore OK -- with warnings"
 msgstr "%s OK -- mit Warnungen"
 
-#: src/dird/restore.c:571
+#: src/dird/restore.c:574
 msgid "*** Restore Error ***"
 msgstr ""
 
-#: src/dird/restore.c:581
+#: src/dird/restore.c:584
 msgid "Restore Canceled"
 msgstr ""
 
-#: src/dird/restore.c:608
+#: src/dird/restore.c:611
 #, fuzzy, c-format
 msgid ""
 "%s %s %s (%s):\n"
@@ -5335,7 +5381,7 @@ msgstr ""
 msgid "Select daemon type for status"
 msgstr ""
 
-#: src/dird/ua_status.c:294 src/stored/status.c:218
+#: src/dird/ua_status.c:294 src/stored/status.c:248
 #, c-format
 msgid "%s Version: %s (%s) %s %s %s\n"
 msgstr ""
@@ -5345,7 +5391,7 @@ msgstr ""
 msgid "Daemon started %s. Jobs: run=%d, running=%d mode=%d,%d\n"
 msgstr ""
 
-#: src/dird/ua_status.c:300 src/stored/status.c:228 src/filed/status.c:142
+#: src/dird/ua_status.c:300 src/stored/status.c:258 src/filed/status.c:142
 #, c-format
 msgid " Heap: heap=%s smbytes=%s max_bytes=%s bufs=%s max_bufs=%s\n"
 msgstr ""
@@ -5384,245 +5430,245 @@ msgstr ""
 msgid "===================================================================================\n"
 msgstr ""
 
-#: src/dird/ua_status.c:487
+#: src/dird/ua_status.c:486
 #, c-format
 msgid "%-14s\t%-8s\t%3d\t%-18s\t%-18s\t%s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:491
+#: src/dird/ua_status.c:490
 #, c-format
 msgid "%-14s %-8s %3d  %-18s %-18s %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:545
+#: src/dird/ua_status.c:544
 msgid "Ignoring invalid value for days. Max is 500.\n"
 msgstr ""
 
-#: src/dird/ua_status.c:588
+#: src/dird/ua_status.c:587
 msgid "No Scheduled Jobs.\n"
 msgstr ""
 
-#: src/dird/ua_status.c:605 src/stored/status.c:396 src/filed/status.c:183
+#: src/dird/ua_status.c:604 src/stored/status.c:450 src/filed/status.c:183
 msgid ""
 "\n"
 "Running Jobs:\n"
 msgstr ""
 
-#: src/dird/ua_status.c:613
+#: src/dird/ua_status.c:612
 #, c-format
 msgid "Console connected at %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:623
+#: src/dird/ua_status.c:622
 msgid ""
 "No Jobs running.\n"
 "====\n"
 msgstr ""
 
-#: src/dird/ua_status.c:629
+#: src/dird/ua_status.c:628
 msgid " JobId Level   Name                       Status\n"
 msgstr ""
 
-#: src/dird/ua_status.c:630 src/filed/status.c:342
+#: src/dird/ua_status.c:629 src/filed/status.c:342
 msgid "======================================================================\n"
 msgstr ""
 
-#: src/dird/ua_status.c:639
+#: src/dird/ua_status.c:638
 msgid "is waiting execution"
 msgstr ""
 
-#: src/dird/ua_status.c:642
+#: src/dird/ua_status.c:641
 msgid "is running"
 msgstr ""
 
-#: src/dird/ua_status.c:645
+#: src/dird/ua_status.c:644
 msgid "is blocked"
 msgstr ""
 
-#: src/dird/ua_status.c:648
+#: src/dird/ua_status.c:647
 msgid "has terminated"
 msgstr ""
 
-#: src/dird/ua_status.c:651
+#: src/dird/ua_status.c:650
 #, fuzzy
 msgid "has terminated with warnings"
 msgstr "%s OK -- mit Warnungen"
 
-#: src/dird/ua_status.c:654
+#: src/dird/ua_status.c:653
 msgid "has erred"
 msgstr ""
 
-#: src/dird/ua_status.c:657
+#: src/dird/ua_status.c:656
 msgid "has errors"
 msgstr ""
 
-#: src/dird/ua_status.c:660
+#: src/dird/ua_status.c:659
 msgid "has a fatal error"
 msgstr ""
 
-#: src/dird/ua_status.c:663
+#: src/dird/ua_status.c:662
 msgid "has verify differences"
 msgstr ""
 
-#: src/dird/ua_status.c:666
+#: src/dird/ua_status.c:665
 msgid "has been canceled"
 msgstr ""
 
-#: src/dird/ua_status.c:671
+#: src/dird/ua_status.c:670
 msgid "is waiting on Client"
 msgstr ""
 
-#: src/dird/ua_status.c:673
+#: src/dird/ua_status.c:672
 #, c-format
 msgid "is waiting on Client %s"
 msgstr ""
 
-#: src/dird/ua_status.c:681 src/dird/ua_status.c:683
+#: src/dird/ua_status.c:680 src/dird/ua_status.c:682
 #, fuzzy, c-format
 msgid "is waiting on Storage \"%s\""
 msgstr "Storage daemon"
 
-#: src/dird/ua_status.c:685
+#: src/dird/ua_status.c:684
 msgid "is waiting on Storage"
 msgstr ""
 
-#: src/dird/ua_status.c:691
+#: src/dird/ua_status.c:690
 msgid "is waiting on max Storage jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:694
+#: src/dird/ua_status.c:693
 msgid "is waiting on max Client jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:697
+#: src/dird/ua_status.c:696
 msgid "is waiting on max Job jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:700
+#: src/dird/ua_status.c:699
 msgid "is waiting on max total jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:703
+#: src/dird/ua_status.c:702
 msgid "is waiting for its start time"
 msgstr ""
 
-#: src/dird/ua_status.c:706
+#: src/dird/ua_status.c:705
 msgid "is waiting for higher priority jobs to finish"
 msgstr ""
 
-#: src/dird/ua_status.c:709 src/dird/ua_status.c:760 src/lib/util.c:241
+#: src/dird/ua_status.c:708 src/dird/ua_status.c:759 src/lib/util.c:241
 msgid "SD committing Data"
 msgstr ""
 
-#: src/dird/ua_status.c:712 src/dird/ua_status.c:763 src/lib/util.c:244
+#: src/dird/ua_status.c:711 src/dird/ua_status.c:762 src/lib/util.c:244
 msgid "SD despooling Data"
 msgstr ""
 
-#: src/dird/ua_status.c:715 src/dird/ua_status.c:766 src/lib/util.c:247
+#: src/dird/ua_status.c:714 src/dird/ua_status.c:765 src/lib/util.c:247
 msgid "SD despooling Attributes"
 msgstr ""
 
-#: src/dird/ua_status.c:718 src/dird/ua_status.c:769 src/lib/util.c:250
+#: src/dird/ua_status.c:717 src/dird/ua_status.c:768 src/lib/util.c:250
 msgid "Dir inserting Attributes"
 msgstr ""
 
-#: src/dird/ua_status.c:723
+#: src/dird/ua_status.c:722
 #, fuzzy, c-format
 msgid "is in unknown state %c"
 msgstr "unbekannt"
 
-#: src/dird/ua_status.c:737
+#: src/dird/ua_status.c:736
 msgid "is waiting for a mount request"
 msgstr ""
 
-#: src/dird/ua_status.c:744
+#: src/dird/ua_status.c:743
 msgid "is waiting for an appendable Volume"
 msgstr ""
 
-#: src/dird/ua_status.c:752
+#: src/dird/ua_status.c:751
 #, fuzzy
 msgid "is waiting for Client to connect to Storage daemon"
 msgstr "Verbindung zu Storage daemon fehlgeschlagen.\n"
 
-#: src/dird/ua_status.c:754
+#: src/dird/ua_status.c:753
 #, c-format
 msgid "is waiting for Client %s to connect to Storage %s"
 msgstr ""
 
-#: src/dird/ua_status.c:785
+#: src/dird/ua_status.c:784
 #, c-format
 msgid "%6d\t%-6s\t%-20s\t%s\t%s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:789
+#: src/dird/ua_status.c:788
 #, c-format
 msgid "%6d %-6s  %-20s %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:793
+#: src/dird/ua_status.c:792
 #, c-format
 msgid "               %-30s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:813
+#: src/dird/ua_status.c:812
 msgid "No Terminated Jobs.\n"
 msgstr ""
 
-#: src/dird/ua_status.c:819 src/stored/status.c:507 src/filed/status.c:330
+#: src/dird/ua_status.c:818 src/stored/status.c:572 src/filed/status.c:330
 msgid ""
 "\n"
 "Terminated Jobs:\n"
 msgstr ""
 
-#: src/dird/ua_status.c:820 src/stored/status.c:514 src/filed/status.c:340
+#: src/dird/ua_status.c:819 src/stored/status.c:579 src/filed/status.c:340
 msgid " JobId  Level    Files      Bytes   Status   Finished        Name \n"
 msgstr ""
 
-#: src/dird/ua_status.c:821
+#: src/dird/ua_status.c:820
 msgid "====================================================================\n"
 msgstr ""
 
-#: src/dird/ua_status.c:853 src/stored/status.c:536 src/lib/util.c:180
+#: src/dird/ua_status.c:852 src/stored/status.c:601 src/lib/util.c:180
 #: src/filed/status.c:363
 msgid "Created"
 msgstr ""
 
-#: src/dird/ua_status.c:857 src/stored/status.c:540 src/lib/util.c:196
+#: src/dird/ua_status.c:856 src/stored/status.c:605 src/lib/util.c:196
 #: src/lib/util.c:331 src/lib/util.c:478 src/filed/status.c:367
 msgid "Error"
 msgstr ""
 
-#: src/dird/ua_status.c:860 src/stored/status.c:543 src/filed/status.c:370
+#: src/dird/ua_status.c:859 src/stored/status.c:608 src/filed/status.c:370
 msgid "Diffs"
 msgstr ""
 
-#: src/dird/ua_status.c:866 src/stored/status.c:549 src/stored/btape.c:1521
+#: src/dird/ua_status.c:865 src/stored/status.c:614 src/stored/btape.c:1523
 #: src/lib/util.c:189 src/lib/util.c:324 src/filed/status.c:376
 #: src/wx-console/wxbconfigpanel.cpp:209
 msgid "OK"
 msgstr ""
 
-#: src/dird/ua_status.c:869 src/stored/status.c:552 src/lib/util.c:202
+#: src/dird/ua_status.c:868 src/stored/status.c:617 src/lib/util.c:202
 #: src/lib/util.c:327
 #, fuzzy
 msgid "OK -- with warnings"
 msgstr "%s OK -- mit Warnungen"
 
-#: src/dird/ua_status.c:872 src/stored/status.c:555 src/filed/status.c:379
+#: src/dird/ua_status.c:871 src/stored/status.c:620 src/filed/status.c:379
 msgid "Other"
 msgstr ""
 
-#: src/dird/ua_status.c:876 src/stored/status.c:567 src/filed/status.c:391
+#: src/dird/ua_status.c:875 src/stored/status.c:632 src/filed/status.c:391
 #, c-format
 msgid "%6d\t%-6s\t%8s\t%10s\t%-7s\t%-8s\t%s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:884 src/stored/status.c:575 src/filed/status.c:399
+#: src/dird/ua_status.c:883 src/stored/status.c:640 src/filed/status.c:399
 #, c-format
 msgid "%6d  %-6s %8s %10s  %-7s  %-8s %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:893
+#: src/dird/ua_status.c:892
 msgid "\n"
 msgstr ""
 
@@ -5700,8 +5746,8 @@ msgid "Could not add job queue: ERR=%s\n"
 msgstr "Konnte job queue nicht hinzuf�gen: ERR=%s\n"
 
 #: src/dird/job.c:183 src/dird/job.c:433 src/dird/job.c:435 src/dird/job.c:485
-#: src/dird/job.c:487 src/dird/job.c:1126 src/dird/job.c:1167
-#: src/dird/job.c:1176
+#: src/dird/job.c:487 src/dird/job.c:1129 src/dird/job.c:1170
+#: src/dird/job.c:1179
 msgid "Job resource"
 msgstr "Job Ressource"
 
@@ -5751,81 +5797,81 @@ msgstr "Pool %s nicht in der Datenbank. %s"
 msgid "Created database record for Pool \"%s\".\n"
 msgstr "Erzeuge db Medientyp Eintrag %s fehlgeschlagen: ERR=%s\n"
 
-#: src/dird/job.c:765 src/dird/job.c:806
+#: src/dird/job.c:766 src/dird/job.c:809
 #, c-format
 msgid "JobId %d already running. Duplicate job not allowed.\n"
 msgstr ""
 
-#: src/dird/job.c:796
+#: src/dird/job.c:797
 #, c-format
 msgid "Cancelling duplicate JobId=%d.\n"
 msgstr ""
 
-#: src/dird/job.c:825 src/dird/job.c:1113
+#: src/dird/job.c:828 src/dird/job.c:1116
 #, fuzzy
 msgid "Run pool override"
 msgstr "von \"Run pool\" �berschrieben"
 
-#: src/dird/job.c:836
+#: src/dird/job.c:839
 #, fuzzy
 msgid "Run FullPool override"
 msgstr "von \"Run FullPool\" �berschrieben"
 
-#: src/dird/job.c:838
+#: src/dird/job.c:841
 msgid "Job FullPool override"
 msgstr ""
 
-#: src/dird/job.c:847
+#: src/dird/job.c:850
 msgid "Run IncPool override"
 msgstr ""
 
-#: src/dird/job.c:849
+#: src/dird/job.c:852
 msgid "Job IncPool override"
 msgstr ""
 
-#: src/dird/job.c:858
+#: src/dird/job.c:861
 msgid "Run DiffPool override"
 msgstr ""
 
-#: src/dird/job.c:860
+#: src/dird/job.c:863
 msgid "Job DiffPool override"
 msgstr ""
 
-#: src/dird/job.c:890 src/stored/bscan.c:1052
+#: src/dird/job.c:893 src/stored/bscan.c:1056
 #, c-format
 msgid "Could not create Client record. ERR=%s\n"
 msgstr "Konnte Client Eintrag nicht anlegen. ERR=%s\n"
 
-#: src/dird/job.c:926
+#: src/dird/job.c:929
 msgid "FileSet MD5 digest not found.\n"
 msgstr "FileSet MD5 Pr�fsumme nicht gefunden.\n"
 
-#: src/dird/job.c:931
+#: src/dird/job.c:934
 #, c-format
 msgid "Could not create FileSet \"%s\" record. ERR=%s\n"
 msgstr "Konnte FileSet \"%s\" Eintrag nicht erzeugen. ERR=%s\n"
 
-#: src/dird/job.c:973
+#: src/dird/job.c:976
 #, c-format
 msgid "Error updating job record. %s"
 msgstr "Fehler beim Aktualisieren des job Eintrags. %s"
 
-#: src/dird/job.c:1118
+#: src/dird/job.c:1121
 #, fuzzy
 msgid "Run storage override"
 msgstr "Run storage override"
 
-#: src/dird/job.c:1186
+#: src/dird/job.c:1189
 #, fuzzy
 msgid "Client resource"
 msgstr "Pool Ressource"
 
-#: src/dird/job.c:1403
+#: src/dird/job.c:1406
 #, fuzzy, c-format
 msgid "Could not start clone job: \"%s\".\n"
 msgstr "Konnte clone job nicht starten.\n"
 
-#: src/dird/job.c:1406
+#: src/dird/job.c:1409
 #, c-format
 msgid "Clone JobId %d started.\n"
 msgstr "Clone JobId %d gestartet.\n"
@@ -5999,53 +6045,53 @@ msgstr "Kann Konsole \"%s\" an %s:%s:%d nicht authentisieren.\n"
 msgid "1000 OK: %s Version: %s (%s)\n"
 msgstr "1000 OK: %s Version: %s (%s)\n"
 
-#: src/dird/catreq.c:129 src/dird/catreq.c:356
+#: src/dird/catreq.c:128 src/dird/catreq.c:355
 #, c-format
 msgid "1990 Invalid Catalog Request: %s"
 msgstr "1990 Ung�ltige Catalog Anfrage: %s"
 
-#: src/dird/catreq.c:130
+#: src/dird/catreq.c:129
 #, c-format
 msgid "Invalid Catalog request; DB not open: %s"
 msgstr "Ung�ltige Catalog Anfrage; DB nicht offen: %s"
 
-#: src/dird/catreq.c:155
+#: src/dird/catreq.c:154
 msgid "1901 No Media.\n"
 msgstr "1901 Keine Medien.\n"
 
-#: src/dird/catreq.c:183
+#: src/dird/catreq.c:182
 msgid "not in Pool"
 msgstr "nicht in Pool"
 
-#: src/dird/catreq.c:185
+#: src/dird/catreq.c:184
 msgid "not correct MediaType"
 msgstr "nicht korrekter Medientyp"
 
-#: src/dird/catreq.c:195
+#: src/dird/catreq.c:194
 msgid "is not Enabled"
 msgstr "ist nicht aktiviert"
 
-#: src/dird/catreq.c:204
+#: src/dird/catreq.c:203
 #, fuzzy, c-format
 msgid "1998 Volume \"%s\" catalog status is %s, %s.\n"
 msgstr "1998 Volume \"%s\" status ist %s, %s.\n"
 
-#: src/dird/catreq.c:209
+#: src/dird/catreq.c:208
 #, c-format
 msgid "1997 Volume \"%s\" not in catalog.\n"
 msgstr "1997 Volume \"%s\" Nicht in Catalog.\n"
 
-#: src/dird/catreq.c:231
+#: src/dird/catreq.c:230
 #, c-format
 msgid "Unable to get Media record for Volume %s: ERR=%s\n"
 msgstr "Konnte Media record f�r Volume %s nicht holen: ERR=%s\n"
 
-#: src/dird/catreq.c:233
+#: src/dird/catreq.c:232
 #, c-format
 msgid "1991 Catalog Request for vol=%s failed: %s"
 msgstr "1991 Catalog Anfrage f�r vol=%s fehlgeschlagen: %s"
 
-#: src/dird/catreq.c:260
+#: src/dird/catreq.c:259
 #, c-format
 msgid ""
 "Volume Files at %u being set to %u for Volume \"%s\". This is incorrect.\n"
@@ -6053,83 +6099,84 @@ msgstr ""
 "Volume Files bei %u werden auf %u f�r Volumen \"%s\" gesetzt. Dies ist nicht "
 "Korrekt.\n"
 
-#: src/dird/catreq.c:263
+#: src/dird/catreq.c:262
 #, c-format
 msgid "1992 Update Media error. VolFiles=%u, CatFiles=%u\n"
 msgstr "1992 Update Media Fehler. VolFiles=%u, CatFiles=%u\n"
 
-#: src/dird/catreq.c:288
-msgid "Attempt to set StorageId to zero.\n"
-msgstr ""
-
-#: src/dird/catreq.c:319
+#: src/dird/catreq.c:318
 #, c-format
 msgid "Catalog error updating Media record. %s"
 msgstr "Catalog Fehler beim Aktualisieren des Media Eintrags. %s"
 
-#: src/dird/catreq.c:321
+#: src/dird/catreq.c:320
 msgid "1993 Update Media error\n"
 msgstr "1993 Update Media Fehler\n"
 
-#: src/dird/catreq.c:345
+#: src/dird/catreq.c:344
 #, c-format
 msgid "Catalog error creating JobMedia record. %s"
 msgstr "Catalog Fehler beim Erzeugen des JobMedia Eintrags. %s"
 
-#: src/dird/catreq.c:347
+#: src/dird/catreq.c:346
 #, fuzzy
 msgid "1992 Create JobMedia error\n"
 msgstr "1991 Update JobMedia Fehler\n"
 
-#: src/dird/catreq.c:357
+#: src/dird/catreq.c:356
 #, c-format
 msgid "Invalid Catalog request: %s"
 msgstr "Ung�ltige Catalog Anfrage: %s"
 
+#: src/dird/catreq.c:443
+#, fuzzy, c-format
+msgid "Attribute create error: ERR=%s"
+msgstr "Attribute create error. %s"
+
 #: src/dird/catreq.c:538
 #, fuzzy, c-format
 msgid "Restore object create error. %s"
 msgstr "Attribute create error. %s"
 
 #: src/dird/catreq.c:544
-#, c-format
-msgid "Got %s but not same File as attributes\n"
+#, fuzzy, c-format
+msgid "%s not same File=%d as attributes=%d\n"
 msgstr "Erhielt %s aber nicht die gleiche Datei wie Attribute\n"
 
-#: src/dird/catreq.c:570
+#: src/dird/catreq.c:571
 #, c-format
 msgid "Catalog error updating file digest. Unsupported digest stream type: %d"
 msgstr ""
 "Catalog Fehler beim Aktualisieren des file digest. Nicht unterst�tzter "
 "digest stream typ: %d"
 
-#: src/dird/catreq.c:585
+#: src/dird/catreq.c:586
 #, fuzzy, c-format
 msgid "attribute create error. %s"
 msgstr "Attribute create error. %s"
 
-#: src/dird/catreq.c:591
+#: src/dird/catreq.c:592
 #, c-format
 msgid "Catalog error updating file digest. %s"
 msgstr "Catalog Fehler beim Aktualisieren des file digest. %s"
 
-#: src/dird/catreq.c:614
+#: src/dird/catreq.c:615
 #, fuzzy, c-format
 msgid "1994 Invalid Catalog Update: %s"
 msgstr "1991 Ung�ltige Catalog Aktualisierung: %s"
 
-#: src/dird/catreq.c:615
+#: src/dird/catreq.c:616
 #, c-format
 msgid "Invalid Catalog Update; DB not open: %s"
 msgstr "Ung�ltige Catalog Aktualisierung; DB nicht ge�ffnet: %s"
 
-#: src/dird/catreq.c:670 src/dird/catreq.c:685 src/lib/bsock.c:605
+#: src/dird/catreq.c:671 src/dird/catreq.c:686 src/lib/bsock.c:645
 #, fuzzy, c-format
 msgid "fread attr spool error. ERR=%s\n"
 msgstr "Regex �bersetzungsfehler. ERR=%s\n"
 
 #: src/dird/msgchan.c:106 src/tray-monitor/tray-monitor.c:952
-#: src/filed/job.c:1771 src/qt-console/tray-monitor/tray-monitor.cpp:375
+#: src/filed/job.c:1775 src/qt-console/tray-monitor/tray-monitor.cpp:375
 msgid "Storage daemon"
 msgstr "Storage daemon"
 
@@ -6143,7 +6190,17 @@ msgstr "Storage daemon hat \"Job command\": %s abgelehnt\n"
 msgid "<stored: bad response to Job command: %s\n"
 msgstr "<stored: falsche Antwort auf  Job Kommando: %s\n"
 
-#: src/dird/msgchan.c:312
+#: src/dird/msgchan.c:273
+#, fuzzy, c-format
+msgid "Using Device \"%s\" to read.\n"
+msgstr "unbekannt"
+
+#: src/dird/msgchan.c:311
+#, fuzzy, c-format
+msgid "Using Device \"%s\" to write.\n"
+msgstr "Pool Ressource \"%s\" nicht gefunden.\n"
+
+#: src/dird/msgchan.c:318
 #, c-format
 msgid ""
 "\n"
@@ -6154,7 +6211,7 @@ msgstr ""
 "     Storage daemon hat Device \"%s\" nicht akzeptiert weil:\n"
 "     %s"
 
-#: src/dird/msgchan.c:316
+#: src/dird/msgchan.c:322
 #, c-format
 msgid ""
 "\n"
@@ -6163,16 +6220,15 @@ msgstr ""
 "\n"
 "     Storage daemon hat Device \"%s\" Kommando nicht akzeptiert.\n"
 
-#: src/dird/msgchan.c:321
-#, c-format
-msgid "Using Device \"%s\"\n"
-msgstr ""
-
-#: src/dird/msgchan.c:341 src/dird/msgchan.c:529
+#: src/dird/msgchan.c:345 src/dird/msgchan.c:542
 #, c-format
 msgid "Cannot create message thread: %s\n"
 msgstr "Kann \"message thread\" nicht erzeugen: %s\n"
 
+#: src/dird/msgchan.c:417
+msgid "Director's comm line to SD dropped.\n"
+msgstr ""
+
 #: src/tray-monitor/tray_conf.c:177
 #: src/qt-console/tray-monitor/tray_conf.cpp:177
 #, c-format
@@ -6467,14 +6523,14 @@ msgstr ""
 
 #: src/tray-monitor/tray-monitor.c:937
 #: src/qt-console/tray-monitor/tray-monitor.cpp:359
-#: src/qt-console/bcomm/dircomm.cpp:101
+#: src/qt-console/bcomm/dircomm.cpp:103
 #, c-format
 msgid "Connecting to Director %s:%d"
 msgstr ""
 
 #: src/tray-monitor/tray-monitor.c:938 src/wx-console/console_thread.cpp:428
 #: src/qt-console/tray-monitor/tray-monitor.cpp:361
-#: src/qt-console/bcomm/dircomm.cpp:171
+#: src/qt-console/bcomm/dircomm.cpp:173
 msgid "Director daemon"
 msgstr ""
 
@@ -6633,7 +6689,7 @@ msgid ""
 "Please see "
 msgstr "Director und File daemon Passworte oder Namen sind nicht gleich.\n"
 
-#: src/stored/reserve.c:86
+#: src/stored/reserve.c:87
 #, c-format
 msgid "Unable to initialize reservation lock. ERR=%s\n"
 msgstr ""
@@ -6643,21 +6699,21 @@ msgstr ""
 msgid "Hey! num_writers=%d!!!!\n"
 msgstr ""
 
-#: src/stored/reserve.c:255
+#: src/stored/reserve.c:256
 msgid "3939 Could not get dcr\n"
 msgstr ""
 
-#: src/stored/reserve.c:357
+#: src/stored/reserve.c:364
 #, fuzzy, c-format
 msgid "Device reservation failed for JobId=%d: %s\n"
 msgstr "Mehr als ein Dateiname! %s f�r Datei: %s\n"
 
-#: src/stored/reserve.c:366
+#: src/stored/reserve.c:373
 #, c-format
 msgid "Failed command: %s\n"
 msgstr ""
 
-#: src/stored/reserve.c:625 src/stored/dircmd.c:618
+#: src/stored/reserve.c:632 src/stored/dircmd.c:633
 #, c-format
 msgid ""
 "\n"
@@ -6665,85 +6721,85 @@ msgid ""
 "does not exist.\n"
 msgstr ""
 
-#: src/stored/reserve.c:629 src/stored/dircmd.c:596
+#: src/stored/reserve.c:636 src/stored/dircmd.c:611
 #, c-format
 msgid ""
 "\n"
 "     Device \"%s\" requested by DIR could not be opened or does not exist.\n"
 msgstr ""
 
-#: src/stored/reserve.c:645
+#: src/stored/reserve.c:652
 #, c-format
 msgid "3926 Could not get dcr for device: %s\n"
 msgstr ""
 
-#: src/stored/reserve.c:771
+#: src/stored/reserve.c:778
 #, c-format
 msgid "3601 JobId=%u device %s is BLOCKED due to user unmount.\n"
 msgstr ""
 
-#: src/stored/reserve.c:781
+#: src/stored/reserve.c:788
 #, c-format
 msgid "3602 JobId=%u device %s is busy (already reading/writing).\n"
 msgstr ""
 
-#: src/stored/reserve.c:833
+#: src/stored/reserve.c:840
 #, c-format
 msgid "3603 JobId=%u device %s is busy reading.\n"
 msgstr ""
 
-#: src/stored/reserve.c:842
+#: src/stored/reserve.c:849
 #, c-format
 msgid "3604 JobId=%u device %s is BLOCKED due to user unmount.\n"
 msgstr ""
 
-#: src/stored/reserve.c:884
+#: src/stored/reserve.c:891
 #, c-format
 msgid ""
 "3608 JobId=%u wants Pool=\"%s\" but have Pool=\"%s\" nreserve=%d on drive "
 "%s.\n"
 msgstr ""
 
-#: src/stored/reserve.c:907
+#: src/stored/reserve.c:914
 #, c-format
 msgid "3609 JobId=%u Max concurrent jobs exceeded on drive %s.\n"
 msgstr ""
 
-#: src/stored/reserve.c:919
+#: src/stored/reserve.c:926
 #, c-format
 msgid "3610 JobId=%u Volume max jobs exceeded on drive %s.\n"
 msgstr ""
 
-#: src/stored/reserve.c:971
+#: src/stored/reserve.c:978
 #, c-format
 msgid "3605 JobId=%u wants free drive but device %s is busy.\n"
 msgstr ""
 
-#: src/stored/reserve.c:980
+#: src/stored/reserve.c:987
 #, c-format
 msgid "3606 JobId=%u prefers mounted drives, but drive %s has no Volume.\n"
 msgstr ""
 
-#: src/stored/reserve.c:1002
+#: src/stored/reserve.c:1009
 #, c-format
 msgid "3607 JobId=%u wants Vol=\"%s\" drive has Vol=\"%s\" on drive %s.\n"
 msgstr ""
 
-#: src/stored/reserve.c:1057
+#: src/stored/reserve.c:1064
 #, c-format
 msgid "Logic error!!!! JobId=%u Should not get here.\n"
 msgstr ""
 
-#: src/stored/reserve.c:1058
+#: src/stored/reserve.c:1065
 #, c-format
 msgid "3910 JobId=%u Logic error!!!! drive %s Should not get here.\n"
 msgstr ""
 
-#: src/stored/reserve.c:1061
+#: src/stored/reserve.c:1068
 msgid "Logic error!!!! Should not get here.\n"
 msgstr ""
 
-#: src/stored/reserve.c:1064
+#: src/stored/reserve.c:1071
 #, c-format
 msgid "3911 JobId=%u failed reserve drive %s.\n"
 msgstr ""
@@ -6848,23 +6904,23 @@ msgstr ""
 msgid "FileIndex=%d VolSessionId=%d VolSessionTime=%d Stream=%d DataLen=%d\n"
 msgstr ""
 
-#: src/stored/bls.c:425 src/stored/read_record.c:414 src/stored/bcopy.c:332
+#: src/stored/bls.c:425 src/stored/read_record.c:414 src/stored/bcopy.c:330
 msgid "Fresh Volume Label"
 msgstr ""
 
-#: src/stored/bls.c:428 src/stored/read_record.c:417 src/stored/bcopy.c:335
+#: src/stored/bls.c:428 src/stored/read_record.c:417 src/stored/bcopy.c:333
 msgid "Volume Label"
 msgstr ""
 
-#: src/stored/bls.c:432 src/stored/label.c:1033 src/stored/bcopy.c:339
+#: src/stored/bls.c:432 src/stored/label.c:1028 src/stored/bcopy.c:337
 msgid "Begin Job Session"
 msgstr ""
 
-#: src/stored/bls.c:437 src/stored/label.c:1036 src/stored/bcopy.c:343
+#: src/stored/bls.c:437 src/stored/label.c:1031 src/stored/bcopy.c:341
 msgid "End Job Session"
 msgstr ""
 
-#: src/stored/bls.c:441 src/stored/bcopy.c:348
+#: src/stored/bls.c:441 src/stored/bcopy.c:346
 msgid "End of Medium"
 msgstr ""
 
@@ -6880,17 +6936,17 @@ msgstr ""
 msgid "End of object"
 msgstr ""
 
-#: src/stored/bls.c:453 src/stored/label.c:1045 src/stored/bcopy.c:351
+#: src/stored/bls.c:453 src/stored/label.c:1040 src/stored/bcopy.c:349
 msgid "Unknown"
 msgstr ""
 
-#: src/stored/bls.c:460 src/stored/read_record.c:435 src/stored/bcopy.c:357
+#: src/stored/bls.c:460 src/stored/read_record.c:435 src/stored/bcopy.c:355
 #, c-format
 msgid "%s Record: VolSessionId=%d VolSessionTime=%d JobId=%d DataLen=%d\n"
 msgstr ""
 
-#: src/stored/bls.c:479 src/stored/bextract.c:612 src/stored/bcopy.c:375
-#: src/stored/bscan.c:1370 src/stored/btape.c:3048
+#: src/stored/bls.c:479 src/stored/bextract.c:612 src/stored/bcopy.c:373
+#: src/stored/bscan.c:1374 src/stored/btape.c:3050
 #, c-format
 msgid "Mount Volume \"%s\" on device %s and press return when ready: "
 msgstr ""
@@ -6900,293 +6956,293 @@ msgstr ""
 msgid "Connection request from %s failed.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:165
+#: src/stored/dircmd.c:166
 #, c-format
 msgid "Invalid connection from %s. Len=%d\n"
 msgstr ""
 
-#: src/stored/dircmd.c:208 src/filed/authenticate.c:208
+#: src/stored/dircmd.c:210 src/filed/authenticate.c:208
 msgid "Unable to authenticate Director\n"
 msgstr ""
 
-#: src/stored/dircmd.c:294
+#: src/stored/dircmd.c:299
 #, c-format
 msgid "3991 Bad setdebug command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:317
+#: src/stored/dircmd.c:326
+msgid "3903 Error scanning cancel command.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:330
 #, c-format
 msgid "3904 Job %s not found.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:345
+#: src/stored/dircmd.c:358
 #, fuzzy, c-format
-msgid "3000 JobId=%ld Job=\"%s\" marked to be canceled.\n"
+msgid "3000 JobId=%ld Job=\"%s\" marked to be %s.\n"
 msgstr "JobId %s, Job %s zum Abbruch markiert.\n"
 
-#: src/stored/dircmd.c:349
-msgid "3903 Error scanning cancel command.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:425 src/stored/dircmd.c:791 src/stored/dircmd.c:883
-#: src/stored/dircmd.c:994 src/stored/dircmd.c:1116 src/stored/dircmd.c:1159
+#: src/stored/dircmd.c:437 src/stored/dircmd.c:812 src/stored/dircmd.c:904
+#: src/stored/dircmd.c:1015 src/stored/dircmd.c:1137 src/stored/dircmd.c:1179
 #, c-format
 msgid "3999 Device \"%s\" not found or could not be opened.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:430
+#: src/stored/dircmd.c:442
 #, c-format
 msgid "3903 Error scanning label command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:480
+#: src/stored/dircmd.c:492
 #, fuzzy, c-format
 msgid "3910 Unable to open device \"%s\": ERR=%s\n"
 msgstr "Kann Datenbank=%s.nicht �ffen. ERR=%s\n"
 
-#: src/stored/dircmd.c:497
+#: src/stored/dircmd.c:509
 #, c-format
 msgid "3920 Cannot label Volume because it is already labeled: \"%s\"\n"
 msgstr ""
 
-#: src/stored/dircmd.c:504
+#: src/stored/dircmd.c:516
 msgid "3921 Wrong volume mounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:508
+#: src/stored/dircmd.c:520
 msgid "3922 Cannot relabel an ANSI/IBM labeled Volume.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:516
+#: src/stored/dircmd.c:528
 #, c-format
 msgid "3912 Failed to label Volume: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:526
+#: src/stored/dircmd.c:538
 #, c-format
 msgid "3914 Failed to label Volume (no media): ERR=%s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:529
+#: src/stored/dircmd.c:541
 #, c-format
 msgid "3913 Cannot label Volume. Unknown status %d from read_volume_label()\n"
 msgstr ""
 
-#: src/stored/dircmd.c:563
+#: src/stored/dircmd.c:578
 #, c-format
 msgid "3001 Mounted Volume: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:567 src/stored/dircmd.c:1195
+#: src/stored/dircmd.c:582 src/stored/dircmd.c:1215
 #, c-format
 msgid ""
 "3902 Cannot mount Volume on Storage Device \"%s\" because:\n"
 "%s"
 msgstr ""
 
-#: src/stored/dircmd.c:680
+#: src/stored/dircmd.c:696
 #, fuzzy
 msgid "Specified slot ignored. "
 msgstr "SQL fehlgeschlagen ERR=%s\n"
 
-#: src/stored/dircmd.c:695 src/stored/dircmd.c:752
+#: src/stored/dircmd.c:712 src/stored/dircmd.c:770
 #, fuzzy, c-format
 msgid "3901 Unable to open device \"%s\": ERR=%s\n"
 msgstr "Kann Datenbank=%s.nicht �ffen. ERR=%s\n"
 
-#: src/stored/dircmd.c:715 src/stored/dircmd.c:743
+#: src/stored/dircmd.c:732 src/stored/dircmd.c:761
 #, c-format
 msgid "3001 Device \"%s\" is mounted with Volume \"%s\"\n"
 msgstr ""
 
-#: src/stored/dircmd.c:718 src/stored/dircmd.c:746 src/stored/dircmd.c:761
+#: src/stored/dircmd.c:735 src/stored/dircmd.c:764 src/stored/dircmd.c:779
 #, c-format
 msgid ""
 "3905 Device \"%s\" open but no Bacula volume is mounted.\n"
 "If this is not a blank tape, try unmounting and remounting the Volume.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:728
+#: src/stored/dircmd.c:745
 #, c-format
 msgid "3001 Device \"%s\" is doing acquire.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:733 src/stored/dircmd.c:854
+#: src/stored/dircmd.c:750 src/stored/dircmd.c:875
 #, c-format
 msgid "3903 Device \"%s\" is being labeled.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:758
+#: src/stored/dircmd.c:776
 #, c-format
 msgid "3001 Device \"%s\" is already mounted with Volume \"%s\"\n"
 msgstr ""
 
-#: src/stored/dircmd.c:767
+#: src/stored/dircmd.c:788
 #, c-format
 msgid "3002 Device \"%s\" is mounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:769 src/stored/dircmd.c:826 src/stored/dircmd.c:842
-#: src/stored/dircmd.c:874
+#: src/stored/dircmd.c:790 src/stored/dircmd.c:847 src/stored/dircmd.c:863
+#: src/stored/dircmd.c:895
 #, c-format
 msgid "3907 %s"
 msgstr ""
 
-#: src/stored/dircmd.c:772
+#: src/stored/dircmd.c:793
 #, c-format
 msgid "3906 File device \"%s\" is always mounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:781
+#: src/stored/dircmd.c:802
 #, fuzzy, c-format
 msgid "3930 Device \"%s\" is being released.\n"
 msgstr "unbekannt"
 
-#: src/stored/dircmd.c:785
+#: src/stored/dircmd.c:806
 #, fuzzy, c-format
 msgid "3905 Unknown wait state %d\n"
 msgstr "unbekannt"
 
-#: src/stored/dircmd.c:795
+#: src/stored/dircmd.c:816
 #, c-format
 msgid "3909 Error scanning mount command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:823 src/stored/dircmd.c:876
+#: src/stored/dircmd.c:844 src/stored/dircmd.c:897
 #, fuzzy, c-format
 msgid "3002 Device \"%s\" unmounted.\n"
 msgstr "Pool Ressource \"%s\" nicht gefunden.\n"
 
-#: src/stored/dircmd.c:830
+#: src/stored/dircmd.c:851
 #, fuzzy, c-format
 msgid "3901 Device \"%s\" is already unmounted.\n"
 msgstr "unbekannt"
 
-#: src/stored/dircmd.c:845
+#: src/stored/dircmd.c:866
 #, fuzzy, c-format
 msgid "3001 Device \"%s\" unmounted.\n"
 msgstr "Pool Ressource \"%s\" nicht gefunden.\n"
 
-#: src/stored/dircmd.c:850
+#: src/stored/dircmd.c:871
 #, c-format
 msgid "3902 Device \"%s\" is busy in acquire.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:888
+#: src/stored/dircmd.c:909
 #, c-format
 msgid "3907 Error scanning unmount command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:916
+#: src/stored/dircmd.c:937
 msgid "3916 Error scanning action_on_purge command\n"
 msgstr ""
 
-#: src/stored/dircmd.c:959
+#: src/stored/dircmd.c:980
 #, fuzzy, c-format
 msgid "3921 Device \"%s\" already released.\n"
 msgstr "Device Eintrag %s bereits vorhanden\n"
 
-#: src/stored/dircmd.c:966
+#: src/stored/dircmd.c:987
 #, c-format
 msgid "3922 Device \"%s\" waiting for sysop.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:972
+#: src/stored/dircmd.c:993
 #, c-format
 msgid "3922 Device \"%s\" waiting for mount.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:976
+#: src/stored/dircmd.c:997
 #, fuzzy, c-format
 msgid "3923 Device \"%s\" is busy in acquire.\n"
 msgstr "unbekannt"
 
-#: src/stored/dircmd.c:980
+#: src/stored/dircmd.c:1001
 #, c-format
 msgid "3914 Device \"%s\" is being labeled.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:988
+#: src/stored/dircmd.c:1009
 #, c-format
 msgid "3022 Device \"%s\" released.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:999
+#: src/stored/dircmd.c:1020
 #, c-format
 msgid "3927 Error scanning release command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1028 src/filed/job.c:1531
+#: src/stored/dircmd.c:1049 src/filed/job.c:1535
 #, c-format
 msgid "Could not create bootstrap file %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1041
+#: src/stored/dircmd.c:1062
 msgid "Error parsing bootstrap file.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1103
+#: src/stored/dircmd.c:1124
 #, fuzzy, c-format
-msgid "3995 Device \"%s\" is not an autochanger.\n"
+msgid "3998 Device \"%s\" is not an autochanger.\n"
 msgstr "unbekannt"
 
-#: src/stored/dircmd.c:1120
+#: src/stored/dircmd.c:1141
 #, c-format
 msgid "3908 Error scanning autochanger drives/list/slots command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1163
+#: src/stored/dircmd.c:1183
 #, c-format
 msgid "3909 Error scanning readlabel command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1191
+#: src/stored/dircmd.c:1211
 #, c-format
 msgid "3001 Volume=%s Slot=%d\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1223
+#: src/stored/dircmd.c:1243
 #, c-format
 msgid "3931 Device \"%s\" is BLOCKED. user unmounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1227
+#: src/stored/dircmd.c:1247
 #, c-format
 msgid ""
 "3932 Device \"%s\" is BLOCKED. user unmounted during wait for media/mount.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1231
+#: src/stored/dircmd.c:1251
 #, c-format
 msgid "3933 Device \"%s\" is BLOCKED waiting for media.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1235
+#: src/stored/dircmd.c:1255
 #, c-format
 msgid "3934 Device \"%s\" is being initialized.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1239
+#: src/stored/dircmd.c:1259
 #, fuzzy, c-format
 msgid "3935 Device \"%s\" is blocked labeling a Volume.\n"
 msgstr "unbekannt"
 
-#: src/stored/dircmd.c:1243
+#: src/stored/dircmd.c:1263
 #, fuzzy, c-format
 msgid "3935 Device \"%s\" is blocked for unknown reason.\n"
 msgstr "unbekannt"
 
-#: src/stored/dircmd.c:1248
+#: src/stored/dircmd.c:1268
 #, fuzzy, c-format
 msgid "3936 Device \"%s\" is busy reading.\n"
 msgstr "unbekannt"
 
-#: src/stored/dircmd.c:1251
+#: src/stored/dircmd.c:1271
 #, c-format
 msgid "3937 Device \"%s\" is busy with writers=%d reserved=%d.\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:123 src/stored/parse_bsr.c:127
+#: src/stored/parse_bsr.c:122 src/stored/parse_bsr.c:126
 #, c-format
 msgid ""
 "Bootstrap file error: %s\n"
@@ -7194,154 +7250,154 @@ msgid ""
 "%s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:149
+#: src/stored/parse_bsr.c:148
 #, c-format
 msgid "Cannot open bootstrap file %s: %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:280
+#: src/stored/parse_bsr.c:279
 #, c-format
 msgid "MediaType %s in bsr at inappropriate place.\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:312
+#: src/stored/parse_bsr.c:311
 #, c-format
 msgid "Device \"%s\" in bsr at inappropriate place.\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:485
+#: src/stored/parse_bsr.c:484
 #, fuzzy, c-format
 msgid "REGEX '%s' compile error. ERR=%s\n"
 msgstr "Regex �bersetzungsfehler. ERR=%s\n"
 
-#: src/stored/parse_bsr.c:495
+#: src/stored/parse_bsr.c:494
 msgid "JobType not yet implemented\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:503
+#: src/stored/parse_bsr.c:502
 msgid "JobLevel not yet implemented\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:720
+#: src/stored/parse_bsr.c:719
 #, c-format
 msgid "Slot %d in bsr at inappropriate place.\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:744
+#: src/stored/parse_bsr.c:743
 #, c-format
 msgid "VolFile     : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:752
+#: src/stored/parse_bsr.c:751
 #, c-format
 msgid "VolBlock    : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:760
+#: src/stored/parse_bsr.c:759
 #, c-format
 msgid "VolAddr    : %llu-%llu\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:769
+#: src/stored/parse_bsr.c:768
 #, c-format
 msgid "FileIndex   : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:771
+#: src/stored/parse_bsr.c:770
 #, c-format
 msgid "FileIndex   : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:781
+#: src/stored/parse_bsr.c:780
 #, c-format
 msgid "JobId       : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:783
+#: src/stored/parse_bsr.c:782
 #, c-format
 msgid "JobId       : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:793
+#: src/stored/parse_bsr.c:792
 #, c-format
 msgid "SessId      : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:795
+#: src/stored/parse_bsr.c:794
 #, c-format
 msgid "SessId      : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:804
+#: src/stored/parse_bsr.c:803
 #, c-format
 msgid "VolumeName  : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:805
+#: src/stored/parse_bsr.c:804
 #, c-format
 msgid "  MediaType : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:806
+#: src/stored/parse_bsr.c:805
 #, c-format
 msgid "  Device    : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:807
+#: src/stored/parse_bsr.c:806
 #, c-format
 msgid "  Slot      : %d\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:816
+#: src/stored/parse_bsr.c:815
 #, c-format
 msgid "Client      : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:824
+#: src/stored/parse_bsr.c:823
 #, c-format
 msgid "Job          : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:832
+#: src/stored/parse_bsr.c:831
 #, c-format
 msgid "SessTime    : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:843
+#: src/stored/parse_bsr.c:842
 msgid "BSR is NULL\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:847
+#: src/stored/parse_bsr.c:846
 #, c-format
 msgid "Next        : 0x%x\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:848
+#: src/stored/parse_bsr.c:847
 #, c-format
 msgid "Root bsr    : 0x%x\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:860
+#: src/stored/parse_bsr.c:859
 #, c-format
 msgid "count       : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:861
+#: src/stored/parse_bsr.c:860
 #, c-format
 msgid "found       : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:864
+#: src/stored/parse_bsr.c:863
 #, c-format
 msgid "done        : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:865
+#: src/stored/parse_bsr.c:864
 #, c-format
 msgid "positioning : %d\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:866
+#: src/stored/parse_bsr.c:865
 #, c-format
 msgid "fast_reject : %d\n"
 msgstr ""
@@ -7425,64 +7481,62 @@ msgstr ""
 msgid "Unable to set network buffer size.\n"
 msgstr ""
 
-#: src/stored/append.c:96 src/stored/append.c:105 src/stored/append.c:117
-#: src/stored/append.c:297 src/stored/append.c:298 src/stored/askdir.c:339
-#: src/stored/askdir.c:340
+#: src/stored/append.c:95 src/stored/append.c:104 src/stored/append.c:116
+#: src/stored/askdir.c:340 src/stored/askdir.c:341
 msgid "NULL Volume name. This shouldn't happen!!!\n"
 msgstr ""
 
-#: src/stored/append.c:111 src/stored/btape.c:2233
+#: src/stored/append.c:110 src/stored/btape.c:2235
 #, c-format
 msgid "Write session label failed. ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:123
+#: src/stored/append.c:122
 #, c-format
 msgid "Network send error to FD. ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:160
+#: src/stored/append.c:159
 #, c-format
 msgid "Error reading data header from FD. ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:168
+#: src/stored/append.c:167
 #, c-format
 msgid "Malformed data header from FD: %s\n"
 msgstr ""
 
-#: src/stored/append.c:188
+#: src/stored/append.c:187
 #, c-format
 msgid "FI=%d from FD not positive or sequential=%d\n"
 msgstr ""
 
-#: src/stored/append.c:244
+#: src/stored/append.c:235
 #, fuzzy, c-format
 msgid "Network error reading from FD. ERR=%s\n"
 msgstr "Netzwerkfehler mit FD bei %s: ERR=%s\n"
 
-#: src/stored/append.c:274
-#, c-format
-msgid ""
-"Job write elapsed time = %02d:%02d:%02d, Transfer rate = %s Bytes/second\n"
-msgstr ""
-
-#: src/stored/append.c:289 src/stored/btape.c:2352
+#: src/stored/append.c:265 src/stored/btape.c:2354
 #, fuzzy, c-format
 msgid "Error writing end session label. ERR=%s\n"
 msgstr "Fehler beim Aktualisieren der DB Media Datei. ERR=%s\n"
 
-#: src/stored/append.c:305 src/stored/mac.c:126 src/stored/mac.c:247
+#: src/stored/append.c:277 src/stored/mac.c:126 src/stored/mac.c:261
 #: src/stored/spool.c:300
 #, c-format
 msgid "Fatal append error on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:307 src/stored/mac.c:128
+#: src/stored/append.c:279 src/stored/mac.c:128
 msgid "Set ok=FALSE after write_block_to_device.\n"
 msgstr ""
 
-#: src/stored/append.c:360
+#: src/stored/append.c:308 src/stored/mac.c:151
+#, c-format
+msgid "Elapsed time=%02d:%02d:%02d, Transfer rate=%s Bytes/second\n"
+msgstr ""
+
+#: src/stored/append.c:345
 #, c-format
 msgid "Error updating file attributes. ERR=%s\n"
 msgstr ""
@@ -7492,11 +7546,6 @@ msgstr ""
 msgid "Unable to initialize volume list lock. ERR=%s\n"
 msgstr "Kann DB lock nicht initialisieren. ERR=%s\n"
 
-#: src/stored/vol_mgr.c:491
-#, c-format
-msgid "Device switch. New device %s chosen.\n"
-msgstr ""
-
 #: src/stored/label.c:93
 #, c-format
 msgid "Couldn't rewind device %s: ERR=%s\n"
@@ -7542,67 +7591,67 @@ msgstr ""
 msgid "Volume on %s has bad Bacula label type: %x\n"
 msgstr ""
 
-#: src/stored/label.c:236 src/stored/label.c:399 src/stored/mount.c:460
+#: src/stored/label.c:236 src/stored/label.c:397 src/stored/mount.c:463
 #, fuzzy, c-format
 msgid "Could not reserve volume %s on %s\n"
 msgstr "Konnte FileSet \"%s\" Eintrag nicht erzeugen. ERR=%s\n"
 
-#: src/stored/label.c:276
+#: src/stored/label.c:277
 #, c-format
 msgid "Cannot write Volume label to block for device %s\n"
 msgstr ""
 
-#: src/stored/label.c:328 src/stored/label.c:429 src/stored/mount.c:216
+#: src/stored/label.c:328 src/stored/label.c:426 src/stored/mount.c:218
 #, fuzzy, c-format
 msgid "Open device %s Volume \"%s\" failed: ERR=%s\n"
 msgstr "Erzeugung von db Device Eintrag %s fehlgeschlagen: ERR=%s\n"
 
-#: src/stored/label.c:454
+#: src/stored/label.c:451
 #, c-format
 msgid "Rewind error on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/label.c:462
+#: src/stored/label.c:458
 #, c-format
 msgid "Truncate error on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/label.c:468
+#: src/stored/label.c:464
 #, c-format
 msgid "Failed to re-open DVD after truncate on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/label.c:491
+#: src/stored/label.c:487
 #, c-format
 msgid "Unable to write device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/label.c:522
+#: src/stored/label.c:518
 #, c-format
 msgid "Recycled volume \"%s\" on device %s, all previous data lost.\n"
 msgstr ""
 
-#: src/stored/label.c:525
+#: src/stored/label.c:521
 #, c-format
 msgid "Wrote label to prelabeled Volume \"%s\" on device %s\n"
 msgstr ""
 
-#: src/stored/label.c:726
+#: src/stored/label.c:721
 #, c-format
 msgid "Bad Volume session label = %d\n"
 msgstr ""
 
-#: src/stored/label.c:781
+#: src/stored/label.c:776
 #, c-format
 msgid "Expecting Volume Label, got FI=%s Stream=%s len=%d\n"
 msgstr ""
 
-#: src/stored/label.c:908
+#: src/stored/label.c:903
 #, c-format
 msgid "Unknown %d"
 msgstr ""
 
-#: src/stored/label.c:912
+#: src/stored/label.c:907
 #, c-format
 msgid ""
 "\n"
@@ -7619,17 +7668,17 @@ msgid ""
 "HostName          : %s\n"
 msgstr ""
 
-#: src/stored/label.c:934
+#: src/stored/label.c:929
 #, c-format
 msgid "Date label written: %s\n"
 msgstr ""
 
-#: src/stored/label.c:940
+#: src/stored/label.c:935
 #, c-format
 msgid "Date label written: %04d-%02d-%02d at %02d:%02d\n"
 msgstr ""
 
-#: src/stored/label.c:960
+#: src/stored/label.c:955
 #, c-format
 msgid ""
 "\n"
@@ -7642,7 +7691,7 @@ msgid ""
 "ClientName        : %s\n"
 msgstr ""
 
-#: src/stored/label.c:973
+#: src/stored/label.c:968
 #, c-format
 msgid ""
 "Job (unique name) : %s\n"
@@ -7651,7 +7700,7 @@ msgid ""
 "JobLevel          : %c\n"
 msgstr ""
 
-#: src/stored/label.c:982
+#: src/stored/label.c:977
 #, c-format
 msgid ""
 "JobFiles          : %s\n"
@@ -7664,52 +7713,52 @@ msgid ""
 "JobStatus         : %c\n"
 msgstr ""
 
-#: src/stored/label.c:1003
+#: src/stored/label.c:998
 #, c-format
 msgid "Date written      : %s\n"
 msgstr ""
 
-#: src/stored/label.c:1008
+#: src/stored/label.c:1003
 #, c-format
 msgid "Date written      : %04d-%02d-%02d at %02d:%02d\n"
 msgstr ""
 
-#: src/stored/label.c:1027
+#: src/stored/label.c:1022
 msgid "Fresh Volume"
 msgstr ""
 
-#: src/stored/label.c:1030
+#: src/stored/label.c:1025
 msgid "Volume"
 msgstr ""
 
-#: src/stored/label.c:1039 src/stored/read_record.c:428
+#: src/stored/label.c:1034 src/stored/read_record.c:428
 msgid "End of Media"
 msgstr ""
 
-#: src/stored/label.c:1042
+#: src/stored/label.c:1037
 msgid "End of Tape"
 msgstr ""
 
-#: src/stored/label.c:1062 src/stored/label.c:1070 src/stored/label.c:1103
+#: src/stored/label.c:1057 src/stored/label.c:1065 src/stored/label.c:1098
 #, c-format
 msgid "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d DataLen=%d\n"
 msgstr ""
 
-#: src/stored/label.c:1067
+#: src/stored/label.c:1062
 msgid "End of physical tape.\n"
 msgstr ""
 
-#: src/stored/label.c:1082 src/stored/label.c:1091
+#: src/stored/label.c:1077 src/stored/label.c:1086
 #, c-format
 msgid "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d\n"
 msgstr ""
 
-#: src/stored/label.c:1084
+#: src/stored/label.c:1079
 #, c-format
 msgid "   Job=%s Date=%s Level=%c Type=%c\n"
 msgstr ""
 
-#: src/stored/label.c:1093
+#: src/stored/label.c:1088
 #, c-format
 msgid "   Date=%s Level=%c Type=%c Files=%s Bytes=%s Errors=%d Status=%c\n"
 msgstr ""
@@ -7718,82 +7767,102 @@ msgstr ""
 msgid "Used Volume status:\n"
 msgstr ""
 
-#: src/stored/status.c:107 src/stored/status.c:109
+#: src/stored/status.c:117
 msgid ""
-"====\n"
 "\n"
+"SD Resources:\n"
 msgstr ""
 
-#: src/stored/status.c:128
+#: src/stored/status.c:153
 msgid ""
 "\n"
 "Device status:\n"
 msgstr ""
 
-#: src/stored/status.c:132
+#: src/stored/status.c:157
 #, c-format
 msgid "Autochanger \"%s\" with devices:\n"
 msgstr ""
 
-#: src/stored/status.c:150
+#: src/stored/status.c:177
 #, c-format
 msgid ""
-"Device %s is mounted with:\n"
+"\n"
+"Device %s is %s:\n"
 "    Volume:      %s\n"
 "    Pool:        %s\n"
 "    Media type:  %s\n"
 msgstr ""
 
-#: src/stored/status.c:160
+#: src/stored/status.c:182
+msgid "waiting for"
+msgstr ""
+
+#: src/stored/status.c:182
+msgid "mounted with"
+msgstr ""
+
+#: src/stored/status.c:184
+#, fuzzy
+msgid "*unknown*"
+msgstr "unbekannt"
+
+#: src/stored/status.c:188
 #, c-format
-msgid "Device %s open but no Bacula volume is currently mounted.\n"
+msgid ""
+"\n"
+"Device %s open but no Bacula volume is currently mounted.\n"
 msgstr ""
 
-#: src/stored/status.c:171
+#: src/stored/status.c:199
 #, c-format
 msgid "    Total Bytes=%s Blocks=%s Bytes/block=%s\n"
 msgstr ""
 
-#: src/stored/status.c:186
+#: src/stored/status.c:214
 #, c-format
 msgid "    Total Bytes Read=%s Blocks Read=%s Bytes/block=%s\n"
 msgstr ""
 
-#: src/stored/status.c:192
+#: src/stored/status.c:220
 #, c-format
 msgid "    Positioned at File=%s Block=%s\n"
 msgstr ""
 
-#: src/stored/status.c:199
-#, c-format
-msgid "Device %s is not open.\n"
-msgstr ""
+#: src/stored/status.c:227
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Device %s is not open.\n"
+msgstr "unbekannt"
 
-#: src/stored/status.c:203
-#, c-format
-msgid "Device \"%s\" is not open or does not exist.\n"
-msgstr ""
+#: src/stored/status.c:231
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Device \"%s\" is not open or does not exist.\n"
+msgstr "unbekannt"
 
-#: src/stored/status.c:225
+#: src/stored/status.c:255
 #, c-format
 msgid "Daemon started %s. Jobs: run=%d, running=%d.\n"
 msgstr ""
 
-#: src/stored/status.c:248
+#: src/stored/status.c:293
 msgid ""
 "No DEVICE structure.\n"
 "\n"
 msgstr ""
 
-#: src/stored/status.c:254
+#: src/stored/status.c:299
 msgid "    Device is BLOCKED. User unmounted.\n"
 msgstr ""
 
-#: src/stored/status.c:258
+#: src/stored/status.c:303
 msgid "    Device is BLOCKED. User unmounted during wait for media/mount.\n"
 msgstr ""
 
-#: src/stored/status.c:270
+#: src/stored/status.c:313
 #, c-format
 msgid ""
 "    Device is BLOCKED waiting for mount of volume \"%s\",\n"
@@ -7801,7 +7870,7 @@ msgid ""
 "       Media type:  %s\n"
 msgstr ""
 
-#: src/stored/status.c:279
+#: src/stored/status.c:322
 #, c-format
 msgid ""
 "    Device is BLOCKED waiting to create a volume for:\n"
@@ -7809,172 +7878,166 @@ msgid ""
 "       Media type:  %s\n"
 msgstr ""
 
-#: src/stored/status.c:291
+#: src/stored/status.c:333
 msgid "    Device is BLOCKED waiting for media.\n"
 msgstr ""
 
-#: src/stored/status.c:297
+#: src/stored/status.c:339
 msgid "    Device is being initialized.\n"
 msgstr ""
 
-#: src/stored/status.c:301
+#: src/stored/status.c:343
 msgid "    Device is blocked labeling a Volume.\n"
 msgstr ""
 
-#: src/stored/status.c:310
+#: src/stored/status.c:352
 #, c-format
-msgid "    Slot %d is loaded in drive %d.\n"
+msgid "    Slot %d %s loaded in drive %d.\n"
 msgstr ""
 
-#: src/stored/status.c:314
+#: src/stored/status.c:356
 #, c-format
 msgid "    Drive %d is not loaded.\n"
 msgstr ""
 
-#: src/stored/status.c:317
-#, fuzzy, c-format
-msgid "    Drive %d status unknown.\n"
-msgstr "unbekannt"
-
-#: src/stored/status.c:331 src/stored/btape.c:688
+#: src/stored/status.c:371 src/stored/btape.c:688
 #, c-format
 msgid "Configured device capabilities:\n"
 msgstr ""
 
-#: src/stored/status.c:349
+#: src/stored/status.c:389
 msgid "Device state:\n"
 msgstr ""
 
-#: src/stored/status.c:367
+#: src/stored/status.c:405
 #, c-format
-msgid ""
-"num_writers=%d reserved=%d block=%d\n"
-"\n"
+msgid "  num_writers=%d reserves=%d block=%d\n"
 msgstr ""
 
-#: src/stored/status.c:371 src/stored/btape.c:720
+#: src/stored/status.c:409
+#, fuzzy
+msgid "Attached Jobs: "
+msgstr "ist nicht aktiviert"
+
+#: src/stored/status.c:427 src/stored/btape.c:720
 #, c-format
 msgid "Device parameters:\n"
 msgstr ""
 
-#: src/stored/status.c:374
+#: src/stored/status.c:429
 #, c-format
-msgid "Archive name: %s Device name: %s\n"
+msgid "  Archive name: %s Device name: %s\n"
 msgstr ""
 
-#: src/stored/status.c:378
+#: src/stored/status.c:432
 #, c-format
-msgid "File=%u block=%u\n"
+msgid "  File=%u block=%u\n"
 msgstr ""
 
-#: src/stored/status.c:381
+#: src/stored/status.c:434
 #, c-format
-msgid "Min block=%u Max block=%u\n"
+msgid "  Min block=%u Max block=%u\n"
 msgstr ""
 
-#: src/stored/status.c:401
+#: src/stored/status.c:455
 #, c-format
 msgid "%s Job %s waiting for Client connection.\n"
 msgstr ""
 
-#: src/stored/status.c:417
+#: src/stored/status.c:471
 #, c-format
 msgid ""
 "Reading: %s %s job %s JobId=%d Volume=\"%s\"\n"
 "    pool=\"%s\" device=%s\n"
 msgstr ""
 
-#: src/stored/status.c:430
+#: src/stored/status.c:484
 #, c-format
 msgid ""
 "Writing: %s %s job %s JobId=%d Volume=\"%s\"\n"
 "    pool=\"%s\" device=%s\n"
 msgstr ""
 
-#: src/stored/status.c:441
+#: src/stored/status.c:495
 #, c-format
 msgid "    spooling=%d despooling=%d despool_wait=%d\n"
 msgstr ""
 
-#: src/stored/status.c:450
-#, c-format
-msgid "    Files=%s Bytes=%s Bytes/sec=%s\n"
-msgstr ""
+#: src/stored/status.c:511
+#, fuzzy, c-format
+msgid "    Files=%s Bytes=%s AveBytes/sec=%s LastBytes/sec=%s\n"
+msgstr "      MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"
 
-#: src/stored/status.c:458
+#: src/stored/status.c:523
 #, c-format
 msgid "    FDReadSeqNo=%s in_msg=%u out_msg=%d fd=%d\n"
 msgstr ""
 
-#: src/stored/status.c:464
+#: src/stored/status.c:529
 msgid "    FDSocket closed\n"
 msgstr ""
 
-#: src/stored/status.c:485
+#: src/stored/status.c:550
 msgid ""
 "\n"
 "Jobs waiting to reserve a drive:\n"
 msgstr ""
 
-#: src/stored/status.c:516
+#: src/stored/status.c:581
 msgid "===================================================================\n"
 msgstr ""
 
-#: src/stored/status.c:598 src/lib/util.c:423 src/filed/status.c:517
+#: src/stored/status.c:663 src/lib/util.c:423 src/filed/status.c:517
 msgid "Base"
 msgstr ""
 
-#: src/stored/status.c:615 src/filed/status.c:534
+#: src/stored/status.c:680 src/filed/status.c:534
 msgid "Init Catalog"
 msgstr ""
 
-#: src/stored/status.c:618 src/filed/status.c:537
+#: src/stored/status.c:683 src/filed/status.c:537
 msgid "Volume to Catalog"
 msgstr ""
 
-#: src/stored/status.c:621 src/filed/status.c:540
+#: src/stored/status.c:686 src/filed/status.c:540
 msgid "Disk to Catalog"
 msgstr ""
 
-#: src/stored/status.c:624 src/filed/status.c:543
+#: src/stored/status.c:689 src/filed/status.c:543
 msgid "Data"
 msgstr ""
 
-#: src/stored/status.c:630 src/lib/util.c:459 src/filed/status.c:549
+#: src/stored/status.c:695 src/lib/util.c:459 src/filed/status.c:549
 msgid "Unknown Job Level"
 msgstr ""
 
-#: src/stored/status.c:698 src/stored/status.c:744 src/filed/status.c:463
-#: src/filed/status.c:496
+#: src/stored/status.c:763
 #, c-format
-msgid "Bad .status command: %s\n"
-msgstr ""
-
-#: src/stored/status.c:699
-msgid "3900 Bad .status command, missing argument.\n"
+msgid "3900 No arg in .status command: %s\n"
 msgstr ""
 
-#: src/stored/status.c:745
-msgid "3900 Bad .status command, wrong argument.\n"
-msgstr ""
+#: src/stored/status.c:811
+#, fuzzy, c-format
+msgid "3900 Unknown arg in .status command: %s\n"
+msgstr "unbekannt"
 
-#: src/stored/status.c:760
+#: src/stored/status.c:826
 msgid "Bacula Storage: Idle"
 msgstr ""
 
-#: src/stored/status.c:771
+#: src/stored/status.c:837
 msgid "Bacula Storage: Running"
 msgstr ""
 
-#: src/stored/status.c:785
+#: src/stored/status.c:851
 msgid "Bacula Storage: Last Job Canceled"
 msgstr ""
 
-#: src/stored/status.c:789
+#: src/stored/status.c:855
 msgid "Bacula Storage: Last Job Failed"
 msgstr ""
 
-#: src/stored/status.c:793
+#: src/stored/status.c:859
 msgid "Bacula Storage: Last Job had Warnings"
 msgstr ""
 
@@ -8057,7 +8120,7 @@ msgstr ""
 "        -?          diese Meldung ausgeben.\n"
 "\n"
 
-#: src/stored/bextract.c:196 src/stored/bcopy.c:163 src/stored/bscan.c:248
+#: src/stored/bextract.c:196 src/stored/bcopy.c:161 src/stored/bscan.c:248
 #: src/tools/bvfs_test.c:201 src/tools/bbatch.c:190 src/tools/ing_test.c:185
 #: src/tools/cats_test.c:321
 msgid "Wrong number of arguments: \n"
@@ -8089,7 +8152,7 @@ msgid "%u files restored.\n"
 msgstr ""
 
 #: src/stored/bextract.c:284 src/stored/bextract.c:290
-#: src/filed/restore.c:1474
+#: src/filed/restore.c:1480
 #, c-format
 msgid "Write error on %s: %s\n"
 msgstr ""
@@ -8098,7 +8161,7 @@ msgstr ""
 msgid "Logic error output file should be open but is not.\n"
 msgstr ""
 
-#: src/stored/bextract.c:335 src/filed/restore.c:566
+#: src/stored/bextract.c:335 src/filed/restore.c:569
 #, c-format
 msgid "%s stream not supported on this Client.\n"
 msgstr ""
@@ -8114,7 +8177,7 @@ msgid "Seek error on %s: %s\n"
 msgstr ""
 
 #: src/stored/bextract.c:429 src/stored/bextract.c:494
-#: src/filed/restore.c:1329
+#: src/filed/restore.c:1335
 #, c-format
 msgid "Seek to %s error on %s: ERR=%s\n"
 msgstr ""
@@ -8124,16 +8187,16 @@ msgstr ""
 msgid "Uncompression error. ERR=%d\n"
 msgstr ""
 
-#: src/stored/bextract.c:462 src/filed/restore.c:1444
+#: src/stored/bextract.c:462 src/filed/restore.c:1450
 msgid "GZIP data stream found, but GZIP not configured!\n"
 msgstr ""
 
-#: src/stored/bextract.c:517 src/filed/restore.c:1370
+#: src/stored/bextract.c:517 src/filed/restore.c:1376
 #, c-format
 msgid "Compressed header version error. version=0x%x\n"
 msgstr ""
 
-#: src/stored/bextract.c:522 src/filed/restore.c:1375
+#: src/stored/bextract.c:522 src/filed/restore.c:1381
 #, c-format
 msgid "Compressed header size error. comp_len=%d, msglen=%d\n"
 msgstr ""
@@ -8143,7 +8206,7 @@ msgstr ""
 msgid "LZO uncompression error. ERR=%d\n"
 msgstr "Regex �bersetzungsfehler. ERR=%s\n"
 
-#: src/stored/bextract.c:556 src/filed/restore.c:1408
+#: src/stored/bextract.c:556 src/filed/restore.c:1414
 #, c-format
 msgid "Compression algorithm 0x%x found, but not supported!\n"
 msgstr ""
@@ -8152,12 +8215,12 @@ msgstr ""
 msgid "Got Program Name or Data Stream. Ignored.\n"
 msgstr ""
 
-#: src/stored/bextract.c:592 src/filed/restore.c:325 src/filed/restore.c:1027
+#: src/stored/bextract.c:592 src/filed/restore.c:328 src/filed/restore.c:1033
 #, c-format
 msgid "Unknown stream=%d ignored. This shouldn't happen!\n"
 msgstr ""
 
-#: src/stored/bcopy.c:76
+#: src/stored/bcopy.c:74
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -8192,48 +8255,48 @@ msgstr ""
 "       -?          diese Meldung ausgeben.\n"
 "\n"
 
-#: src/stored/bcopy.c:204 src/stored/device.c:298 src/stored/btape.c:473
+#: src/stored/bcopy.c:202 src/stored/device.c:298 src/stored/btape.c:473
 #, c-format
 msgid "dev open failed: %s\n"
 msgstr ""
 
-#: src/stored/bcopy.c:219
+#: src/stored/bcopy.c:217
 msgid "Write of last block failed.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:223
+#: src/stored/bcopy.c:221
 #, c-format
 msgid "%u Jobs copied. %u records copied.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:240 src/stored/bscan.c:428
+#: src/stored/bcopy.c:238 src/stored/bscan.c:428
 #, c-format
 msgid "Record: SessId=%u SessTim=%u FileIndex=%d Stream=%d len=%u\n"
 msgstr ""
 
-#: src/stored/bcopy.c:256
+#: src/stored/bcopy.c:254
 msgid "Volume is prelabeled. This volume cannot be copied.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:259
+#: src/stored/bcopy.c:257
 msgid "Volume label not copied.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:265
+#: src/stored/bcopy.c:263
 msgid "Copy skipped. Record does not match BSR filter.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:282 src/stored/bcopy.c:290 src/stored/bcopy.c:318
-#: src/stored/btape.c:2754
+#: src/stored/bcopy.c:280 src/stored/bcopy.c:288 src/stored/bcopy.c:316
+#: src/stored/btape.c:2756
 #, c-format
 msgid "Cannot fixup device error. %s\n"
 msgstr ""
 
-#: src/stored/bcopy.c:296
+#: src/stored/bcopy.c:294
 msgid "EOM label not copied.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:299
+#: src/stored/bcopy.c:297
 msgid "EOT label not copied.\n"
 msgstr ""
 
@@ -8271,19 +8334,14 @@ msgstr ""
 msgid "Next Volume part already exists on DVD. Cannot continue: %s\n"
 msgstr ""
 
-#: src/stored/dvd.c:377
-#, c-format
-msgid "open_next_part can't unlink existing part %s, ERR=%s\n"
-msgstr ""
-
-#: src/stored/dvd.c:583
+#: src/stored/dvd.c:563
 #, c-format
 msgid ""
 "Error writing. Current part less than total number of parts (%d/%d, device="
 "%s)\n"
 msgstr ""
 
-#: src/stored/dvd.c:590
+#: src/stored/dvd.c:570
 #, c-format
 msgid "Unable to write last on %s: ERR=%s\n"
 msgstr ""
@@ -8362,125 +8420,125 @@ msgstr ""
 msgid "Unexpected Tape is Off-line\n"
 msgstr ""
 
-#: src/stored/acquire.c:70
+#: src/stored/acquire.c:74
 #, c-format
 msgid "Acquire read: num_writers=%d not zero. Job %d canceled.\n"
 msgstr ""
 
-#: src/stored/acquire.c:79
+#: src/stored/acquire.c:83
 #, fuzzy, c-format
 msgid "No volumes specified for reading. Job %s canceled.\n"
 msgstr "Weder storage noch Pool in Job \"%s\" definiert.\n"
 
-#: src/stored/acquire.c:88
+#: src/stored/acquire.c:92
 #, c-format
 msgid "Logic error: no next volume to read. Numvol=%d Curvol=%d\n"
 msgstr ""
 
-#: src/stored/acquire.c:95 src/stored/acquire.c:163 src/stored/acquire.c:431
-msgid "generate_plugin_event(bsdEventDeviceOpen) Failed\n"
-msgstr ""
-
-#: src/stored/acquire.c:119
+#: src/stored/acquire.c:118
 #, c-format
 msgid ""
 "Changing read device. Want Media Type=\"%s\" have=\"%s\"\n"
 "  device=%s\n"
 msgstr ""
 
-#: src/stored/acquire.c:159
+#: src/stored/acquire.c:162
 #, c-format
 msgid "Media Type change.  New read device %s chosen.\n"
 msgstr ""
 
-#: src/stored/acquire.c:175
+#: src/stored/acquire.c:174
 #, c-format
 msgid "No suitable device found to read Volume \"%s\"\n"
 msgstr ""
 
-#: src/stored/acquire.c:214
+#: src/stored/acquire.c:213
 #, c-format
 msgid "Job %s canceled.\n"
 msgstr ""
 
-#: src/stored/acquire.c:232
+#: src/stored/acquire.c:231
 #, c-format
 msgid "Read open device %s Volume \"%s\" failed: ERR=%s\n"
 msgstr ""
 
-#: src/stored/acquire.c:322
+#: src/stored/acquire.c:321
 #, c-format
 msgid "Too many errors trying to mount device %s for reading.\n"
 msgstr ""
 
-#: src/stored/acquire.c:330
+#: src/stored/acquire.c:329
 #, c-format
 msgid "Ready to read from volume \"%s\" on device %s.\n"
 msgstr ""
 
-#: src/stored/acquire.c:383
+#: src/stored/acquire.c:381
 #, c-format
 msgid "Want to append, but device %s is busy reading.\n"
 msgstr ""
 
-#: src/stored/acquire.c:416
+#: src/stored/acquire.c:414
 #, c-format
 msgid "Could not ready device %s for append.\n"
 msgstr ""
 
-#: src/stored/acquire.c:508 src/stored/spool.c:321 src/stored/block.c:368
-#: src/stored/block.c:738 src/stored/block.c:812
+#: src/stored/acquire.c:501 src/stored/spool.c:321 src/stored/block.c:386
+#: src/stored/block.c:769 src/stored/block.c:847
 #, c-format
 msgid "Could not create JobMedia record for Volume=\"%s\" Job=%s\n"
 msgstr ""
 
-#: src/stored/acquire.c:559
+#: src/stored/acquire.c:552
 #, c-format
 msgid "Alert: %s"
 msgstr ""
 
-#: src/stored/acquire.c:567
+#: src/stored/acquire.c:560
 #, c-format
 msgid "3997 Bad alert command: %s: ERR=%s.\n"
 msgstr ""
 
-#: src/stored/acquire.c:637 src/stored/dev.c:263 src/stored/dev.c:281
-#: src/stored/dev.c:287 src/stored/dev.c:298 src/lib/openssl.c:122
-#: src/lib/openssl.c:181
+#: src/stored/acquire.c:629 src/stored/dev.c:270 src/stored/dev.c:311
+#: src/lib/openssl.c:122 src/lib/openssl.c:181
 #, c-format
 msgid "Unable to init mutex: ERR=%s\n"
 msgstr ""
 
-#: src/stored/askdir.c:178
+#: src/stored/acquire.c:635
+#, fuzzy, c-format
+msgid "Unable to init r_mutex: ERR=%s\n"
+msgstr "Kann DB lock nicht initialisieren. ERR=%s\n"
+
+#: src/stored/askdir.c:179
 msgid "Network error on bnet_recv in req_vol_info.\n"
 msgstr ""
 
-#: src/stored/askdir.c:196
+#: src/stored/askdir.c:197
 #, c-format
 msgid "Error getting Volume info: %s"
 msgstr ""
 
-#: src/stored/askdir.c:374
+#: src/stored/askdir.c:376
 #, c-format
 msgid "Didn't get vol info vol=%s: ERR=%s"
 msgstr ""
 
-#: src/stored/askdir.c:429
+#: src/stored/askdir.c:432
 #, c-format
 msgid "Error creating JobMedia record: ERR=%s\n"
 msgstr ""
 
-#: src/stored/askdir.c:436
+#: src/stored/askdir.c:439
 #, c-format
 msgid "Error creating JobMedia record: %s\n"
 msgstr ""
 
-#: src/stored/askdir.c:519
+#: src/stored/askdir.c:522
 #, c-format
 msgid "Job %s canceled while waiting for mount on Storage Device \"%s\".\n"
 msgstr ""
 
-#: src/stored/askdir.c:530
+#: src/stored/askdir.c:533
 #, c-format
 msgid ""
 "Job %s is waiting. Cannot find any appendable volumes.\n"
@@ -8490,38 +8548,38 @@ msgid ""
 "    Media type:   %s\n"
 msgstr ""
 
-#: src/stored/askdir.c:556 src/stored/askdir.c:658
+#: src/stored/askdir.c:558 src/stored/askdir.c:658
 #, c-format
 msgid "Max time exceeded waiting to mount Storage Device %s for Job %s\n"
 msgstr ""
 
-#: src/stored/askdir.c:566
+#: src/stored/askdir.c:568
 msgid "pthread error in mount_next_volume.\n"
 msgstr ""
 
-#: src/stored/askdir.c:600
+#: src/stored/askdir.c:601
 msgid "Cannot request another volume: no volume name given.\n"
 msgstr ""
 
-#: src/stored/askdir.c:606
+#: src/stored/askdir.c:607
 #, c-format
 msgid "Job %s canceled while waiting for mount on Storage Device %s.\n"
 msgstr ""
 
-#: src/stored/askdir.c:623
+#: src/stored/askdir.c:624
 #, c-format
 msgid ""
-"Please mount Volume \"%s\" or label a new one for:\n"
+"Please mount append Volume \"%s\" or label a new one for:\n"
 "    Job:          %s\n"
 "    Storage:      %s\n"
 "    Pool:         %s\n"
 "    Media type:   %s\n"
 msgstr ""
 
-#: src/stored/askdir.c:629
+#: src/stored/askdir.c:630
 #, c-format
 msgid ""
-"Please mount Volume \"%s\" for:\n"
+"Please mount read Volume \"%s\" for:\n"
 "    Job:          %s\n"
 "    Storage:      %s\n"
 "    Pool:         %s\n"
@@ -8537,11 +8595,11 @@ msgstr ""
 msgid "unknown: %d"
 msgstr "unbekannt"
 
-#: src/stored/record.c:424
+#: src/stored/record.c:392
 msgid "Damaged buffer\n"
 msgstr ""
 
-#: src/stored/record.c:600
+#: src/stored/record.c:670
 #, c-format
 msgid "Sanity check failed. maxlen=%d datalen=%d. Block discarded.\n"
 msgstr ""
@@ -8575,117 +8633,111 @@ msgstr ""
 msgid "No Changer Command given for device %s. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:84
-#, c-format
-msgid ""
-"Media Type not the same for all devices in changer %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:154
+#: src/stored/autochanger.c:139
 #, c-format
 msgid "No slot defined in catalog (slot=%d) for Volume \"%s\" on %s.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:156
+#: src/stored/autochanger.c:141
 msgid "Cartridge change or \"update slots\" may be required.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:162
+#: src/stored/autochanger.c:147
 #, c-format
 msgid "No \"Changer Device\" for %s. Manual load of Volume may be required.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:169
+#: src/stored/autochanger.c:154
 #, c-format
 msgid "No \"Changer Command\" for %s. Manual load of Volume may be requird.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:200
+#: src/stored/autochanger.c:185
 #, c-format
 msgid "3304 Issuing autochanger \"load slot %d, drive %d\" command.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:208
+#: src/stored/autochanger.c:193
 #, c-format
 msgid "3305 Autochanger \"load slot %d, drive %d\", status is OK.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:217
+#: src/stored/autochanger.c:206
 #, c-format
 msgid ""
 "3992 Bad autochanger \"load slot %d, drive %d\": ERR=%s.\n"
 "Results=%s\n"
 msgstr ""
 
-#: src/stored/autochanger.c:280
+#: src/stored/autochanger.c:268
 #, c-format
 msgid "3301 Issuing autochanger \"loaded? drive %d\" command.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:292
+#: src/stored/autochanger.c:280
 #, c-format
 msgid "3302 Autochanger \"loaded? drive %d\", result is Slot %d.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:299
+#: src/stored/autochanger.c:287
 #, c-format
 msgid "3302 Autochanger \"loaded? drive %d\", result: nothing loaded.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:311
+#: src/stored/autochanger.c:299
 #, c-format
 msgid ""
 "3991 Bad autochanger \"loaded? drive %d\" command: ERR=%s.\n"
 "Results=%s\n"
 msgstr ""
 
-#: src/stored/autochanger.c:328
+#: src/stored/autochanger.c:316
 #, fuzzy, c-format
 msgid "Lock failure on autochanger. ERR=%s\n"
 msgstr "pthread_cond_wait: ERR=%s\n"
 
-#: src/stored/autochanger.c:342
+#: src/stored/autochanger.c:330
 #, fuzzy, c-format
 msgid "Unlock failure on autochanger. ERR=%s\n"
 msgstr "pthread_cond_wait: ERR=%s\n"
 
-#: src/stored/autochanger.c:386 src/stored/autochanger.c:508
+#: src/stored/autochanger.c:374 src/stored/autochanger.c:523
 #, c-format
 msgid "3307 Issuing autochanger \"unload slot %d, drive %d\" command.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:399
+#: src/stored/autochanger.c:387
 #, c-format
 msgid ""
 "3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s\n"
 "Results=%s\n"
 msgstr ""
 
-#: src/stored/autochanger.c:465
+#: src/stored/autochanger.c:473
 #, c-format
 msgid "Volume \"%s\" wanted on %s is in use by device %s\n"
 msgstr ""
 
-#: src/stored/autochanger.c:526
+#: src/stored/autochanger.c:541
 #, c-format
-msgid "3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
+msgid "3997 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:570
+#: src/stored/autochanger.c:585
 #, c-format
 msgid "3993 Device %s not an autochanger device.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:591
+#: src/stored/autochanger.c:612
 #, c-format
 msgid "3306 Issuing autochanger \"%s\" command.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:594
+#: src/stored/autochanger.c:615
 msgid "3996 Open bpipe failed.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:621 src/console/console.c:1458
+#: src/stored/autochanger.c:642 src/console/console.c:1458
 #, c-format
 msgid "Autochanger error: ERR=%s\n"
 msgstr ""
@@ -8696,7 +8748,7 @@ msgid ""
 "\n"
 "Version: %s (%s)\n"
 "\n"
-"Usage: stored [options] [-c config_file] [config_file]\n"
+"Usage: bacula-sd [options] [-c config_file] [config_file]\n"
 "        -c <file>   use <file> as configuration file\n"
 "        -d <nn>     set debug level to <nn>\n"
 "        -dt         print timestamp in debug output\n"
@@ -8793,17 +8845,17 @@ msgid ""
 "using \"TLS Verify Peer\".\n"
 msgstr ""
 
-#: src/stored/stored.c:511
+#: src/stored/stored.c:568
 #, c-format
 msgid "Could not initialize %s\n"
 msgstr ""
 
-#: src/stored/stored.c:525
+#: src/stored/stored.c:582
 #, c-format
 msgid "Could not open device %s\n"
 msgstr ""
 
-#: src/stored/stored.c:539
+#: src/stored/stored.c:596
 #, c-format
 msgid "Could not mount device %s\n"
 msgstr ""
@@ -8833,7 +8885,7 @@ msgstr ""
 msgid "Catastrophic error. Cannot write overflow block to device %s. ERR=%s"
 msgstr ""
 
-#: src/stored/device.c:327 src/stored/dev.c:499
+#: src/stored/device.c:327 src/stored/dev.c:512
 #, c-format
 msgid "Unable to open device %s: ERR=%s\n"
 msgstr ""
@@ -8882,32 +8934,32 @@ msgstr ""
 msgid "Attempt to open read on non-open session.\n"
 msgstr ""
 
-#: src/stored/mount.c:96
+#: src/stored/mount.c:98
 #, c-format
 msgid "Too many errors trying to mount device %s.\n"
 msgstr ""
 
-#: src/stored/mount.c:104
+#: src/stored/mount.c:106
 #, c-format
 msgid "Job %d canceled.\n"
 msgstr ""
 
-#: src/stored/mount.c:280
+#: src/stored/mount.c:282
 #, c-format
 msgid "Volume \"%s\" previously written, moving to end of data.\n"
 msgstr ""
 
-#: src/stored/mount.c:286
+#: src/stored/mount.c:288
 #, c-format
 msgid "Unable to position to end of data on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/mount.c:408 src/stored/mount.c:730
+#: src/stored/mount.c:411 src/stored/mount.c:737
 #, c-format
 msgid "Volume \"%s\" not on device %s.\n"
 msgstr ""
 
-#: src/stored/mount.c:441
+#: src/stored/mount.c:444
 #, c-format
 msgid ""
 "Director wanted Volume \"%s\".\n"
@@ -8915,24 +8967,24 @@ msgid ""
 "    %s"
 msgstr ""
 
-#: src/stored/mount.c:596
+#: src/stored/mount.c:603
 #, c-format
 msgid "Ready to append to end of Volume \"%s\" part=%d size=%s\n"
 msgstr ""
 
-#: src/stored/mount.c:600
+#: src/stored/mount.c:607
 #, c-format
 msgid ""
 "Bacula cannot write on DVD Volume \"%s\" because: The sizes do not match! "
 "Volume=%s Catalog=%s\n"
 msgstr ""
 
-#: src/stored/mount.c:614
+#: src/stored/mount.c:621
 #, c-format
 msgid "Ready to append to end of Volume \"%s\" at file=%d.\n"
 msgstr ""
 
-#: src/stored/mount.c:617
+#: src/stored/mount.c:624
 #, c-format
 msgid ""
 "For Volume \"%s\":\n"
@@ -8940,24 +8992,24 @@ msgid ""
 "Correcting Catalog\n"
 msgstr ""
 
-#: src/stored/mount.c:624 src/stored/mount.c:652
+#: src/stored/mount.c:631 src/stored/mount.c:659
 #, fuzzy
 msgid "Error updating Catalog\n"
 msgstr "Fehler beim holen von Zeile: %s\n"
 
-#: src/stored/mount.c:629
+#: src/stored/mount.c:636
 #, c-format
 msgid ""
 "Bacula cannot write on tape Volume \"%s\" because:\n"
 "The number of files mismatch! Volume=%u Catalog=%u\n"
 msgstr ""
 
-#: src/stored/mount.c:640
+#: src/stored/mount.c:647
 #, c-format
 msgid "Ready to append to end of Volume \"%s\" size=%s\n"
 msgstr ""
 
-#: src/stored/mount.c:644
+#: src/stored/mount.c:651
 #, c-format
 msgid ""
 "For Volume \"%s\":\n"
@@ -8965,46 +9017,46 @@ msgid ""
 "Correcting Catalog\n"
 msgstr ""
 
-#: src/stored/mount.c:657
+#: src/stored/mount.c:664
 #, c-format
 msgid ""
 "Bacula cannot write on disk Volume \"%s\" because: The sizes do not match! "
 "Volume=%s Catalog=%s\n"
 msgstr ""
 
-#: src/stored/mount.c:720
+#: src/stored/mount.c:727
 #, c-format
 msgid "Labeled new Volume \"%s\" on device %s.\n"
 msgstr ""
 
-#: src/stored/mount.c:725
+#: src/stored/mount.c:732
 #, fuzzy, c-format
 msgid "Device %s not configured to autolabel Volumes.\n"
 msgstr "TLS ben�tigt aber nicht konfiguriert in Bacula.\n"
 
-#: src/stored/mount.c:744
+#: src/stored/mount.c:751
 #, c-format
 msgid "Marking Volume \"%s\" in Error in Catalog.\n"
 msgstr ""
 
-#: src/stored/mount.c:761
+#: src/stored/mount.c:768
 #, c-format
 msgid ""
 "Autochanger Volume \"%s\" not found in slot %d.\n"
 "    Setting InChanger to zero in catalog.\n"
 msgstr ""
 
-#: src/stored/mount.c:780
+#: src/stored/mount.c:787
 msgid "Hey!!!!! WroteVol non-zero !!!!!\n"
 msgstr ""
 
-#: src/stored/mount.c:827
+#: src/stored/mount.c:834
 #, c-format
 msgid ""
 "Invalid tape position on volume \"%s\" on device %s. Expected %d, got %d\n"
 msgstr ""
 
-#: src/stored/mount.c:864 src/stored/btape.c:3120
+#: src/stored/mount.c:875 src/stored/btape.c:3122
 #, c-format
 msgid "Cannot open Dev=%s, Vol=%s\n"
 msgstr ""
@@ -9090,7 +9142,7 @@ msgid ""
 "Despooling elapsed time = %02d:%02d:%02d, Transfer rate = %s Bytes/second\n"
 msgstr ""
 
-#: src/stored/spool.c:348 src/stored/spool.c:546 src/stored/spool.c:592
+#: src/stored/spool.c:348 src/stored/spool.c:549 src/stored/spool.c:595
 #, c-format
 msgid "Ftruncate spool file failed: ERR=%s\n"
 msgstr ""
@@ -9120,78 +9172,87 @@ msgstr ""
 msgid "Spool data read error. Wanted %u bytes, got %d\n"
 msgstr ""
 
-#: src/stored/spool.c:487
-msgid "User specified spool size reached.\n"
+#: src/stored/spool.c:480
+#, c-format
+msgid ""
+"User specified Job spool size reached: JobSpoolSize=%s MaxJobSpoolSize=%s\n"
 msgstr ""
 
-#: src/stored/spool.c:489
+#: src/stored/spool.c:485
+#, c-format
+msgid ""
+"User specified Device spool size reached: DevSpoolSize=%s MaxDevSpoolSize="
+"%s\n"
+msgstr ""
+
+#: src/stored/spool.c:492
 msgid "Bad return from despool in write_block.\n"
 msgstr ""
 
-#: src/stored/spool.c:497
+#: src/stored/spool.c:500
 msgid "Spooling data again ...\n"
 msgstr ""
 
-#: src/stored/spool.c:529
+#: src/stored/spool.c:532
 #, c-format
 msgid "Error writing header to spool file. ERR=%s\n"
 msgstr ""
 
-#: src/stored/spool.c:534
+#: src/stored/spool.c:537
 #, c-format
 msgid ""
 "Error writing header to spool file. Disk probably full. Attempting recovery. "
 "Wanted to write=%d got=%d\n"
 msgstr ""
 
-#: src/stored/spool.c:552 src/stored/spool.c:598
+#: src/stored/spool.c:555 src/stored/spool.c:601
 msgid "Fatal despooling error."
 msgstr ""
 
-#: src/stored/spool.c:560
+#: src/stored/spool.c:563
 msgid "Retrying after header spooling error failed.\n"
 msgstr ""
 
-#: src/stored/spool.c:576
+#: src/stored/spool.c:579
 #, c-format
 msgid "Error writing data to spool file. ERR=%s\n"
 msgstr ""
 
-#: src/stored/spool.c:609
+#: src/stored/spool.c:612
 msgid "Retrying after data spooling error failed.\n"
 msgstr ""
 
-#: src/stored/spool.c:679
+#: src/stored/spool.c:682
 #, fuzzy
 msgid "Network error on BlastAttributes.\n"
 msgstr "<filed: Netzwerkfehler beim Holen der Attribute. ERR=%s\n"
 
-#: src/stored/spool.c:703 src/stored/spool.c:727
+#: src/stored/spool.c:706 src/stored/spool.c:730
 #, c-format
 msgid "Fseek on attributes file failed: ERR=%s\n"
 msgstr ""
 
-#: src/stored/spool.c:715
+#: src/stored/spool.c:718
 #, fuzzy, c-format
 msgid "Truncate on attributes file failed: ERR=%s\n"
 msgstr "Abfrage gescheitert: %s: ERR=%s\n"
 
-#: src/stored/spool.c:739
+#: src/stored/spool.c:742
 #, c-format
 msgid "Sending spooled attrs to the Director. Despooling %s bytes ...\n"
 msgstr ""
 
-#: src/stored/spool.c:765
+#: src/stored/spool.c:768
 #, c-format
 msgid "fopen attr spool file %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/stored/lock.c:235
+#: src/stored/lock.c:405
 #, fuzzy, c-format
 msgid "pthread_cond_wait failure. ERR=%s\n"
 msgstr "pthread_cond_wait: ERR=%s\n"
 
-#: src/stored/lock.c:335
+#: src/stored/lock.c:504
 #, fuzzy
 msgid "unknown blocked code"
 msgstr "unbekannt"
@@ -9261,252 +9322,267 @@ msgid ""
 "Attempt to define second \"%s\" resource named \"%s\" is not permitted.\n"
 msgstr ""
 
-#: src/stored/dev.c:119
+#: src/stored/dev.c:127
 #, c-format
 msgid "Unable to stat device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:137
+#: src/stored/dev.c:145
 #, fuzzy, c-format
 msgid ""
 "%s is an unknown device type. Must be tape or directory\n"
 " or have RequiresMount=yes for DVD. st_mode=%x\n"
 msgstr "unbekannt\n"
 
-#: src/stored/dev.c:147
+#: src/stored/dev.c:155
 msgid "DVD support is now deprecated\n"
 msgstr ""
 
-#: src/stored/dev.c:224
+#: src/stored/dev.c:231
 #, c-format
 msgid "Unable to stat mount point %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:229
+#: src/stored/dev.c:236
 msgid ""
 "Mount and unmount commands must defined for a device which requires mount.\n"
 msgstr ""
 
-#: src/stored/dev.c:240
+#: src/stored/dev.c:247
 #, c-format
 msgid "Min block size > max on device %s\n"
 msgstr ""
 
-#: src/stored/dev.c:244
+#: src/stored/dev.c:251
 #, c-format
 msgid "Block size %u on device %s is too large, using default %u\n"
 msgstr ""
 
-#: src/stored/dev.c:249
+#: src/stored/dev.c:256
 #, c-format
 msgid "Max block size %u not multiple of device %s block size=%d.\n"
 msgstr ""
 
-#: src/stored/dev.c:253
+#: src/stored/dev.c:260
 #, c-format
 msgid "Max Vol Size < 8 * Max Block Size for device %s\n"
 msgstr ""
 
-#: src/stored/dev.c:269 src/stored/dev.c:275
+#: src/stored/dev.c:276 src/stored/dev.c:282
 #, c-format
 msgid "Unable to init cond variable: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:403
+#: src/stored/dev.c:288
+#, fuzzy, c-format
+msgid "Unable to init spool mutex: ERR=%s\n"
+msgstr "Kann DB lock nicht initialisieren. ERR=%s\n"
+
+#: src/stored/dev.c:294
+#, fuzzy, c-format
+msgid "Unable to init acquire mutex: ERR=%s\n"
+msgstr "Kann DB lock nicht initialisieren. ERR=%s\n"
+
+#: src/stored/dev.c:300
+#, fuzzy, c-format
+msgid "Unable to init read acquire mutex: ERR=%s\n"
+msgstr "Kann DB lock nicht initialisieren. ERR=%s\n"
+
+#: src/stored/dev.c:416
 msgid "Illegal mode given to open dev.\n"
 msgstr ""
 
-#: src/stored/dev.c:538
+#: src/stored/dev.c:551
 #, c-format
 msgid "Could not open file device %s. No Volume name given.\n"
 msgstr ""
 
-#: src/stored/dev.c:561
+#: src/stored/dev.c:574
 #, c-format
 msgid "Could not open: %s, ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:626
+#: src/stored/dev.c:639
 #, c-format
 msgid "No tape loaded or drive offline on %s.\n"
 msgstr ""
 
-#: src/stored/dev.c:636
+#: src/stored/dev.c:649
 #, c-format
 msgid "Rewind error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:646 src/stored/dev.c:724 src/stored/dev.c:865
-#: src/stored/dev.c:1454
+#: src/stored/dev.c:659 src/stored/dev.c:737 src/stored/dev.c:878
+#: src/stored/dev.c:1469
 #, c-format
 msgid "lseek error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:695
+#: src/stored/dev.c:708
 #, c-format
 msgid "Bad call to eod. Device %s not open\n"
 msgstr ""
 
-#: src/stored/dev.c:762
+#: src/stored/dev.c:775
 #, c-format
 msgid "ioctl MTEOM error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:772 src/stored/dev.c:906
+#: src/stored/dev.c:785 src/stored/dev.c:919
 #, c-format
 msgid "ioctl MTIOCGET error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:852
+#: src/stored/dev.c:865
 msgid "Bad device call. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:864
+#: src/stored/dev.c:877
 #, c-format
 msgid "Seek error: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:901
+#: src/stored/dev.c:914
 msgid " Bacula status:"
 msgstr ""
 
-#: src/stored/dev.c:902 src/stored/dev.c:985 src/stored/dev.c:987
+#: src/stored/dev.c:915 src/stored/dev.c:998 src/stored/dev.c:1000
 #, c-format
 msgid " file=%d block=%d\n"
 msgstr ""
 
-#: src/stored/dev.c:910
+#: src/stored/dev.c:923
 msgid " Device status:"
 msgstr ""
 
-#: src/stored/dev.c:1009
+#: src/stored/dev.c:1022
 msgid "Bad call to load_dev. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1020 src/stored/dev.c:1033
+#: src/stored/dev.c:1033 src/stored/dev.c:1046
 #, c-format
 msgid "ioctl MTLOAD error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1064
+#: src/stored/dev.c:1077
 #, c-format
 msgid "ioctl MTOFFL error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1105
+#: src/stored/dev.c:1118
 msgid "Bad call to fsf. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1116 src/stored/dev.c:1243
+#: src/stored/dev.c:1129 src/stored/dev.c:1256
 #, c-format
 msgid "Device %s at End of Tape.\n"
 msgstr ""
 
-#: src/stored/dev.c:1147 src/stored/dev.c:1223
+#: src/stored/dev.c:1160 src/stored/dev.c:1236
 #, c-format
 msgid "ioctl MTFSF error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1194 src/stored/btape.c:1975
+#: src/stored/dev.c:1207 src/stored/btape.c:1977
 #, c-format
 msgid "read error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1272
+#: src/stored/dev.c:1285
 msgid "Bad call to bsf. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1278
+#: src/stored/dev.c:1291
 #, c-format
 msgid "Device %s cannot BSF because it is not a tape.\n"
 msgstr ""
 
-#: src/stored/dev.c:1295
+#: src/stored/dev.c:1308
 #, c-format
 msgid "ioctl MTBSF error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1314
+#: src/stored/dev.c:1327
 msgid "Bad call to fsr. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1324
+#: src/stored/dev.c:1337
 #, c-format
 msgid "ioctl MTFSR not permitted on %s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1352
+#: src/stored/dev.c:1365
 #, c-format
 msgid "ioctl MTFSR %d error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1370
+#: src/stored/dev.c:1383
 msgid "Bad call to bsr_dev. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1380
+#: src/stored/dev.c:1393
 #, c-format
 msgid "ioctl MTBSR not permitted on %s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1394
+#: src/stored/dev.c:1407
 #, c-format
 msgid "ioctl MTBSR error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1443
+#: src/stored/dev.c:1458
 msgid "Bad call to reposition. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1522
+#: src/stored/dev.c:1537
 msgid "Bad call to weof_dev. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1532
+#: src/stored/dev.c:1547
 msgid "Attempt to WEOF on non-appendable Volume\n"
 msgstr ""
 
-#: src/stored/dev.c:1550
+#: src/stored/dev.c:1565
 #, c-format
 msgid "ioctl MTWEOF error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1649
+#: src/stored/dev.c:1664
 #, fuzzy, c-format
 msgid "unknown func code %d"
 msgstr "unbekannt"
 
-#: src/stored/dev.c:1655
+#: src/stored/dev.c:1670
 #, c-format
 msgid "I/O function \"%s\" not supported on this device.\n"
 msgstr ""
 
-#: src/stored/dev.c:1824
+#: src/stored/dev.c:1844
 #, c-format
 msgid "Unable to truncate device %s. ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:1841
+#: src/stored/dev.c:1861
 #, fuzzy, c-format
 msgid "Unable to stat device %s. ERR=%s\n"
 msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/stored/dev.c:1855
+#: src/stored/dev.c:1875
 #, c-format
 msgid "Device %s doesn't support ftruncate(). Recreating file %s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1867
+#: src/stored/dev.c:1887
 #, fuzzy, c-format
 msgid "Could not reopen: %s, ERR=%s\n"
 msgstr "Kann  bootstrap Datei nicht �ffnen: %s: ERR=%s\n"
 
-#: src/stored/dev.c:1989 src/stored/dev.c:2060
+#: src/stored/dev.c:2010 src/stored/dev.c:2081
 #, c-format
 msgid "Device %s cannot be %smounted. ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:2456
+#: src/stored/dev.c:2481
 #, c-format
 msgid "Unable to set eotmodel on device %s: ERR=%s\n"
 msgstr ""
@@ -9660,7 +9736,7 @@ msgstr ""
 msgid "SOS_LABEL: PoolId mismatch for JobId=%u. DB=%d Vol=%d\n"
 msgstr ""
 
-#: src/stored/bscan.c:601 src/stored/bscan.c:1157
+#: src/stored/bscan.c:601 src/stored/bscan.c:1161
 #, c-format
 msgid "Could not find SessId=%d SessTime=%d for EOS record.\n"
 msgstr ""
@@ -9718,107 +9794,107 @@ msgstr ""
 msgid "Got Prog Data Stream record.\n"
 msgstr ""
 
-#: src/stored/bscan.c:858
+#: src/stored/bscan.c:862
 #, c-format
 msgid "Unknown stream type!!! stream=%d len=%i\n"
 msgstr ""
 
-#: src/stored/bscan.c:926
+#: src/stored/bscan.c:930
 #, c-format
 msgid "Could not create File Attributes record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:932
+#: src/stored/bscan.c:936
 #, c-format
 msgid "Created File record: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:977
+#: src/stored/bscan.c:981
 #, c-format
 msgid "Could not create media record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:981 src/stored/bscan.c:1002
+#: src/stored/bscan.c:985 src/stored/bscan.c:1006
 #, c-format
 msgid "Could not update media record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:985
+#: src/stored/bscan.c:989
 #, c-format
 msgid "Created Media record for Volume: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1006
+#: src/stored/bscan.c:1010
 #, c-format
 msgid "Updated Media record at end of Volume: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1023
+#: src/stored/bscan.c:1027
 #, c-format
 msgid "Could not create pool record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1027
+#: src/stored/bscan.c:1031
 #, c-format
 msgid "Created Pool record for Pool: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1046
+#: src/stored/bscan.c:1050
 #, fuzzy, c-format
 msgid "Could not get Client record. ERR=%s\n"
 msgstr "Konnte Client Eintrag nicht anlegen. ERR=%s\n"
 
-#: src/stored/bscan.c:1056
+#: src/stored/bscan.c:1060
 #, c-format
 msgid "Created Client record for Client: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1073
+#: src/stored/bscan.c:1077
 #, c-format
 msgid "Fileset \"%s\" already exists.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1077
+#: src/stored/bscan.c:1081
 #, c-format
 msgid "Could not create FileSet record \"%s\". ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1082
+#: src/stored/bscan.c:1086
 #, c-format
 msgid "Created FileSet record \"%s\"\n"
 msgstr ""
 
-#: src/stored/bscan.c:1129
+#: src/stored/bscan.c:1133
 #, c-format
 msgid "Could not create JobId record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1135
+#: src/stored/bscan.c:1139
 #, c-format
 msgid "Could not update job start record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1138
+#: src/stored/bscan.c:1142
 #, c-format
 msgid "Created new JobId=%u record for original JobId=%u\n"
 msgstr ""
 
-#: src/stored/bscan.c:1191
+#: src/stored/bscan.c:1195
 #, c-format
 msgid "Could not update JobId=%u record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1196
+#: src/stored/bscan.c:1200
 #, c-format
 msgid "Updated Job termination record for JobId=%u Level=%s TermStat=%c\n"
 msgstr ""
 
-#: src/stored/bscan.c:1221
+#: src/stored/bscan.c:1225
 #, c-format
 msgid "Job Termination code: %d"
 msgstr ""
 
-#: src/stored/bscan.c:1226
+#: src/stored/bscan.c:1230
 #, c-format
 msgid ""
 "%s\n"
@@ -9838,45 +9914,45 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/bscan.c:1284
+#: src/stored/bscan.c:1288
 #, c-format
 msgid "Could not create JobMedia record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1288
+#: src/stored/bscan.c:1292
 #, c-format
 msgid "Created JobMedia record JobId %d, MediaId %d\n"
 msgstr ""
 
-#: src/stored/bscan.c:1304
+#: src/stored/bscan.c:1308
 #, c-format
 msgid "Could not find SessId=%d SessTime=%d for MD5/SHA1 record.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1318
+#: src/stored/bscan.c:1322
 #, c-format
 msgid "Could not add MD5/SHA1 to File record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1323
+#: src/stored/bscan.c:1327
 msgid "Updated MD5/SHA1 record\n"
 msgstr ""
 
-#: src/stored/job.c:231
+#: src/stored/job.c:234
 #, fuzzy, c-format
 msgid "FD connect failed: Job name not found: %s\n"
 msgstr "Job nicht gefunden: %s\n"
 
-#: src/stored/job.c:241
+#: src/stored/job.c:244
 #, c-format
 msgid "Hey!!!! JobId %u Job %s already authenticated.\n"
 msgstr ""
 
-#: src/stored/job.c:258
+#: src/stored/job.c:261
 msgid "Unable to authenticate File daemon\n"
 msgstr ""
 
-#: src/stored/job.c:387
+#: src/stored/job.c:390
 msgid "In free_jcr(), but still attached to device!!!!\n"
 msgstr ""
 
@@ -9994,18 +10070,18 @@ msgstr ""
 msgid "Loaded %s\n"
 msgstr ""
 
-#: src/stored/btape.c:576 src/stored/btape.c:1137 src/stored/btape.c:1210
-#: src/stored/btape.c:1290 src/stored/btape.c:1561
+#: src/stored/btape.c:576 src/stored/btape.c:1139 src/stored/btape.c:1212
+#: src/stored/btape.c:1292 src/stored/btape.c:1563
 #, c-format
 msgid "Bad status from rewind. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:579 src/stored/btape.c:1569
+#: src/stored/btape.c:579 src/stored/btape.c:1571
 #, c-format
 msgid "Rewound %s\n"
 msgstr ""
 
-#: src/stored/btape.c:605 src/stored/btape.c:1573
+#: src/stored/btape.c:605 src/stored/btape.c:1575
 #, c-format
 msgid "Bad status from weof. ERR=%s\n"
 msgstr ""
@@ -10067,20 +10143,20 @@ msgstr ""
 msgid "Do you want to continue? (y/n): "
 msgstr ""
 
-#: src/stored/btape.c:748 src/stored/btape.c:2198
+#: src/stored/btape.c:748 src/stored/btape.c:2200
 msgid "Command aborted.\n"
 msgstr ""
 
-#: src/stored/btape.c:764
+#: src/stored/btape.c:765
 #, c-format
 msgid "Block %d i=%d\n"
 msgstr ""
 
-#: src/stored/btape.c:790
+#: src/stored/btape.c:792
 msgid "Skipping read backwards test because BSR turned off.\n"
 msgstr ""
 
-#: src/stored/btape.c:794
+#: src/stored/btape.c:796
 msgid ""
 "\n"
 "=== Write, backup, and re-read test ===\n"
@@ -10094,73 +10170,73 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:807 src/stored/btape.c:818 src/stored/btape.c:829
-#: src/stored/btape.c:1147 src/stored/btape.c:1163 src/stored/btape.c:1905
-#: src/stored/btape.c:2821
+#: src/stored/btape.c:809 src/stored/btape.c:820 src/stored/btape.c:831
+#: src/stored/btape.c:1149 src/stored/btape.c:1165 src/stored/btape.c:1907
+#: src/stored/btape.c:2823
 msgid "Error writing record to block.\n"
 msgstr ""
 
-#: src/stored/btape.c:811 src/stored/btape.c:822 src/stored/btape.c:833
-#: src/stored/btape.c:1151 src/stored/btape.c:1167 src/stored/btape.c:1909
-#: src/stored/btape.c:2825
+#: src/stored/btape.c:813 src/stored/btape.c:824 src/stored/btape.c:835
+#: src/stored/btape.c:1153 src/stored/btape.c:1169 src/stored/btape.c:1911
+#: src/stored/btape.c:2827
 msgid "Error writing block to device.\n"
 msgstr ""
 
-#: src/stored/btape.c:814
+#: src/stored/btape.c:816
 #, c-format
 msgid "Wrote first record of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:825
+#: src/stored/btape.c:827
 #, c-format
 msgid "Wrote second record of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:836
+#: src/stored/btape.c:838
 #, c-format
 msgid "Wrote third record of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:843 src/stored/btape.c:848
+#: src/stored/btape.c:845 src/stored/btape.c:850
 #, c-format
 msgid "Backspace file failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:852
+#: src/stored/btape.c:854
 msgid "Backspaced over EOF OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:854
+#: src/stored/btape.c:856
 #, c-format
 msgid "Backspace record failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:857
+#: src/stored/btape.c:859
 msgid "Backspace record OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:860 src/stored/btape.c:866
+#: src/stored/btape.c:862 src/stored/btape.c:868
 #, c-format
 msgid "Read block failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:871
+#: src/stored/btape.c:873
 msgid "Bad data in record. Test failed!\n"
 msgstr ""
 
-#: src/stored/btape.c:875
+#: src/stored/btape.c:877
 msgid ""
 "\n"
 "Block re-read correct. Test succeeded!\n"
 msgstr ""
 
-#: src/stored/btape.c:876
+#: src/stored/btape.c:878
 msgid ""
 "=== End Write, backup, and re-read test ===\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:883
+#: src/stored/btape.c:885
 msgid ""
 "This is not terribly serious since Bacula only uses\n"
 "this function to verify the last block written to the\n"
@@ -10172,52 +10248,52 @@ msgid ""
 "to your Storage daemon's Device resource definition.\n"
 msgstr ""
 
-#: src/stored/btape.c:905
+#: src/stored/btape.c:907
 #, c-format
 msgid "Begin writing %i files of %sB with raw blocks of %u bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:926 src/stored/btape.c:2877
+#: src/stored/btape.c:928 src/stored/btape.c:2879
 #, c-format
 msgid "Write failed at block %u. stat=%d ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:960
+#: src/stored/btape.c:962
 #, c-format
 msgid "Begin writing %i files of %sB with blocks of %u bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:969
+#: src/stored/btape.c:971
 #, fuzzy
 msgid ""
 "\n"
 "Error writing record to block.\n"
 msgstr "Fehler beim schreiben der bsr Datei.\n"
 
-#: src/stored/btape.c:973
+#: src/stored/btape.c:975
 #, fuzzy
 msgid ""
 "\n"
 "Error writing block to device.\n"
 msgstr "Fehler beim schreiben der bsr Datei.\n"
 
-#: src/stored/btape.c:1028
+#: src/stored/btape.c:1030
 msgid "The file_size is too big, stop this test with Ctrl-c.\n"
 msgstr ""
 
-#: src/stored/btape.c:1056
+#: src/stored/btape.c:1058
 msgid "Test with zero data, should give the maximum throughput.\n"
 msgstr ""
 
-#: src/stored/btape.c:1068 src/stored/btape.c:1094
+#: src/stored/btape.c:1070 src/stored/btape.c:1096
 msgid "Test with random data, should give the minimum throughput.\n"
 msgstr ""
 
-#: src/stored/btape.c:1083
+#: src/stored/btape.c:1085
 msgid "Test with zero data and bacula block structure.\n"
 msgstr ""
 
-#: src/stored/btape.c:1123
+#: src/stored/btape.c:1125
 #, c-format
 msgid ""
 "\n"
@@ -10231,66 +10307,66 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1155 src/stored/btape.c:1171
+#: src/stored/btape.c:1157 src/stored/btape.c:1173
 #, c-format
 msgid "Wrote %d blocks of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:1213 src/stored/btape.c:1293
+#: src/stored/btape.c:1215 src/stored/btape.c:1295
 msgid "Rewind OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:1226 src/stored/btape.c:1345
+#: src/stored/btape.c:1228 src/stored/btape.c:1347
 msgid "Got EOF on tape.\n"
 msgstr ""
 
-#: src/stored/btape.c:1231
+#: src/stored/btape.c:1233
 #, c-format
 msgid "Read block %d failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1237
+#: src/stored/btape.c:1239
 #, c-format
 msgid "Read record failed. Block %d! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1243 src/stored/btape.c:1375
+#: src/stored/btape.c:1245 src/stored/btape.c:1377
 #, c-format
 msgid "Bad data in record. Expected %d, got %d at byte %d. Test failed!\n"
 msgstr ""
 
-#: src/stored/btape.c:1250
+#: src/stored/btape.c:1252
 #, c-format
 msgid "%d blocks re-read correctly.\n"
 msgstr ""
 
-#: src/stored/btape.c:1253 src/stored/btape.c:1382
+#: src/stored/btape.c:1255 src/stored/btape.c:1384
 msgid ""
 "=== Test Succeeded. End Write, rewind, and re-read test ===\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1281
+#: src/stored/btape.c:1283
 msgid "Block position test\n"
 msgstr ""
 
-#: src/stored/btape.c:1336
+#: src/stored/btape.c:1338
 #, c-format
 msgid "Reposition to file:block %d:%d\n"
 msgstr ""
 
-#: src/stored/btape.c:1338
+#: src/stored/btape.c:1340
 msgid "Reposition error.\n"
 msgstr ""
 
-#: src/stored/btape.c:1351
+#: src/stored/btape.c:1353
 #, c-format
 msgid ""
 "Read block %d failed! file=%d blk=%d. ERR=%s\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1353
+#: src/stored/btape.c:1355
 msgid ""
 "This may be because the tape drive block size is not\n"
 " set to variable blocking as normally used by Bacula.\n"
@@ -10304,17 +10380,17 @@ msgid ""
 " in your Device resource.\n"
 msgstr ""
 
-#: src/stored/btape.c:1369
+#: src/stored/btape.c:1371
 #, c-format
 msgid "Read record failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1380
+#: src/stored/btape.c:1382
 #, c-format
 msgid "Block %d re-read correctly.\n"
 msgstr ""
 
-#: src/stored/btape.c:1401
+#: src/stored/btape.c:1403
 msgid ""
 "\n"
 "\n"
@@ -10328,58 +10404,58 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1425
+#: src/stored/btape.c:1427
 msgid "Now moving to end of medium.\n"
 msgstr ""
 
-#: src/stored/btape.c:1427 src/stored/btape.c:1656
+#: src/stored/btape.c:1429 src/stored/btape.c:1658
 #, c-format
 msgid "We should be in file 3. I am at file %d. %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1428 src/stored/btape.c:1446 src/stored/btape.c:1645
-#: src/stored/btape.c:1657 src/stored/btape.c:1670 src/stored/btape.c:1687
+#: src/stored/btape.c:1430 src/stored/btape.c:1448 src/stored/btape.c:1647
+#: src/stored/btape.c:1659 src/stored/btape.c:1672 src/stored/btape.c:1689
 msgid "This is correct!"
 msgstr ""
 
-#: src/stored/btape.c:1428 src/stored/btape.c:1446 src/stored/btape.c:1645
-#: src/stored/btape.c:1657 src/stored/btape.c:1670 src/stored/btape.c:1687
+#: src/stored/btape.c:1430 src/stored/btape.c:1448 src/stored/btape.c:1647
+#: src/stored/btape.c:1659 src/stored/btape.c:1672 src/stored/btape.c:1689
 msgid "This is NOT correct!!!!"
 msgstr ""
 
-#: src/stored/btape.c:1434
+#: src/stored/btape.c:1436
 msgid ""
 "\n"
 "Now the important part, I am going to attempt to append to the tape.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1441
+#: src/stored/btape.c:1443
 msgid ""
 "Done appending, there should be no I/O errors\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1442
+#: src/stored/btape.c:1444
 msgid "Doing Bacula scan of blocks:\n"
 msgstr ""
 
-#: src/stored/btape.c:1444
+#: src/stored/btape.c:1446
 msgid "End scanning the tape.\n"
 msgstr ""
 
-#: src/stored/btape.c:1445 src/stored/btape.c:1669
+#: src/stored/btape.c:1447 src/stored/btape.c:1671
 #, c-format
 msgid "We should be in file 4. I am at file %d. %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1470
+#: src/stored/btape.c:1472
 msgid ""
 "\n"
 "Autochanger enabled, but no name or no command device specified.\n"
 msgstr ""
 
-#: src/stored/btape.c:1474
+#: src/stored/btape.c:1476
 msgid ""
 "\n"
 "Ah, I see you have an autochanger configured.\n"
@@ -10387,13 +10463,13 @@ msgid ""
 " that I can write on in Slot 1.\n"
 msgstr ""
 
-#: src/stored/btape.c:1477
+#: src/stored/btape.c:1479
 msgid ""
 "\n"
 "Do you wish to continue with the Autochanger test? (y/n): "
 msgstr ""
 
-#: src/stored/btape.c:1484
+#: src/stored/btape.c:1486
 msgid ""
 "\n"
 "\n"
@@ -10401,74 +10477,74 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1493
+#: src/stored/btape.c:1495
 msgid "3301 Issuing autochanger \"loaded\" command.\n"
 msgstr ""
 
-#: src/stored/btape.c:1502
+#: src/stored/btape.c:1504
 #, c-format
 msgid "3991 Bad autochanger command: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1503
+#: src/stored/btape.c:1505
 #, c-format
 msgid "3991 result=\"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1507
+#: src/stored/btape.c:1509
 #, c-format
 msgid "Slot %d loaded. I am going to unload it.\n"
 msgstr ""
 
-#: src/stored/btape.c:1509
+#: src/stored/btape.c:1511
 msgid "Nothing loaded in the drive. OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:1516
+#: src/stored/btape.c:1518
 #, c-format
 msgid "3302 Issuing autochanger \"unload %d %d\" command.\n"
 msgstr ""
 
-#: src/stored/btape.c:1521
+#: src/stored/btape.c:1523
 #, c-format
 msgid "unload status=%s %d\n"
 msgstr ""
 
-#: src/stored/btape.c:1521
+#: src/stored/btape.c:1523
 msgid "Bad"
 msgstr ""
 
-#: src/stored/btape.c:1524
+#: src/stored/btape.c:1526
 #, c-format
 msgid "3992 Bad autochanger command: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1525
+#: src/stored/btape.c:1527
 #, c-format
 msgid "3992 result=\"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1535
+#: src/stored/btape.c:1537
 #, c-format
 msgid "3303 Issuing autochanger \"load %d %d\" command.\n"
 msgstr ""
 
-#: src/stored/btape.c:1543
+#: src/stored/btape.c:1545
 #, c-format
 msgid "3303 Autochanger \"load %d %d\" status is OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:1547
+#: src/stored/btape.c:1549
 #, c-format
 msgid "3993 Bad autochanger command: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1548
+#: src/stored/btape.c:1550
 #, c-format
 msgid "3993 result=\"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1563
+#: src/stored/btape.c:1565
 msgid ""
 "\n"
 "The test failed, probably because you need to put\n"
@@ -10476,12 +10552,12 @@ msgid ""
 "Adding a 30 second sleep and trying again ...\n"
 msgstr ""
 
-#: src/stored/btape.c:1576
+#: src/stored/btape.c:1578
 #, c-format
 msgid "Wrote EOF to %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1580
+#: src/stored/btape.c:1582
 #, c-format
 msgid ""
 "\n"
@@ -10493,18 +10569,18 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1585
+#: src/stored/btape.c:1587
 msgid ""
 "\n"
 "The test autochanger worked!!\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1596
+#: src/stored/btape.c:1598
 msgid "You must correct this error or the Autochanger will not work.\n"
 msgstr ""
 
-#: src/stored/btape.c:1614
+#: src/stored/btape.c:1616
 msgid ""
 "\n"
 "\n"
@@ -10516,30 +10592,30 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1639
+#: src/stored/btape.c:1641
 msgid "Now forward spacing 1 file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1641 src/stored/btape.c:1653 src/stored/btape.c:1666
-#: src/stored/btape.c:1684 src/stored/btape.c:1860
+#: src/stored/btape.c:1643 src/stored/btape.c:1655 src/stored/btape.c:1668
+#: src/stored/btape.c:1686 src/stored/btape.c:1862
 #, c-format
 msgid "Bad status from fsr. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1644
+#: src/stored/btape.c:1646
 #, c-format
 msgid "We should be in file 1. I am at file %d. %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1651
+#: src/stored/btape.c:1653
 msgid "Now forward spacing 2 files.\n"
 msgstr ""
 
-#: src/stored/btape.c:1664
+#: src/stored/btape.c:1666
 msgid "Now forward spacing 4 files.\n"
 msgstr ""
 
-#: src/stored/btape.c:1676
+#: src/stored/btape.c:1678
 msgid ""
 "The test worked this time. Please add:\n"
 "\n"
@@ -10548,35 +10624,35 @@ msgid ""
 "to your Device resource for this drive.\n"
 msgstr ""
 
-#: src/stored/btape.c:1682
+#: src/stored/btape.c:1684
 msgid "Now forward spacing 1 more file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1686
+#: src/stored/btape.c:1688
 #, c-format
 msgid "We should be in file 5. I am at file %d. %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1691
+#: src/stored/btape.c:1693
 msgid ""
 "\n"
 "=== End Forward space files test ===\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1695
+#: src/stored/btape.c:1697
 msgid ""
 "\n"
 "The forward space file test failed.\n"
 msgstr ""
 
-#: src/stored/btape.c:1697
+#: src/stored/btape.c:1699
 msgid ""
 "You have Fast Forward Space File enabled.\n"
 "I am turning it off then retrying the test.\n"
 msgstr ""
 
-#: src/stored/btape.c:1703
+#: src/stored/btape.c:1705
 msgid ""
 "You must correct this error or Bacula will not work.\n"
 "Some systems, e.g. OpenBSD, require you to set\n"
@@ -10584,7 +10660,7 @@ msgid ""
 "in your device resource. Use with caution.\n"
 msgstr ""
 
-#: src/stored/btape.c:1737
+#: src/stored/btape.c:1739
 msgid ""
 "\n"
 "Append test failed. Attempting again.\n"
@@ -10594,7 +10670,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1745
+#: src/stored/btape.c:1747
 msgid ""
 "\n"
 "\n"
@@ -10606,14 +10682,14 @@ msgid ""
 "to your Device resource in the Storage conf file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1752
+#: src/stored/btape.c:1754
 msgid ""
 "\n"
 "\n"
 "That appears *NOT* to have corrected the problem.\n"
 msgstr ""
 
-#: src/stored/btape.c:1757
+#: src/stored/btape.c:1759
 msgid ""
 "\n"
 "\n"
@@ -10621,7 +10697,7 @@ msgid ""
 "Setting \"BSF at EOM = yes\" and retrying append test.\n"
 msgstr ""
 
-#: src/stored/btape.c:1762
+#: src/stored/btape.c:1764
 msgid ""
 "\n"
 "\n"
@@ -10634,7 +10710,7 @@ msgid ""
 "to your Device resource in the Storage conf file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1773
+#: src/stored/btape.c:1775
 msgid ""
 "\n"
 "Append test failed.\n"
@@ -10661,7 +10737,7 @@ msgid ""
 "in your device resource. Use with caution.\n"
 msgstr ""
 
-#: src/stored/btape.c:1795
+#: src/stored/btape.c:1797
 msgid ""
 "\n"
 "The above Bacula scan should have output identical to what follows.\n"
@@ -10685,111 +10761,111 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1838
+#: src/stored/btape.c:1840
 #, c-format
 msgid "Bad status from fsf. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1842
+#: src/stored/btape.c:1844
 msgid "Forward spaced 1 file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1845
+#: src/stored/btape.c:1847
 #, c-format
 msgid "Forward spaced %d files.\n"
 msgstr ""
 
-#: src/stored/btape.c:1864
+#: src/stored/btape.c:1866
 msgid "Forward spaced 1 record.\n"
 msgstr ""
 
-#: src/stored/btape.c:1867
+#: src/stored/btape.c:1869
 #, c-format
 msgid "Forward spaced %d records.\n"
 msgstr ""
 
-#: src/stored/btape.c:1912
+#: src/stored/btape.c:1914
 #, c-format
 msgid "Wrote one record of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:1914
+#: src/stored/btape.c:1916
 msgid "Wrote block to device.\n"
 msgstr ""
 
-#: src/stored/btape.c:1928
+#: src/stored/btape.c:1930
 msgid "Enter length to read: "
 msgstr ""
 
-#: src/stored/btape.c:1933
+#: src/stored/btape.c:1935
 msgid "Bad length entered, using default of 1024 bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:1942
+#: src/stored/btape.c:1944
 #, c-format
 msgid "Read of %d bytes gives stat=%d. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1965 src/stored/btape.c:2014
+#: src/stored/btape.c:1967 src/stored/btape.c:2016
 #, c-format
 msgid "End of tape\n"
 msgstr ""
 
-#: src/stored/btape.c:1970
+#: src/stored/btape.c:1972
 #, c-format
 msgid "Starting scan at file %u\n"
 msgstr ""
 
-#: src/stored/btape.c:1977
+#: src/stored/btape.c:1979
 #, c-format
 msgid "Bad status from read %d. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1980 src/stored/btape.c:1994 src/stored/btape.c:2058
-#: src/stored/btape.c:2070 src/stored/btape.c:2083 src/stored/btape.c:2099
+#: src/stored/btape.c:1982 src/stored/btape.c:1996 src/stored/btape.c:2060
+#: src/stored/btape.c:2072 src/stored/btape.c:2085 src/stored/btape.c:2101
 #, c-format
 msgid "1 block of %d bytes in file %d\n"
 msgstr ""
 
-#: src/stored/btape.c:1983 src/stored/btape.c:1997 src/stored/btape.c:2061
-#: src/stored/btape.c:2073 src/stored/btape.c:2086 src/stored/btape.c:2102
+#: src/stored/btape.c:1985 src/stored/btape.c:1999 src/stored/btape.c:2063
+#: src/stored/btape.c:2075 src/stored/btape.c:2088 src/stored/btape.c:2104
 #, c-format
 msgid "%d blocks of %d bytes in file %d\n"
 msgstr ""
 
-#: src/stored/btape.c:2005 src/stored/btape.c:2077
+#: src/stored/btape.c:2007 src/stored/btape.c:2079
 #, c-format
 msgid "End of File mark.\n"
 msgstr ""
 
-#: src/stored/btape.c:2026 src/stored/btape.c:2130
+#: src/stored/btape.c:2028 src/stored/btape.c:2132
 #, c-format
 msgid "Total files=%d, blocks=%d, bytes = %s\n"
 msgstr ""
 
-#: src/stored/btape.c:2090
+#: src/stored/btape.c:2092
 #, c-format
 msgid "Short block read.\n"
 msgstr ""
 
-#: src/stored/btape.c:2093
+#: src/stored/btape.c:2095
 #, c-format
 msgid "Error reading block. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2117
+#: src/stored/btape.c:2119
 #, c-format
 msgid ""
 "Block=%u file,blk=%u,%u blen=%u First rec FI=%s SessId=%u SessTim=%u Strm=%s "
 "rlen=%d\n"
 msgstr ""
 
-#: src/stored/btape.c:2139
+#: src/stored/btape.c:2141
 #, c-format
 msgid "Device status: %u. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2171
+#: src/stored/btape.c:2173
 #, c-format
 msgid ""
 "\n"
@@ -10815,81 +10891,81 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2189
+#: src/stored/btape.c:2191
 msgid ""
 "Do you want to run the simplified test (s) with one tape\n"
 "or the complete multiple tape (m) test: (s/m) "
 msgstr ""
 
-#: src/stored/btape.c:2192
+#: src/stored/btape.c:2194
 msgid "Simple test (single tape) selected.\n"
 msgstr ""
 
-#: src/stored/btape.c:2195
+#: src/stored/btape.c:2197
 msgid "Multiple tape test selected.\n"
 msgstr ""
 
-#: src/stored/btape.c:2237
+#: src/stored/btape.c:2239
 msgid "Wrote Start of Session label.\n"
 msgstr ""
 
-#: src/stored/btape.c:2256
+#: src/stored/btape.c:2258
 #, c-format
 msgid "%s Begin writing Bacula records to tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2258
+#: src/stored/btape.c:2260
 #, c-format
 msgid "%s Begin writing Bacula records to first tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2284
+#: src/stored/btape.c:2286
 #, fuzzy
 msgid "Flush block failed.\n"
 msgstr "Job Einrichtung Fehlgeschlagen.\n"
 
-#: src/stored/btape.c:2298
+#: src/stored/btape.c:2300
 #, c-format
 msgid "Wrote block=%u, file,blk=%u,%u VolBytes=%s rate=%sB/s\n"
 msgstr ""
 
-#: src/stored/btape.c:2309
+#: src/stored/btape.c:2311
 #, c-format
 msgid "%s Flush block, write EOF\n"
 msgstr ""
 
-#: src/stored/btape.c:2318
+#: src/stored/btape.c:2320
 msgid "Wrote 1000 blocks on second tape. Done.\n"
 msgstr ""
 
-#: src/stored/btape.c:2323
+#: src/stored/btape.c:2325
 msgid "Not OK\n"
 msgstr ""
 
-#: src/stored/btape.c:2347
+#: src/stored/btape.c:2349
 #, fuzzy
 msgid "Job canceled.\n"
 msgstr "%s Abgebrochen"
 
-#: src/stored/btape.c:2358
+#: src/stored/btape.c:2360
 msgid "Set ok=false after write_block_to_device.\n"
 msgstr ""
 
-#: src/stored/btape.c:2362
+#: src/stored/btape.c:2364
 msgid "Wrote End of Session label.\n"
 msgstr ""
 
-#: src/stored/btape.c:2386
+#: src/stored/btape.c:2388
 #, c-format
 msgid "Wrote state file last_block_num1=%d last_block_num2=%d\n"
 msgstr ""
 
-#: src/stored/btape.c:2390
+#: src/stored/btape.c:2392
 #, c-format
 msgid "Could not create state file: %s ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2401
+#: src/stored/btape.c:2403
 #, c-format
 msgid ""
 "\n"
@@ -10897,7 +10973,7 @@ msgid ""
 "%s Done filling tape at %d:%d. Now beginning re-read of tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2404
+#: src/stored/btape.c:2406
 #, c-format
 msgid ""
 "\n"
@@ -10905,23 +10981,23 @@ msgid ""
 "%s Done filling tapes at %d:%d. Now beginning re-read of first tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2410
+#: src/stored/btape.c:2412
 msgid "do_unfill failed.\n"
 msgstr ""
 
-#: src/stored/btape.c:2415
+#: src/stored/btape.c:2417
 #, c-format
 msgid "%s: Error during test.\n"
 msgstr ""
 
-#: src/stored/btape.c:2450
+#: src/stored/btape.c:2452
 msgid ""
 "\n"
 "The state file level has changed. You must redo\n"
 "the fill command.\n"
 msgstr ""
 
-#: src/stored/btape.c:2457
+#: src/stored/btape.c:2459
 #, c-format
 msgid ""
 "\n"
@@ -10929,95 +11005,95 @@ msgid ""
 "You must redo the fill command.\n"
 msgstr ""
 
-#: src/stored/btape.c:2523
+#: src/stored/btape.c:2525
 msgid "Mount first tape. Press enter when ready: "
 msgstr ""
 
-#: src/stored/btape.c:2539
+#: src/stored/btape.c:2541
 msgid "Rewinding.\n"
 msgstr ""
 
-#: src/stored/btape.c:2544
+#: src/stored/btape.c:2546
 #, c-format
 msgid "Reading the first 10000 records from %u:%u.\n"
 msgstr ""
 
-#: src/stored/btape.c:2548 src/stored/btape.c:2616
+#: src/stored/btape.c:2550 src/stored/btape.c:2618
 #, c-format
 msgid "Reposition from %u:%u to %u:%u\n"
 msgstr ""
 
-#: src/stored/btape.c:2551 src/stored/btape.c:2603 src/stored/btape.c:2619
+#: src/stored/btape.c:2553 src/stored/btape.c:2605 src/stored/btape.c:2621
 #, c-format
 msgid "Reposition error. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2554
+#: src/stored/btape.c:2556
 #, c-format
 msgid "Reading block %u.\n"
 msgstr ""
 
-#: src/stored/btape.c:2556 src/stored/btape.c:2608 src/stored/btape.c:2624
+#: src/stored/btape.c:2558 src/stored/btape.c:2610 src/stored/btape.c:2626
 #, c-format
 msgid "Error reading block: ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2561
+#: src/stored/btape.c:2563
 msgid ""
 "\n"
 "The last block on the tape matches. Test succeeded.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2564
+#: src/stored/btape.c:2566
 msgid ""
 "\n"
 "The last block of the first tape matches.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2588
+#: src/stored/btape.c:2590
 msgid "Mount second tape. Press enter when ready: "
 msgstr ""
 
-#: src/stored/btape.c:2601
+#: src/stored/btape.c:2603
 #, c-format
 msgid "Reposition from %u:%u to 0:1\n"
 msgstr ""
 
-#: src/stored/btape.c:2606 src/stored/btape.c:2622
+#: src/stored/btape.c:2608 src/stored/btape.c:2624
 #, c-format
 msgid "Reading block %d.\n"
 msgstr ""
 
-#: src/stored/btape.c:2612
+#: src/stored/btape.c:2614
 msgid ""
 "\n"
 "The first block on the second tape matches.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2628
+#: src/stored/btape.c:2630
 msgid ""
 "\n"
 "The last block on the second tape matches. Test succeeded.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2645
+#: src/stored/btape.c:2647
 #, c-format
 msgid "10000 records read now at %d:%d\n"
 msgstr ""
 
-#: src/stored/btape.c:2671 src/stored/btape.c:2682 src/stored/btape.c:2727
+#: src/stored/btape.c:2673 src/stored/btape.c:2684 src/stored/btape.c:2729
 msgid "Last block written"
 msgstr ""
 
-#: src/stored/btape.c:2673 src/stored/btape.c:2683
+#: src/stored/btape.c:2675 src/stored/btape.c:2685
 msgid "Block read back"
 msgstr ""
 
-#: src/stored/btape.c:2674
+#: src/stored/btape.c:2676
 #, c-format
 msgid ""
 "\n"
@@ -11025,7 +11101,7 @@ msgid ""
 "The blocks differ at byte %u\n"
 msgstr ""
 
-#: src/stored/btape.c:2675
+#: src/stored/btape.c:2677
 msgid ""
 "\n"
 "\n"
@@ -11035,172 +11111,172 @@ msgid ""
 "to write multi-tape Volumes.!!!!\n"
 msgstr ""
 
-#: src/stored/btape.c:2711
+#: src/stored/btape.c:2713
 #, c-format
 msgid "Last block at: %u:%u this_dev_block_num=%d\n"
 msgstr ""
 
-#: src/stored/btape.c:2725
+#: src/stored/btape.c:2727
 #, c-format
 msgid "Block not written: FileIndex=%u blk_block=%u Size=%u\n"
 msgstr ""
 
-#: src/stored/btape.c:2729
+#: src/stored/btape.c:2731
 msgid "Block not written"
 msgstr ""
 
-#: src/stored/btape.c:2744
+#: src/stored/btape.c:2746
 #, c-format
 msgid "End of tape %d:%d. Volume Bytes=%s. Write rate = %sB/s\n"
 msgstr ""
 
-#: src/stored/btape.c:2795
+#: src/stored/btape.c:2797
 msgid "Test writing blocks of 64512 bytes to tape.\n"
 msgstr ""
 
-#: src/stored/btape.c:2797
+#: src/stored/btape.c:2799
 msgid "How many blocks do you want to write? (1000): "
 msgstr ""
 
-#: src/stored/btape.c:2814
+#: src/stored/btape.c:2816
 #, c-format
 msgid "Begin writing %d Bacula blocks to tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2857
+#: src/stored/btape.c:2859
 #, c-format
 msgid "Begin writing raw blocks of %u bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:2888
+#: src/stored/btape.c:2890
 msgid "test autochanger"
 msgstr ""
 
-#: src/stored/btape.c:2889
+#: src/stored/btape.c:2891
 msgid "backspace file"
 msgstr ""
 
-#: src/stored/btape.c:2890
+#: src/stored/btape.c:2892
 msgid "backspace record"
 msgstr ""
 
-#: src/stored/btape.c:2891
+#: src/stored/btape.c:2893
 msgid "list device capabilities"
 msgstr ""
 
-#: src/stored/btape.c:2892
+#: src/stored/btape.c:2894
 msgid "clear tape errors"
 msgstr ""
 
-#: src/stored/btape.c:2893
+#: src/stored/btape.c:2895
 msgid "go to end of Bacula data for append"
 msgstr ""
 
-#: src/stored/btape.c:2894
+#: src/stored/btape.c:2896
 msgid "go to the physical end of medium"
 msgstr ""
 
-#: src/stored/btape.c:2895
+#: src/stored/btape.c:2897
 msgid "fill tape, write onto second volume"
 msgstr ""
 
-#: src/stored/btape.c:2896
+#: src/stored/btape.c:2898
 msgid "read filled tape"
 msgstr ""
 
-#: src/stored/btape.c:2897
+#: src/stored/btape.c:2899
 msgid "forward space a file"
 msgstr ""
 
-#: src/stored/btape.c:2898
+#: src/stored/btape.c:2900
 msgid "forward space a record"
 msgstr ""
 
-#: src/stored/btape.c:2899
+#: src/stored/btape.c:2901
 msgid "print this command"
 msgstr ""
 
-#: src/stored/btape.c:2900
+#: src/stored/btape.c:2902
 msgid "write a Bacula label to the tape"
 msgstr ""
 
-#: src/stored/btape.c:2901
+#: src/stored/btape.c:2903
 msgid "load a tape"
 msgstr ""
 
-#: src/stored/btape.c:2902
+#: src/stored/btape.c:2904
 msgid "quit btape"
 msgstr ""
 
-#: src/stored/btape.c:2903
+#: src/stored/btape.c:2905
 msgid "use write() to fill tape"
 msgstr ""
 
-#: src/stored/btape.c:2904
+#: src/stored/btape.c:2906
 msgid "read and print the Bacula tape label"
 msgstr ""
 
-#: src/stored/btape.c:2905
+#: src/stored/btape.c:2907
 msgid "test record handling functions"
 msgstr ""
 
-#: src/stored/btape.c:2906
+#: src/stored/btape.c:2908
 msgid "rewind the tape"
 msgstr ""
 
-#: src/stored/btape.c:2907
+#: src/stored/btape.c:2909
 msgid "read() tape block by block to EOT and report"
 msgstr ""
 
-#: src/stored/btape.c:2908
+#: src/stored/btape.c:2910
 msgid "Bacula read block by block to EOT and report"
 msgstr ""
 
-#: src/stored/btape.c:2909
+#: src/stored/btape.c:2911
 msgid ""
 "[file_size=n(GB)|nb_file=3|skip_zero|skip_random|skip_raw|skip_block] report "
 "drive speed"
 msgstr ""
 
-#: src/stored/btape.c:2910
+#: src/stored/btape.c:2912
 msgid "print tape status"
 msgstr ""
 
-#: src/stored/btape.c:2911
+#: src/stored/btape.c:2913
 msgid "General test Bacula tape functions"
 msgstr ""
 
-#: src/stored/btape.c:2912
+#: src/stored/btape.c:2914
 msgid "write an EOF on the tape"
 msgstr ""
 
-#: src/stored/btape.c:2913
+#: src/stored/btape.c:2915
 msgid "write a single Bacula block"
 msgstr ""
 
-#: src/stored/btape.c:2914
+#: src/stored/btape.c:2916
 msgid "read a single record"
 msgstr ""
 
-#: src/stored/btape.c:2915
+#: src/stored/btape.c:2917
 msgid "read a single Bacula block"
 msgstr ""
 
-#: src/stored/btape.c:2916
+#: src/stored/btape.c:2918
 msgid "quick fill command"
 msgstr ""
 
-#: src/stored/btape.c:2937
+#: src/stored/btape.c:2939
 #, c-format
 msgid "\"%s\" is an invalid command\n"
 msgstr ""
 
-#: src/stored/btape.c:2946
+#: src/stored/btape.c:2948
 #, c-format
 msgid "Interactive commands:\n"
 msgstr ""
 
-#: src/stored/btape.c:2957
+#: src/stored/btape.c:2959
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -11233,22 +11309,22 @@ msgstr ""
 "       -?          diese Meldung ausgeben.\n"
 "\n"
 
-#: src/stored/btape.c:3045
+#: src/stored/btape.c:3047
 #, c-format
 msgid "Mount second Volume on device %s and press return when ready: "
 msgstr ""
 
-#: src/stored/btape.c:3073
+#: src/stored/btape.c:3075
 #, c-format
 msgid "Mount blank Volume on device %s and press return when ready: "
 msgstr ""
 
-#: src/stored/btape.c:3093
+#: src/stored/btape.c:3095
 #, c-format
 msgid "End of Volume \"%s\" %d records.\n"
 msgstr ""
 
-#: src/stored/btape.c:3107
+#: src/stored/btape.c:3109
 #, c-format
 msgid "Read block=%u, VolBytes=%s rate=%sB/s\n"
 msgstr ""
@@ -11320,220 +11396,244 @@ msgstr ""
 msgid "JobId=%s, Job %s waiting to reserve a device.\n"
 msgstr "JobId %s, Job %s zum Abbruch markiert.\n"
 
-#: src/stored/block.c:89
+#: src/stored/block.c:102
 #, c-format
 msgid ""
 "Dump block %s %x: size=%d BlkNum=%d\n"
 "               Hdrcksum=%x cksum=%x\n"
 msgstr ""
 
-#: src/stored/block.c:102
+#: src/stored/block.c:115
 #, c-format
 msgid "   Rec: VId=%u VT=%u FI=%s Strm=%s len=%d p=%x\n"
 msgstr ""
 
-#: src/stored/block.c:158
+#: src/stored/block.c:171
 #, c-format
 msgid "%d block read errors not printed.\n"
 msgstr ""
 
-#: src/stored/block.c:248 src/stored/block.c:264 src/stored/block.c:274
+#: src/stored/block.c:264 src/stored/block.c:280 src/stored/block.c:290
 #, c-format
 msgid ""
 "Volume data error at %u:%u! Wanted ID: \"%s\", got \"%s\". Buffer "
 "discarded.\n"
 msgstr ""
 
-#: src/stored/block.c:289
+#: src/stored/block.c:305
 #, c-format
 msgid ""
 "Volume data error at %u:%u! Block length %u is insane (too large), probably "
 "due to a bad archive.\n"
 msgstr ""
 
-#: src/stored/block.c:315
+#: src/stored/block.c:331
 #, c-format
 msgid ""
 "Volume data error at %u:%u!\n"
 "Block checksum mismatch in block=%u len=%d: calc=%x blk=%x\n"
 msgstr ""
 
-#: src/stored/block.c:434
+#: src/stored/block.c:452
 #, c-format
 msgid "Cannot write block. Device at EOM. dev=%s\n"
 msgstr ""
 
-#: src/stored/block.c:439
+#: src/stored/block.c:458
 #, c-format
 msgid "Attempt to write on read-only Volume. dev=%s\n"
 msgstr ""
 
-#: src/stored/block.c:444
+#: src/stored/block.c:464
 #, c-format
 msgid "Attempt to write on closed device=%s\n"
 msgstr ""
 
-#: src/stored/block.c:491
+#: src/stored/block.c:513
 #, c-format
 msgid "User defined maximum volume capacity %s exceeded on device %s.\n"
 msgstr ""
 
-#: src/stored/block.c:506
+#: src/stored/block.c:528
 #, c-format
 msgid "Unable to write EOF. ERR=%s\n"
 msgstr ""
 
-#: src/stored/block.c:532 src/stored/block.c:557
+#: src/stored/block.c:554 src/stored/block.c:588
 msgid "Write block header zeroed.\n"
 msgstr ""
 
-#: src/stored/block.c:576
+#: src/stored/block.c:580
+#, c-format
+msgid "Block checksum changed during write: before=%ud after=%ud\n"
+msgstr ""
+
+#: src/stored/block.c:607
 #, c-format
 msgid "Write error at %u:%u on device %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/block.c:583
+#: src/stored/block.c:614
 #, c-format
 msgid "End of Volume \"%s\" at %u:%u on device %s. Write of %u bytes got %d.\n"
 msgstr ""
 
-#: src/stored/block.c:664 src/stored/block.c:670
+#: src/stored/block.c:695 src/stored/block.c:701
 #, c-format
 msgid "Backspace file at EOT failed. ERR=%s\n"
 msgstr ""
 
-#: src/stored/block.c:677
+#: src/stored/block.c:708
 #, c-format
 msgid "Backspace record at EOT failed. ERR=%s\n"
 msgstr ""
 
-#: src/stored/block.c:694
+#: src/stored/block.c:725
 #, c-format
 msgid "Re-read last block at EOT failed. ERR=%s"
 msgstr ""
 
-#: src/stored/block.c:704
+#: src/stored/block.c:735
 #, c-format
 msgid ""
 "Re-read of last block: block numbers differ by more than one.\n"
 "Probable tape misconfiguration and data loss. Read block=%u Want block=%u.\n"
 msgstr ""
 
-#: src/stored/block.c:709
+#: src/stored/block.c:740
 #, c-format
 msgid ""
 "Re-read of last block OK, but block numbers differ. Read block=%u Want block="
 "%u.\n"
 msgstr ""
 
-#: src/stored/block.c:713
+#: src/stored/block.c:744
 msgid "Re-read of last block succeeded.\n"
 msgstr ""
 
-#: src/stored/block.c:745
+#: src/stored/block.c:777
 #, c-format
 msgid ""
 "Error writing final EOF to tape. This Volume may not be readable.\n"
 "%s"
 msgstr ""
 
-#: src/stored/block.c:759
+#: src/stored/block.c:791
 #, c-format
 msgid ""
 "Error writing final part to DVD. This Volume may not be readable.\n"
 "%s"
 msgstr ""
 
-#: src/stored/block.c:861
+#: src/stored/block.c:801
+#, fuzzy
+msgid "Error sending Volume info to Director.\n"
+msgstr "Keine Volumes zum Wiederherstellen gefunden.\n"
+
+#: src/stored/block.c:896
 #, c-format
 msgid ""
 "Error while writing, current part number is less than the total number of "
 "parts (%d/%d, device=%s)\n"
 msgstr ""
 
-#: src/stored/block.c:869
+#: src/stored/block.c:904
 #, c-format
 msgid "Unable to open device next part %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/block.c:889
+#: src/stored/block.c:924
 #, c-format
 msgid ""
 "End of Volume \"%s\" at %u:%u on device %s (part_size=%s, free_space=%s, "
 "free_space_errno=%d, errmsg=%s).\n"
 msgstr ""
 
-#: src/stored/block.c:902
+#: src/stored/block.c:937
 #, c-format
 msgid ""
 "End of Volume \"%s\" at %u:%u on device %s (part_size=%s, free_space=%s, "
 "free_space_errno=%d).\n"
 msgstr ""
 
-#: src/stored/block.c:962
+#: src/stored/block.c:980
+#, fuzzy
+msgid "Job failed or canceled.\n"
+msgstr "JobId %s, Job %s zum Abbruch markiert.\n"
+
+#: src/stored/block.c:986
+msgid "Attempt to read past end of tape or file.\n"
+msgstr ""
+
+#: src/stored/block.c:995
+#, c-format
+msgid "Attempt to read closed device: fd=%d at file:blk %u:%u on device %s\n"
+msgstr ""
+
+#: src/stored/block.c:1005
 #, c-format
 msgid "Block buffer size looping problem on device %s\n"
 msgstr ""
 
-#: src/stored/block.c:974
+#: src/stored/block.c:1017
 #, c-format
 msgid "Unable to open device part=%d %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/block.c:1000
+#: src/stored/block.c:1044
 #, c-format
 msgid "Read error on fd=%d at file:blk %u:%u on device %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/block.c:1013
+#: src/stored/block.c:1057
 #, c-format
 msgid "Read zero bytes at %u:%u on device %s.\n"
 msgstr ""
 
-#: src/stored/block.c:1037
+#: src/stored/block.c:1081
 #, c-format
 msgid ""
 "Volume data error at %u:%u! Very short block of %d bytes on device %s "
 "discarded.\n"
 msgstr ""
 
-#: src/stored/block.c:1062
+#: src/stored/block.c:1107
 #, c-format
 msgid "Block length %u is greater than buffer %u. Attempting recovery.\n"
 msgstr ""
 
-#: src/stored/block.c:1081
+#: src/stored/block.c:1127
 #, c-format
 msgid "Setting block buffer size to %u bytes.\n"
 msgstr ""
 
-#: src/stored/block.c:1096
+#: src/stored/block.c:1142
 #, c-format
 msgid ""
 "Volume data error at %u:%u! Short block of %d bytes on device %s discarded.\n"
 msgstr ""
 
-#: src/lib/plugins.c:112
+#: src/lib/plugins.c:117
 #, fuzzy, c-format
 msgid "Failed to open Plugin directory %s: ERR=%s\n"
 msgstr "Kann Catalog DB Steuerdatei nicht �ffnen %s: ERR=%s\n"
 
-#: src/lib/plugins.c:129
+#: src/lib/plugins.c:134
 #, c-format
 msgid "Failed to find any plugins in %s\n"
 msgstr ""
 
-#: src/lib/plugins.c:163
+#: src/lib/plugins.c:168
 #, fuzzy, c-format
 msgid "dlopen plugin %s failed: ERR=%s\n"
 msgstr "Client id select fehlgeschlagen: ERR=%s\n"
 
-#: src/lib/plugins.c:174
+#: src/lib/plugins.c:179
 #, c-format
 msgid "Lookup of loadPlugin in plugin %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/plugins.c:183
+#: src/lib/plugins.c:188
 #, c-format
 msgid "Lookup of unloadPlugin in plugin %s failed: ERR=%s\n"
 msgstr ""
@@ -11703,56 +11803,72 @@ msgstr ""
 msgid "Damaged buffer:  %6u bytes allocated at line %d of %s %s\n"
 msgstr ""
 
-#: src/lib/rwlock.c:302
-msgid "rwl_writeunlock called too many times.\n"
+#: src/lib/sellist.c:69
+msgid "Negative numbers not permitted.\n"
+msgstr ""
+
+#: src/lib/sellist.c:106
+msgid "Selection items must be be greater than zero.\n"
+msgstr ""
+
+#: src/lib/sellist.c:110
+msgid "Selection item too large.\n"
+msgstr ""
+
+#: src/lib/sellist.c:167
+msgid "No input string given.\n"
 msgstr ""
 
 #: src/lib/rwlock.c:307
+msgid "rwl_writeunlock called too many times.\n"
+msgstr ""
+
+#: src/lib/rwlock.c:312
 msgid "rwl_writeunlock by non-owner.\n"
 msgstr ""
 
-#: src/lib/rwlock.c:432 src/lib/save/devlock.c:501 src/lib/devlock.c:501
+#: src/lib/rwlock.c:437 src/lib/save/devlock.c:501 src/lib/devlock.c:501
 #, c-format
 msgid "Thread %d found unchanged elements %d times\n"
 msgstr ""
 
-#: src/lib/rwlock.c:502 src/lib/save/devlock.c:571 src/lib/devlock.c:571
+#: src/lib/rwlock.c:507 src/lib/save/devlock.c:571 src/lib/devlock.c:571
 #, c-format
 msgid "%02d: interval %d, writes %d, reads %d\n"
 msgstr ""
 
-#: src/lib/rwlock.c:512 src/lib/save/devlock.c:581 src/lib/devlock.c:581
+#: src/lib/rwlock.c:517 src/lib/save/devlock.c:581 src/lib/devlock.c:581
 #, c-format
 msgid "data %02d: value %d, %d writes\n"
 msgstr ""
 
-#: src/lib/rwlock.c:517 src/lib/save/devlock.c:586 src/lib/devlock.c:586
+#: src/lib/rwlock.c:522 src/lib/save/devlock.c:586 src/lib/devlock.c:586
 #, c-format
 msgid "Total: %d thread writes, %d data writes\n"
 msgstr ""
 
-#: src/lib/rwlock.c:589 src/lib/save/devlock.c:658 src/lib/devlock.c:658
+#: src/lib/rwlock.c:594 src/lib/save/devlock.c:658 src/lib/devlock.c:658
 msgid "Try write lock"
 msgstr ""
 
-#: src/lib/rwlock.c:595 src/lib/save/devlock.c:664 src/lib/devlock.c:664
+#: src/lib/rwlock.c:600 src/lib/save/devlock.c:664 src/lib/devlock.c:664
 msgid "Try read lock"
 msgstr ""
 
-#: src/lib/rwlock.c:651 src/lib/save/devlock.c:720 src/lib/devlock.c:720
+#: src/lib/rwlock.c:656 src/lib/save/devlock.c:720 src/lib/devlock.c:720
 msgid "Create thread"
 msgstr ""
 
-#: src/lib/rwlock.c:661 src/lib/save/devlock.c:730 src/lib/devlock.c:730
+#: src/lib/rwlock.c:666 src/lib/save/devlock.c:730 src/lib/devlock.c:730
 msgid "Join thread"
 msgstr ""
 
-#: src/lib/rwlock.c:663 src/lib/save/devlock.c:732 src/lib/devlock.c:732
+#: src/lib/rwlock.c:668 src/lib/save/devlock.c:732 src/lib/devlock.c:732
 #, c-format
 msgid "%02d: interval %d, updates %d, r_collisions %d, w_collisions %d\n"
 msgstr ""
 
-#: src/lib/rwlock.c:675 src/lib/save/devlock.c:744 src/lib/devlock.c:744
+#: src/lib/rwlock.c:680 src/lib/save/devlock.c:744 src/lib/devlock.c:744
 #, c-format
 msgid "data %02d: value %d, %d updates\n"
 msgstr ""
@@ -11766,129 +11882,124 @@ msgstr ""
 msgid "bget_msg: unknown signal %d\n"
 msgstr "unbekannt"
 
-#: src/lib/bsock.c:126
+#: src/lib/bsock.c:131
 #, fuzzy, c-format
 msgid ""
 "Could not connect to %s on %s:%d. ERR=%s\n"
 "Retrying ...\n"
 msgstr "Konnte FileSet \"%s\" Eintrag nicht erzeugen. ERR=%s\n"
 
-#: src/lib/bsock.c:132
+#: src/lib/bsock.c:137
 #, fuzzy, c-format
 msgid "Unable to connect to %s on %s:%d. ERR=%s\n"
 msgstr "Konnte Job Eintrag nicht holen. ERR=%s\n"
 
-#: src/lib/bsock.c:202
+#: src/lib/bsock.c:207
 #, fuzzy, c-format
-msgid "gethostbyname() for host \"%s\" failed: ERR=%s\n"
+msgid "bnet_host2ipaddrs() for host \"%s\" failed: ERR=%s\n"
 msgstr "Erzeugung des db Filename Eintrags %s fehlgeschlagen. ERR=%s\n"
 
-#: src/lib/bsock.c:222
+#: src/lib/bsock.c:260
 #, fuzzy, c-format
 msgid "Socket open error. proto=%d port=%d. ERR=%s\n"
 msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/lib/bsock.c:233
+#: src/lib/bsock.c:273
 #, fuzzy, c-format
 msgid "Source address bind error. proto=%d. ERR=%s\n"
 msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/lib/bsock.c:244 src/lib/bsock.c:280 src/lib/bnet_server.c:201
+#: src/lib/bsock.c:284 src/lib/bsock.c:320 src/lib/bnet_server.c:218
 #, c-format
 msgid "Cannot set SO_KEEPALIVE on socket: %s\n"
 msgstr ""
 
-#: src/lib/bsock.c:252
+#: src/lib/bsock.c:292
 #, c-format
-msgid "Cannot set SO_KEEPIDLE on socket: %s\n"
+msgid "Cannot set TCP_KEEPIDLE on socket: %s\n"
 msgstr ""
 
-#: src/lib/bsock.c:299
+#: src/lib/bsock.c:339
 #, fuzzy, c-format
 msgid "Could not init bsock mutex. ERR=%s\n"
 msgstr "Konnte job queue nicht initialiseren: ERR=%s\n"
 
-#: src/lib/bsock.c:334
+#: src/lib/bsock.c:374
 #, c-format
 msgid "Socket has errors=%d on call to %s:%s:%d\n"
 msgstr ""
 
-#: src/lib/bsock.c:341
+#: src/lib/bsock.c:381
 #, c-format
 msgid "Socket is terminated=%d on call to %s:%s:%d\n"
 msgstr ""
 
-#: src/lib/bsock.c:349
+#: src/lib/bsock.c:389
 #, c-format
 msgid "Socket has insane msglen=%d on call to %s:%s:%d\n"
 msgstr ""
 
-#: src/lib/bsock.c:387
+#: src/lib/bsock.c:427
 #, fuzzy, c-format
 msgid "Write error sending %d bytes to %s:%s:%d: ERR=%s\n"
 msgstr ""
 "Fehler beim senden des Kommandos Hello an File daemon auf \"%s:%d\". ERR=%s\n"
 
-#: src/lib/bsock.c:393
+#: src/lib/bsock.c:433
 #, c-format
 msgid "Wrote %d bytes to %s:%s:%d, but only %d accepted.\n"
 msgstr ""
 
-#: src/lib/bsock.c:482 src/lib/bsock.c:543
+#: src/lib/bsock.c:522 src/lib/bsock.c:583
 #, c-format
 msgid "Read expected %d got %d from %s:%s:%d\n"
 msgstr ""
 
-#: src/lib/bsock.c:502
+#: src/lib/bsock.c:542
 #, c-format
 msgid "Packet size too big from \"%s:%s:%d. Terminating connection.\n"
 msgstr ""
 
-#: src/lib/bsock.c:532
+#: src/lib/bsock.c:572
 #, fuzzy, c-format
 msgid "Read error from %s:%s:%d: ERR=%s\n"
 msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/lib/bsock.c:623
+#: src/lib/bsock.c:663
 #, fuzzy
 msgid "fread attr spool I/O error.\n"
 msgstr "Regex �bersetzungsfehler. ERR=%s\n"
 
-#: src/lib/bsock.c:684
+#: src/lib/bsock.c:724
 msgid "Could not malloc BSOCK data buffer\n"
 msgstr ""
 
-#: src/lib/bsock.c:702 src/lib/bsock.c:726
+#: src/lib/bsock.c:742 src/lib/bsock.c:761
 #, c-format
 msgid "sockopt error: %s\n"
 msgstr ""
 
-#: src/lib/bsock.c:708 src/lib/bsock.c:732
+#: src/lib/bsock.c:748 src/lib/bsock.c:767
 #, c-format
 msgid "Warning network buffer = %d bytes not max size.\n"
 msgstr ""
 
-#: src/lib/bsock.c:712 src/lib/bsock.c:736
-#, c-format
-msgid "Network buffer size %d not multiple of tape block size.\n"
-msgstr ""
-
-#: src/lib/bsock.c:757 src/lib/bsock.c:791
+#: src/lib/bsock.c:787 src/lib/bsock.c:821
 #, fuzzy, c-format
 msgid "fcntl F_GETFL error. ERR=%s\n"
 msgstr "Regex �bersetzungsfehler. ERR=%s\n"
 
-#: src/lib/bsock.c:763 src/lib/bsock.c:797 src/lib/bsock.c:829
+#: src/lib/bsock.c:793 src/lib/bsock.c:827 src/lib/bsock.c:859
 #, fuzzy, c-format
 msgid "fcntl F_SETFL error. ERR=%s\n"
 msgstr "Regex �bersetzungsfehler. ERR=%s\n"
 
-#: src/lib/bsock.c:1002 src/qt-console/bcomm/dircomm_auth.cpp:112
+#: src/lib/bsock.c:1032 src/qt-console/bcomm/dircomm_auth.cpp:112
 #, fuzzy, c-format
 msgid "Director authorization problem at \"%s:%d\"\n"
 msgstr "Authorisationsproblem: FD an \"%s:%d\" erfordert TLS.\n"
 
-#: src/lib/bsock.c:1009 src/qt-console/bcomm/dircomm_auth.cpp:119
+#: src/lib/bsock.c:1039 src/qt-console/bcomm/dircomm_auth.cpp:119
 #, fuzzy, c-format
 msgid ""
 "Authorization problem: Remote server at \"%s:%d\" did not advertise required "
@@ -11897,31 +12008,31 @@ msgstr ""
 "Authorisationsproblem: Entfernter Server hat ben�tigte TLS Unterst�tzung "
 "nicht angeboten.\n"
 
-#: src/lib/bsock.c:1017 src/qt-console/bcomm/dircomm_auth.cpp:127
+#: src/lib/bsock.c:1047 src/qt-console/bcomm/dircomm_auth.cpp:127
 #, fuzzy, c-format
 msgid ""
 "Authorization problem with Director at \"%s:%d\": Remote server requires "
 "TLS.\n"
 msgstr "Authorisationsproblem: Enfernter Server erfordert TLS.\n"
 
-#: src/lib/bsock.c:1029 src/qt-console/bcomm/dircomm_auth.cpp:138
+#: src/lib/bsock.c:1059 src/qt-console/bcomm/dircomm_auth.cpp:138
 #, fuzzy, c-format
 msgid "TLS negotiation failed with Director at \"%s:%d\"\n"
 msgstr "TLS Aushandlung fehlgeschlagen mit SD an \"%s:%d\"\n"
 
-#: src/lib/bsock.c:1039 src/qt-console/bcomm/dircomm_auth.cpp:150
+#: src/lib/bsock.c:1069 src/qt-console/bcomm/dircomm_auth.cpp:150
 #, c-format
 msgid ""
 "Bad response to Hello command: ERR=%s\n"
 "The Director at \"%s:%d\" is probably not running.\n"
 msgstr ""
 
-#: src/lib/bsock.c:1048 src/qt-console/bcomm/dircomm_auth.cpp:159
+#: src/lib/bsock.c:1078 src/qt-console/bcomm/dircomm_auth.cpp:159
 #, fuzzy, c-format
 msgid "Director at \"%s:%d\" rejected Hello command\n"
 msgstr "File daemon auf \"%s:%d\" hat Hello Kommando abgelehnt\n"
 
-#: src/lib/bsock.c:1058 src/qt-console/bcomm/dircomm_auth.cpp:171
+#: src/lib/bsock.c:1088 src/qt-console/bcomm/dircomm_auth.cpp:171
 #, fuzzy, c-format
 msgid ""
 "Authorization problem with Director at \"%s:%d\"\n"
@@ -11937,40 +12048,40 @@ msgstr ""
 "F�r Hilfe bitte unter http://www.bacula.org/rel-manual/faq."
 "html#AuthorizationErrors nachsehen.\n"
 
-#: src/lib/message.c:340 src/lib/message.c:350
+#: src/lib/message.c:362 src/lib/message.c:372
 #, c-format
 msgid "Could not open console message file %s: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:355
+#: src/lib/message.c:377
 #, c-format
 msgid "Could not get con mutex: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:460
+#: src/lib/message.c:482
 msgid "Bacula Message"
 msgstr ""
 
-#: src/lib/message.c:464
+#: src/lib/message.c:486
 #, c-format
 msgid "open mail pipe %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:532
+#: src/lib/message.c:577
 msgid "open mail pipe failed.\n"
 msgstr ""
 
-#: src/lib/message.c:544
+#: src/lib/message.c:590
 #, c-format
 msgid "close error: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:555
+#: src/lib/message.c:601
 #, c-format
 msgid "Mail prog: %s"
 msgstr ""
 
-#: src/lib/message.c:564
+#: src/lib/message.c:610
 #, c-format
 msgid ""
 "Mail program terminated in error.\n"
@@ -11978,12 +12089,16 @@ msgid ""
 "ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:662
+#: src/lib/message.c:713
 #, c-format
 msgid "fopen %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:835
+#: src/lib/message.c:835 src/lib/message.c:838
+msgid "Msg delivery error: Unable to store data in database.\n"
+msgstr ""
+
+#: src/lib/message.c:890
 #, c-format
 msgid ""
 "Msg delivery error: Operator mail program terminated in error.\n"
@@ -11991,126 +12106,126 @@ msgid ""
 "ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:856
+#: src/lib/message.c:911
 #, fuzzy, c-format
 msgid "Msg delivery error: fopen %s failed: ERR=%s\n"
 msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/lib/message.c:1175
+#: src/lib/message.c:1230
 #, c-format
 msgid "%s: ABORTING due to ERROR in %s:%d\n"
 msgstr ""
 
-#: src/lib/message.c:1179
+#: src/lib/message.c:1234
 #, c-format
 msgid "%s: ERROR TERMINATION at %s:%d\n"
 msgstr ""
 
-#: src/lib/message.c:1184
+#: src/lib/message.c:1239
 #, c-format
 msgid "%s: Fatal Error because: "
 msgstr ""
 
-#: src/lib/message.c:1186
+#: src/lib/message.c:1241
 #, c-format
 msgid "%s: Fatal Error at %s:%d because:\n"
 msgstr ""
 
-#: src/lib/message.c:1190
+#: src/lib/message.c:1245
 #, c-format
 msgid "%s: ERROR: "
 msgstr ""
 
-#: src/lib/message.c:1192
+#: src/lib/message.c:1247
 #, c-format
 msgid "%s: ERROR in %s:%d "
 msgstr ""
 
-#: src/lib/message.c:1195
+#: src/lib/message.c:1250
 #, c-format
 msgid "%s: Warning: "
 msgstr ""
 
-#: src/lib/message.c:1198
+#: src/lib/message.c:1253
 #, c-format
 msgid "%s: Security violation: "
 msgstr ""
 
-#: src/lib/message.c:1286
+#: src/lib/message.c:1341
 #, c-format
 msgid "%s ABORTING due to ERROR\n"
 msgstr ""
 
-#: src/lib/message.c:1289
+#: src/lib/message.c:1344
 #, c-format
 msgid "%s ERROR TERMINATION\n"
 msgstr ""
 
-#: src/lib/message.c:1292
+#: src/lib/message.c:1347
 #, c-format
 msgid "%s JobId %u: Fatal error: "
 msgstr ""
 
-#: src/lib/message.c:1301
+#: src/lib/message.c:1356
 #, c-format
 msgid "%s JobId %u: Error: "
 msgstr ""
 
-#: src/lib/message.c:1307
+#: src/lib/message.c:1362
 #, c-format
 msgid "%s JobId %u: Warning: "
 msgstr ""
 
-#: src/lib/message.c:1313
+#: src/lib/message.c:1368
 #, c-format
 msgid "%s JobId %u: Security violation: "
 msgstr ""
 
-#: src/lib/bnet_server.c:108
+#: src/lib/bnet_server.c:125
 #, c-format
 msgid "Cannot open stream socket. ERR=%s. Current %s All %s\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:121
+#: src/lib/bnet_server.c:138
 #, c-format
 msgid "Cannot set SO_REUSEADDR on socket: %s\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:130
+#: src/lib/bnet_server.c:147
 #, c-format
 msgid "Cannot bind port %d: ERR=%s: Retrying ...\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:135
+#: src/lib/bnet_server.c:152
 #, c-format
 msgid "Cannot bind port %d: ERR=%s.\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:146
+#: src/lib/bnet_server.c:163
 #, c-format
 msgid "Could not init client queue: ERR=%s\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:165
+#: src/lib/bnet_server.c:182
 #, c-format
 msgid "Error in select: %s\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:186
+#: src/lib/bnet_server.c:203
 #, c-format
 msgid "Connection from %s:%d refused by hosts.access\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:212
+#: src/lib/bnet_server.c:229
 msgid "Could not create client BSOCK.\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:219
+#: src/lib/bnet_server.c:236
 #, c-format
 msgid "Could not add job to client queue: ERR=%s\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:236
+#: src/lib/bnet_server.c:253
 #, c-format
 msgid "Could not destroy client queue: ERR=%s\n"
 msgstr ""
@@ -12573,7 +12688,7 @@ msgstr ""
 msgid "Truncate"
 msgstr ""
 
-#: src/lib/util.c:409 src/filed/restore.c:1158
+#: src/lib/util.c:409 src/filed/restore.c:1164
 msgid "None"
 msgstr ""
 
@@ -12624,7 +12739,7 @@ msgstr ""
 
 #: src/lib/util.c:753 src/lib/util.c:763 src/lib/util.c:771 src/lib/util.c:778
 #: src/lib/util.c:785 src/lib/util.c:799 src/lib/util.c:809 src/lib/util.c:822
-#: src/lib/util.c:833 src/filed/restore.c:1174
+#: src/lib/util.c:833 src/filed/restore.c:1180
 msgid "*none*"
 msgstr ""
 
@@ -12650,7 +12765,7 @@ msgstr ""
 msgid "writeunlock by non-owner.\n"
 msgstr ""
 
-#: src/lib/daemon.c:64
+#: src/lib/daemon.c:65
 #, fuzzy, c-format
 msgid "Cannot fork to become daemon: ERR=%s\n"
 msgstr "Kann var context nicht erzeugen: ERR=%s\n"
@@ -12842,20 +12957,20 @@ msgstr ""
 msgid "pthread_setspecific failed: ERR=%s\n"
 msgstr "Media id select fehlgeschlagen: ERR=%s\n"
 
-#: src/lib/jcr.c:1097
+#: src/lib/jcr.c:1103
 #, c-format
 msgid ""
 "Watchdog sending kill after %d secs to thread stalled reading Storage "
 "daemon.\n"
 msgstr ""
 
-#: src/lib/jcr.c:1109
+#: src/lib/jcr.c:1115
 #, c-format
 msgid ""
 "Watchdog sending kill after %d secs to thread stalled reading File daemon.\n"
 msgstr ""
 
-#: src/lib/jcr.c:1121
+#: src/lib/jcr.c:1127
 #, c-format
 msgid ""
 "Watchdog sending kill after %d secs to thread stalled reading Director.\n"
@@ -13075,31 +13190,31 @@ msgstr ""
 msgid "TLS enable but not configured.\n"
 msgstr ""
 
-#: src/lib/bnet.c:423
+#: src/lib/bnet.c:481
 msgid "No problem."
 msgstr ""
 
-#: src/lib/bnet.c:426
+#: src/lib/bnet.c:484
 msgid "Authoritative answer for host not found."
 msgstr ""
 
-#: src/lib/bnet.c:429
+#: src/lib/bnet.c:487
 msgid "Non-authoritative for host not found, or ServerFail."
 msgstr ""
 
-#: src/lib/bnet.c:432
+#: src/lib/bnet.c:490
 msgid "Non-recoverable errors, FORMERR, REFUSED, or NOTIMP."
 msgstr ""
 
-#: src/lib/bnet.c:435
+#: src/lib/bnet.c:493
 msgid "Valid name, no data record of resquested type."
 msgstr ""
 
-#: src/lib/bnet.c:438
+#: src/lib/bnet.c:496
 msgid "Unknown error."
 msgstr ""
 
-#: src/lib/bnet.c:697
+#: src/lib/bnet.c:755
 #, c-format
 msgid "Unknown sig %d"
 msgstr ""
@@ -13108,247 +13223,270 @@ msgstr ""
 msgid "Invalid signal number"
 msgstr ""
 
-#: src/lib/signal.c:151 src/lib/signal.c:153
+#: src/lib/signal.c:152 src/lib/signal.c:154
 #, c-format
 msgid "Bacula interrupted by signal %d: %s\n"
 msgstr ""
 
-#: src/lib/signal.c:166
+#: src/lib/signal.c:167
 #, c-format
 msgid "Kaboom! %s, %s got signal %d - %s. Attempting traceback.\n"
 msgstr ""
 
-#: src/lib/signal.c:168
+#: src/lib/signal.c:169
 #, c-format
 msgid "Kaboom! exepath=%s\n"
 msgstr ""
 
-#: src/lib/signal.c:202
+#: src/lib/signal.c:210
 #, c-format
 msgid "Fork error: ERR=%s\n"
 msgstr ""
 
-#: src/lib/signal.c:210
+#: src/lib/signal.c:218
 #, c-format
 msgid "Calling: %s %s %s %s\n"
 msgstr ""
 
-#: src/lib/signal.c:214
+#: src/lib/signal.c:222
 #, c-format
 msgid "execv: %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/signal.c:235
+#: src/lib/signal.c:244
 #, c-format
-msgid "It looks like the traceback worked ...\n"
+msgid "It looks like the traceback worked...\n"
 msgstr ""
 
-#: src/lib/signal.c:289
+#: src/lib/signal.c:246
+#, c-format
+msgid "The btraceback call returned %d\n"
+msgstr ""
+
+#: src/lib/signal.c:306
 #, c-format
 msgid "BA_NSIG too small (%d) should be (%d)\n"
 msgstr ""
 
-#: src/lib/signal.c:295
+#: src/lib/signal.c:312
 msgid "UNKNOWN SIGNAL"
 msgstr ""
 
-#: src/lib/signal.c:296
+#: src/lib/signal.c:313
 msgid "Hangup"
 msgstr ""
 
-#: src/lib/signal.c:297
+#: src/lib/signal.c:314
 msgid "Interrupt"
 msgstr ""
 
-#: src/lib/signal.c:298
+#: src/lib/signal.c:315
 msgid "Quit"
 msgstr ""
 
-#: src/lib/signal.c:299
+#: src/lib/signal.c:316
 msgid "Illegal instruction"
 msgstr ""
 
-#: src/lib/signal.c:300
+#: src/lib/signal.c:317
 msgid "Trace/Breakpoint trap"
 msgstr ""
 
-#: src/lib/signal.c:301
+#: src/lib/signal.c:318
 msgid "Abort"
 msgstr ""
 
-#: src/lib/signal.c:303
+#: src/lib/signal.c:320
 msgid "EMT instruction (Emulation Trap)"
 msgstr ""
 
-#: src/lib/signal.c:306
+#: src/lib/signal.c:323
 msgid "IOT trap"
 msgstr ""
 
-#: src/lib/signal.c:308
+#: src/lib/signal.c:325
 msgid "BUS error"
 msgstr ""
 
-#: src/lib/signal.c:309
+#: src/lib/signal.c:326
 msgid "Floating-point exception"
 msgstr ""
 
-#: src/lib/signal.c:310
+#: src/lib/signal.c:327
 msgid "Kill, unblockable"
 msgstr ""
 
-#: src/lib/signal.c:311
+#: src/lib/signal.c:328
 msgid "User-defined signal 1"
 msgstr ""
 
-#: src/lib/signal.c:312
+#: src/lib/signal.c:329
 msgid "Segmentation violation"
 msgstr ""
 
-#: src/lib/signal.c:313
+#: src/lib/signal.c:330
 msgid "User-defined signal 2"
 msgstr ""
 
-#: src/lib/signal.c:314
+#: src/lib/signal.c:331
 msgid "Broken pipe"
 msgstr ""
 
-#: src/lib/signal.c:315
+#: src/lib/signal.c:332
 msgid "Alarm clock"
 msgstr ""
 
-#: src/lib/signal.c:316
+#: src/lib/signal.c:333
 msgid "Termination"
 msgstr ""
 
-#: src/lib/signal.c:318
+#: src/lib/signal.c:335
 msgid "Stack fault"
 msgstr ""
 
-#: src/lib/signal.c:320
+#: src/lib/signal.c:337
 msgid "Child status has changed"
 msgstr ""
 
-#: src/lib/signal.c:321
+#: src/lib/signal.c:338
 msgid "Continue"
 msgstr ""
 
-#: src/lib/signal.c:322
+#: src/lib/signal.c:339
 msgid "Stop, unblockable"
 msgstr ""
 
-#: src/lib/signal.c:323
+#: src/lib/signal.c:340
 msgid "Keyboard stop"
 msgstr ""
 
-#: src/lib/signal.c:324
+#: src/lib/signal.c:341
 msgid "Background read from tty"
 msgstr ""
 
-#: src/lib/signal.c:325
+#: src/lib/signal.c:342
 msgid "Background write to tty"
 msgstr ""
 
-#: src/lib/signal.c:326
+#: src/lib/signal.c:343
 msgid "Urgent condition on socket"
 msgstr ""
 
-#: src/lib/signal.c:327
+#: src/lib/signal.c:344
 msgid "CPU limit exceeded"
 msgstr ""
 
-#: src/lib/signal.c:328
+#: src/lib/signal.c:345
 msgid "File size limit exceeded"
 msgstr ""
 
-#: src/lib/signal.c:329
+#: src/lib/signal.c:346
 msgid "Virtual alarm clock"
 msgstr ""
 
-#: src/lib/signal.c:330
+#: src/lib/signal.c:347
 msgid "Profiling alarm clock"
 msgstr ""
 
-#: src/lib/signal.c:331
+#: src/lib/signal.c:348
 msgid "Window size change"
 msgstr ""
 
-#: src/lib/signal.c:332
+#: src/lib/signal.c:349
 msgid "I/O now possible"
 msgstr ""
 
-#: src/lib/signal.c:334
+#: src/lib/signal.c:351
 msgid "Power failure restart"
 msgstr ""
 
-#: src/lib/signal.c:337
+#: src/lib/signal.c:354
 msgid "No runnable lwp"
 msgstr ""
 
-#: src/lib/signal.c:340
+#: src/lib/signal.c:357
 msgid "SIGLWP special signal used by thread library"
 msgstr ""
 
-#: src/lib/signal.c:343
+#: src/lib/signal.c:360
 msgid "Checkpoint Freeze"
 msgstr ""
 
-#: src/lib/signal.c:346
+#: src/lib/signal.c:363
 msgid "Checkpoint Thaw"
 msgstr ""
 
-#: src/lib/signal.c:349
+#: src/lib/signal.c:366
 msgid "Thread Cancellation"
 msgstr ""
 
-#: src/lib/signal.c:352
+#: src/lib/signal.c:369
 msgid "Resource Lost (e.g. record-lock lost)"
 msgstr ""
 
+#: src/lib/ini.c:106 src/lib/ini.c:118
+#, c-format
+msgid ""
+"Config file error: %s\n"
+"            : Line %d, col %d of file %s\n"
+"%s\n"
+msgstr ""
+
+#: src/lib/ini.c:308 src/lib/ini.c:383
+#, fuzzy, c-format
+msgid "Cannot open config file %s: %s\n"
+msgstr "Kann inkludierte Datei nicht �ffnen: %s. ERR=%s\n"
+
 #: src/lib/btimers.c:265
 msgid "stop_btimer called with NULL btimer_id\n"
 msgstr ""
 
-#: src/lib/bsys.c:215 src/lib/bsys.c:232 src/lib/bsys.c:256 src/lib/bsys.c:269
+#: src/lib/bsys.c:72
+#, fuzzy, c-format
+msgid "safe_unlink could not compile regex pattern \"%s\" ERR=%s\n"
+msgstr "Konnte regex pattern \"%s\" nicht kompilieren ERR=%s\n"
+
+#: src/lib/bsys.c:261 src/lib/bsys.c:278 src/lib/bsys.c:302 src/lib/bsys.c:315
 #, c-format
 msgid "Out of memory: ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsys.c:311
+#: src/lib/bsys.c:357
 msgid "Buffer overflow.\n"
 msgstr ""
 
-#: src/lib/bsys.c:377
+#: src/lib/bsys.c:423
 msgid "Bad errno"
 msgstr ""
 
-#: src/lib/bsys.c:392
+#: src/lib/bsys.c:438
 #, c-format
 msgid "Memset for %d bytes at %s:%d\n"
 msgstr ""
 
-#: src/lib/bsys.c:422
+#: src/lib/bsys.c:468
 #, c-format
 msgid "Cannot open pid file. %s ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsys.c:437
+#: src/lib/bsys.c:483
 #, c-format
 msgid ""
 "%s is already running. pid=%d\n"
 "Check file %s\n"
 msgstr ""
 
-#: src/lib/bsys.c:451
+#: src/lib/bsys.c:497
 #, c-format
 msgid "Could not open pid file. %s ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsys.c:562
+#: src/lib/bsys.c:608
 #, c-format
 msgid "Could not create state file. %s ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsys.c:581
+#: src/lib/bsys.c:627
 #, c-format
 msgid "Write final hdr error: ERR=%s\n"
 msgstr ""
@@ -13396,98 +13534,98 @@ msgstr ""
 msgid "Close of NULL file\n"
 msgstr ""
 
-#: src/lib/lex.c:224
+#: src/lib/lex.c:226
 msgid ""
 "get_char: called after EOF. You may have a open double quote without the "
 "closing double quote.\n"
 msgstr ""
 
-#: src/lib/lex.c:267
+#: src/lib/lex.c:268
 #, c-format
 msgid "Config token too long, file: %s, line %d, begins at line %d\n"
 msgstr ""
 
-#: src/lib/lex.c:291
+#: src/lib/lex.c:292
 msgid "none"
 msgstr ""
 
-#: src/lib/lex.c:292
+#: src/lib/lex.c:293
 msgid "comment"
 msgstr ""
 
-#: src/lib/lex.c:293
+#: src/lib/lex.c:294
 msgid "number"
 msgstr ""
 
-#: src/lib/lex.c:294
+#: src/lib/lex.c:295
 msgid "ip_addr"
 msgstr ""
 
-#: src/lib/lex.c:295
+#: src/lib/lex.c:296
 msgid "identifier"
 msgstr ""
 
-#: src/lib/lex.c:296
+#: src/lib/lex.c:297
 msgid "string"
 msgstr ""
 
-#: src/lib/lex.c:297
+#: src/lib/lex.c:298
 msgid "quoted_string"
 msgstr ""
 
-#: src/lib/lex.c:298
+#: src/lib/lex.c:299
 msgid "include"
 msgstr ""
 
-#: src/lib/lex.c:299
+#: src/lib/lex.c:300
 msgid "include_quoted_string"
 msgstr ""
 
-#: src/lib/lex.c:300
+#: src/lib/lex.c:301
 msgid "UTF-8 Byte Order Mark"
 msgstr ""
 
-#: src/lib/lex.c:301
+#: src/lib/lex.c:302
 msgid "UTF-16le Byte Order Mark"
 msgstr ""
 
-#: src/lib/lex.c:339 src/lib/lex.c:345 src/lib/lex.c:356 src/lib/lex.c:362
+#: src/lib/lex.c:340 src/lib/lex.c:346 src/lib/lex.c:357 src/lib/lex.c:363
 #, c-format
 msgid "expected a positive integer number, got: %s"
 msgstr ""
 
-#: src/lib/lex.c:478
+#: src/lib/lex.c:479
 msgid ""
 "This config file appears to be in an unsupported Unicode format (UTF-16be). "
 "Please resave as UTF-8\n"
 msgstr ""
 
-#: src/lib/lex.c:617 src/lib/lex.c:645
+#: src/lib/lex.c:625 src/lib/lex.c:653
 #, c-format
 msgid "Cannot open included config file %s: %s\n"
 msgstr ""
 
-#: src/lib/lex.c:704 src/lib/lex.c:761
+#: src/lib/lex.c:712 src/lib/lex.c:769
 #, c-format
 msgid "expected an integer or a range, got %s: %s"
 msgstr ""
 
-#: src/lib/lex.c:718 src/lib/lex.c:726 src/lib/lex.c:737 src/lib/lex.c:745
+#: src/lib/lex.c:726 src/lib/lex.c:734 src/lib/lex.c:745 src/lib/lex.c:753
 #, c-format
 msgid "expected an integer number, got %s: %s"
 msgstr ""
 
-#: src/lib/lex.c:775
+#: src/lib/lex.c:783
 #, c-format
 msgid "expected a name, got %s: %s"
 msgstr ""
 
-#: src/lib/lex.c:779
+#: src/lib/lex.c:787
 #, c-format
 msgid "name %s length %d too long, max is %d\n"
 msgstr ""
 
-#: src/lib/lex.c:787
+#: src/lib/lex.c:795
 #, c-format
 msgid "expected a string, got %s: %s"
 msgstr ""
@@ -13922,7 +14060,7 @@ msgstr ""
 msgid "bpkt already open fid=%d\n"
 msgstr ""
 
-#: src/findlib/create_file.c:226 src/filed/fd_plugins.c:890
+#: src/findlib/create_file.c:226 src/filed/fd_plugins.c:1009
 #, c-format
 msgid "Could not create %s: ERR=%s\n"
 msgstr ""
@@ -14166,86 +14304,98 @@ msgid "FreeBSD Specific NFSv4/ZFS ACL attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:191
-msgid "IRIX Specific Extended attribs"
+msgid "GNU Hurd Specific Default ACL attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:193
-msgid "TRU64 Specific Extended attribs"
+msgid "GNU Hurd Specific Access ACL attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:195
-msgid "AIX Specific Extended attribs"
+msgid "GNU Hurd Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:197
-msgid "OpenBSD Specific Extended attribs"
+msgid "IRIX Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:199
-msgid "Solaris Specific Extensible attribs or System Extended attribs"
+msgid "TRU64 Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:201
-msgid "Solaris Specific Extended attribs"
+msgid "AIX Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:203
-msgid "Darwin Specific Extended attribs"
+msgid "OpenBSD Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:205
-msgid "FreeBSD Specific Extended attribs"
+msgid "Solaris Specific Extensible attribs or System Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:207
-msgid "Linux Specific Extended attribs"
+msgid "Solaris Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:209
+msgid "Darwin Specific Extended attribs"
+msgstr ""
+
+#: src/findlib/bfile.c:211
+msgid "FreeBSD Specific Extended attribs"
+msgstr ""
+
+#: src/findlib/bfile.c:213
+msgid "Linux Specific Extended attribs"
+msgstr ""
+
+#: src/findlib/bfile.c:215
 msgid "NetBSD Specific Extended attribs"
 msgstr ""
 
-#: src/findlib/find.c:226
+#: src/findlib/find.c:237
 #, fuzzy, c-format
 msgid "Plugin: \"%s\" not found.\n"
 msgstr "Pool Ressource \"%s\" nicht gefunden.\n"
 
-#: src/findlib/match.c:210 src/tools/testfind.c:654 src/filed/job.c:1456
+#: src/findlib/match.c:210 src/tools/testfind.c:654 src/filed/job.c:1460
 #, c-format
 msgid "Unknown include/exclude option: %c\n"
 msgstr ""
 
-#: src/findlib/find_one.c:223
+#: src/findlib/find_one.c:227
 #, c-format
 msgid "     NODUMP flag set - will not process %s\n"
 msgstr ""
 
-#: src/findlib/find_one.c:244
+#: src/findlib/find_one.c:248
 #, fuzzy, c-format
 msgid "Cannot stat file %s: ERR=%s\n"
 msgstr "Kann  bootstrap Datei nicht �ffnen: %s: ERR=%s\n"
 
-#: src/findlib/find_one.c:250
+#: src/findlib/find_one.c:253
 #, c-format
 msgid "%s mtime changed during backup.\n"
 msgstr ""
 
-#: src/findlib/find_one.c:256
+#: src/findlib/find_one.c:260
 #, c-format
 msgid "%s ctime changed during backup.\n"
 msgstr ""
 
-#: src/findlib/find_one.c:262 src/findlib/find_one.c:269
+#: src/findlib/find_one.c:268 src/findlib/find_one.c:276
 #, c-format
 msgid "%s size changed during backup.\n"
 msgstr ""
 
-#: src/findlib/find_one.c:398
+#: src/findlib/find_one.c:403
 #, c-format
 msgid "Top level directory \"%s\" has unlisted fstype \"%s\"\n"
 msgstr ""
 
-#: src/findlib/find_one.c:413
+#: src/findlib/find_one.c:418
 #, c-format
 msgid "Top level directory \"%s\" has an unlisted drive type \"%s\"\n"
 msgstr ""
@@ -14335,24 +14485,24 @@ msgstr "Fehler beim holen der Client Zeile: %s\n"
 msgid "Create DB Client record %s failed. ERR=%s\n"
 msgstr "Erzeugung des DB Client Eintrags %s fehlgeschlagen. ERR=%s\n"
 
-#: src/cats/sql_create.c:588 src/cats/sql_get.c:251
+#: src/cats/sql_create.c:589 src/cats/sql_get.c:251
 #, c-format
 msgid "More than one Path!: %s for path: %s\n"
 msgstr "Mehr als ein Pfad!: %s f�r Pfad: %s\n"
 
-#: src/cats/sql_create.c:595 src/cats/sql_get.c:205 src/cats/sql_get.c:258
-#: src/cats/sql_get.c:640 src/cats/sql_get.c:722 src/cats/sql_get.c:1041
-#: src/cats/sql.c:340 src/cats/sql.c:347 src/cats/postgresql.c:158
+#: src/cats/sql_create.c:596 src/cats/sql_get.c:205 src/cats/sql_get.c:258
+#: src/cats/sql_get.c:640 src/cats/sql_get.c:722 src/cats/sql_get.c:1039
+#: src/cats/sql.c:340 src/cats/sql.c:347 src/cats/postgresql.c:165
 #, c-format
 msgid "error fetching row: %s\n"
 msgstr "Fehler beim holen von Zeile: %s\n"
 
-#: src/cats/sql_create.c:620
+#: src/cats/sql_create.c:621
 #, c-format
 msgid "Create db Path record %s failed. ERR=%s\n"
 msgstr "Erzeugung des db Path Eintrags %s fehlgeschlagen. ERR=%s\n"
 
-#: src/cats/sql_create.c:665
+#: src/cats/sql_create.c:666
 #, c-format
 msgid "Create DB Counters record %s failed. ERR=%s\n"
 msgstr "Erzeugung des DB Counters Eintrag %s fehlgeschlagen. ERR=%s\n"
@@ -14372,40 +14522,40 @@ msgstr "Fehler beim holen der FileSet Zeile: ERR=%s\n"
 msgid "Create DB FileSet record %s failed. ERR=%s\n"
 msgstr "Erzeugung des DB FileSet Eintrags %s fehlgeschlagen. ERR=%s\n"
 
-#: src/cats/sql_create.c:994
+#: src/cats/sql_create.c:989
 #, c-format
 msgid "Create db File record %s failed. ERR=%s"
 msgstr "Erzeugung des db File Eintrags %s fehlgeschlagen. ERR=%s"
 
-#: src/cats/sql_create.c:1019
+#: src/cats/sql_create.c:1015
 #, c-format
 msgid "More than one Filename! %s for file: %s\n"
 msgstr "Mehr als ein Dateiname! %s f�r Datei: %s\n"
 
-#: src/cats/sql_create.c:1025
+#: src/cats/sql_create.c:1021
 #, c-format
 msgid "Error fetching row for file=%s: ERR=%s\n"
 msgstr "Fehler beim Holen der Zeile f�r Datei=%s: ERR=%s\n"
 
-#: src/cats/sql_create.c:1042
+#: src/cats/sql_create.c:1038
 #, c-format
 msgid "Create db Filename record %s failed. ERR=%s\n"
 msgstr "Erzeugung des db Filename Eintrags %s fehlgeschlagen. ERR=%s\n"
 
-#: src/cats/sql_create.c:1061
+#: src/cats/sql_create.c:1058
 #, c-format
 msgid "Attempt to put non-attributes into catalog. Stream=%d\n"
 msgstr "Versuche \"non-attributes\" in catalog einzuf�gen. Stream=%d\n"
 
 #: src/cats/sql_create.c:1074
-msgid "Cannot Copy/Migrate job using BaseJob"
+msgid "Cannot Copy/Migrate job using BaseJob.\n"
 msgstr ""
 
-#: src/cats/sql_create.c:1165 src/cats/sql_get.c:1138
+#: src/cats/sql_create.c:1166 src/cats/sql_get.c:1136
 msgid "ERR=JobIds are empty\n"
 msgstr ""
 
-#: src/cats/sql_create.c:1218
+#: src/cats/sql_create.c:1219
 #, fuzzy, c-format
 msgid "Create db Object record %s failed. ERR=%s"
 msgstr "Erzeugung des db File Eintrags %s fehlgeschlagen. ERR=%s"
@@ -14512,66 +14662,66 @@ msgstr "Mehr als ein Client!: %s\n"
 msgid "Client record not found in Catalog.\n"
 msgstr "Client Eintrag nicht in Catalog gefunden\n"
 
-#: src/cats/sql_get.c:767
+#: src/cats/sql_get.c:765
 #, c-format
 msgid "More than one Counter!: %d\n"
 msgstr "Mehr als ein Counter!: %d\n"
 
-#: src/cats/sql_get.c:772
+#: src/cats/sql_get.c:770
 #, c-format
 msgid "error fetching Counter row: %s\n"
 msgstr "Fehler beim Holen der Counter Zeile: %s\n"
 
-#: src/cats/sql_get.c:792
+#: src/cats/sql_get.c:790
 #, c-format
 msgid "Counter record: %s not found in Catalog.\n"
 msgstr "Counter Eintrag: %s in Catalog nicht gefunden.\n"
 
-#: src/cats/sql_get.c:832
+#: src/cats/sql_get.c:830
 #, c-format
 msgid "Error got %s FileSets but expected only one!\n"
 msgstr "Fehler erhalten %s FileSets aber nur einen erwartet!\n"
 
-#: src/cats/sql_get.c:837
+#: src/cats/sql_get.c:835
 #, c-format
 msgid "FileSet record \"%s\" not found.\n"
 msgstr "FileSet Eintrag \"%s\" nicht gefunden\n"
 
-#: src/cats/sql_get.c:847
+#: src/cats/sql_get.c:845
 msgid "FileSet record not found in Catalog.\n"
 msgstr "FileSet Eintrag in Catalog nicht gefunden.\n"
 
-#: src/cats/sql_get.c:943
+#: src/cats/sql_get.c:941
 #, c-format
 msgid "Media id select failed: ERR=%s\n"
 msgstr "Media id select fehlgeschlagen: ERR=%s\n"
 
-#: src/cats/sql_get.c:981
+#: src/cats/sql_get.c:979
 #, fuzzy, c-format
 msgid "query dbids failed: ERR=%s\n"
 msgstr "Abfrage gescheitert: %s: ERR=%s\n"
 
-#: src/cats/sql_get.c:1036
+#: src/cats/sql_get.c:1034
 #, c-format
 msgid "More than one Volume!: %s\n"
 msgstr "Mehr als ein Volume!: %s\n"
 
-#: src/cats/sql_get.c:1092
+#: src/cats/sql_get.c:1090
 #, c-format
 msgid "Media record MediaId=%s not found.\n"
 msgstr "Media Eintrag MediaId=%s nicht gefunden.\n"
 
-#: src/cats/sql_get.c:1095
+#: src/cats/sql_get.c:1093
 #, c-format
 msgid "Media record for Volume \"%s\" not found.\n"
 msgstr "Media Eintrag f�r Volume \"%s\" nicht gefunden.\n"
 
-#: src/cats/sql_get.c:1102
+#: src/cats/sql_get.c:1100
 #, c-format
 msgid "Media record for MediaId=%u not found in Catalog.\n"
 msgstr "Media Eintrag f�r MediaId=%u in Catalog nicht gefunden.\n"
 
-#: src/cats/sql_get.c:1105
+#: src/cats/sql_get.c:1103
 #, c-format
 msgid "Media record for Vol=%s not found in Catalog.\n"
 msgstr "Media Eintrag f�r Vol=%s in Catalog nicht gefunden.\n"
@@ -14629,29 +14779,29 @@ msgstr ""
 msgid "No Volume record found for item %d.\n"
 msgstr "Kein Volume Eintrag gefunden f�r item %d.\n"
 
-#: src/cats/sqlite.c:159 src/cats/ingres.c:248 src/cats/postgresql.c:203
-#: src/cats/dbi.c:221 src/cats/mysql.c:157
+#: src/cats/sqlite.c:166 src/cats/ingres.c:255 src/cats/postgresql.c:210
+#: src/cats/dbi.c:228 src/cats/mysql.c:164
 #, c-format
 msgid "Unable to initialize DB lock. ERR=%s\n"
 msgstr "Kann DB lock nicht initialisieren. ERR=%s\n"
 
-#: src/cats/sqlite.c:174
+#: src/cats/sqlite.c:181
 #, c-format
 msgid "Database %s does not exist, please create it.\n"
 msgstr "Datenbank %s existiert nicht, bitte erzeugen.\n"
 
-#: src/cats/sqlite.c:196
+#: src/cats/sqlite.c:203
 #, c-format
 msgid "Unable to open Database=%s. ERR=%s\n"
 msgstr "Kann Datenbank=%s.nicht �ffen. ERR=%s\n"
 
-#: src/cats/sqlite.c:197
+#: src/cats/sqlite.c:204
 msgid "unknown"
 msgstr "unbekannt"
 
-#: src/cats/sqlite.c:449 src/cats/ingres.c:483 src/cats/postgresql.c:493
-#: src/cats/postgresql.c:540 src/cats/dbi.c:618 src/cats/cats.c:147
-#: src/cats/mysql.c:380
+#: src/cats/sqlite.c:462 src/cats/ingres.c:496 src/cats/postgresql.c:506
+#: src/cats/postgresql.c:553 src/cats/dbi.c:631 src/cats/cats.c:149
+#: src/cats/mysql.c:393
 #, c-format
 msgid "Query failed: %s: ERR=%s\n"
 msgstr "Abfrage gescheitert: %s: ERR=%s\n"
@@ -14664,7 +14814,7 @@ msgstr ""
 msgid "Failed to allocate space for query filters.\n"
 msgstr ""
 
-#: src/cats/ingres.c:260
+#: src/cats/ingres.c:267
 #, fuzzy, c-format
 msgid ""
 "Unable to connect to Ingres server.\n"
@@ -14676,7 +14826,7 @@ msgstr ""
 "Der Datenbankserver  l�uft m�glicherweise nicht oder das Passwort ist nicht "
 "korrekt.\n"
 
-#: src/cats/ingres.c:1074
+#: src/cats/ingres.c:1087
 #, fuzzy
 msgid "A user name for Ingres must be supplied.\n"
 msgstr "Ein Benutzername f�r MySQL muss angegeben werden.\n"
@@ -14744,22 +14894,22 @@ msgstr "Pfadl
 msgid "No results to list.\n"
 msgstr "Keine Ergebnisse zu \"list\" Kommando.\n"
 
-#: src/cats/sql.c:724
+#: src/cats/sql.c:721
 #, fuzzy
-msgid "Could not init database batch connection"
+msgid "Could not init database batch connection\n"
 msgstr "Konnte Datenbank \"%s\" nicht �ffen.\n"
 
-#: src/cats/sql.c:730
+#: src/cats/sql.c:727
 #, fuzzy, c-format
 msgid "Could not open database \"%s\": ERR=%s\n"
 msgstr "Konnte Datenbank \"%s\" nicht �ffen.\n"
 
-#: src/cats/postgresql.c:174
+#: src/cats/postgresql.c:181
 #, c-format
 msgid "Encoding error for database \"%s\". Wanted SQL_ASCII, got %s\n"
 msgstr ""
 
-#: src/cats/postgresql.c:239
+#: src/cats/postgresql.c:246
 #, fuzzy, c-format
 msgid ""
 "Unable to connect to PostgreSQL server. Database=%s User=%s\n"
@@ -14771,39 +14921,39 @@ msgstr ""
 "Der Datenbankserver l�uft m�glicherweise nicht oder das Passwort ist nicht "
 "korrekt.\n"
 
-#: src/cats/postgresql.c:337
+#: src/cats/postgresql.c:350
 msgid "PQescapeStringConn returned non-zero.\n"
 msgstr ""
 
-#: src/cats/postgresql.c:355
+#: src/cats/postgresql.c:368
 msgid "PQescapeByteaConn returned NULL.\n"
 msgstr ""
 
-#: src/cats/postgresql.c:386
+#: src/cats/postgresql.c:399
 msgid "PQunescapeByteaConn returned NULL.\n"
 msgstr ""
 
-#: src/cats/postgresql.c:800
+#: src/cats/postgresql.c:813
 #, c-format
 msgid "error fetching currval: %s\n"
 msgstr "Fehler beim Holen des aktuellen Wertes: %s\n"
 
-#: src/cats/postgresql.c:991 src/cats/dbi.c:1264
+#: src/cats/postgresql.c:1004 src/cats/dbi.c:1277
 #, fuzzy, c-format
 msgid "error starting batch mode: %s"
 msgstr "Fehler beim holen von Zeile: %s\n"
 
-#: src/cats/postgresql.c:1021 src/cats/postgresql.c:1028
+#: src/cats/postgresql.c:1034 src/cats/postgresql.c:1041
 #, fuzzy, c-format
 msgid "error ending batch mode: %s"
 msgstr "Fehler beim holen von Zeile: %s\n"
 
-#: src/cats/postgresql.c:1075
+#: src/cats/postgresql.c:1088
 #, fuzzy, c-format
 msgid "error copying in batch mode: %s"
 msgstr "Fehler beim holen von Zeile: %s\n"
 
-#: src/cats/postgresql.c:1097
+#: src/cats/postgresql.c:1110
 msgid "A user name for PostgreSQL must be supplied.\n"
 msgstr "Ein Benutzername f�r PostgreSQL muss angegeben werden.\n"
 
@@ -14825,14 +14975,14 @@ msgstr ""
 msgid "Unknown database type: %s\n"
 msgstr ""
 
-#: src/cats/dbi.c:235
+#: src/cats/dbi.c:242
 #, c-format
 msgid ""
 "Unable to locate the DBD drivers to DBI interface in: \n"
 "db_driverdir=%s. It is probaly not found any drivers\n"
 msgstr ""
 
-#: src/cats/dbi.c:292
+#: src/cats/dbi.c:299
 #, fuzzy, c-format
 msgid ""
 "Unable to connect to DBI interface. Type=%s Database=%s User=%s\n"
@@ -14844,21 +14994,21 @@ msgstr ""
 "Der Datenbankserver l�uft m�glicherweise nicht oder das Passwort ist nicht "
 "korrekt.\n"
 
-#: src/cats/dbi.c:1426
+#: src/cats/dbi.c:1439
 #, fuzzy, c-format
 msgid "error inserting batch mode: %s"
 msgstr "Fehler beim holen von Zeile: %s\n"
 
-#: src/cats/dbi.c:1443
+#: src/cats/dbi.c:1456
 #, fuzzy
 msgid "Driver type not specified in Catalog resource.\n"
 msgstr "Schl�sselwort %s ist in dieser Ressource nicht erlaubt."
 
-#: src/cats/dbi.c:1447
+#: src/cats/dbi.c:1460
 msgid "Invalid driver type, must be \"dbi:<type>\"\n"
 msgstr ""
 
-#: src/cats/dbi.c:1451
+#: src/cats/dbi.c:1464
 #, fuzzy
 msgid "A user name for DBI must be supplied.\n"
 msgstr "Ein Benutzername f�r MySQL muss angegeben werden.\n"
@@ -14882,7 +15032,7 @@ msgstr "Erwartete einen \"pool\" Eintrag, erhielt %d\n"
 msgid "Error fetching row %s\n"
 msgstr "Fehler beim Holen der Zeile %s\n"
 
-#: src/cats/mysql.c:200
+#: src/cats/mysql.c:207
 #, fuzzy, c-format
 msgid ""
 "Unable to connect to MySQL server.\n"
@@ -14895,7 +15045,7 @@ msgstr ""
 "Der Datenbankserver  l�uft m�glicherweise nicht oder das Passwort ist nicht "
 "korrekt.\n"
 
-#: src/cats/mysql.c:639
+#: src/cats/mysql.c:692
 msgid "A user name for MySQL must be supplied.\n"
 msgstr "Ein Benutzername f�r MySQL muss angegeben werden.\n"
 
@@ -15040,13 +15190,13 @@ msgid "You must enter a number between 1 and %d\n"
 msgstr ""
 
 #: src/console/console.c:1160 src/wx-console/console_thread.cpp:399
-#: src/qt-console/bcomm/dircomm.cpp:129
+#: src/qt-console/bcomm/dircomm.cpp:131
 #, c-format
 msgid "Failed to initialize TLS context for Console \"%s\".\n"
 msgstr ""
 
 #: src/console/console.c:1180 src/wx-console/console_thread.cpp:420
-#: src/qt-console/bcomm/dircomm.cpp:152
+#: src/qt-console/bcomm/dircomm.cpp:154
 #, c-format
 msgid "Failed to initialize TLS context for Director \"%s\".\n"
 msgstr ""
@@ -15405,22 +15555,25 @@ msgstr ""
 msgid "Could not open, database \"%s\".\n"
 msgstr "Konnte Datenbank \"%s\" nicht �ffen.\n"
 
-#: src/tools/bsmtp.c:145
+#: src/tools/bsmtp.c:151
 #, c-format
 msgid "Fatal malformed reply from %s: %s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:153
+#: src/tools/bsmtp.c:159
 #, c-format
 msgid "Fatal fgets error: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:186
+#: src/tools/bsmtp.c:192
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Usage: %s [-f from] [-h mailhost] [-s subject] [-c copy] [recipient ...]\n"
+"       -4          forces bsmtp to use IPv4 addresses only.\n"
+"       -6          forces bsmtp to use IPv6 addresses only.\n"
 "       -8          set charset to UTF-8\n"
+"       -a          use any ip protocol for address resolution\n"
 "       -c          set the Cc: field\n"
 "       -d <nn>     set debug level to <nn>\n"
 "       -dt         print a timestamp in debug output\n"
@@ -15449,56 +15602,66 @@ msgstr ""
 "       -?          diese Meldung ausgeben.\n"
 "\n"
 
-#: src/tools/bsmtp.c:343
+#: src/tools/bsmtp.c:379
 msgid "Fatal error: no recipient given.\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:372
+#: src/tools/bsmtp.c:407
 #, c-format
 msgid "Fatal gethostname error: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:376
+#: src/tools/bsmtp.c:418
+#, fuzzy, c-format
+msgid "Fatal getaddrinfo for myself failed \"%s\": ERR=%s\n"
+msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
+
+#: src/tools/bsmtp.c:426
 #, c-format
 msgid "Fatal gethostbyname for myself failed \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:412
+#: src/tools/bsmtp.c:486 src/tools/bsmtp.c:521
 #, fuzzy, c-format
 msgid "Error unknown mail host \"%s\": ERR=%s\n"
 msgstr "unbekannt"
 
-#: src/tools/bsmtp.c:415
+#: src/tools/bsmtp.c:489 src/tools/bsmtp.c:524
 msgid "Retrying connection using \"localhost\".\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:423
+#: src/tools/bsmtp.c:514
+#, fuzzy, c-format
+msgid "Failed to connect to mailhost %s\n"
+msgstr "Verbindung zu File daemon fehlgeschlagen.\n"
+
+#: src/tools/bsmtp.c:532
 #, c-format
 msgid "Fatal error: Unknown address family for smtp host: %d\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:432 src/tools/bsmtp.c:437
+#: src/tools/bsmtp.c:541 src/tools/bsmtp.c:546
 #, c-format
 msgid "Fatal socket error: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:442
+#: src/tools/bsmtp.c:551
 #, c-format
 msgid "Fatal connect error to %s: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:450
+#: src/tools/bsmtp.c:560
 #, c-format
 msgid "Fatal _open_osfhandle error: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:457 src/tools/bsmtp.c:461 src/tools/bsmtp.c:470
-#: src/tools/bsmtp.c:474
+#: src/tools/bsmtp.c:567 src/tools/bsmtp.c:571 src/tools/bsmtp.c:580
+#: src/tools/bsmtp.c:584
 #, c-format
 msgid "Fatal fdopen error: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:466
+#: src/tools/bsmtp.c:576
 #, c-format
 msgid "Fatal dup error: ERR=%s\n"
 msgstr ""
@@ -15962,7 +16125,7 @@ msgstr ""
 msgid "Network error in send to Director: ERR=%s\n"
 msgstr ""
 
-#: src/filed/verify.c:247 src/filed/accurate.c:428 src/filed/backup.c:503
+#: src/filed/verify.c:247 src/filed/accurate.c:429 src/filed/backup.c:506
 #, c-format
 msgid "%s digest initialization failed\n"
 msgstr ""
@@ -15987,12 +16150,12 @@ msgstr ""
 msgid "Space saved with Base jobs: %lld MB\n"
 msgstr ""
 
-#: src/filed/accurate.c:399
+#: src/filed/accurate.c:400
 #, fuzzy, c-format
 msgid "Cannot verify checksum for %s\n"
 msgstr "Kann Schedule resource %s nicht finden\n"
 
-#: src/filed/accurate.c:507
+#: src/filed/accurate.c:508
 msgid "2991 Bad accurate command\n"
 msgstr ""
 
@@ -16048,6 +16211,11 @@ msgstr ""
 msgid " SDSocket=closed\n"
 msgstr ""
 
+#: src/filed/status.c:463 src/filed/status.c:496
+#, c-format
+msgid "Bad .status command: %s\n"
+msgstr ""
+
 #: src/filed/status.c:464
 msgid "2900 Bad .status command, missing argument.\n"
 msgstr ""
@@ -16076,317 +16244,318 @@ msgstr ""
 msgid "Bacula Client: Last Job had Warnings"
 msgstr ""
 
-#: src/filed/xattr.c:96 src/filed/xattr.c:111 src/filed/xattr.c:119
-#: src/filed/fd_plugins.c:696 src/filed/fd_plugins.c:710 src/filed/acl.c:105
-#: src/filed/acl.c:120 src/filed/acl.c:128 src/filed/backup.c:993
-#: src/filed/backup.c:1189 src/filed/backup.c:1226 src/filed/backup.c:1239
-#: src/filed/backup.c:1315 src/filed/backup.c:1413
+#: src/filed/xattr.c:97 src/filed/xattr.c:112 src/filed/xattr.c:120
+#: src/filed/fd_plugins.c:789 src/filed/fd_plugins.c:805 src/filed/acl.c:108
+#: src/filed/acl.c:123 src/filed/acl.c:131 src/filed/backup.c:999
+#: src/filed/backup.c:1199 src/filed/backup.c:1236 src/filed/backup.c:1249
+#: src/filed/backup.c:1325 src/filed/backup.c:1424
 #, c-format
 msgid "Network send error to SD. ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:244
+#: src/filed/xattr.c:245
 #, c-format
 msgid "Illegal xattr stream, no XATTR_MAGIC on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:258
+#: src/filed/xattr.c:259
 #, c-format
 msgid "Illegal xattr stream, xattr name length <= 0 on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:376 src/filed/xattr.c:408
+#: src/filed/xattr.c:381 src/filed/xattr.c:417
 #, fuzzy, c-format
 msgid "llistea error on file \"%s\": ERR=%s\n"
 msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/filed/xattr.c:472 src/filed/xattr.c:500
+#: src/filed/xattr.c:467 src/filed/xattr.c:520
 #, fuzzy, c-format
 msgid "lgetea error on file \"%s\": ERR=%s\n"
 msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/filed/xattr.c:519 src/filed/xattr.c:807 src/filed/xattr.c:1249
-#: src/filed/xattr.c:1702 src/filed/xattr.c:2064 src/filed/xattr.c:2843
+#: src/filed/xattr.c:556 src/filed/xattr.c:877 src/filed/xattr.c:1352
+#: src/filed/xattr.c:1820 src/filed/xattr.c:2176 src/filed/xattr.c:2968
 #, c-format
 msgid "Xattr stream on file \"%s\" exceeds maximum size of %d bytes\n"
 msgstr ""
 
-#: src/filed/xattr.c:550 src/filed/xattr.c:841 src/filed/xattr.c:1280
-#: src/filed/xattr.c:1743 src/filed/xattr.c:2089
+#: src/filed/xattr.c:576 src/filed/xattr.c:903 src/filed/xattr.c:1372
+#: src/filed/xattr.c:1850 src/filed/xattr.c:2193
 #, c-format
 msgid "Failed to serialize extended attributes on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:624
+#: src/filed/xattr.c:643
 #, fuzzy, c-format
 msgid "lsetea error on file \"%s\": ERR=%s\n"
 msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/filed/xattr.c:710 src/filed/xattr.c:777 src/filed/xattr.c:789
+#: src/filed/xattr.c:731 src/filed/xattr.c:769 src/filed/xattr.c:832
+#: src/filed/xattr.c:844
 #, fuzzy, c-format
 msgid "attr_list error on file \"%s\": ERR=%s\n"
 msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/filed/xattr.c:916
+#: src/filed/xattr.c:968
 #, fuzzy, c-format
 msgid "Received illegal xattr named %s on file \"%s\"\n"
 msgstr "Kann Catalog DB Steuerdatei nicht �ffnen %s: ERR=%s\n"
 
-#: src/filed/xattr.c:947 src/filed/xattr.c:957
+#: src/filed/xattr.c:1001 src/filed/xattr.c:1011
 #, fuzzy, c-format
 msgid "attr_set error on file \"%s\": ERR=%s\n"
 msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/filed/xattr.c:1092 src/filed/xattr.c:1123
+#: src/filed/xattr.c:1161 src/filed/xattr.c:1196
 #, fuzzy, c-format
 msgid "llistxattr error on file \"%s\": ERR=%s\n"
 msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/filed/xattr.c:1204 src/filed/xattr.c:1231
+#: src/filed/xattr.c:1264 src/filed/xattr.c:1316
 #, fuzzy, c-format
 msgid "lgetxattr error on file \"%s\": ERR=%s\n"
 msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/filed/xattr.c:1350
+#: src/filed/xattr.c:1435
 #, fuzzy, c-format
 msgid "lsetxattr error on file \"%s\": ERR=%s\n"
 msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/filed/xattr.c:1507 src/filed/xattr.c:1539
+#: src/filed/xattr.c:1593 src/filed/xattr.c:1628
 #, fuzzy, c-format
 msgid "extattr_list_link error on file \"%s\": ERR=%s\n"
 msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/filed/xattr.c:1558
+#: src/filed/xattr.c:1648
 #, fuzzy, c-format
 msgid "Failed to convert %d into namespace on file \"%s\"\n"
 msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/filed/xattr.c:1653 src/filed/xattr.c:1682
+#: src/filed/xattr.c:1728 src/filed/xattr.c:1783
 #, fuzzy, c-format
 msgid "extattr_get_link error on file \"%s\": ERR=%s\n"
 msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/filed/xattr.c:1809
+#: src/filed/xattr.c:1907
 #, fuzzy, c-format
 msgid "Failed to split %s into namespace and name part on file \"%s\"\n"
 msgstr "<filed: Netzwerkfehler beim Holen der Attribute. ERR=%s\n"
 
-#: src/filed/xattr.c:1822
+#: src/filed/xattr.c:1920
 #, fuzzy, c-format
 msgid "Failed to convert %s into namespace on file \"%s\"\n"
 msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/filed/xattr.c:1841
+#: src/filed/xattr.c:1941
 #, fuzzy, c-format
 msgid "extattr_set_link error on file \"%s\": ERR=%s\n"
 msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/filed/xattr.c:1943 src/filed/xattr.c:1965
+#: src/filed/xattr.c:2044 src/filed/xattr.c:2069
 #, fuzzy, c-format
 msgid "getproplist error on file \"%s\": ERR=%s\n"
 msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/filed/xattr.c:2169
+#: src/filed/xattr.c:2262
 #, fuzzy, c-format
 msgid "Unable create proper proplist to restore xattrs on file \"%s\"\n"
 msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/filed/xattr.c:2196
+#: src/filed/xattr.c:2291
 #, fuzzy, c-format
 msgid "setproplist error on file \"%s\": ERR=%s\n"
 msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/filed/xattr.c:2496 src/filed/xattr.c:2547
+#: src/filed/xattr.c:2609 src/filed/xattr.c:2662
 #, fuzzy, c-format
 msgid "Unable to get acl on xattr %s on file \"%s\": ERR=%s\n"
 msgstr "Kann Catalog DB Steuerdatei nicht �ffnen %s: ERR=%s\n"
 
-#: src/filed/xattr.c:2562
+#: src/filed/xattr.c:2679
 #, fuzzy, c-format
 msgid "Unable to get acl text on xattr %s on file \"%s\": ERR=%s\n"
 msgstr "Kann Catalog DB Steuerdatei nicht �ffnen %s: ERR=%s\n"
 
-#: src/filed/xattr.c:2632
+#: src/filed/xattr.c:2753
 #, fuzzy, c-format
 msgid "Unable to get status on xattr %s on file \"%s\": ERR=%s\n"
 msgstr "Kann Catalog DB Steuerdatei nicht �ffnen %s: ERR=%s\n"
 
-#: src/filed/xattr.c:2763
+#: src/filed/xattr.c:2886
 #, fuzzy, c-format
 msgid "Unable to open xattr %s on \"%s\": ERR=%s\n"
 msgstr "Konnte Job Eintrag nicht holen. ERR=%s\n"
 
-#: src/filed/xattr.c:2784
+#: src/filed/xattr.c:2909
 #, fuzzy, c-format
 msgid "Unable to read symlin %s on \"%s\": ERR=%s\n"
 msgstr "Konnte Job Eintrag nicht holen. ERR=%s\n"
 
-#: src/filed/xattr.c:2859
+#: src/filed/xattr.c:2984
 #, fuzzy, c-format
 msgid "Unable to read content of xattr %s on file \"%s\"\n"
 msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/filed/xattr.c:2897
+#: src/filed/xattr.c:3024
 #, fuzzy, c-format
 msgid "Unable to chdir to xattr space of file \"%s\": ERR=%s\n"
 msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/filed/xattr.c:2953 src/filed/xattr.c:3193
+#: src/filed/xattr.c:3081 src/filed/xattr.c:3330
 #, fuzzy, c-format
 msgid "Unable to open file \"%s\": ERR=%s\n"
 msgstr "Kann Datenbank=%s.nicht �ffen. ERR=%s\n"
 
-#: src/filed/xattr.c:2979 src/filed/xattr.c:3246
+#: src/filed/xattr.c:3109 src/filed/xattr.c:3391
 #, fuzzy, c-format
 msgid "Unable to open xattr space %s on file \"%s\": ERR=%s\n"
 msgstr "Kann Catalog DB Steuerdatei nicht �ffnen %s: ERR=%s\n"
 
-#: src/filed/xattr.c:2993 src/filed/xattr.c:3214
+#: src/filed/xattr.c:3125 src/filed/xattr.c:3355
 #, fuzzy, c-format
 msgid "Unable to chdir to xattr space on file \"%s\": ERR=%s\n"
 msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/filed/xattr.c:3012
+#: src/filed/xattr.c:3146
 #, fuzzy, c-format
 msgid "Unable to list the xattr space on file \"%s\": ERR=%s\n"
 msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/filed/xattr.c:3105
+#: src/filed/xattr.c:3238
 #, fuzzy, c-format
 msgid "Unable to convert acl from text on file \"%s\"\n"
 msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/filed/xattr.c:3113 src/filed/xattr.c:3135
+#: src/filed/xattr.c:3248 src/filed/xattr.c:3271
 #, fuzzy, c-format
 msgid "Unable to restore acl of xattr %s on file \"%s\": ERR=%s\n"
 msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/filed/xattr.c:3205
+#: src/filed/xattr.c:3344
 #, fuzzy, c-format
 msgid "Unable to open xattr space on file \"%s\": ERR=%s\n"
 msgstr "Kann Catalog DB Steuerdatei nicht �ffnen %s: ERR=%s\n"
 
-#: src/filed/xattr.c:3231 src/filed/xattr.c:3379
+#: src/filed/xattr.c:3374 src/filed/xattr.c:3536
 #, fuzzy, c-format
 msgid "Unable to open xattr %s on file \"%s\": ERR=%s\n"
 msgstr "Kann Catalog DB Steuerdatei nicht �ffnen %s: ERR=%s\n"
 
-#: src/filed/xattr.c:3261
+#: src/filed/xattr.c:3408
 #, fuzzy, c-format
 msgid "Unable to chdir to xattr space %s on file \"%s\": ERR=%s\n"
 msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/filed/xattr.c:3299
+#: src/filed/xattr.c:3448
 #, fuzzy, c-format
 msgid "Unable to mkfifo xattr %s on file \"%s\": ERR=%s\n"
 msgstr "Kann Catalog DB Steuerdatei nicht �ffnen %s: ERR=%s\n"
 
-#: src/filed/xattr.c:3315
+#: src/filed/xattr.c:3466
 #, fuzzy, c-format
 msgid "Unable to mknod xattr %s on file \"%s\": ERR=%s\n"
 msgstr "Kann Catalog DB Steuerdatei nicht �ffnen %s: ERR=%s\n"
 
-#: src/filed/xattr.c:3331
+#: src/filed/xattr.c:3484
 #, fuzzy, c-format
 msgid "Unable to mkdir xattr %s on file \"%s\": ERR=%s\n"
 msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/filed/xattr.c:3349
+#: src/filed/xattr.c:3504
 #, fuzzy, c-format
 msgid "Unable to link xattr %s to %s on file \"%s\": ERR=%s\n"
 msgstr "Konnte Job Eintrag nicht holen. ERR=%s\n"
 
-#: src/filed/xattr.c:3400
+#: src/filed/xattr.c:3557
 #, c-format
 msgid ""
 "Unable to restore data of xattr %s on file \"%s\": Not all data available in "
 "xattr stream\n"
 msgstr ""
 
-#: src/filed/xattr.c:3411
+#: src/filed/xattr.c:3570
 #, fuzzy, c-format
 msgid "Unable to restore data of xattr %s on file \"%s\": ERR=%s\n"
 msgstr "Kann Catalog DB Steuerdatei nicht �ffnen %s: ERR=%s\n"
 
-#: src/filed/xattr.c:3432
+#: src/filed/xattr.c:3593
 #, fuzzy, c-format
 msgid "Unable to symlink xattr %s to %s on file \"%s\": ERR=%s\n"
 msgstr "Konnte Job Eintrag nicht holen. ERR=%s\n"
 
-#: src/filed/xattr.c:3466
+#: src/filed/xattr.c:3629
 #, fuzzy, c-format
 msgid "Unable to restore owner of xattr %s on file \"%s\": ERR=%s\n"
 msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/filed/xattr.c:3492
+#: src/filed/xattr.c:3657
 #, fuzzy, c-format
 msgid "Unable to restore filetimes of xattr %s on file \"%s\": ERR=%s\n"
 msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/filed/xattr.c:3508
+#: src/filed/xattr.c:3673
 #, c-format
 msgid "Illegal xattr stream, failed to parse xattr stream on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:3570
+#: src/filed/xattr.c:3734
 #, c-format
 msgid "Failed to restore extensible attributes on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:3583
+#: src/filed/xattr.c:3747
 #, fuzzy, c-format
 msgid "Failed to restore extended attributes on file \"%s\"\n"
 msgstr "<filed: Netzwerkfehler beim Holen der Attribute. ERR=%s\n"
 
-#: src/filed/xattr.c:3672 src/filed/acl.c:2109
+#: src/filed/xattr.c:3841 src/filed/acl.c:2265
 #, fuzzy, c-format
 msgid "Unable to stat file \"%s\": ERR=%s\n"
 msgstr "Kann Datenbank=%s.nicht �ffen. ERR=%s\n"
 
-#: src/filed/xattr.c:3719
+#: src/filed/xattr.c:3891
 #, c-format
 msgid ""
 "Can't restore Extended Attributes of %s - incompatible xattr stream "
 "encountered - %d\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:480 src/filed/fd_plugins.c:619
+#: src/filed/fd_plugins.c:550 src/filed/fd_plugins.c:694
 #, c-format
 msgid "Command plugin \"%s\": no type in startBackupFile packet.\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:493
+#: src/filed/fd_plugins.c:563
 #, c-format
 msgid "Command plugin \"%s\": no object_name in startBackupFile packet.\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:505 src/filed/fd_plugins.c:626
+#: src/filed/fd_plugins.c:576 src/filed/fd_plugins.c:701
 #, c-format
 msgid "Command plugin \"%s\": no fname in startBackupFile packet.\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:683
+#: src/filed/fd_plugins.c:775
 #, fuzzy
 msgid "Plugin save packet not found.\n"
 msgstr "Path record: %s nicht gefunden.\n"
 
-#: src/filed/fd_plugins.c:806
+#: src/filed/fd_plugins.c:910
 #, fuzzy, c-format
 msgid "Plugin=%s not found.\n"
 msgstr "Pool Ressource \"%s\" nicht gefunden.\n"
 
-#: src/filed/fd_plugins.c:863
+#: src/filed/fd_plugins.c:977
 #, c-format
 msgid "Plugin createFile call failed. Stat=%d file=%s\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:874
+#: src/filed/fd_plugins.c:982
 #, c-format
 msgid "Plugin createFile call failed. Returned CF_ERROR file=%s\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:1621
+#: src/filed/fd_plugins.c:1859
 msgid "Command plugin: no fname in baculaCheckChanges packet.\n"
 msgstr ""
 
@@ -16498,179 +16667,189 @@ msgstr ""
 msgid "No Director resource defined in %s\n"
 msgstr ""
 
-#: src/filed/acl.c:225 src/filed/acl.c:248
+#: src/filed/acl.c:229 src/filed/acl.c:254
 #, fuzzy, c-format
 msgid "aclx_get error on file \"%s\": ERR=%s\n"
 msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/filed/acl.c:274
+#: src/filed/acl.c:280
 #, fuzzy, c-format
 msgid "Unknown acl type encountered on file \"%s\": %ld\n"
 msgstr "Kann Catalog DB Steuerdatei nicht �ffnen %s: ERR=%s\n"
 
-#: src/filed/acl.c:298 src/filed/acl.c:307
+#: src/filed/acl.c:304 src/filed/acl.c:313
 #, fuzzy, c-format
 msgid "Failed to convert acl into text on file \"%s\"\n"
 msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/filed/acl.c:381
+#: src/filed/acl.c:386
 #, c-format
 msgid ""
 "Trying to restore POSIX acl on file \"%s\" on filesystem without AIXC acl "
 "support\n"
 msgstr ""
 
-#: src/filed/acl.c:389
+#: src/filed/acl.c:394
 #, c-format
 msgid ""
 "Trying to restore NFSv4 acl on file \"%s\" on filesystem without NFS4 acl "
 "support\n"
 msgstr ""
 
-#: src/filed/acl.c:433 src/filed/acl.c:443
+#: src/filed/acl.c:442 src/filed/acl.c:452
 #, fuzzy, c-format
 msgid "aclx_scanStr error on file \"%s\": ERR=%s\n"
 msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/filed/acl.c:467
+#: src/filed/acl.c:478
 #, fuzzy, c-format
 msgid "aclx_put error on file \"%s\": ERR=%s\n"
 msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/filed/acl.c:809
+#: src/filed/acl.c:823
 #, c-format
 msgid "acl_to_text error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:837
+#: src/filed/acl.c:853
 #, fuzzy, c-format
 msgid "acl_get_file error on file \"%s\": ERR=%s\n"
 msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/filed/acl.c:889
+#: src/filed/acl.c:906
 #, fuzzy, c-format
 msgid ""
 "acl_delete_def_file error on file \"%s\": filesystem doesn't support ACLs\n"
 msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/filed/acl.c:895
+#: src/filed/acl.c:912
 #, c-format
 msgid "acl_delete_def_file error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:904
+#: src/filed/acl.c:923
 #, c-format
 msgid "acl_from_text error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:918
+#: src/filed/acl.c:939
 #, fuzzy, c-format
 msgid "acl_valid error on file \"%s\": ERR=%s\n"
 msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/filed/acl.c:948
+#: src/filed/acl.c:971
 #, fuzzy, c-format
 msgid "acl_set_file error on file \"%s\": filesystem doesn't support ACLs\n"
 msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/filed/acl.c:957
+#: src/filed/acl.c:980
 #, c-format
 msgid "acl_set_file error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1063 src/filed/acl.c:1089 src/filed/acl.c:1201
-#: src/filed/acl.c:1692 src/filed/acl.c:1795
+#: src/filed/acl.c:1087 src/filed/acl.c:1116 src/filed/acl.c:1230
+#: src/filed/acl.c:1738 src/filed/acl.c:1845
 #, fuzzy, c-format
 msgid "pathconf error on file \"%s\": ERR=%s\n"
 msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/filed/acl.c:1216
+#: src/filed/acl.c:1246
 #, c-format
 msgid ""
 "Trying to restore acl on file \"%s\" on filesystem without %s acl support\n"
 msgstr ""
 
-#: src/filed/acl.c:1492
+#: src/filed/acl.c:1531
 #, fuzzy, c-format
 msgid "getacl error on file \"%s\": ERR=%s\n"
 msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/filed/acl.c:1525
+#: src/filed/acl.c:1566
 #, c-format
 msgid "acltostr error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1546 src/filed/acl.c:1554
+#: src/filed/acl.c:1588 src/filed/acl.c:1598
 #, c-format
 msgid "strtoacl error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1582
+#: src/filed/acl.c:1627
 #, fuzzy, c-format
 msgid "setacl error on file \"%s\": filesystem doesn't support ACLs\n"
 msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/filed/acl.c:1590
+#: src/filed/acl.c:1635
 #, c-format
 msgid "setacl error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1711
+#: src/filed/acl.c:1760
 #, fuzzy, c-format
 msgid "acl_get error on file \"%s\": ERR=%s\n"
 msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/filed/acl.c:1786
+#: src/filed/acl.c:1834
 #, c-format
 msgid ""
 "Trying to restore acl on file \"%s\" on filesystem without acl support\n"
 msgstr ""
 
-#: src/filed/acl.c:1812
+#: src/filed/acl.c:1863
 #, fuzzy, c-format
 msgid ""
 "Trying to restore POSIX acl on file \"%s\" on filesystem without aclent acl "
 "support\n"
 msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/filed/acl.c:1823
+#: src/filed/acl.c:1874
 #, c-format
 msgid ""
 "Trying to restore NFSv4 acl on file \"%s\" on filesystem without ace acl "
 "support\n"
 msgstr ""
 
-#: src/filed/acl.c:1839
+#: src/filed/acl.c:1890
 #, fuzzy, c-format
 msgid "acl_fromtext error on file \"%s\": ERR=%s\n"
 msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/filed/acl.c:1853 src/filed/acl.c:1861
+#: src/filed/acl.c:1904 src/filed/acl.c:1912
 #, c-format
 msgid "wrong encoding of acl type in acl stream on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/acl.c:1886
+#: src/filed/acl.c:1937
 #, fuzzy, c-format
 msgid "acl_set error on file \"%s\": ERR=%s\n"
 msgstr "Socket Fehler auf %s Kommando: ERR=%s\n"
 
-#: src/filed/acl.c:1971
+#: src/filed/acl.c:2023
 #, c-format
 msgid "acltotext error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1993
+#: src/filed/acl.c:2046
 #, c-format
 msgid "aclfromtext error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:2011
+#: src/filed/acl.c:2066
 #, c-format
 msgid "acl(SETACL) error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:2181
+#: src/filed/acl.c:2132
+#, fuzzy, c-format
+msgid "pioctl VIOCGETAL error on file \"%s\": ERR=%s\n"
+msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
+
+#: src/filed/acl.c:2160
+#, fuzzy, c-format
+msgid "pioctl VIOCSETAL error on file \"%s\": ERR=%s\n"
+msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
+
+#: src/filed/acl.c:2363
 #, c-format
 msgid "Can't restore ACLs of %s - incompatible acl stream encountered - %d\n"
 msgstr ""
@@ -16679,17 +16858,17 @@ msgstr ""
 msgid "Storage command not issued before Verify.\n"
 msgstr ""
 
-#: src/filed/verify_vol.c:97 src/filed/restore.c:483
+#: src/filed/verify_vol.c:97 src/filed/restore.c:486
 #, c-format
 msgid "Record header scan error: %s\n"
 msgstr ""
 
-#: src/filed/verify_vol.c:106 src/filed/restore.c:495
+#: src/filed/verify_vol.c:106 src/filed/restore.c:498
 #, c-format
 msgid "Data record error. ERR=%s\n"
 msgstr ""
 
-#: src/filed/verify_vol.c:110 src/filed/restore.c:499
+#: src/filed/verify_vol.c:110 src/filed/restore.c:502
 #, c-format
 msgid "Actual data size %d not same as header %d\n"
 msgstr ""
@@ -16767,89 +16946,89 @@ msgstr ""
 msgid "     Could not open directory \"%s\": ERR=%s\n"
 msgstr "Konnte regex pattern \"%s\" nicht kompilieren ERR=%s\n"
 
-#: src/filed/backup.c:463
+#: src/filed/backup.c:466
 #, c-format
 msgid "     Unknown file type %d; not saved: %s\n"
 msgstr ""
 
-#: src/filed/backup.c:519
+#: src/filed/backup.c:522
 #, c-format
 msgid "%s signature digest initialization failed\n"
 msgstr ""
 
-#: src/filed/backup.c:624
+#: src/filed/backup.c:630
 #, fuzzy, c-format
 msgid "     Cannot open \"%s\": ERR=%s.\n"
 msgstr "Kann Ausdruck\"%s\"nicht aufl�sen: ERR=%s\n"
 
-#: src/filed/backup.c:661
+#: src/filed/backup.c:667
 #, fuzzy, c-format
 msgid "     Cannot open resource fork for \"%s\": ERR=%s.\n"
 msgstr "Kann Ausdruck\"%s\"nicht aufl�sen: ERR=%s\n"
 
-#: src/filed/backup.c:757
+#: src/filed/backup.c:763
 msgid "Failed to allocate memory for crypto signature.\n"
 msgstr ""
 
-#: src/filed/backup.c:762 src/filed/backup.c:768 src/filed/backup.c:783
+#: src/filed/backup.c:768 src/filed/backup.c:774 src/filed/backup.c:789
 msgid "An error occurred while signing the stream.\n"
 msgstr ""
 
-#: src/filed/backup.c:807
+#: src/filed/backup.c:813
 msgid "An error occurred finalizing signing the stream.\n"
 msgstr ""
 
-#: src/filed/backup.c:925
+#: src/filed/backup.c:931
 #, c-format
 msgid "Compression deflateParams error: %d\n"
 msgstr ""
 
-#: src/filed/backup.c:962
+#: src/filed/backup.c:968
 msgid "Encrypting sparse or offset data not supported.\n"
 msgstr ""
 
-#: src/filed/backup.c:969
+#: src/filed/backup.c:975
 msgid "Failed to initialize encryption context.\n"
 msgstr ""
 
-#: src/filed/backup.c:1079
+#: src/filed/backup.c:1085
 #, c-format
 msgid "Compression deflate error: %d\n"
 msgstr ""
 
-#: src/filed/backup.c:1086
+#: src/filed/backup.c:1092
 #, c-format
 msgid "Compression deflateReset error: %d\n"
 msgstr ""
 
-#: src/filed/backup.c:1116
+#: src/filed/backup.c:1126
 #, c-format
 msgid "Compression LZO error: %d\n"
 msgstr ""
 
-#: src/filed/backup.c:1161 src/filed/backup.c:1177
+#: src/filed/backup.c:1171 src/filed/backup.c:1187
 msgid "Encryption error\n"
 msgstr ""
 
-#: src/filed/backup.c:1203
+#: src/filed/backup.c:1213
 #, c-format
 msgid "Read error on file %s. ERR=%s\n"
 msgstr ""
 
-#: src/filed/backup.c:1206
+#: src/filed/backup.c:1216
 #, fuzzy, c-format
 msgid "Too many errors. JobErrors=%d.\n"
 msgstr "zu viele items in Job resource\n"
 
-#: src/filed/backup.c:1216
+#: src/filed/backup.c:1226
 msgid "Encryption padding error\n"
 msgstr ""
 
-#: src/filed/backup.c:1280
+#: src/filed/backup.c:1290
 msgid "Invalid file flags, no supported data stream type.\n"
 msgstr ""
 
-#: src/filed/backup.c:1536
+#: src/filed/backup.c:1549
 #, c-format
 msgid "VSS Writer (BackupComplete): %s\n"
 msgstr ""
@@ -16869,438 +17048,438 @@ msgstr ""
 msgid "Could not set Finder Info on %s\n"
 msgstr "Konnte Datenbank \"%s\" nicht �ffen.\n"
 
-#: src/filed/restore.c:415
+#: src/filed/restore.c:418
 #, fuzzy
 msgid "LZO init failed\n"
 msgstr "TLS Aushandlung gescheitert.\n"
 
-#: src/filed/restore.c:657
+#: src/filed/restore.c:660
 msgid "Unexpected cryptographic session data stream.\n"
 msgstr ""
 
-#: src/filed/restore.c:667
+#: src/filed/restore.c:670
 msgid ""
 "No private decryption keys have been defined to decrypt encrypted backup "
 "data.\n"
 msgstr ""
 
-#: src/filed/restore.c:678
+#: src/filed/restore.c:681
 #, fuzzy
 msgid "Could not create digest.\n"
 msgstr "Konnte Client Eintrag nicht anlegen. ERR=%s\n"
 
-#: src/filed/restore.c:696
+#: src/filed/restore.c:699
 msgid "Missing private key required to decrypt encrypted backup data.\n"
 msgstr ""
 
-#: src/filed/restore.c:699
+#: src/filed/restore.c:702
 msgid "Decrypt of the session key failed.\n"
 msgstr ""
 
-#: src/filed/restore.c:705
+#: src/filed/restore.c:708
 #, c-format
 msgid "An error occurred while decoding encrypted session data stream: %s\n"
 msgstr ""
 
-#: src/filed/restore.c:772 src/filed/restore.c:825
+#: src/filed/restore.c:775 src/filed/restore.c:828
 #, c-format
 msgid "Missing encryption session data stream for %s\n"
 msgstr ""
 
-#: src/filed/restore.c:780 src/filed/restore.c:832
+#: src/filed/restore.c:783 src/filed/restore.c:835
 #, c-format
 msgid "Failed to initialize decryption context for %s\n"
 msgstr ""
 
-#: src/filed/restore.c:844
+#: src/filed/restore.c:847
 #, fuzzy, c-format
 msgid "Cannot open resource fork for %s.\n"
 msgstr "Kann Ausdruck\"%s\"nicht aufl�sen: ERR=%s\n"
 
-#: src/filed/restore.c:986
+#: src/filed/restore.c:992
 msgid "Unexpected cryptographic signature data stream.\n"
 msgstr ""
 
-#: src/filed/restore.c:994
+#: src/filed/restore.c:1000
 #, c-format
 msgid "Failed to decode message signature for %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1058
+#: src/filed/restore.c:1064
 #, c-format
 msgid "Encountered %ld acl errors while doing restore\n"
 msgstr ""
 
-#: src/filed/restore.c:1062
+#: src/filed/restore.c:1068
 #, c-format
 msgid "Encountered %ld xattr errors while doing restore\n"
 msgstr ""
 
-#: src/filed/restore.c:1066
+#: src/filed/restore.c:1072
 #, c-format
 msgid ""
 "%d non-supported data streams and %d non-supported attrib streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1070
+#: src/filed/restore.c:1076
 #, c-format
 msgid "%d non-supported resource fork streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1073
+#: src/filed/restore.c:1079
 #, c-format
 msgid "%d non-supported Finder Info streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1076
+#: src/filed/restore.c:1082
 #, c-format
 msgid "%d non-supported acl streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1079
+#: src/filed/restore.c:1085
 #, c-format
 msgid "%d non-supported crypto streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1082
+#: src/filed/restore.c:1088
 #, c-format
 msgid "%d non-supported xattr streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1162
+#: src/filed/restore.c:1168
 msgid "Zlib errno"
 msgstr ""
 
-#: src/filed/restore.c:1164
+#: src/filed/restore.c:1170
 msgid "Zlib stream error"
 msgstr ""
 
-#: src/filed/restore.c:1166
+#: src/filed/restore.c:1172
 msgid "Zlib data error"
 msgstr ""
 
-#: src/filed/restore.c:1168
+#: src/filed/restore.c:1174
 msgid "Zlib memory error"
 msgstr ""
 
-#: src/filed/restore.c:1170
+#: src/filed/restore.c:1176
 msgid "Zlib buffer error"
 msgstr ""
 
-#: src/filed/restore.c:1172
+#: src/filed/restore.c:1178
 msgid "Zlib version error"
 msgstr ""
 
-#: src/filed/restore.c:1212
+#: src/filed/restore.c:1218
 #, c-format
 msgid "Missing cryptographic signature for %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1245 src/filed/restore.c:1274
+#: src/filed/restore.c:1251 src/filed/restore.c:1280
 #, fuzzy, c-format
 msgid "Signature validation failed for file %s: ERR=%s\n"
 msgstr "Konnte bootstrap Datei %s nicht erzeugen. ERR=%s\n"
 
-#: src/filed/restore.c:1262
+#: src/filed/restore.c:1268
 #, fuzzy, c-format
 msgid "Digest one file failed for file: %s\n"
 msgstr "Mehr als ein Dateiname! %s f�r Datei: %s\n"
 
-#: src/filed/restore.c:1301
+#: src/filed/restore.c:1307
 #, c-format
 msgid "Signature validation failed for %s: %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1398
+#: src/filed/restore.c:1404
 #, fuzzy, c-format
 msgid "LZO uncompression error on file %s. ERR=%d\n"
 msgstr "Catalog Fehler beim Aktualisieren von volume \"%s\". ERR=%s"
 
-#: src/filed/restore.c:1435
+#: src/filed/restore.c:1441
 #, c-format
 msgid "Uncompression error on file %s. ERR=%s\n"
 msgstr ""
 
-#: src/filed/restore.c:1468
+#: src/filed/restore.c:1474
 #, c-format
 msgid "Write error in Win32 Block Decomposition on %s: %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1527
+#: src/filed/restore.c:1533
 msgid "Decryption error\n"
 msgstr ""
 
-#: src/filed/restore.c:1620
+#: src/filed/restore.c:1626
 msgid "Logic error: output file should be open\n"
 msgstr ""
 
-#: src/filed/restore.c:1658
+#: src/filed/restore.c:1664
 msgid "Logic error: output file should not be open\n"
 msgstr ""
 
-#: src/filed/restore.c:1692
+#: src/filed/restore.c:1698
 #, c-format
 msgid "Decryption error. buf_len=%d decrypt_len=%d on file %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1813
+#: src/filed/restore.c:1819
 msgid "Open File Manager paused\n"
 msgstr ""
 
-#: src/filed/restore.c:1817
+#: src/filed/restore.c:1823
 msgid "FAILED to pause Open File Manager\n"
 msgstr ""
 
-#: src/filed/restore.c:1825
+#: src/filed/restore.c:1831
 #, c-format
 msgid "Running as '%s'. Privmask=%#08x\n"
 msgstr ""
 
-#: src/filed/restore.c:1827
+#: src/filed/restore.c:1833
 msgid "Failed to retrieve current UserName\n"
 msgstr ""
 
-#: src/filed/job.c:458
+#: src/filed/job.c:456
 #, c-format
 msgid "2901 Job %s not found.\n"
 msgstr ""
 
-#: src/filed/job.c:468
+#: src/filed/job.c:466
 #, c-format
 msgid "2001 Job %s marked to be canceled.\n"
 msgstr ""
 
-#: src/filed/job.c:471
+#: src/filed/job.c:469
 msgid "2902 Error scanning cancel command.\n"
 msgstr ""
 
-#: src/filed/job.c:494
+#: src/filed/job.c:492
 #, c-format
 msgid "2991 Bad setdebug command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:517
+#: src/filed/job.c:515
 #, c-format
 msgid "Bad estimate command: %s"
 msgstr ""
 
-#: src/filed/job.c:518
+#: src/filed/job.c:516
 msgid "2992 Bad estimate command.\n"
 msgstr ""
 
-#: src/filed/job.c:541
+#: src/filed/job.c:539
 #, c-format
 msgid "Bad Job Command: %s"
 msgstr ""
 
-#: src/filed/job.c:580
+#: src/filed/job.c:578
 #, c-format
 msgid "Bad RunBeforeJob command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:581 src/filed/job.c:600
+#: src/filed/job.c:579 src/filed/job.c:598
 msgid "2905 Bad RunBeforeJob command.\n"
 msgstr ""
 
-#: src/filed/job.c:611
+#: src/filed/job.c:609
 msgid "2905 Bad RunBeforeNow command.\n"
 msgstr ""
 
-#: src/filed/job.c:630
+#: src/filed/job.c:628
 #, c-format
 msgid "Bad RunAfter command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:631
+#: src/filed/job.c:629
 msgid "2905 Bad RunAfterJob command.\n"
 msgstr ""
 
-#: src/filed/job.c:667
+#: src/filed/job.c:665
 #, c-format
 msgid "Bad RunScript command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:668
+#: src/filed/job.c:666
 msgid "2905 Bad RunScript command.\n"
 msgstr ""
 
-#: src/filed/job.c:722
+#: src/filed/job.c:720
 #, fuzzy, c-format
 msgid "Bad RestoreObject command: %s\n"
 msgstr "Storage daemon hat \"Job command\": %s abgelehnt\n"
 
-#: src/filed/job.c:789
+#: src/filed/job.c:785
 msgid "2909 Bad RestoreObject command.\n"
 msgstr ""
 
-#: src/filed/job.c:828
+#: src/filed/job.c:824
 #, c-format
 msgid "Plugin Directory not defined. Cannot use plugin: \"%s\"\n"
 msgstr ""
 
-#: src/filed/job.c:870
+#: src/filed/job.c:866
 #, c-format
 msgid "Error running program: %s. stat=%d: ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:881
+#: src/filed/job.c:877
 #, c-format
 msgid "Cannot open FileSet input file: %s. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:1027
+#: src/filed/job.c:1031
 #, c-format
 msgid "REGEX %s compile error. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:1178
+#: src/filed/job.c:1182
 #, c-format
 msgid "Invalid FileSet command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:1651
+#: src/filed/job.c:1655
 #, c-format
 msgid ""
 "DIR and FD clocks differ by %lld seconds, FD automatically compensating.\n"
 msgstr ""
 
-#: src/filed/job.c:1660
+#: src/filed/job.c:1664
 #, c-format
 msgid "Unknown backup level: %s\n"
 msgstr ""
 
-#: src/filed/job.c:1673
+#: src/filed/job.c:1677
 #, c-format
 msgid "Bad level command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:1695
+#: src/filed/job.c:1699
 #, c-format
 msgid "Bad session command: %s"
 msgstr ""
 
-#: src/filed/job.c:1756
+#: src/filed/job.c:1760
 #, c-format
 msgid "Bad storage command: %s"
 msgstr ""
 
-#: src/filed/job.c:1777
+#: src/filed/job.c:1781
 #, c-format
 msgid "Failed to connect to Storage daemon: %s:%d\n"
 msgstr ""
 
-#: src/filed/job.c:1789
+#: src/filed/job.c:1793
 msgid "Failed to authenticate Storage daemon.\n"
 msgstr ""
 
-#: src/filed/job.c:1836
+#: src/filed/job.c:1840
 msgid "ACL support not configured for your machine.\n"
 msgstr ""
 
-#: src/filed/job.c:1840
+#: src/filed/job.c:1844
 msgid "XATTR support not configured for your machine.\n"
 msgstr ""
 
-#: src/filed/job.c:1849
+#: src/filed/job.c:1853
 msgid "Cannot contact Storage daemon\n"
 msgstr ""
 
-#: src/filed/job.c:1868
+#: src/filed/job.c:1872
 #, c-format
 msgid "Bad response to append open: %s\n"
 msgstr ""
 
-#: src/filed/job.c:1873
+#: src/filed/job.c:1877
 msgid "Bad response from stored to open command\n"
 msgstr ""
 
-#: src/filed/job.c:1904
+#: src/filed/job.c:1909
 #, c-format
 msgid "Generate VSS snapshots. Driver=\"%s\", Drive(s)=\"%s\"\n"
 msgstr ""
 
-#: src/filed/job.c:1906
-#, fuzzy
-msgid "CreateSGenerate VSS snapshots failed.\n"
+#: src/filed/job.c:1912
+#, fuzzy, c-format
+msgid "CreateSGenerate VSS snapshots failed. ERR=%s\n"
 msgstr "Erzeugung des db Path Eintrags %s fehlgeschlagen. ERR=%s\n"
 
-#: src/filed/job.c:1912
+#: src/filed/job.c:1919
 #, c-format
 msgid "Generate VSS snapshot of drive \"%c:\\\" failed.\n"
 msgstr ""
 
-#: src/filed/job.c:1918
+#: src/filed/job.c:1925
 #, c-format
 msgid "VSS Writer (PrepareForBackup): %s\n"
 msgstr ""
 
-#: src/filed/job.c:1923
+#: src/filed/job.c:1930
 msgid "No drive letters found for generating VSS snapshots.\n"
 msgstr ""
 
-#: src/filed/job.c:1926
-#, fuzzy
-msgid "VSS was not initialized properly.\n"
+#: src/filed/job.c:1934
+#, fuzzy, c-format
+msgid "VSS was not initialized properly. ERR=%s\n"
 msgstr "Kann DB lock nicht initialisieren. ERR=%s\n"
 
-#: src/filed/job.c:1976
+#: src/filed/job.c:1985
 msgid "Append Close with SD failed.\n"
 msgstr ""
 
-#: src/filed/job.c:1980
+#: src/filed/job.c:1989
 #, c-format
 msgid "Bad status %d returned from Storage Daemon.\n"
 msgstr ""
 
-#: src/filed/job.c:2010
+#: src/filed/job.c:2019
 #, c-format
 msgid "2994 Bad verify command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:2025 src/filed/job.c:2066
+#: src/filed/job.c:2034 src/filed/job.c:2075
 #, c-format
 msgid "2994 Bad verify level: %s\n"
 msgstr ""
 
-#: src/filed/job.c:2138
+#: src/filed/job.c:2146
 #, c-format
 msgid "Bad replace command. CMD=%s\n"
 msgstr ""
 
-#: src/filed/job.c:2161
+#: src/filed/job.c:2169
 #, c-format
 msgid "Bad where regexp. where=%s\n"
 msgstr ""
 
-#: src/filed/job.c:2199
+#: src/filed/job.c:2207
 #, c-format
 msgid "VSS was not initialized properly. VSS support is disabled. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:2244
+#: src/filed/job.c:2252
 #, c-format
 msgid "VSS Writer (RestoreComplete): %s\n"
 msgstr ""
 
-#: src/filed/job.c:2292
+#: src/filed/job.c:2302
 msgid "Improper calling sequence.\n"
 msgstr ""
 
-#: src/filed/job.c:2312
+#: src/filed/job.c:2322
 #, c-format
 msgid "Bad response to SD read open: %s\n"
 msgstr ""
 
-#: src/filed/job.c:2317
+#: src/filed/job.c:2327
 msgid "Bad response from stored to read open command\n"
 msgstr ""
 
-#: src/filed/job.c:2385
+#: src/filed/job.c:2391
 #, c-format
 msgid "Comm error with SD. bad response to %s. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:2388
+#: src/filed/job.c:2394
 #, c-format
 msgid "Bad response to %s command. Wanted %s, got %s\n"
 msgstr ""
@@ -17335,7 +17514,7 @@ msgid ""
 "Version: "
 msgstr ""
 
-#: src/baconfig.h:72 src/baconfig.h:73
+#: src/baconfig.h:72 src/baconfig.h:73 src/baconfig.h:78 src/baconfig.h:79
 #, c-format
 msgid "Failed ASSERT: %s\n"
 msgstr ""
@@ -17501,27 +17680,31 @@ msgid "Save and close"
 msgstr ""
 
 #: src/wx-console/wxbconfigfileeditor.cpp:112
+#, fuzzy
 msgid "Close without saving"
-msgstr ""
+msgstr "%s OK -- mit Warnungen"
 
 #: src/wx-console/wxbconfigfileeditor.cpp:139
-#, c-format
+#, fuzzy, c-format
 msgid "Unable to write to %s\n"
-msgstr ""
+msgstr "Kann DB lock nicht initialisieren. ERR=%s\n"
 
 #: src/wx-console/wxbconfigfileeditor.cpp:140
+#, fuzzy
 msgid "Error while saving"
-msgstr ""
+msgstr "Fehler beim schreiben der bsr Datei.\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:234
 #: src/wx-console/wxbrestorepanel.cpp:1947
 #: src/wx-console/wxbrestorepanel.cpp:1976
+#, fuzzy
 msgid "Enter restore mode"
-msgstr ""
+msgstr "Job Ressource"
 
 #: src/wx-console/wxbrestorepanel.cpp:237
+#, fuzzy
 msgid "Cancel restore"
-msgstr ""
+msgstr "Job Ressource"
 
 #: src/wx-console/wxbrestorepanel.cpp:263
 #: src/wx-console/wxbrestorepanel.cpp:317
@@ -17543,8 +17726,9 @@ msgid "M"
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:290
+#, fuzzy
 msgid "Filename"
-msgstr ""
+msgstr "FileSet: name=%s\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:294
 msgid "Size"
@@ -17653,8 +17837,9 @@ msgid "Error : no jobs returned by the director."
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:516
+#, fuzzy
 msgid "RestoreFiles"
-msgstr ""
+msgstr "Wiederherstellung l�uft..."
 
 #: src/wx-console/wxbrestorepanel.cpp:551
 msgid "Please configure your restore parameters."
@@ -17673,8 +17858,9 @@ msgid "Building restore tree..."
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:613
+#, fuzzy
 msgid "Error while starting restore: "
-msgstr ""
+msgstr "Fehler beim schreiben der bsr Datei.\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:705
 msgid ""
@@ -17692,8 +17878,9 @@ msgid "bwx-console: unexpected restore question."
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:775
+#, fuzzy
 msgid " files selected to be restored."
-msgstr ""
+msgstr "Keine Volumes zum Wiederherstellen gefunden.\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:780
 msgid " file selected to be restored."
@@ -17705,16 +17892,19 @@ msgid "Please configure your restore (%ld files selected to be restored)..."
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:797
+#, fuzzy
 msgid "Restore failed : no file selected.\n"
-msgstr ""
+msgstr "Mehr als ein Dateiname! %s f�r Datei: %s\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:798
+#, fuzzy
 msgid "Restore failed : no file selected."
-msgstr ""
+msgstr "Mehr als ein Dateiname! %s f�r Datei: %s\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:808
+#, fuzzy
 msgid "Restoring, please wait..."
-msgstr ""
+msgstr "Wiederherstellung l�uft..."
 
 #: src/wx-console/wxbrestorepanel.cpp:821
 msgid "Job queued. JobId="
@@ -17725,8 +17915,9 @@ msgid "Restore queued, jobid="
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:827
+#, fuzzy
 msgid "Job failed."
-msgstr ""
+msgstr "%s Abgebrochen"
 
 #: src/wx-console/wxbrestorepanel.cpp:828
 msgid "Restore failed, please look at messages.\n"
@@ -17738,8 +17929,9 @@ msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:835
 #: src/wx-console/wxbrestorepanel.cpp:836
+#, fuzzy
 msgid "Failed to retrieve jobid.\n"
-msgstr ""
+msgstr "Verbindung zu File daemon fehlgeschlagen.\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:862
 msgid ""
@@ -17777,12 +17969,14 @@ msgid "Restore job terminated in error, see messages.\n"
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:910
+#, fuzzy
 msgid "Restore job reported a non-fatal error."
-msgstr ""
+msgstr "Attribute create error. %s"
 
 #: src/wx-console/wxbrestorepanel.cpp:914
+#, fuzzy
 msgid "Restore job reported a fatal error."
-msgstr ""
+msgstr "Attribute create error. %s"
 
 #: src/wx-console/wxbrestorepanel.cpp:919
 msgid "Restore job cancelled by user."
@@ -17793,16 +17987,18 @@ msgid "Restore job cancelled by user.\n"
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:925
+#, fuzzy
 msgid "Restore job is waiting on File daemon."
-msgstr ""
+msgstr "File daemon"
 
 #: src/wx-console/wxbrestorepanel.cpp:929
 msgid "Restore job is waiting for new media."
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:933
+#, fuzzy
 msgid "Restore job is waiting for storage resource."
-msgstr ""
+msgstr "Storage daemon"
 
 #: src/wx-console/wxbrestorepanel.cpp:937
 msgid "Restore job is waiting for job resource."
@@ -17817,8 +18013,9 @@ msgid "Restore job is waiting for maximum jobs."
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:949
+#, fuzzy
 msgid "Restore job is waiting for start time."
-msgstr ""
+msgstr "Job %s wartet %d Sekunden auf die geplante Startzeit.\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:953
 msgid "Restore job is waiting for higher priority jobs to finish."
@@ -17857,41 +18054,48 @@ msgid "Failed to find the selected fileset."
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:1178
+#, fuzzy
 msgid "Failed to find the selected storage."
-msgstr ""
+msgstr "Verbindung zu Storage daemon fehlgeschlagen.\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:1199
 #: src/wx-console/wxbrestorepanel.cpp:1886
+#, fuzzy
 msgid "Run Restore job"
-msgstr ""
+msgstr "Konnte Migrationsjob nicht starten.\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:1216
 msgid "Restore configuration changes were applied."
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:1225
+#, fuzzy
 msgid "Restore cancelled.\n"
-msgstr ""
+msgstr "%s Abgebrochen"
 
 #: src/wx-console/wxbrestorepanel.cpp:1226
+#, fuzzy
 msgid "Restore cancelled."
-msgstr ""
+msgstr "%s Abgebrochen"
 
 #: src/wx-console/wxbrestorepanel.cpp:1248
+#, fuzzy
 msgid "No results to list."
-msgstr ""
+msgstr "Keine Ergebnisse zu \"list\" Kommando.\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:1250
+#, fuzzy
 msgid "No backup found for this client."
-msgstr ""
+msgstr "Kein Job gefunden f�r: %s.\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:1257
 msgid "ERROR"
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:1258
+#, fuzzy
 msgid "Query failed"
-msgstr ""
+msgstr "Abfrage fehlgeschlagen: %s\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:1260
 msgid "Cannot get previous backups list, see console."
@@ -17902,8 +18106,9 @@ msgid "JobName:"
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:1898
+#, fuzzy
 msgid "Bootstrap:"
-msgstr ""
+msgstr "  --> Bootstrap=%s\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:1900
 msgid "Where:"
@@ -17922,16 +18127,18 @@ msgid "ifolder"
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:1911
+#, fuzzy
 msgid "FileSet:"
-msgstr ""
+msgstr "FileSet: name=%s\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:1913
 msgid "Client:"
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:1915
+#, fuzzy
 msgid "Storage:"
-msgstr ""
+msgstr "Storage daemon"
 
 #: src/wx-console/wxbrestorepanel.cpp:1917
 msgid "When:"
@@ -17946,61 +18153,77 @@ msgid "Restoring..."
 msgstr "Wiederherstellung l�uft..."
 
 #: src/wx-console/console_thread.cpp:125
-#, c-format
+#, fuzzy, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
 "Director \"%s\" in config file.\n"
 "At least one CA certificate store is required.\n"
 msgstr ""
+"Weder \"TLS CA Certificate\"  noch \"TLS CA Certificate Dir\" sind f�r "
+"Director \"%s\" in %s definert. Mindestens ein CA certificate store wird "
+"ben�tigt wenn \"TLS Verify Peer\" eingesetzt wird.\n"
 
 #: src/wx-console/console_thread.cpp:132
+#, fuzzy
 msgid ""
 "No Director resource defined in config file.\n"
 "Without that I don't how to speak to the Director :-(\n"
 msgstr ""
+"Keine Director resource definiert in %s\n"
+"Ohne dies weiss ich nicht wer ich bin :-(\n"
 
 #: src/wx-console/console_thread.cpp:151
-#, c-format
+#, fuzzy, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
 "Console \"%s\" in config file.\n"
 msgstr ""
+"Weder \"TLS CA Certificate\" noch \"TLS CA Certificate Dir\" sind definiert "
+"f�rStorage \"%s\" in %s.\n"
 
 #: src/wx-console/console_thread.cpp:173
+#, fuzzy
 msgid "Error while initializing windows sockets...\n"
-msgstr ""
+msgstr "Fehler beim schreiben der bsr Datei.\n"
 
 #: src/wx-console/console_thread.cpp:189
 msgid "Error while cleaning up windows sockets...\n"
 msgstr ""
 
 #: src/wx-console/console_thread.cpp:228
+#, fuzzy
 msgid "Error while initializing library."
-msgstr ""
+msgstr "Fehler beim schreiben der bsr Datei.\n"
 
 #: src/wx-console/console_thread.cpp:256
+#, fuzzy
 msgid "Cryptographic library initialization failed.\n"
-msgstr ""
+msgstr "Initialisierung der Verschl�sselungsbibliothek fehlgeschlagen.\n"
 
 #: src/wx-console/console_thread.cpp:260
+#, fuzzy
 msgid "Please correct configuration file.\n"
-msgstr ""
+msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
 
 #: src/wx-console/console_thread.cpp:302
+#, fuzzy
 msgid "Error : Library not initialized\n"
-msgstr ""
+msgstr "Initialisierung der Verschl�sselungsbibliothek fehlgeschlagen.\n"
 
 #: src/wx-console/console_thread.cpp:313
+#, fuzzy
 msgid "Error : No configuration file loaded\n"
-msgstr ""
+msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
 
 #: src/wx-console/console_thread.cpp:323
+#, fuzzy
 msgid "Connecting...\n"
-msgstr ""
+msgstr "Wiederherstellung l�uft..."
 
 #: src/wx-console/console_thread.cpp:339
+#, fuzzy
 msgid "Error : No director defined in config file.\n"
-msgstr ""
+msgstr "Keine Job records definiert in %s\n"
 
 #: src/wx-console/console_thread.cpp:351
 msgid "Multiple directors found in your config file.\n"
@@ -18022,8 +18245,9 @@ msgid "Passphrase for Director \"%s\" TLS private key: "
 msgstr ""
 
 #: src/wx-console/console_thread.cpp:432
+#, fuzzy
 msgid "Failed to connect to the director\n"
-msgstr ""
+msgstr "Verbindung zu File daemon fehlgeschlagen.\n"
 
 #: src/wx-console/console_thread.cpp:442
 msgid "Connected\n"
@@ -18048,16 +18272,18 @@ msgid "Type your command below:"
 msgstr ""
 
 #: src/wx-console/wxbhistorytextctrl.cpp:117
+#, fuzzy
 msgid "Unknown command."
-msgstr ""
+msgstr "unbekannt"
 
 #: src/wx-console/wxbhistorytextctrl.cpp:126
 msgid "Possible completions: "
 msgstr ""
 
 #: src/wx-console/main.cpp:119
+#, fuzzy
 msgid "Bacula bwx-console"
-msgstr ""
+msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
 
 #: src/wx-console/main.cpp:124 src/wx-console/wxbmainframe.cpp:267
 #, c-format
@@ -18089,16 +18315,19 @@ msgid "Disconnect of the director"
 msgstr ""
 
 #: src/wx-console/wxbmainframe.cpp:251
+#, fuzzy
 msgid "Change of configuration file"
-msgstr ""
+msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
 
 #: src/wx-console/wxbmainframe.cpp:251
+#, fuzzy
 msgid "Change your default configuration file"
-msgstr ""
+msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
 
 #: src/wx-console/wxbmainframe.cpp:252
+#, fuzzy
 msgid "Edit your configuration file"
-msgstr ""
+msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
 
 #: src/wx-console/wxbmainframe.cpp:254
 msgid "E&xit\tAlt-X"
@@ -18165,12 +18394,14 @@ msgid ""
 msgstr ""
 
 #: src/wx-console/wxbmainframe.cpp:438
+#, fuzzy
 msgid "Unable to read configuration file"
-msgstr ""
+msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
 
 #: src/wx-console/wxbmainframe.cpp:450
+#, fuzzy
 msgid "Please choose a configuration file to use"
-msgstr ""
+msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
 
 #: src/wx-console/wxbmainframe.cpp:463
 msgid "This configuration file has been successfully read, use it as default?"
@@ -18181,9 +18412,9 @@ msgid "Configuration file read successfully"
 msgstr ""
 
 #: src/wx-console/wxbmainframe.cpp:474
-#, c-format
+#, fuzzy, c-format
 msgid "Using this configuration file: %s\n"
-msgstr ""
+msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
 
 #: src/wx-console/wxbmainframe.cpp:479
 msgid "Connecting to the director..."
@@ -18209,16 +18440,19 @@ msgid "About Bacula bwx-console"
 msgstr ""
 
 #: src/wx-console/wxbmainframe.cpp:527
+#, fuzzy
 msgid "Please choose your default configuration file"
-msgstr ""
+msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
 
 #: src/wx-console/wxbmainframe.cpp:531
+#, fuzzy
 msgid "Use this configuration file as default?"
-msgstr ""
+msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
 
 #: src/wx-console/wxbmainframe.cpp:532
+#, fuzzy
 msgid "Configuration file"
-msgstr ""
+msgstr "Bitte die Konfigurationsdatei korrigieren: %s\n"
 
 #: src/wx-console/wxbmainframe.cpp:603
 msgid "Console thread terminated."
@@ -18282,47 +18516,47 @@ msgstr ""
 "       -?          diese Meldung ausgeben.\n"
 "\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:90
+#: src/qt-console/bcomm/dircomm.cpp:92
 #, c-format
 msgid "Already connected\"%s\".\n"
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:103
+#: src/qt-console/bcomm/dircomm.cpp:105
 #, c-format
 msgid ""
 "Connecting to Director %s:%d\n"
 "\n"
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:206
+#: src/qt-console/bcomm/dircomm.cpp:208
 msgid "Initializing ..."
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:221 src/qt-console/console/console.cpp:142
+#: src/qt-console/bcomm/dircomm.cpp:224 src/qt-console/console/console.cpp:142
 msgid "Connected"
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:345
+#: src/qt-console/bcomm/dircomm.cpp:348
 msgid "Command completed ..."
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:352 src/qt-console/console/console.cpp:373
+#: src/qt-console/bcomm/dircomm.cpp:355 src/qt-console/console/console.cpp:379
 msgid "Processing command ..."
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:359
+#: src/qt-console/bcomm/dircomm.cpp:362
 msgid "At main prompt waiting for input ..."
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:366 src/qt-console/bcomm/dircomm.cpp:378
+#: src/qt-console/bcomm/dircomm.cpp:369 src/qt-console/bcomm/dircomm.cpp:382
 msgid "At prompt waiting for input ..."
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:386
+#: src/qt-console/bcomm/dircomm.cpp:390
 msgid "Command failed."
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:458
+#: src/qt-console/bcomm/dircomm.cpp:463
 msgid "Director disconnected."
 msgstr ""
 
@@ -18362,6 +18596,10 @@ msgstr ""
 "\n"
 
 #, fuzzy
+#~ msgid "    Drive %d status unknown.\n"
+#~ msgstr "unbekannt"
+
+#, fuzzy
 #~ msgid ""
 #~ "Connection from unknown Director %s at %s rejected.\n"
 #~ "Please see http://www.bacula.org/en/rel-manual/Bacula_Freque_Asked_Questi."
@@ -18414,10 +18652,6 @@ msgstr ""
 #~ msgstr "Lese storage \"%s\" ist gleich mit Schreib storage.\n"
 
 #, fuzzy
-#~ msgid "Job %s marked to be canceled.\n"
-#~ msgstr "JobId %s, Job %s zum Abbruch markiert.\n"
-
-#, fuzzy
 #~ msgid "No Client record defined for job %s\n"
 #~ msgstr "Keine Job records definiert in %s\n"
 
diff --git a/po/es.po b/po/es.po
index bd518fb..32252c8 100644
--- a/po/es.po
+++ b/po/es.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Bacula 3.0.2\n"
 "Report-Msgid-Bugs-To: bacula-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2012-01-17 20:45+0100\n"
+"POT-Creation-Date: 2013-02-19 18:26+0100\n"
 "PO-Revision-Date: 2009-12-01 16:04-0300\n"
 "Last-Translator: Victor Hugo dos Santos <listas.vhs at gmail.com>\n"
 "Language-Team: Bacula Spanish Team <bacula-users-es at lists.sourceforge.net>\n"
@@ -50,8 +50,8 @@ msgstr "pthread_cond_wait: ERR=%s\n"
 msgid "Job %s waiting %d seconds for scheduled start time.\n"
 msgstr "Job %s esperando %d segundos para la hora de inicio programada.\n"
 
-#: src/dird/jobq.c:220 src/dird/job.c:113 src/stored/dircmd.c:198
-#: src/stored/stored.c:503
+#: src/dird/jobq.c:220 src/dird/job.c:113 src/stored/dircmd.c:200
+#: src/stored/stored.c:560
 #, c-format
 msgid "Unable to init job cond variable: ERR=%s\n"
 msgstr "No se puede iniciar job cond varibale: ERR=%s\n"
@@ -99,7 +99,7 @@ msgstr "El período actual %s de retención es: %s\n"
 msgid "Continue? (yes/mod/no): "
 msgstr "¿Continuar? (sí/mod/no):"
 
-#: src/dird/ua_select.c:62 src/dird/ua_run.c:232
+#: src/dird/ua_select.c:62 src/dird/ua_run.c:219
 msgid "mod"
 msgstr "mod"
 
@@ -119,8 +119,8 @@ msgstr "Usted tiene las siguientes opciones:\n"
 msgid "The defined Storage resources are:\n"
 msgstr "Los recursos Storage definidos son:\n"
 
-#: src/dird/ua_select.c:167 src/dird/ua_dotcmds.c:715 src/dird/ua_cmds.c:996
-#: src/dird/ua_run.c:237 src/wx-console/wxbrestorepanel.cpp:339
+#: src/dird/ua_select.c:167 src/dird/ua_dotcmds.c:734 src/dird/ua_cmds.c:995
+#: src/dird/ua_run.c:224 src/wx-console/wxbrestorepanel.cpp:339
 #: src/wx-console/wxbrestorepanel.cpp:355
 #: src/wx-console/wxbrestorepanel.cpp:479
 #: src/wx-console/wxbrestorepanel.cpp:480
@@ -141,7 +141,7 @@ msgstr "Seleccione recurso Storage"
 msgid "The defined FileSet resources are:\n"
 msgstr "Los recursos FileSet definidos son:\n"
 
-#: src/dird/ua_select.c:190 src/dird/ua_restore.c:1300 src/dird/ua_run.c:239
+#: src/dird/ua_select.c:190 src/dird/ua_restore.c:1300 src/dird/ua_run.c:226
 msgid "FileSet"
 msgstr "FileSet"
 
@@ -149,7 +149,7 @@ msgstr "FileSet"
 msgid "Select FileSet resource"
 msgstr "Seleccionar recurso FileSet"
 
-#: src/dird/ua_select.c:220 src/dird/ua_cmds.c:1983
+#: src/dird/ua_select.c:220 src/dird/ua_cmds.c:2029
 msgid "Could not find a Catalog resource\n"
 msgstr "No pudo encontrar un Catalogo de recursos\n"
 
@@ -176,8 +176,8 @@ msgid "The defined Job resources are:\n"
 msgstr "Los recursos Job definidos son:\n"
 
 #: src/dird/ua_select.c:266 src/dird/ua_select.c:289 src/dird/ua_select.c:330
-#: src/dird/ua_select.c:1187 src/dird/dird_conf.c:650 src/dird/ua_prune.c:593
-#: src/dird/ua_run.c:238
+#: src/dird/ua_select.c:1186 src/dird/dird_conf.c:670 src/dird/ua_prune.c:601
+#: src/dird/ua_run.c:225
 msgid "Job"
 msgstr "Job"
 
@@ -202,8 +202,8 @@ msgstr "Seleccione recurso Restore"
 msgid "The defined Client resources are:\n"
 msgstr "Los recursos Clientes definidos son:\n"
 
-#: src/dird/ua_select.c:355 src/dird/ua_select.c:464 src/dird/ua_dotcmds.c:716
-#: src/dird/ua_cmds.c:997 src/dird/ua_run.c:243
+#: src/dird/ua_select.c:355 src/dird/ua_select.c:464 src/dird/ua_dotcmds.c:735
+#: src/dird/ua_cmds.c:996 src/dird/ua_run.c:230
 #: src/wx-console/wxbrestorepanel.cpp:336
 #: src/wx-console/wxbrestorepanel.cpp:354
 #: src/wx-console/wxbrestorepanel.cpp:431
@@ -264,7 +264,7 @@ msgstr "Seleccione el Cliente"
 msgid "Could not find Pool \"%s\": ERR=%s"
 msgstr "No se pudo encontrar Pool \"%s\": ERR=%s"
 
-#: src/dird/ua_select.c:532 src/dird/ua_output.c:474 src/dird/ua_update.c:437
+#: src/dird/ua_select.c:532 src/dird/ua_output.c:476 src/dird/ua_update.c:436
 #, c-format
 msgid "Error obtaining pool ids. ERR=%s\n"
 msgstr "Error al obteniendo pool ids. ERR=%s\n"
@@ -277,13 +277,13 @@ msgstr "Pools no definidos. Utilice el comando \"create\" para crear uno.\n"
 msgid "Defined Pools:\n"
 msgstr "Pools definidos:\n"
 
-#: src/dird/ua_select.c:542 src/dird/ua_select.c:562 src/dird/ua_update.c:364
-#: src/baconfig.h:80
+#: src/dird/ua_select.c:542 src/dird/ua_select.c:562 src/dird/ua_update.c:365
+#: src/baconfig.h:88
 msgid "*None*"
 msgstr "*Ninguno*"
 
-#: src/dird/ua_select.c:553 src/dird/ua_select.c:667 src/dird/ua_update.c:615
-#: src/dird/ua_run.c:251 src/wx-console/wxbrestorepanel.cpp:338
+#: src/dird/ua_select.c:553 src/dird/ua_select.c:666 src/dird/ua_update.c:616
+#: src/dird/ua_run.c:238 src/wx-console/wxbrestorepanel.cpp:338
 #: src/wx-console/wxbrestorepanel.cpp:527
 #: src/wx-console/wxbrestorepanel.cpp:537
 #: src/wx-console/wxbrestorepanel.cpp:1834
@@ -299,38 +299,38 @@ msgstr "Seleccione el Pool"
 msgid "No access to Pool \"%s\"\n"
 msgstr "No tienen acceso al Pool \"%s\"\n"
 
-#: src/dird/ua_select.c:624
+#: src/dird/ua_select.c:623
 msgid "Enter *MediaId or Volume name: "
 msgstr "Introduzca MediaId o nombre del Volumen:"
 
-#: src/dird/ua_select.c:659
+#: src/dird/ua_select.c:658
 msgid "The defined Pool resources are:\n"
 msgstr "Los recursos Pool definidos son:\n"
 
-#: src/dird/ua_select.c:667
+#: src/dird/ua_select.c:666
 msgid "Select Pool resource"
 msgstr "Seleccione recurso Pool"
 
-#: src/dird/ua_select.c:691 src/dird/ua_restore.c:555
+#: src/dird/ua_select.c:690 src/dird/ua_restore.c:555
 #, c-format
 msgid "Error: Pool resource \"%s\" does not exist.\n"
 msgstr "Error: recurso Pool \"%s\" no existe.\n"
 
-#: src/dird/ua_select.c:702
+#: src/dird/ua_select.c:701
 msgid "Enter the JobId to select: "
 msgstr "Introduzca el JobId para seleccionar:"
 
-#: src/dird/ua_select.c:740
+#: src/dird/ua_select.c:739
 #, c-format
 msgid "Could not find Job \"%s\": ERR=%s"
 msgstr "No pudo encontrar Job \"%s\": ERR=%s"
 
-#: src/dird/ua_select.c:820
+#: src/dird/ua_select.c:819
 #, c-format
 msgid "Automatically selected %s: %s\n"
 msgstr "Seleccionado automáticamente %s: %s\n"
 
-#: src/dird/ua_select.c:831
+#: src/dird/ua_select.c:830
 #, c-format
 msgid ""
 "Your request has multiple choices for \"%s\". Selection is not possible in "
@@ -339,119 +339,119 @@ msgstr ""
 "Su petición ha múltiples opciones para \"%s\". La selección no es posible en "
 "modo batch.\n"
 
-#: src/dird/ua_select.c:849
+#: src/dird/ua_select.c:848
 #, c-format
 msgid "Selection list for \"%s\" is empty!\n"
 msgstr "Lista de selección para \"%s\" está vacía!\n"
 
-#: src/dird/ua_select.c:855
+#: src/dird/ua_select.c:854
 #, c-format
 msgid "Automatically selected: %s\n"
 msgstr "Seleccionado automáticamente: %s\n"
 
-#: src/dird/ua_select.c:867
+#: src/dird/ua_select.c:866
 msgid "Selection aborted, nothing done.\n"
 msgstr "Selección abortada, no hay nada hecho.\n"
 
-#: src/dird/ua_select.c:872
+#: src/dird/ua_select.c:871
 #, c-format
 msgid "Please enter a number between 1 and %d\n"
 msgstr "Por favor, introduzca un número entre 1 y %d\n"
 
-#: src/dird/ua_select.c:921
+#: src/dird/ua_select.c:920
 msgid "Storage name given twice.\n"
 msgstr "Nombre de Storage especificado dos veces.\n"
 
-#: src/dird/ua_select.c:938
+#: src/dird/ua_select.c:937
 #, c-format
 msgid "Expecting jobid=nn command, got: %s\n"
 msgstr "Esperando comando jobid=nn, obtuvo: %s.\n"
 
-#: src/dird/ua_select.c:942
+#: src/dird/ua_select.c:941
 #, c-format
 msgid "JobId %s is not running.\n"
 msgstr "JobId %s no está en ejecución.\n"
 
-#: src/dird/ua_select.c:952
+#: src/dird/ua_select.c:951
 #, c-format
 msgid "Expecting job=xxx, got: %s.\n"
 msgstr "Esperando job=xxx, obtuvo: %s.\n"
 
-#: src/dird/ua_select.c:956 src/dird/ua_select.c:968
+#: src/dird/ua_select.c:955 src/dird/ua_select.c:967
 #, c-format
 msgid "Job \"%s\" is not running.\n"
 msgstr "Job \"%s\" no está en ejecución.\n"
 
-#: src/dird/ua_select.c:964
+#: src/dird/ua_select.c:963
 #, c-format
 msgid "Expecting ujobid=xxx, got: %s.\n"
 msgstr "Esperando ujobid=xxx, obtuvo: %s.\n"
 
-#: src/dird/ua_select.c:984
+#: src/dird/ua_select.c:983
 #, c-format
 msgid "Storage resource \"%s\": not found\n"
 msgstr "Recurso Storage \"%s\": No encontrado\n"
 
-#: src/dird/ua_select.c:1016
+#: src/dird/ua_select.c:1015
 msgid "Enter autochanger drive[0]: "
 msgstr "Introduzca unidad Autochanger [0]:"
 
-#: src/dird/ua_select.c:1037
+#: src/dird/ua_select.c:1036
 msgid "Enter autochanger slot: "
 msgstr "Introduzca ranura Autochanger:"
 
-#: src/dird/ua_select.c:1067
+#: src/dird/ua_select.c:1066
 msgid "Media Types defined in conf file:\n"
 msgstr "Tipos de Media definidos en el archivo de configuración:\n"
 
-#: src/dird/ua_select.c:1073
+#: src/dird/ua_select.c:1072
 msgid "Media Type"
 msgstr "Tipo de Media"
 
-#: src/dird/ua_select.c:1073
+#: src/dird/ua_select.c:1072
 msgid "Select the Media Type"
 msgstr "Seleccione el Tipo de Media"
 
-#: src/dird/ua_select.c:1112
+#: src/dird/ua_select.c:1111
 #, fuzzy, c-format
 msgid "JobId %s is not running. Use Job name to %s inactive jobs.\n"
 msgstr ""
 "JobId %s no está en ejecución. Utilice el nombre del Job para cancelar jobs "
 "inactivo.\n"
 
-#: src/dird/ua_select.c:1121 src/dird/ua_select.c:1131
+#: src/dird/ua_select.c:1120 src/dird/ua_select.c:1130
 #, c-format
 msgid "Warning Job %s is not running. Continuing anyway ...\n"
 msgstr ""
 "Advertencia Job %s no está¡ en ejecución. Continuar de todos modos ...\n"
 
-#: src/dird/ua_select.c:1141 src/dird/ua_cmds.c:693 src/dird/ua_cmds.c:739
+#: src/dird/ua_select.c:1140 src/dird/ua_cmds.c:692 src/dird/ua_cmds.c:738
 msgid "Unauthorized command from this console.\n"
 msgstr "Comando no autorizado desde esta consola.\n"
 
-#: src/dird/ua_select.c:1166 src/stored/status.c:473 src/filed/status.c:241
+#: src/dird/ua_select.c:1165 src/stored/status.c:538 src/filed/status.c:241
 msgid "No Jobs running.\n"
 msgstr "No hay Jobs en ejecución.\n"
 
-#: src/dird/ua_select.c:1168
+#: src/dird/ua_select.c:1167
 msgid "None of your jobs are running.\n"
 msgstr "Ninguno de sus trabajos se está ejecutando.\n"
 
-#: src/dird/ua_select.c:1173
+#: src/dird/ua_select.c:1172
 msgid "Select Job:\n"
 msgstr "Seleccione Job:\n"
 
-#: src/dird/ua_select.c:1182
+#: src/dird/ua_select.c:1181
 #, c-format
 msgid "JobId=%s Job=%s"
 msgstr "JobId=%s Job=%s"
 
-#: src/dird/ua_select.c:1186
+#: src/dird/ua_select.c:1185
 #, fuzzy, c-format
 msgid "Choose Job to %s"
 msgstr "Elija Job para cancelar"
 
-#: src/dird/ua_select.c:1193
+#: src/dird/ua_select.c:1192
 #, c-format
 msgid ""
 "Cancel: %s\n"
@@ -462,15 +462,15 @@ msgstr ""
 "\n"
 "%s"
 
-#: src/dird/ua_select.c:1194
+#: src/dird/ua_select.c:1193
 msgid "Confirm cancel?"
 msgstr "Confirmar cancelar?"
 
-#: src/dird/ua_select.c:1200
+#: src/dird/ua_select.c:1199
 msgid "Confirm cancel (yes/no): "
 msgstr "Confirmar cancelar(si/no): "
 
-#: src/dird/ua_select.c:1209 src/dird/ua_cmds.c:734 src/dird/ua_cmds.c:1101
+#: src/dird/ua_select.c:1208 src/dird/ua_cmds.c:733 src/dird/ua_cmds.c:1100
 #, c-format
 msgid "Job \"%s\" not found.\n"
 msgstr "Job \"%s\" no encontrado.\n"
@@ -777,31 +777,31 @@ msgstr "Los siguientes archivos están en el catálogo, pero no en %s:\n"
 msgid "File: %s\n"
 msgstr "Archivo: %s\n"
 
-#: src/dird/admin.c:66
+#: src/dird/admin.c:65
 #, c-format
 msgid "Start Admin JobId %d, Job=%s\n"
 msgstr "Inicio Admin JobId %d, Job=%s\n"
 
-#: src/dird/admin.c:92 src/dird/vbackup.c:304 src/dird/migrate.c:1226
-#: src/dird/backup.c:618
+#: src/dird/admin.c:90 src/dird/vbackup.c:306 src/dird/migrate.c:1227
+#: src/dird/backup.c:628
 #, c-format
 msgid "Error getting Job record for Job report: ERR=%s"
 msgstr "Error al obtener el registro del Job para reporte de trabajo: ERR=%s"
 
-#: src/dird/admin.c:100
+#: src/dird/admin.c:98
 msgid "Admin OK"
 msgstr "Administración Ok"
 
-#: src/dird/admin.c:104
+#: src/dird/admin.c:102
 msgid "*** Admin Error ***"
 msgstr "***Administración Error***"
 
-#: src/dird/admin.c:108
+#: src/dird/admin.c:106
 msgid "Admin Canceled"
 msgstr "Administración Cancelada"
 
-#: src/dird/admin.c:112 src/dird/vbackup.c:354 src/dird/backup.c:674
-#: src/dird/restore.c:591
+#: src/dird/admin.c:110 src/dird/vbackup.c:356 src/dird/backup.c:684
+#: src/dird/restore.c:594
 #, c-format
 msgid "Inappropriate term code: %c\n"
 msgstr "Inadecuado código de terminación: %c\n"
@@ -810,13 +810,13 @@ msgstr "Inadecuado código de terminación: %c\n"
 msgid "Bacula "
 msgstr "Bacula"
 
-#: src/dird/dird.c:112
+#: src/dird/dird.c:150
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Version: %s (%s)\n"
 "\n"
-"Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
+"Usage: bacula-dir [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
 "       -c <file>   set configuration file to file\n"
 "       -d <nn>     set debug level to <nn>\n"
 "       -dt         print timestamp in debug output\n"
@@ -850,31 +850,31 @@ msgstr ""
 " -? imprimir este mensaje.\n"
 "\n"
 
-#: src/dird/dird.c:258 src/stored/stored.c:227 src/console/console.c:1109
+#: src/dird/dird.c:296 src/stored/stored.c:227 src/console/console.c:1109
 #: src/filed/filed.c:218 src/qt-console/main.cpp:165
 msgid "Cryptography library initialization failed.\n"
 msgstr "Inicialización de la librería de criptografía ha fallado.\n"
 
-#: src/dird/dird.c:262 src/dird/dird.c:292 src/dird/dird.c:538
-#: src/dird/dird.c:541 src/stored/stored.c:231 src/console/console.c:1113
+#: src/dird/dird.c:300 src/dird/dird.c:328 src/dird/dird.c:560
+#: src/dird/dird.c:563 src/stored/stored.c:231 src/console/console.c:1113
 #: src/filed/filed.c:223 src/qt-console/main.cpp:169
 #, c-format
 msgid "Please correct configuration file: %s\n"
 msgstr "Por favor, corrija el archivo de configuración: %s\n"
 
-#: src/dird/dird.c:524
+#: src/dird/dird.c:546
 msgid "Too many open reload requests. Request ignored.\n"
 msgstr "Demasiadas solicitudes de recarga abiertas. Solicitud ignorada.\n"
 
-#: src/dird/dird.c:539
+#: src/dird/dird.c:561
 msgid "Out of reload table entries. Giving up.\n"
 msgstr "Fuera de entradas de las tablas recargadas. Abandonando.\n"
 
-#: src/dird/dird.c:542
+#: src/dird/dird.c:564
 msgid "Resetting previous configuration.\n"
 msgstr "Restablecimiento de la configuración anterior.\n"
 
-#: src/dird/dird.c:606
+#: src/dird/dird.c:628
 #, c-format
 msgid ""
 "No Director resource defined in %s\n"
@@ -883,35 +883,35 @@ msgstr ""
 "Recurso Director no definido en %s\n"
 "Sin eso no sé quién soy :-(\n"
 
-#: src/dird/dird.c:614 src/filed/filed.c:350
+#: src/dird/dird.c:636 src/filed/filed.c:350
 #, c-format
 msgid "No Messages resource defined in %s\n"
 msgstr "Recursos de Mensajes no definidos en %s\n"
 
-#: src/dird/dird.c:619
+#: src/dird/dird.c:641
 #, c-format
 msgid "Only one Director resource permitted in %s\n"
 msgstr "Sólo un recurso Director permitido en %s\n"
 
-#: src/dird/dird.c:628 src/dird/dird.c:834 src/dird/dird.c:889
-#: src/dird/dird.c:1056 src/stored/stored.c:354 src/console/console.c:1296
+#: src/dird/dird.c:650 src/dird/dird.c:856 src/dird/dird.c:911
+#: src/dird/dird.c:950 src/stored/stored.c:354 src/console/console.c:1296
 #: src/console/console.c:1326 src/filed/filed.c:357 src/filed/filed.c:516
 #: src/wx-console/console_thread.cpp:118 src/wx-console/console_thread.cpp:144
 #: src/qt-console/main.cpp:224 src/qt-console/main.cpp:254
 msgid "TLS required but not configured in Bacula.\n"
 msgstr "Se requiere TLS pero no está configurado en Bacula.\n"
 
-#: src/dird/dird.c:636 src/stored/stored.c:410 src/filed/filed.c:526
+#: src/dird/dird.c:658 src/stored/stored.c:410 src/filed/filed.c:526
 #, c-format
 msgid "\"TLS Certificate\" file not defined for Director \"%s\" in %s.\n"
 msgstr "\"Certificado TLS\" archivo no definido para director \"%s\" en %s.\n"
 
-#: src/dird/dird.c:642 src/stored/stored.c:416 src/filed/filed.c:532
+#: src/dird/dird.c:664 src/stored/stored.c:416 src/filed/filed.c:532
 #, c-format
 msgid "\"TLS Key\" file not defined for Director \"%s\" in %s.\n"
 msgstr "\"Clave TLS\" archivo no definido para director \"%s\" en %s.\n"
 
-#: src/dird/dird.c:649 src/stored/stored.c:422 src/filed/filed.c:538
+#: src/dird/dird.c:671 src/stored/stored.c:422 src/filed/filed.c:538
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
@@ -922,48 +922,48 @@ msgstr ""
 "para Director \"%s\" en %s. Al menos un almacén de certificado CA es "
 "requerido cuando se utiliza \"TLS Verify Peer\".\n"
 
-#: src/dird/dird.c:668 src/stored/stored.c:441 src/filed/filed.c:557
+#: src/dird/dird.c:690 src/stored/stored.c:441 src/filed/filed.c:557
 #, c-format
 msgid "Failed to initialize TLS context for Director \"%s\" in %s.\n"
 msgstr "Fallo al inicializar contexto TLS para Director \"%s\" en %s.\n"
 
-#: src/dird/dird.c:676
+#: src/dird/dird.c:698
 #, c-format
 msgid "No Job records defined in %s\n"
 msgstr "Registros de Job no definidos en %s\n"
 
-#: src/dird/dird.c:734 src/dird/dird.c:747
+#: src/dird/dird.c:756 src/dird/dird.c:769
 #, c-format
 msgid "Hey something is wrong. p=0x%lu\n"
 msgstr "Oye, algo está mal. p=0x%lu\n"
 
-#: src/dird/dird.c:808
+#: src/dird/dird.c:830
 #, c-format
 msgid "\"%s\" directive in Job \"%s\" resource is required, but not found.\n"
 msgstr ""
 "Directiva \"%s\" en recurso Job \"%s\" es requerida, pero no se encuentra.\n"
 
-#: src/dird/dird.c:815
+#: src/dird/dird.c:837
 msgid "Too many items in Job resource\n"
 msgstr "Demasiados elementos en el recurso Job\n"
 
-#: src/dird/dird.c:819
+#: src/dird/dird.c:841
 #, c-format
 msgid "No storage specified in Job \"%s\" nor in Pool.\n"
 msgstr "Ningún storage especificada en Job \"%s\" ni en Pool.\n"
 
-#: src/dird/dird.c:843
+#: src/dird/dird.c:865
 #, c-format
 msgid "\"TLS Certificate\" file not defined for Console \"%s\" in %s.\n"
 msgstr ""
 "Archivo de \"Certificado TLS\" no definido para Console \"%s\" en %s.\n"
 
-#: src/dird/dird.c:849
+#: src/dird/dird.c:871
 #, c-format
 msgid "\"TLS Key\" file not defined for Console \"%s\" in %s.\n"
 msgstr "Archivo de \"Llave TLS\" no definido para Console \"%s\" en %s.\n"
 
-#: src/dird/dird.c:856
+#: src/dird/dird.c:878
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
@@ -974,12 +974,12 @@ msgstr ""
 "para Console \"%s\" en %s. Al menos un almacén de certificado CA es "
 "requerido cuando se utiliza \"TLS Verify Peer\".\n"
 
-#: src/dird/dird.c:873 src/dird/dird.c:913 src/filed/filed.c:382
+#: src/dird/dird.c:895 src/dird/dird.c:935 src/filed/filed.c:382
 #, c-format
 msgid "Failed to initialize TLS context for File daemon \"%s\" in %s.\n"
 msgstr "Fallo al inicializar contexto TLS para demonio File \"%s\" en %s.\n"
 
-#: src/dird/dird.c:896
+#: src/dird/dird.c:918
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
@@ -988,39 +988,44 @@ msgstr ""
 "Ninguno \"TLS CA Certificate\" o \"TLS CA Certificate Dir\" esta definido "
 "para demonio File \"%s\" en %s.\n"
 
-#: src/dird/dird.c:953 src/dird/dird.c:955
+#: src/dird/dird.c:959
+#, c-format
+msgid ""
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Storage \"%s\" in %s.\n"
+msgstr ""
+"Ninguno \"TLS CA Certificate\" o \"TLS CA Certificate Dir\" esta definido "
+"para Storage \"%s\" en %s.\n"
+
+#: src/dird/dird.c:975 src/stored/stored.c:394
+#, c-format
+msgid "Failed to initialize TLS context for Storage \"%s\" in %s.\n"
+msgstr "Fallo al inicializar contexto TLS para Storage \"%s\" en %s.\n"
+
+#: src/dird/dird.c:1014 src/dird/dird.c:1016
 #, c-format
 msgid "Could not open Catalog \"%s\", database \"%s\".\n"
 msgstr "No se pudo abrir Catálogo \"%s\", base de datos \"%s\".\n"
 
-#: src/dird/dird.c:958 src/tools/cats_test.c:377
+#: src/dird/dird.c:1019 src/tools/cats_test.c:377
 #, c-format
 msgid "%s"
 msgstr "%s"
 
-#: src/dird/dird.c:1037
+#: src/dird/dird.c:1098
 #, fuzzy, c-format
 msgid "Could not create storage record for %s\n"
 msgstr "No es posible crear el registro Pool. ERR=%s\n"
 
-#: src/dird/dird.c:1045
+#: src/dird/dird.c:1106
 #, fuzzy, c-format
 msgid "Could not update storage record for %s\n"
 msgstr "No se pudo actualizar el registro de trabajo. ERR=%s\n"
 
-#: src/dird/dird.c:1064
+#: src/dird/dird.c:1181 src/dird/migrate.c:1072 src/stored/stored.c:491
 #, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Storage \"%s\" in %s.\n"
-msgstr ""
-"Ninguno \"TLS CA Certificate\" o \"TLS CA Certificate Dir\" esta definido "
-"para Storage \"%s\" en %s.\n"
-
-#: src/dird/dird.c:1080 src/stored/stored.c:394
-#, c-format
-msgid "Failed to initialize TLS context for Storage \"%s\" in %s.\n"
-msgstr "Fallo al inicializar contexto TLS para Storage \"%s\" en %s.\n"
+msgid "Could not compile regex pattern \"%s\" ERR=%s\n"
+msgstr "No se ha podido compilar patrón regex  \"%s\" ERR=%s\n"
 
 #: src/dird/inc_conf.c:312
 #, c-format
@@ -1036,18 +1041,18 @@ msgstr "Esperaba una palabra clave Tipo FileSet, obtuvo: %s"
 msgid "Old style Include/Exclude not supported\n"
 msgstr "Antiguo estilo Incluir/Excluir no soportado\n"
 
-#: src/dird/inc_conf.c:393 src/dird/inc_conf.c:739 src/dird/dird_conf.c:1993
+#: src/dird/inc_conf.c:393 src/dird/inc_conf.c:739 src/dird/dird_conf.c:2022
 #, c-format
 msgid "Expecting keyword, got: %s\n"
 msgstr "Esperando palabra clave, obtuvo: %s\n"
 
-#: src/dird/inc_conf.c:401 src/dird/inc_conf.c:745 src/dird/dird_conf.c:1999
+#: src/dird/inc_conf.c:401 src/dird/inc_conf.c:745 src/dird/dird_conf.c:2028
 #: src/lib/parse_conf.c:976
 #, c-format
 msgid "expected an equals, got: %s"
 msgstr "esperaba una igual, obtuvo: %s"
 
-#: src/dird/inc_conf.c:411 src/dird/inc_conf.c:754 src/dird/dird_conf.c:2010
+#: src/dird/inc_conf.c:411 src/dird/inc_conf.c:754 src/dird/dird_conf.c:2039
 #, c-format
 msgid "Keyword %s not permitted in this resource"
 msgstr "Palabra clave %s no esta permitido en este recurso"
@@ -1100,7 +1105,7 @@ msgstr "Directiva Plugin no permitida en Exclude\n"
 msgid "Options section not permitted in Exclude\n"
 msgstr "Sección Options no permitida en Exclude\n"
 
-#: src/dird/inc_conf.c:724 src/dird/dird_conf.c:1979
+#: src/dird/inc_conf.c:724 src/dird/dird_conf.c:2008
 #, c-format
 msgid "Expecting open brace. Got %s"
 msgstr "Esperando abrir paréntesis. Obtuvo %s"
@@ -1159,7 +1164,7 @@ msgstr "Agregar a la consulta SQL:"
 msgid "End query mode.\n"
 msgstr "Fin modo de consulta.\n"
 
-#: src/dird/newvol.c:91
+#: src/dird/newvol.c:90
 #, c-format
 msgid "Illegal character in Volume name \"%s\"\n"
 msgstr "Carácter ilegal en el nombre del Volumen \"%s\"\n"
@@ -1174,13 +1179,13 @@ msgstr "Se creó un Volumen nuevo \"%s\" en el catálogo.\n"
 msgid "SQL failed, but ignored. ERR=%s\n"
 msgstr "SQL fallido, pero ignorado. ERR=%s\n"
 
-#: src/dird/newvol.c:142
+#: src/dird/newvol.c:141
 #, c-format
 msgid "Wanted to create Volume \"%s\", but it already exists. Trying again.\n"
 msgstr ""
 "Se trató de crear el Volumen \"%s\", pero ya existe. Tratando de nuevo.\n"
 
-#: src/dird/newvol.c:151
+#: src/dird/newvol.c:150
 msgid "Too many failures. Giving up creating Volume name.\n"
 msgstr "Demasiados errores. Abandono el intento de crear nombre de Volumen\n"
 
@@ -1219,7 +1224,7 @@ msgstr "No se puede ampliar la expresión \"%s\": ERR=%s\n"
 msgid "Cannot destroy var context: ERR=%s\n"
 msgstr "No se puede destruir variable contexto: ERR=%s\n"
 
-#: src/dird/recycle.c:65
+#: src/dird/recycle.c:69
 #, c-format
 msgid "Recycled volume \"%s\"\n"
 msgstr "Volumen \"%s\" reciclado\n"
@@ -1297,27 +1302,27 @@ msgid ""
 msgstr ""
 "No hay más Jobs relacionados con Volumen \"%s\". Marcando el para purgar.\n"
 
-#: src/dird/ua_purge.c:556 src/dird/ua_label.c:759
+#: src/dird/ua_purge.c:556 src/dird/ua_label.c:774
 #, c-format
 msgid "Connecting to Storage daemon %s at %s:%d ...\n"
 msgstr "Conectando al demonio Storage %s en %s:%d ...\n"
 
-#: src/dird/ua_purge.c:559 src/dird/ua_dotcmds.c:606 src/dird/ua_cmds.c:772
-#: src/dird/ua_cmds.c:1531 src/dird/ua_label.c:762 src/dird/job.c:448
+#: src/dird/ua_purge.c:559 src/dird/ua_dotcmds.c:625 src/dird/ua_cmds.c:771
+#: src/dird/ua_cmds.c:1577 src/dird/ua_label.c:777 src/dird/job.c:448
 msgid "Failed to connect to Storage daemon.\n"
 msgstr "Error al conectar con demonio Storage.\n"
 
-#: src/dird/ua_purge.c:622
+#: src/dird/ua_purge.c:623
 #, fuzzy
 msgid "Can't update volume size in the catalog\n"
 msgstr "Se creó un Volumen nuevo \"%s\" en el catálogo.\n"
 
-#: src/dird/ua_purge.c:624
+#: src/dird/ua_purge.c:625
 #, c-format
 msgid "The volume \"%s\" has been truncated\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:626
+#: src/dird/ua_purge.c:627
 #, fuzzy, c-format
 msgid "Unable to truncate volume \"%s\"\n"
 msgstr "No se puede truncar el dispositivo %s. ERR=%s\n"
@@ -1327,19 +1332,19 @@ msgstr "No se puede truncar el dispositivo %s. ERR=%s\n"
 msgid "No Volumes found to perform %s action.\n"
 msgstr "No encontraron volúmenes para etiquetar, o sin códigos de barras.\n"
 
-#: src/dird/ua_purge.c:785
+#: src/dird/ua_purge.c:786
 #, c-format
 msgid "Unable move recycled Volume in full Pool \"%s\" MaxVols=%d\n"
 msgstr ""
 "No se puede mover el Volumen reciclado en full Pool \"%s\" MaxVols=%d\n"
 
-#: src/dird/ua_purge.c:799
+#: src/dird/ua_purge.c:800
 #, c-format
 msgid "All records pruned from Volume \"%s\"; marking it \"Purged\"\n"
 msgstr ""
 "Todos los registros del Volumen \"%s\" podados; marcando el \"Purgados\"\n"
 
-#: src/dird/ua_purge.c:804
+#: src/dird/ua_purge.c:805
 #, c-format
 msgid "Cannot purge Volume with VolStatus=%s\n"
 msgstr "No se puede purgar Volumen con VolStatus=%s\n"
@@ -1349,8 +1354,8 @@ msgid "Could not get or create a Pool record.\n"
 msgstr "No es posible obtener o crear un registro Pool.\n"
 
 #: src/dird/vbackup.c:89 src/dird/migrate.c:227 src/dird/migrate.c:228
-#: src/dird/backup.c:93 src/dird/job.c:185 src/dird/job.c:868
-#: src/dird/job.c:1123 src/dird/job.c:1169 src/dird/job.c:1183
+#: src/dird/backup.c:93 src/dird/job.c:185 src/dird/job.c:871
+#: src/dird/job.c:1126 src/dird/job.c:1172 src/dird/job.c:1186
 msgid "Pool resource"
 msgstr "Recurso pool"
 
@@ -1383,34 +1388,34 @@ msgstr "Error obteniendo registro Job para Job anterior: ERR=%s"
 msgid "Could not get or create the FileSet record.\n"
 msgstr "No es posible obtener o crear un registro FileSet.\n"
 
-#: src/dird/vbackup.c:311 src/dird/backup.c:625
+#: src/dird/vbackup.c:313 src/dird/backup.c:635
 #, c-format
 msgid "Error getting Client record for Job report: ERR=%s"
 msgstr "Error al obtener registro de Clientes para reporte de Job: ERR=%s"
 
-#: src/dird/vbackup.c:317 src/dird/migrate.c:1256 src/dird/backup.c:631
+#: src/dird/vbackup.c:319 src/dird/migrate.c:1257 src/dird/backup.c:641
 #, c-format
 msgid "Error getting Media record for Volume \"%s\": ERR=%s"
 msgstr "Error al obtener registro de Media para Volumen \"%s\": ERR=%s"
 
-#: src/dird/vbackup.c:327 src/dird/backup.c:641 src/dird/backup.c:650
-#: src/stored/bscan.c:1210
+#: src/dird/vbackup.c:329 src/dird/backup.c:651 src/dird/backup.c:660
+#: src/stored/bscan.c:1214
 msgid "Backup OK -- with warnings"
 msgstr "Respaldo OK -- con advertencias"
 
-#: src/dird/vbackup.c:329 src/dird/backup.c:643 src/stored/bscan.c:1207
+#: src/dird/vbackup.c:331 src/dird/backup.c:653 src/stored/bscan.c:1211
 msgid "Backup OK"
 msgstr "Respaldo OK"
 
-#: src/dird/vbackup.c:334 src/dird/backup.c:654 src/stored/bscan.c:1214
+#: src/dird/vbackup.c:336 src/dird/backup.c:664 src/stored/bscan.c:1218
 msgid "*** Backup Error ***"
 msgstr "***Error en Respaldo ***"
 
-#: src/dird/vbackup.c:344 src/dird/backup.c:664 src/stored/bscan.c:1217
+#: src/dird/vbackup.c:346 src/dird/backup.c:674 src/stored/bscan.c:1221
 msgid "Backup Canceled"
 msgstr "Respaldo Cancelado"
 
-#: src/dird/vbackup.c:391
+#: src/dird/vbackup.c:393
 #, fuzzy, c-format
 msgid ""
 "%s %s %s (%s):\n"
@@ -1483,64 +1488,64 @@ msgstr "Ningún Jobs Deshabilitado.\n"
 msgid "disabled"
 msgstr "deshabilitado"
 
-#: src/dird/ua_output.c:208
+#: src/dird/ua_output.c:211
 msgid "Keywords for the show command are:\n"
 msgstr "Palabras clave para el comando show son:\n"
 
-#: src/dird/ua_output.c:214
+#: src/dird/ua_output.c:217
 #, c-format
 msgid "%s resource %s not found.\n"
 msgstr "%s recurso %s no encontrado.\n"
 
-#: src/dird/ua_output.c:217
+#: src/dird/ua_output.c:220
 #, c-format
 msgid "Resource %s not found\n"
 msgstr "Recursos %s no encontrado\n"
 
-#: src/dird/ua_output.c:288
+#: src/dird/ua_output.c:290
 msgid "Hey! DB is NULL\n"
 msgstr "Hey! BD esta VACÍA\n"
 
-#: src/dird/ua_output.c:445
+#: src/dird/ua_output.c:447
 #, c-format
 msgid "Jobid %d used %d Volume(s): %s\n"
 msgstr "Jobid %d usado %d Volumen(s): %s\n"
 
-#: src/dird/ua_output.c:463
+#: src/dird/ua_output.c:465
 msgid "No Pool specified.\n"
 msgstr "Ningún Pool especificado.\n"
 
-#: src/dird/ua_output.c:484
+#: src/dird/ua_output.c:486
 #, c-format
 msgid "Pool: %s\n"
 msgstr "Pool: %s\n"
 
-#: src/dird/ua_output.c:500
+#: src/dird/ua_output.c:502
 msgid "Ignoring invalid value for days. Max is 50.\n"
 msgstr "Ignorando valor invalido para días. Máximo es 50.\n"
 
-#: src/dird/ua_output.c:522
+#: src/dird/ua_output.c:524
 #, c-format
 msgid "Unknown list keyword: %s\n"
 msgstr "Lista de palabras clave desconocida: %s\n"
 
-#: src/dird/ua_output.c:548
+#: src/dird/ua_output.c:549
 #, c-format
 msgid "%s is not a job name.\n"
 msgstr "%s no es un nombre de Job.\n"
 
-#: src/dird/ua_output.c:562
+#: src/dird/ua_output.c:563
 #, c-format
 msgid "Could not find Pool for Job %s\n"
 msgstr "No se pudo encontrar Pool para Job %s\n"
 
-#: src/dird/ua_output.c:575
+#: src/dird/ua_output.c:576
 #, c-format
 msgid "Could not find next Volume for Job %s (Pool=%s, Level=%s).\n"
 msgstr ""
 "No se pudo encontrar el siguiente Volumen para Job %s (Pool=%s, Nivel=%s).\n"
 
-#: src/dird/ua_output.c:579
+#: src/dird/ua_output.c:580
 #, c-format
 msgid ""
 "The next Volume to be used by Job \"%s\" (Pool=%s, Level=%s) will be %s\n"
@@ -1548,31 +1553,31 @@ msgstr ""
 "El próximo Volumen que se utilizará por Job \"%s\" (Pool=%s, Nivel=%s) será "
 "%s\n"
 
-#: src/dird/ua_output.c:592
+#: src/dird/ua_output.c:593
 #, c-format
 msgid "Could not find next Volume for Job %s.\n"
 msgstr "No se pudo encontrar el siguiente Volumen para Job %s.\n"
 
-#: src/dird/ua_output.c:719 src/dird/job.c:133 src/tools/cats_test.c:375
+#: src/dird/ua_output.c:720 src/dird/job.c:133 src/tools/cats_test.c:375
 #, c-format
 msgid "Could not open database \"%s\".\n"
 msgstr "No se puede abrir la base de datos \"%s\".\n"
 
-#: src/dird/ua_output.c:732
+#: src/dird/ua_output.c:733
 #, c-format
 msgid "Pool %s not in database. %s"
 msgstr "Pool %s no creado en la base de datos. %s"
 
-#: src/dird/ua_output.c:740
+#: src/dird/ua_output.c:741
 #, c-format
 msgid "Pool %s created in database.\n"
 msgstr "Pool %s creado en la base de datos.\n"
 
-#: src/dird/ua_output.c:793
+#: src/dird/ua_output.c:794
 msgid "You have no messages.\n"
 msgstr "Usted no tiene mensajes.\n"
 
-#: src/dird/ua_output.c:873
+#: src/dird/ua_output.c:874
 msgid "Message too long to display.\n"
 msgstr "Mensaje demasiado largo para mostrar.\n"
 
@@ -1585,133 +1590,133 @@ msgstr "No se puede usar comando %s en un runscript"
 msgid ": is an invalid command.\n"
 msgstr ": es un comando inválido.\n"
 
-#: src/dird/ua_dotcmds.c:540 src/dird/ua_restore.c:780
+#: src/dird/ua_dotcmds.c:553 src/dird/ua_restore.c:780
 #: src/dird/ua_restore.c:823
 #, c-format
 msgid "Unable to get Job record for JobId=%s: ERR=%s\n"
 msgstr "No se puede obtener el registro Job para JobId=%s: ERR=%s\n"
 
-#: src/dird/ua_dotcmds.c:600 src/dird/ua_cmds.c:766 src/dird/ua_cmds.c:1520
+#: src/dird/ua_dotcmds.c:619 src/dird/ua_cmds.c:765 src/dird/ua_cmds.c:1566
 #: src/dird/ua_status.c:352 src/dird/job.c:147 src/dird/job.c:153
-#: src/dird/job.c:1157 src/dird/job.c:1161
+#: src/dird/job.c:1160 src/dird/job.c:1164
 msgid "unknown source"
 msgstr "fuente desconocida"
 
-#: src/dird/ua_dotcmds.c:603 src/dird/ua_cmds.c:769 src/dird/ua_status.c:355
+#: src/dird/ua_dotcmds.c:622 src/dird/ua_cmds.c:768 src/dird/ua_status.c:355
 #, c-format
 msgid "Connecting to Storage daemon %s at %s:%d\n"
 msgstr "Conectando al demonio Storage %s en %s:%d\n"
 
-#: src/dird/ua_dotcmds.c:609 src/dird/ua_cmds.c:775 src/dird/ua_status.c:366
+#: src/dird/ua_dotcmds.c:628 src/dird/ua_cmds.c:774 src/dird/ua_status.c:366
 msgid "Connected to storage daemon\n"
 msgstr "Conectado al demonio Storage\n"
 
-#: src/dird/ua_dotcmds.c:629 src/dird/ua_cmds.c:804 src/dird/ua_cmds.c:1202
+#: src/dird/ua_dotcmds.c:648 src/dird/ua_cmds.c:803 src/dird/ua_cmds.c:1208
 #: src/dird/ua_status.c:397
 #, c-format
 msgid "Connecting to Client %s at %s:%d\n"
 msgstr "Conectando al Cliente %s en %s:%d\n"
 
-#: src/dird/ua_dotcmds.c:632 src/dird/ua_cmds.c:807 src/dird/ua_cmds.c:1205
+#: src/dird/ua_dotcmds.c:651 src/dird/ua_cmds.c:806 src/dird/ua_cmds.c:1211
 msgid "Failed to connect to Client.\n"
 msgstr "Fallo al conectar con el cliente.\n"
 
-#: src/dird/ua_dotcmds.c:675 src/dird/ua_dotcmds.c:769
+#: src/dird/ua_dotcmds.c:694 src/dird/ua_dotcmds.c:788
 #, fuzzy, c-format
 msgid "Unknown command: %s\n"
 msgstr "Comando desconocido."
 
-#: src/dird/ua_dotcmds.c:713 src/dird/ua_cmds.c:994
+#: src/dird/ua_dotcmds.c:732 src/dird/ua_cmds.c:993
 msgid "Available daemons are: \n"
 msgstr "Demonios disponible son: \n"
 
-#: src/dird/ua_dotcmds.c:714 src/dird/ua_cmds.c:995
+#: src/dird/ua_dotcmds.c:733 src/dird/ua_cmds.c:994
 msgid "Director"
 msgstr "Director"
 
-#: src/dird/ua_dotcmds.c:717
+#: src/dird/ua_dotcmds.c:736
 msgid "Select daemon type to make die"
 msgstr "Seleccione tipo de demonio para matar"
 
-#: src/dird/ua_dotcmds.c:743
+#: src/dird/ua_dotcmds.c:762
 #, fuzzy
 msgid "The Director will generate a deadlock.\n"
 msgstr "El Director tendrá una violación de segmento.\n"
 
-#: src/dird/ua_dotcmds.c:747
+#: src/dird/ua_dotcmds.c:766
 msgid "The Director will segment fault.\n"
 msgstr "El Director tendrá una violación de segmento.\n"
 
-#: src/dird/ua_dotcmds.c:936
+#: src/dird/ua_dotcmds.c:955
 msgid "Access to specified Client or FileSet not allowed.\n"
 msgstr "El acceso a determinado Cliente o FileSet no permitido.\n"
 
-#: src/dird/ua_dotcmds.c:941 src/dird/ua_dotcmds.c:985
+#: src/dird/ua_dotcmds.c:960 src/dird/ua_dotcmds.c:1004
 #: src/dird/ua_restore.c:941 src/dird/ua_restore.c:969
 #: src/dird/ua_restore.c:990
 #, c-format
 msgid "Query failed: %s. ERR=%s\n"
 msgstr "Consulta fallida: %s. ERR=%s\n"
 
-#: src/dird/ua_dotcmds.c:980
+#: src/dird/ua_dotcmds.c:999
 msgid "query keyword not found.\n"
 msgstr "consulta de palabra clave no encontrada.\n"
 
-#: src/dird/ua_dotcmds.c:1007
+#: src/dird/ua_dotcmds.c:1026
 #, c-format
 msgid "List MediaType failed: ERR=%s\n"
 msgstr "Fallo al listar MediaType: ERR=%s\n"
 
-#: src/dird/ua_dotcmds.c:1021
+#: src/dird/ua_dotcmds.c:1040
 #, c-format
 msgid "List Media failed: ERR=%s\n"
 msgstr "Fallo al listar Media: ERR=%s\n"
 
-#: src/dird/ua_dotcmds.c:1035
+#: src/dird/ua_dotcmds.c:1054
 #, c-format
 msgid "List Location failed: ERR=%s\n"
 msgstr "Fallo al listar Ubicación: ERR=%s\n"
 
-#: src/dird/next_vol.c:149
+#: src/dird/next_vol.c:166
 #, c-format
 msgid "Purging oldest volume \"%s\"\n"
 msgstr "Purgando volumen más antiguo \"%s\"\n"
 
-#: src/dird/next_vol.c:155
+#: src/dird/next_vol.c:172
 #, c-format
 msgid "Pruning oldest volume \"%s\"\n"
 msgstr "Podando volumen más antiguo \"%s\"\n"
 
-#: src/dird/next_vol.c:174
+#: src/dird/next_vol.c:191
 msgid "We seem to be looping trying to find the next volume. I give up.\n"
 msgstr ""
 "Parece que estamos en bucle tratando de encontrar el próximo volumen. Me "
 "rindo.\n"
 
-#: src/dird/next_vol.c:201
+#: src/dird/next_vol.c:218
 #, fuzzy, c-format
 msgid "Max Volume bytes=%s exceeded. Marking Volume \"%s\" as Full.\n"
 msgstr ""
 "Máximo bytes por Volumen excedido. Marcando Volumen \"%s\" como Completo.\n"
 
-#: src/dird/next_vol.c:209
+#: src/dird/next_vol.c:226
 #, c-format
 msgid "Volume used once. Marking Volume \"%s\" as Used.\n"
 msgstr "Volumen utilizado una vez. Marcando Volumen \"%s\" como Usado.\n"
 
-#: src/dird/next_vol.c:216
+#: src/dird/next_vol.c:233
 #, fuzzy, c-format
 msgid "Max Volume jobs=%s exceeded. Marking Volume \"%s\" as Used.\n"
 msgstr ""
 "Máximo jobs por Volumen excedido. Marcando Volumen \"%s\" como Usado.\n"
 
-#: src/dird/next_vol.c:226
+#: src/dird/next_vol.c:243
 #, fuzzy, c-format
 msgid "Max Volume files=%s exceeded. Marking Volume \"%s\" as Used.\n"
 msgstr ""
 "Máximo archivos por Volumen excedido. Marcando Volumen \"%s\" como Usado.\n"
 
-#: src/dird/next_vol.c:237
+#: src/dird/next_vol.c:254
 #, fuzzy, c-format
 msgid ""
 "Max configured use duration=%s sec. exceeded. Marking Volume \"%s\" as "
@@ -1720,33 +1725,33 @@ msgstr ""
 "Máximo de duración de uso configurado superado. Marcando Volumen \"%s\" "
 "como  Usado.\n"
 
-#: src/dird/next_vol.c:249
+#: src/dird/next_vol.c:267
 #, c-format
 msgid "Catalog error updating volume \"%s\". ERR=%s"
 msgstr "Error de Catálogo actualizando volumen \"%s\". ERR=%s"
 
-#: src/dird/next_vol.c:271
+#: src/dird/next_vol.c:289
 msgid "volume has expired"
 msgstr "volumen ha caducado"
 
-#: src/dird/next_vol.c:289 src/dird/next_vol.c:333
+#: src/dird/next_vol.c:307 src/dird/next_vol.c:351
 #, c-format
 msgid "Recycled current volume \"%s\"\n"
 msgstr "Reciclado actual volumen \"%s\"\n"
 
-#: src/dird/next_vol.c:294
+#: src/dird/next_vol.c:312
 msgid "and recycling of current volume failed"
 msgstr "y el reciclado de volumen actual fallo"
 
-#: src/dird/next_vol.c:300
+#: src/dird/next_vol.c:318
 msgid "but should be Append, Purged or Recycle"
 msgstr "pero debería ser Anexar, Purgado o Reciclaje"
 
-#: src/dird/next_vol.c:309
+#: src/dird/next_vol.c:327
 msgid "volume has recycling disabled"
 msgstr "el volumen de reciclado se ha desactivado"
 
-#: src/dird/next_vol.c:336
+#: src/dird/next_vol.c:354
 msgid ""
 "but should be Append, Purged or Recycle (recycling of the current volume "
 "failed)"
@@ -1754,7 +1759,7 @@ msgstr ""
 "pero debería ser Anexar, Purgado o Reciclaje (reciclado del volumen actual "
 "fallido)"
 
-#: src/dird/next_vol.c:340
+#: src/dird/next_vol.c:358
 msgid ""
 "but should be Append, Purged or Recycle (cannot automatically recycle "
 "current volume, as it still contains unpruned data or the Volume Retention "
@@ -1764,23 +1769,23 @@ msgstr ""
 "automáticamente el volumen actual, ya que aún contiene datos \"unpruned\" o "
 "el tiempo de retención del Volumen no ha expirado.)"
 
-#: src/dird/next_vol.c:402
+#: src/dird/next_vol.c:421
 #, c-format
 msgid "Unable to get Pool record: ERR=%s"
 msgstr "No es posible obtener registro Pool: ERR=%s"
 
-#: src/dird/next_vol.c:409
+#: src/dird/next_vol.c:428
 #, c-format
 msgid "Unable add Scratch Volume, Pool \"%s\" full MaxVols=%d\n"
 msgstr ""
 "No se puede agregar el volumen Scratch, Pool \"%s\" completo MaxVols=%d\n"
 
-#: src/dird/next_vol.c:428
+#: src/dird/next_vol.c:448
 #, c-format
 msgid "Failed to move Scratch Volume. ERR=%s\n"
 msgstr "No se pudo mover Volumen Scratch. ERR=%s\n"
 
-#: src/dird/next_vol.c:433
+#: src/dird/next_vol.c:453
 #, c-format
 msgid "Using Volume \"%s\" from 'Scratch' pool.\n"
 msgstr "Usando Volumen \"%s\" desde 'Scratch' pool.\n"
@@ -1966,68 +1971,68 @@ msgstr ""
 "Usted probablemente desea utilizar el comando \"label\".\n"
 "\n"
 
-#: src/dird/ua_cmds.c:307
+#: src/dird/ua_cmds.c:306
 #, c-format
 msgid "Pool already has maximum volumes=%d\n"
 msgstr "Pool ya tiene volúmenes máximo=%d\n"
 
-#: src/dird/ua_cmds.c:308
+#: src/dird/ua_cmds.c:307
 msgid "Enter new maximum (zero for unlimited): "
 msgstr "Introduzca nuevo máximo (cero para un número ilimitado):"
 
-#: src/dird/ua_cmds.c:328
+#: src/dird/ua_cmds.c:327
 #, c-format
 msgid "Enter number of Volumes to create. 0=>fixed name. Max=%d: "
 msgstr ""
 "Introduzca el número de volúmenes para crear. 0=>nombre fijo. Máximo=%d:"
 
-#: src/dird/ua_cmds.c:334
+#: src/dird/ua_cmds.c:333
 #, c-format
 msgid "The number must be between 0 and %d\n"
 msgstr "El número debe estar comprendido entre 0 y %d\n"
 
-#: src/dird/ua_cmds.c:342
+#: src/dird/ua_cmds.c:341
 msgid "Enter Volume name: "
 msgstr "Introduzca nombre de Volumen:"
 
-#: src/dird/ua_cmds.c:346
+#: src/dird/ua_cmds.c:345
 msgid "Enter base volume name: "
 msgstr "Introduzca nombre de Volumen base:"
 
-#: src/dird/ua_cmds.c:355 src/dird/ua_label.c:648
+#: src/dird/ua_cmds.c:354 src/dird/ua_label.c:663
 msgid "Volume name too long.\n"
 msgstr "Nombre de Volumen demasiado largo.\n"
 
-#: src/dird/ua_cmds.c:359 src/dird/ua_label.c:654 src/lib/edit.c:501
+#: src/dird/ua_cmds.c:358 src/dird/ua_label.c:669 src/lib/edit.c:501
 msgid "Volume name must be at least one character long.\n"
 msgstr "Nombre de volumen debe ser de al menos un carácter de largo.\n"
 
-#: src/dird/ua_cmds.c:370
+#: src/dird/ua_cmds.c:369
 msgid "Enter the starting number: "
 msgstr "Introduzca el número inicial:"
 
-#: src/dird/ua_cmds.c:375
+#: src/dird/ua_cmds.c:374
 msgid "Start number must be greater than zero.\n"
 msgstr "Número de inicio debe ser mayor que cero.\n"
 
-#: src/dird/ua_cmds.c:386
+#: src/dird/ua_cmds.c:385
 msgid "Enter slot (0 for none): "
 msgstr "Introduzca ranura (0 para ninguno):"
 
-#: src/dird/ua_cmds.c:390
+#: src/dird/ua_cmds.c:389
 msgid "InChanger? yes/no: "
 msgstr "InChanger? si/no: "
 
-#: src/dird/ua_cmds.c:415
+#: src/dird/ua_cmds.c:414
 #, c-format
 msgid "%d Volumes created in pool %s\n"
 msgstr "%d Volúmenes creados en el pool %s\n"
 
-#: src/dird/ua_cmds.c:431 src/dird/ua_cmds.c:1033
+#: src/dird/ua_cmds.c:430 src/dird/ua_cmds.c:1032
 msgid "Turn on or off? "
 msgstr "Encender o apagar?"
 
-#: src/dird/ua_cmds.c:545
+#: src/dird/ua_cmds.c:544
 #, c-format
 msgid ""
 "Can't set %s RecyclePool to %s, %s is not in database.\n"
@@ -2037,7 +2042,7 @@ msgstr ""
 "datos.\n"
 "Intente actualizarlo con 'update pool=%s'\n"
 
-#: src/dird/ua_cmds.c:563
+#: src/dird/ua_cmds.c:562
 #, c-format
 msgid ""
 "Can't set %s ScratchPool to %s, %s is not in database.\n"
@@ -2047,7 +2052,7 @@ msgstr ""
 "datos.\n"
 "Intente actualizarlo con 'update pool=%s'\n"
 
-#: src/dird/ua_cmds.c:632
+#: src/dird/ua_cmds.c:631
 #, c-format
 msgid ""
 "Error: Pool %s already exists.\n"
@@ -2056,84 +2061,84 @@ msgstr ""
 "Error: Pool %s ya existe.\n"
 "Use update para cambiarlo.\n"
 
-#: src/dird/ua_cmds.c:643
+#: src/dird/ua_cmds.c:642
 #, c-format
 msgid "Pool %s created.\n"
 msgstr "Pool %s creado.\n"
 
-#: src/dird/ua_cmds.c:673
+#: src/dird/ua_cmds.c:672
 msgid "Python interpreter restarted.\n"
 msgstr "Interprete Python reiniciado.\n"
 
-#: src/dird/ua_cmds.c:676 src/dird/ua_cmds.c:1331
+#: src/dird/ua_cmds.c:675 src/dird/ua_cmds.c:1337
 msgid "Nothing done.\n"
 msgstr "Nada hecho.\n"
 
-#: src/dird/ua_cmds.c:700 src/dird/ua_cmds.c:1084 src/dird/ua_run.c:1582
+#: src/dird/ua_cmds.c:699 src/dird/ua_cmds.c:1083 src/dird/ua_run.c:1588
 #, c-format
 msgid "Client \"%s\" not found.\n"
 msgstr "Cliente \"%s\" no encontrado.\n"
 
-#: src/dird/ua_cmds.c:709
+#: src/dird/ua_cmds.c:708
 #, c-format
 msgid "Client \"%s\" address set to %s\n"
 msgstr "Cliente \"%s\" dirección configurada para %s\n"
 
-#: src/dird/ua_cmds.c:743
+#: src/dird/ua_cmds.c:742
 #, c-format
 msgid "Job \"%s\" %sabled\n"
 msgstr "Job \"%s\" %sabled\n"
 
-#: src/dird/ua_cmds.c:921
+#: src/dird/ua_cmds.c:920
 msgid "Enter new debug level: "
 msgstr "Introduzca el nuevo nivel de depuración:"
 
-#: src/dird/ua_cmds.c:998
+#: src/dird/ua_cmds.c:997
 msgid "All"
 msgstr "All"
 
-#: src/dird/ua_cmds.c:999
+#: src/dird/ua_cmds.c:998
 msgid "Select daemon type to set debug level"
 msgstr "Seleccione el tipo de Demonio para establecer el nivel de depuración"
 
-#: src/dird/ua_cmds.c:1088 src/dird/ua_cmds.c:1926
+#: src/dird/ua_cmds.c:1087 src/dird/ua_cmds.c:1972
 #, c-format
 msgid "No authorization for Client \"%s\"\n"
 msgstr "No autorización para Cliente \"%s\"\n"
 
-#: src/dird/ua_cmds.c:1093
+#: src/dird/ua_cmds.c:1092
 msgid "Client name missing.\n"
 msgstr "Falta el nombre del cliente.\n"
 
-#: src/dird/ua_cmds.c:1105 src/dird/ua_cmds.c:1166 src/dird/ua_cmds.c:1948
+#: src/dird/ua_cmds.c:1104 src/dird/ua_cmds.c:1171 src/dird/ua_cmds.c:1994
 #, c-format
 msgid "No authorization for Job \"%s\"\n"
 msgstr "No autorización para Job \"%s\"\n"
 
-#: src/dird/ua_cmds.c:1110
+#: src/dird/ua_cmds.c:1109
 msgid "Job name missing.\n"
 msgstr "Falta el nombre del Job.\n"
 
-#: src/dird/ua_cmds.c:1119
+#: src/dird/ua_cmds.c:1118
 #, c-format
 msgid "Fileset \"%s\" not found.\n"
 msgstr "FileSet \"%s\" no encontrado.\n"
 
-#: src/dird/ua_cmds.c:1123
+#: src/dird/ua_cmds.c:1122
 #, c-format
 msgid "No authorization for FileSet \"%s\"\n"
 msgstr "No autorización para FileSet \"%s\"\n"
 
-#: src/dird/ua_cmds.c:1128
+#: src/dird/ua_cmds.c:1127
 msgid "Fileset name missing.\n"
 msgstr "Falta Nombre del Fileset.\n"
 
-#: src/dird/ua_cmds.c:1139 src/dird/ua_run.c:563
+#: src/dird/ua_cmds.c:1138 src/dird/ua_run.c:550
 #, c-format
 msgid "Level \"%s\" not valid.\n"
 msgstr "Nivel \"%s\" no es válido.\n"
 
-#: src/dird/ua_cmds.c:1143
+#: src/dird/ua_cmds.c:1142
 msgid "Level value missing.\n"
 msgstr "Valor del nivel ausente.\n"
 
@@ -2141,19 +2146,24 @@ msgstr "Valor del nivel ausente.\n"
 msgid "Invalid value for accurate. It must be yes or no.\n"
 msgstr "Valor no válido para exacto. Debe ser sí o no.\n"
 
-#: src/dird/ua_cmds.c:1162
+#: src/dird/ua_cmds.c:1154
+#, fuzzy
+msgid "Accurate value missing.\n"
+msgstr "Valor del nivel ausente.\n"
+
+#: src/dird/ua_cmds.c:1167
 msgid "No job specified.\n"
 msgstr "Job no especificado.\n"
 
-#: src/dird/ua_cmds.c:1210
+#: src/dird/ua_cmds.c:1227
 msgid "Error sending include list.\n"
 msgstr "Error al enviar lista incluir.\n"
 
-#: src/dird/ua_cmds.c:1215
+#: src/dird/ua_cmds.c:1232
 msgid "Error sending exclude list.\n"
 msgstr "Error al enviar lista excluir.\n"
 
-#: src/dird/ua_cmds.c:1317
+#: src/dird/ua_cmds.c:1323
 msgid ""
 "In general it is not a good idea to delete either a\n"
 "Pool or a Volume since they may contain data.\n"
@@ -2163,20 +2173,40 @@ msgstr ""
 "Pool o un Volumen ya que pueden contener datos.\n"
 "\n"
 
-#: src/dird/ua_cmds.c:1320
+#: src/dird/ua_cmds.c:1326
 msgid "Choose catalog item to delete"
 msgstr "Seleccione el ítem del catalogo para eliminar"
 
-#: src/dird/ua_cmds.c:1384
+#: src/dird/ua_cmds.c:1376 src/dird/ua_cmds.c:1391 src/dird/ua_cmds.c:1401
+#, fuzzy, c-format
+msgid "Illegal JobId %s ignored\n"
+msgstr "Clonar JobId %d iniciado.\n"
+
+#: src/dird/ua_cmds.c:1404
 msgid "Enter JobId to delete: "
 msgstr "Introduzca jobId para eliminar:"
 
-#: src/dird/ua_cmds.c:1423
+#: src/dird/ua_cmds.c:1440
+#, fuzzy, c-format
+msgid "Are you sure you want to delete %d JobIds ? (yes/no): "
+msgstr "¿Esta usted seguro de que desea eliminar el Pool \"%s\"? (si/no):"
+
+#: src/dird/ua_cmds.c:1450
 #, c-format
-msgid "Job %s and associated records deleted from the catalog.\n"
+msgid "Illegal JobId range %s - %s should define increasing JobIds, ignored\n"
+msgstr ""
+
+#: src/dird/ua_cmds.c:1454
+#, c-format
+msgid "Illegal JobId range %s - %s, ignored\n"
+msgstr ""
+
+#: src/dird/ua_cmds.c:1469
+#, fuzzy, c-format
+msgid "Jobid %s and associated records deleted from the catalog.\n"
 msgstr "Job %s y los registros asociados eliminados del catálogo.\n"
 
-#: src/dird/ua_cmds.c:1438
+#: src/dird/ua_cmds.c:1484
 #, c-format
 msgid ""
 "\n"
@@ -2187,38 +2217,38 @@ msgstr ""
 "Este comando eliminara los volúmenes %s\n"
 "y todos los Jobs guardados en este volumen desde el Catalogo\n"
 
-#: src/dird/ua_cmds.c:1445
+#: src/dird/ua_cmds.c:1491
 #, c-format
 msgid "Are you sure you want to delete Volume \"%s\"? (yes/no): "
 msgstr "¿Estas usted seguro de que desea eliminar el Volumen \"%s\"? (si/no):"
 
-#: src/dird/ua_cmds.c:1458
+#: src/dird/ua_cmds.c:1504
 msgid "Can't list jobs on this volume\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1483
+#: src/dird/ua_cmds.c:1529
 #, c-format
 msgid "Are you sure you want to delete Pool \"%s\"? (yes/no): "
 msgstr "¿Esta usted seguro de que desea eliminar el Pool \"%s\"? (si/no):"
 
-#: src/dird/ua_cmds.c:1598
+#: src/dird/ua_cmds.c:1644
 #, c-format
 msgid "Using Catalog name=%s DB=%s\n"
 msgstr "Utilizando Catalogo nombre=%s BD=%s\n"
 
-#: src/dird/ua_cmds.c:1666
+#: src/dird/ua_cmds.c:1712
 msgid "ERR: Can't open db\n"
 msgstr "ERR: No se puede abrir db\n"
 
-#: src/dird/ua_cmds.c:1713
+#: src/dird/ua_cmds.c:1759
 msgid "Wait on mount timed out\n"
 msgstr "Tiempo agotado en esperar mount \n"
 
-#: src/dird/ua_cmds.c:1723
+#: src/dird/ua_cmds.c:1769
 msgid "ERR: Job was not found\n"
 msgstr "ERR: Job no se ha encontrado\n"
 
-#: src/dird/ua_cmds.c:1799
+#: src/dird/ua_cmds.c:1845
 msgid ""
 "  Command       Description\n"
 "  =======       ===========\n"
@@ -2226,7 +2256,7 @@ msgstr ""
 "Comando Descripción\n"
 " ======== ==============\n"
 
-#: src/dird/ua_cmds.c:1803
+#: src/dird/ua_cmds.c:1849
 #, c-format
 msgid ""
 "  %-13s %s\n"
@@ -2239,12 +2269,12 @@ msgstr ""
 "Argumentos:\n"
 "\t%s\n"
 
-#: src/dird/ua_cmds.c:1808
+#: src/dird/ua_cmds.c:1854
 #, c-format
 msgid "  %-13s %s\n"
 msgstr " %-13s %s\n"
 
-#: src/dird/ua_cmds.c:1812
+#: src/dird/ua_cmds.c:1858
 #, c-format
 msgid ""
 "\n"
@@ -2255,7 +2285,7 @@ msgstr ""
 "No se puede encontrar comando %s. \n"
 "\n"
 
-#: src/dird/ua_cmds.c:1814
+#: src/dird/ua_cmds.c:1860
 msgid ""
 "\n"
 "When at a prompt, entering a period cancels the command.\n"
@@ -2265,22 +2295,22 @@ msgstr ""
 "Cuando en un prompt, entrando un período cancela el comando.\n"
 "\n"
 
-#: src/dird/ua_cmds.c:1850 src/filed/status.c:85
+#: src/dird/ua_cmds.c:1896 src/filed/status.c:85
 #, c-format
 msgid "%s Version: %s (%s) %s %s %s %s\n"
 msgstr "%s Versión: %s (%s) %s %s %s %s\n"
 
-#: src/dird/ua_cmds.c:1909 src/dird/ua_cmds.c:1936 src/dird/ua_cmds.c:1958
+#: src/dird/ua_cmds.c:1955 src/dird/ua_cmds.c:1982 src/dird/ua_cmds.c:2004
 #, c-format
 msgid "No authorization for Catalog \"%s\"\n"
 msgstr "No autorización para Catalogo \"%s\"\n"
 
-#: src/dird/ua_cmds.c:2003
+#: src/dird/ua_cmds.c:2049
 #, c-format
 msgid "Could not open catalog database \"%s\".\n"
 msgstr "No se pudo abrir la base de datos de catálogo \"%s\".\n"
 
-#: src/dird/ua_cmds.c:2013
+#: src/dird/ua_cmds.c:2059
 #, c-format
 msgid "Using Catalog \"%s\"\n"
 msgstr "Usando Catalogo \"%s\"\n"
@@ -2390,7 +2420,7 @@ msgstr ""
 "\"done\" para salir de este modo.\n"
 "\n"
 
-#: src/dird/ua_tree.c:129 src/dird/ua_tree.c:827
+#: src/dird/ua_tree.c:129 src/dird/ua_tree.c:831
 #, c-format
 msgid "cwd is: %s\n"
 msgstr "cwd es: %s\n"
@@ -2400,53 +2430,60 @@ msgstr "cwd es: %s\n"
 msgid "Invalid command \"%s\". Enter \"done\" to exit.\n"
 msgstr "Invalido comando \"%s\". Introduzca \"done\" para salir.\n"
 
-#: src/dird/ua_tree.c:370 src/dird/ua_tree.c:382 src/dird/ua_tree.c:399
+#: src/dird/ua_tree.c:227
+#, c-format
+msgid ""
+"Something is wrong with the Delta sequence of %s, skiping new parts. Current "
+"sequence is %d\n"
+msgstr ""
+
+#: src/dird/ua_tree.c:373 src/dird/ua_tree.c:385 src/dird/ua_tree.c:402
 msgid "No files marked.\n"
 msgstr "Ningún archivo marcado.\n"
 
-#: src/dird/ua_tree.c:384
+#: src/dird/ua_tree.c:387
 msgid "1 file marked.\n"
 msgstr "1 archivo marcado.\n"
 
-#: src/dird/ua_tree.c:386
+#: src/dird/ua_tree.c:389
 #, c-format
 msgid "%s files marked.\n"
 msgstr "%s archivos marcados.\n"
 
-#: src/dird/ua_tree.c:414
+#: src/dird/ua_tree.c:417
 msgid "No directories marked.\n"
 msgstr "Ningún directorio marcado.\n"
 
-#: src/dird/ua_tree.c:416
+#: src/dird/ua_tree.c:419
 msgid "1 directory marked.\n"
 msgstr "1 directorio marcado.\n"
 
-#: src/dird/ua_tree.c:418
+#: src/dird/ua_tree.c:421
 #, c-format
 msgid "%s directories marked.\n"
 msgstr "%s directorios marcados.\n"
 
-#: src/dird/ua_tree.c:439
+#: src/dird/ua_tree.c:442
 #, c-format
 msgid "%s total files/dirs. %s marked to be restored.\n"
 msgstr ""
 "%s total de los archivos/directorios. %s marcado para ser restaurado.\n"
 
-#: src/dird/ua_tree.c:450
+#: src/dird/ua_tree.c:453
 msgid "No file specification given.\n"
 msgstr "Especificación de archivo no dado.\n"
 
-#: src/dird/ua_tree.c:671
+#: src/dird/ua_tree.c:674
 #, c-format
 msgid "Node %s has no children.\n"
 msgstr "Nodo %s no tiene hijos.\n"
 
-#: src/dird/ua_tree.c:764
+#: src/dird/ua_tree.c:767
 #, c-format
 msgid "%d total files; %d marked to be restored; %s bytes.\n"
 msgstr "%d total de los archivos; %d marcado para ser restaurado; %s bytes.\n"
 
-#: src/dird/ua_tree.c:775 src/stored/btape.c:2947
+#: src/dird/ua_tree.c:778 src/stored/btape.c:2949
 #, c-format
 msgid ""
 "  Command    Description\n"
@@ -2455,90 +2492,91 @@ msgstr ""
 "Comando Descripción\n"
 " ======= ===========\n"
 
-#: src/dird/ua_tree.c:798
+#: src/dird/ua_tree.c:801
 msgid "Too few or too many arguments. Try using double quotes.\n"
 msgstr "Muy pocos o demasiados argumentos. Trate de usar comillas dobles.\n"
 
-#: src/dird/ua_tree.c:810
+#: src/dird/ua_tree.c:814
 msgid "Invalid path given.\n"
 msgstr "Ruta dada no válida.\n"
 
-#: src/dird/ua_tree.c:846 src/dird/ua_tree.c:858
+#: src/dird/ua_tree.c:850 src/dird/ua_tree.c:862
 msgid "No files unmarked.\n"
 msgstr "No hay archivos sin marcar.\n"
 
-#: src/dird/ua_tree.c:860
+#: src/dird/ua_tree.c:864
 msgid "1 file unmarked.\n"
 msgstr "1 archivo sin marcar.\n"
 
-#: src/dird/ua_tree.c:863
+#: src/dird/ua_tree.c:867
 #, c-format
 msgid "%s files unmarked.\n"
 msgstr "%s archivos sin marcar.\n"
 
-#: src/dird/ua_tree.c:874 src/dird/ua_tree.c:891
+#: src/dird/ua_tree.c:878 src/dird/ua_tree.c:895
 msgid "No directories unmarked.\n"
 msgstr "No hay directorios sin marcar.\n"
 
-#: src/dird/ua_tree.c:893
+#: src/dird/ua_tree.c:897
 msgid "1 directory unmarked.\n"
 msgstr "1 directorio sin marcar.\n"
 
-#: src/dird/ua_tree.c:895
+#: src/dird/ua_tree.c:899
 #, c-format
 msgid "%d directories unmarked.\n"
 msgstr "%d directorios sin marcar.\n"
 
-#: src/dird/dird_conf.c:559 src/tray-monitor/tray_conf.c:168
+#: src/dird/dird_conf.c:567 src/tray-monitor/tray_conf.c:168
 #: src/qt-console/tray-monitor/tray_conf.cpp:168
 #, c-format
 msgid "No %s resource defined\n"
 msgstr "Recurso %s no definido\n"
 
-#: src/dird/dird_conf.c:568
+#: src/dird/dird_conf.c:576
 #, c-format
 msgid "Director: name=%s MaxJobs=%d FDtimeout=%s SDtimeout=%s\n"
 msgstr "Director: nombre=%s MaxJobs=%d FDtimeout=%s SDtimeout=%s\n"
 
-#: src/dird/dird_conf.c:573
+#: src/dird/dird_conf.c:581
 #, c-format
 msgid "   query_file=%s\n"
 msgstr "query_file=%s\n"
 
-#: src/dird/dird_conf.c:576 src/dird/dird_conf.c:596 src/dird/dird_conf.c:610
-#: src/dird/dird_conf.c:669 src/dird/dird_conf.c:673 src/dird/dird_conf.c:677
-#: src/dird/dird_conf.c:710 src/dird/dird_conf.c:733 src/dird/dird_conf.c:737
-#: src/dird/dird_conf.c:741 src/dird/dird_conf.c:745 src/dird/dird_conf.c:749
-#: src/dird/dird_conf.c:762 src/dird/dird_conf.c:989 src/dird/dird_conf.c:996
+#: src/dird/dird_conf.c:584 src/dird/dird_conf.c:604 src/dird/dird_conf.c:621
+#: src/dird/dird_conf.c:689 src/dird/dird_conf.c:693 src/dird/dird_conf.c:697
+#: src/dird/dird_conf.c:730 src/dird/dird_conf.c:753 src/dird/dird_conf.c:757
+#: src/dird/dird_conf.c:761 src/dird/dird_conf.c:765 src/dird/dird_conf.c:769
+#: src/dird/dird_conf.c:782 src/dird/dird_conf.c:1018
+#: src/dird/dird_conf.c:1025
 msgid "  --> "
 msgstr "--> "
 
-#: src/dird/dird_conf.c:581
+#: src/dird/dird_conf.c:589
 #, c-format
 msgid "Console: name=%s SSL=%d\n"
 msgstr "Console: nombre=%s SSL=%d\n"
 
-#: src/dird/dird_conf.c:586
+#: src/dird/dird_conf.c:594
 #, c-format
 msgid "Counter: name=%s min=%d max=%d cur=%d wrapcntr=%s\n"
 msgstr "Counter: nombre=%s mínimo=%d máximo=%d cur=%d wrapcntr=%s\n"
 
-#: src/dird/dird_conf.c:591
+#: src/dird/dird_conf.c:599
 #, c-format
 msgid "Counter: name=%s min=%d max=%d\n"
 msgstr "Counter: nombre=%s mínimo=%d máximo=%d\n"
 
-#: src/dird/dird_conf.c:602
+#: src/dird/dird_conf.c:613
 #, c-format
 msgid "Client: name=%s address=%s FDport=%d MaxJobs=%u\n"
 msgstr "Cliente: nombre=%s dirección=%s FDport=%d MaxJobs=%u\n"
 
-#: src/dird/dird_conf.c:605
+#: src/dird/dird_conf.c:616
 #, c-format
 msgid "      JobRetention=%s FileRetention=%s AutoPrune=%d\n"
 msgstr "JobRetention=%s FileRetention=%s AutoPrune=%d\n"
 
-#: src/dird/dird_conf.c:618
+#: src/dird/dird_conf.c:629
 #, c-format
 msgid ""
 "Device: name=%s ok=%d num_writers=%d max_writers=%d\n"
@@ -2551,7 +2589,7 @@ msgstr ""
 "%d\n"
 " poolid=%s volname=%s MediaType=%s\n"
 
-#: src/dird/dird_conf.c:629
+#: src/dird/dird_conf.c:643
 #, c-format
 msgid ""
 "Storage: name=%s address=%s SDport=%d MaxJobs=%u\n"
@@ -2560,7 +2598,7 @@ msgstr ""
 "Storage: nombre=%s dirección=%s SDport=%d MaxJobs=%u\n"
 " DeviceName=%s MediaType=%s StorageId=%s\n"
 
-#: src/dird/dird_conf.c:639
+#: src/dird/dird_conf.c:656
 #, c-format
 msgid ""
 "Catalog: name=%s address=%s DBport=%d db_name=%s\n"
@@ -2569,16 +2607,16 @@ msgstr ""
 "Catálogo: nombre=%s dirección=%s DBport=%d db_nombre=%s\n"
 " db_driver=%s db_user=%s MutliDBConn=%d\n"
 
-#: src/dird/dird_conf.c:649
+#: src/dird/dird_conf.c:669
 #, c-format
 msgid "%s: name=%s JobType=%d level=%s Priority=%d Enabled=%d\n"
 msgstr "%s: nombre=%s JobType=%d nivel=%s Prioridad=%d Activo=%d\n"
 
-#: src/dird/dird_conf.c:650
+#: src/dird/dird_conf.c:670
 msgid "JobDefs"
 msgstr "JobDefs"
 
-#: src/dird/dird_conf.c:654
+#: src/dird/dird_conf.c:674
 #, c-format
 msgid ""
 "     MaxJobs=%u Resched=%d Times=%d Interval=%s Spool=%d WritePartAfterJob="
@@ -2586,256 +2624,256 @@ msgid ""
 msgstr ""
 "MaxJobs=%u Resched=%d Times=%d Intervalo=%s Spool=%d WritePartAfterJob=%d\n"
 
-#: src/dird/dird_conf.c:660
+#: src/dird/dird_conf.c:680
 #, c-format
 msgid "     SpoolSize=%s\n"
 msgstr "SpoolSize=%s\n"
 
-#: src/dird/dird_conf.c:663
+#: src/dird/dird_conf.c:683
 #, c-format
 msgid "     Accurate=%d\n"
 msgstr "Preciso=%d\n"
 
-#: src/dird/dird_conf.c:666
+#: src/dird/dird_conf.c:686
 #, c-format
 msgid "     SelectionType=%d\n"
 msgstr "SelectionType=%d\n"
 
-#: src/dird/dird_conf.c:681
+#: src/dird/dird_conf.c:701
 #, c-format
 msgid "  --> Where=%s\n"
 msgstr "--> Donde=%s\n"
 
-#: src/dird/dird_conf.c:684
+#: src/dird/dird_conf.c:704
 #, c-format
 msgid "  --> RegexWhere=%s\n"
 msgstr "--> RegexDonde=%s\n"
 
-#: src/dird/dird_conf.c:687
+#: src/dird/dird_conf.c:707
 #, c-format
 msgid "  --> Bootstrap=%s\n"
 msgstr "--> Bootstrap=%s\n"
 
-#: src/dird/dird_conf.c:690
+#: src/dird/dird_conf.c:710
 #, c-format
 msgid "  --> WriteBootstrap=%s\n"
 msgstr "--> WriteBootstrap=%s\n"
 
-#: src/dird/dird_conf.c:693
+#: src/dird/dird_conf.c:713
 #, c-format
 msgid "  --> PluginOptions=%s\n"
 msgstr "--> PluginOptions=%s\n"
 
-#: src/dird/dird_conf.c:696
+#: src/dird/dird_conf.c:716
 #, c-format
 msgid "  --> MaxRunTime=%u\n"
 msgstr "--> MaxRunTime=%u\n"
 
-#: src/dird/dird_conf.c:699
+#: src/dird/dird_conf.c:719
 #, c-format
 msgid "  --> MaxWaitTime=%u\n"
 msgstr "--> MaxWaitTime=%u\n"
 
-#: src/dird/dird_conf.c:702
+#: src/dird/dird_conf.c:722
 #, c-format
 msgid "  --> MaxStartDelay=%u\n"
 msgstr "--> MaxStartDelay=%u\n"
 
-#: src/dird/dird_conf.c:705
+#: src/dird/dird_conf.c:725
 #, fuzzy, c-format
 msgid "  --> MaxRunSchedTime=%u\n"
 msgstr "--> MaxRunTime=%u\n"
 
-#: src/dird/dird_conf.c:717
+#: src/dird/dird_conf.c:737
 #, fuzzy, c-format
 msgid "  --> Base %s\n"
 msgstr "--> Objetivo=%s\n"
 
-#: src/dird/dird_conf.c:723 src/lib/runscript.c:297
+#: src/dird/dird_conf.c:743 src/lib/runscript.c:297
 msgid " --> RunScript\n"
 msgstr "--> EjecutarScript\n"
 
-#: src/dird/dird_conf.c:724 src/lib/runscript.c:298
+#: src/dird/dird_conf.c:744 src/lib/runscript.c:298
 #, c-format
 msgid "  --> Command=%s\n"
 msgstr "--> Comando=%s\n"
 
-#: src/dird/dird_conf.c:725 src/lib/runscript.c:299
+#: src/dird/dird_conf.c:745 src/lib/runscript.c:299
 #, c-format
 msgid "  --> Target=%s\n"
 msgstr "--> Objetivo=%s\n"
 
-#: src/dird/dird_conf.c:726 src/lib/runscript.c:300
+#: src/dird/dird_conf.c:746 src/lib/runscript.c:300
 #, c-format
 msgid "  --> RunOnSuccess=%u\n"
 msgstr "--> RunOnSuccess=%u\n"
 
-#: src/dird/dird_conf.c:727 src/lib/runscript.c:301
+#: src/dird/dird_conf.c:747 src/lib/runscript.c:301
 #, c-format
 msgid "  --> RunOnFailure=%u\n"
 msgstr "--> RunOnFailure=%u\n"
 
-#: src/dird/dird_conf.c:728 src/lib/runscript.c:302
+#: src/dird/dird_conf.c:748 src/lib/runscript.c:302
 #, c-format
 msgid "  --> FailJobOnError=%u\n"
 msgstr "--> FailJobOnError=%u\n"
 
-#: src/dird/dird_conf.c:729 src/lib/runscript.c:303
+#: src/dird/dird_conf.c:749 src/lib/runscript.c:303
 #, c-format
 msgid "  --> RunWhen=%u\n"
 msgstr "--> EjecutarCuando=%u\n"
 
-#: src/dird/dird_conf.c:755
+#: src/dird/dird_conf.c:775
 #, c-format
 msgid "  --> Run=%s\n"
 msgstr "--> Ejecutar=%s\n"
 
-#: src/dird/dird_conf.c:759
+#: src/dird/dird_conf.c:779
 #, c-format
 msgid "  --> SelectionPattern=%s\n"
 msgstr "--> SeleccionPatron=%s\n"
 
-#: src/dird/dird_conf.c:770
+#: src/dird/dird_conf.c:793
 #, c-format
 msgid "FileSet: name=%s\n"
 msgstr "FileSet: nombre=%s\n"
 
-#: src/dird/dird_conf.c:861 src/dird/dird_conf.c:940
+#: src/dird/dird_conf.c:887 src/dird/dird_conf.c:966
 #, c-format
 msgid "Schedule: name=%s\n"
 msgstr "Schedule: nombre=%s\n"
 
-#: src/dird/dird_conf.c:866
+#: src/dird/dird_conf.c:892
 #, c-format
 msgid "  --> Run Level=%s\n"
 msgstr "--> Ejecutar Nivel=%s\n"
 
-#: src/dird/dird_conf.c:867
+#: src/dird/dird_conf.c:893
 msgid "      hour="
 msgstr "hora="
 
-#: src/dird/dird_conf.c:876
+#: src/dird/dird_conf.c:902
 msgid "      mday="
 msgstr "mdia="
 
-#: src/dird/dird_conf.c:885
+#: src/dird/dird_conf.c:911
 msgid "      month="
 msgstr "mes="
 
-#: src/dird/dird_conf.c:894
+#: src/dird/dird_conf.c:920
 msgid "      wday="
 msgstr "wdia="
 
-#: src/dird/dird_conf.c:903
+#: src/dird/dird_conf.c:929
 msgid "      wom="
 msgstr "wom="
 
-#: src/dird/dird_conf.c:912
+#: src/dird/dird_conf.c:938
 msgid "      woy="
 msgstr "woy="
 
-#: src/dird/dird_conf.c:921
+#: src/dird/dird_conf.c:947
 #, c-format
 msgid "      mins=%d\n"
 msgstr "mins=%d\n"
 
-#: src/dird/dird_conf.c:923 src/dird/dird_conf.c:927 src/dird/dird_conf.c:931
+#: src/dird/dird_conf.c:949 src/dird/dird_conf.c:953 src/dird/dird_conf.c:957
 msgid "     --> "
 msgstr "--> "
 
-#: src/dird/dird_conf.c:945
+#: src/dird/dird_conf.c:974
 #, c-format
 msgid "Pool: name=%s PoolType=%s\n"
 msgstr "Pool: nombre=%s PoolType=%s\n"
 
-#: src/dird/dird_conf.c:947
+#: src/dird/dird_conf.c:976
 #, c-format
 msgid "      use_cat=%d use_once=%d cat_files=%d\n"
 msgstr "use_cat=%d use_once=%d cat_files=%d\n"
 
-#: src/dird/dird_conf.c:950
+#: src/dird/dird_conf.c:979
 #, c-format
 msgid "      max_vols=%d auto_prune=%d VolRetention=%s\n"
 msgstr "max_vols=%d auto_prune=%d VolRetention=%s\n"
 
-#: src/dird/dird_conf.c:953
+#: src/dird/dird_conf.c:982
 #, c-format
 msgid "      VolUse=%s recycle=%d LabelFormat=%s\n"
 msgstr "VolUse=%s recycle=%d LabelFormat=%s\n"
 
-#: src/dird/dird_conf.c:957
+#: src/dird/dird_conf.c:986
 #, c-format
 msgid "      CleaningPrefix=%s LabelType=%d\n"
 msgstr "CleaningPrefix=%s LabelType=%d\n"
 
-#: src/dird/dird_conf.c:959
+#: src/dird/dird_conf.c:988
 #, c-format
 msgid "      RecyleOldest=%d PurgeOldest=%d ActionOnPurge=%d\n"
 msgstr "RecyleOldest=%d PurgeOldest=%d ActionOnPurge=%d\n"
 
-#: src/dird/dird_conf.c:963
+#: src/dird/dird_conf.c:992
 #, c-format
 msgid "      MaxVolJobs=%d MaxVolFiles=%d MaxVolBytes=%s\n"
 msgstr "MaxVolJobs=%d MaxVolFiles=%d MaxVolBytes=%s\n"
 
-#: src/dird/dird_conf.c:967
+#: src/dird/dird_conf.c:996
 #, c-format
 msgid "      MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"
 msgstr "MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"
 
-#: src/dird/dird_conf.c:971
+#: src/dird/dird_conf.c:1000
 #, fuzzy, c-format
 msgid "      JobRetention=%s FileRetention=%s\n"
 msgstr "JobRetention=%s FileRetention=%s AutoPrune=%d\n"
 
-#: src/dird/dird_conf.c:975
+#: src/dird/dird_conf.c:1004
 #, c-format
 msgid "      NextPool=%s\n"
 msgstr "NextPool=%s\n"
 
-#: src/dird/dird_conf.c:978
+#: src/dird/dird_conf.c:1007
 #, c-format
 msgid "      RecyclePool=%s\n"
 msgstr "RecyclePool=%s\n"
 
-#: src/dird/dird_conf.c:981
+#: src/dird/dird_conf.c:1010
 #, c-format
 msgid "      ScratchPool=%s\n"
 msgstr "ScratchPool=%s\n"
 
-#: src/dird/dird_conf.c:984
+#: src/dird/dird_conf.c:1013
 #, c-format
 msgid "      Catalog=%s\n"
 msgstr "Catálogo=%s\n"
 
-#: src/dird/dird_conf.c:1004
+#: src/dird/dird_conf.c:1033
 #, c-format
 msgid "Messages: name=%s\n"
 msgstr "Mensajes: nombre=%s\n"
 
-#: src/dird/dird_conf.c:1006
+#: src/dird/dird_conf.c:1035
 #, c-format
 msgid "      mailcmd=%s\n"
 msgstr "mailcmd=%s\n"
 
-#: src/dird/dird_conf.c:1008
+#: src/dird/dird_conf.c:1037
 #, c-format
 msgid "      opcmd=%s\n"
 msgstr "opcmd=%s\n"
 
-#: src/dird/dird_conf.c:1012 src/tray-monitor/tray_conf.c:199
+#: src/dird/dird_conf.c:1041 src/tray-monitor/tray_conf.c:199
 #: src/qt-console/tray-monitor/tray_conf.cpp:199
 #, c-format
 msgid "Unknown resource type %d in dump_resource.\n"
 msgstr "Tipo de recurso desconocido %d en dump_resource.\n"
 
-#: src/dird/dird_conf.c:1343 src/tray-monitor/tray_conf.c:257
+#: src/dird/dird_conf.c:1372 src/tray-monitor/tray_conf.c:257
 #: src/qt-console/tray-monitor/tray_conf.cpp:257
 #, c-format
 msgid "Unknown resource type %d in free_resource.\n"
 msgstr "Tipo de recurso desconocido %d en free_resource.\n"
 
-#: src/dird/dird_conf.c:1375 src/dird/dird_conf.c:1390
+#: src/dird/dird_conf.c:1404 src/dird/dird_conf.c:1419
 #: src/tray-monitor/tray_conf.c:288 src/wx-console/console_conf.c:265
 #: src/console/console_conf.c:259 src/filed/filed_conf.c:361
 #: src/qt-console/tray-monitor/tray_conf.cpp:288
@@ -2844,54 +2882,54 @@ msgstr "Tipo de recurso desconocido %d en free_resource.\n"
 msgid "%s item is required in %s resource, but not found.\n"
 msgstr "Ítem %s es necesario en recurso %s, pero no se encuentra.\n"
 
-#: src/dird/dird_conf.c:1381 src/tray-monitor/tray_conf.c:294
+#: src/dird/dird_conf.c:1410 src/tray-monitor/tray_conf.c:294
 #: src/lib/parse_conf.c:225 src/qt-console/tray-monitor/tray_conf.cpp:294
 #, c-format
 msgid "Too many items in %s resource\n"
 msgstr "Demasiados ítem en recurso %s\n"
 
-#: src/dird/dird_conf.c:1421
+#: src/dird/dird_conf.c:1450
 #, c-format
 msgid "Cannot find Pool resource %s\n"
 msgstr "No se puede encontrar el recurso Pool %s\n"
 
-#: src/dird/dird_conf.c:1432
+#: src/dird/dird_conf.c:1461
 #, c-format
 msgid "Cannot find Console resource %s\n"
 msgstr "No se puede encontrar el recurso Console %s\n"
 
-#: src/dird/dird_conf.c:1438 src/stored/stored_conf.c:611
+#: src/dird/dird_conf.c:1467 src/stored/stored_conf.c:611
 #: src/filed/filed_conf.c:381
 #, c-format
 msgid "Cannot find Director resource %s\n"
 msgstr "No se puede encontrar el recurso Director %s\n"
 
-#: src/dird/dird_conf.c:1445 src/stored/stored_conf.c:617
+#: src/dird/dird_conf.c:1474 src/stored/stored_conf.c:617
 #, c-format
 msgid "Cannot find Storage resource %s\n"
 msgstr "No se puede encontrar el recurso Storage %s\n"
 
-#: src/dird/dird_conf.c:1454
+#: src/dird/dird_conf.c:1483
 #, c-format
 msgid "Cannot find Job resource %s\n"
 msgstr "No se puede encontrar el recurso Job %s\n"
 
-#: src/dird/dird_conf.c:1504
+#: src/dird/dird_conf.c:1533
 #, c-format
 msgid "Cannot find Counter resource %s\n"
 msgstr "No se puede encontrar el recurso Counter %s\n"
 
-#: src/dird/dird_conf.c:1512 src/filed/filed_conf.c:387
+#: src/dird/dird_conf.c:1541 src/filed/filed_conf.c:387
 #, c-format
 msgid "Cannot find Client resource %s\n"
 msgstr "No se puede encontrar el recurso Cliente %s\n"
 
-#: src/dird/dird_conf.c:1525
+#: src/dird/dird_conf.c:1554
 #, c-format
 msgid "Cannot find Schedule resource %s\n"
 msgstr "No se puede encontrar el recurso Schedule %s\n"
 
-#: src/dird/dird_conf.c:1530 src/dird/dird_conf.c:1590
+#: src/dird/dird_conf.c:1559 src/dird/dird_conf.c:1619
 #: src/tray-monitor/tray_conf.c:314 src/tray-monitor/tray_conf.c:352
 #: src/qt-console/tray-monitor/tray_conf.cpp:314
 #: src/qt-console/tray-monitor/tray_conf.cpp:352
@@ -2899,12 +2937,12 @@ msgstr "No se puede encontrar el recurso Schedule %s\n"
 msgid "Unknown resource type %d in save_resource.\n"
 msgstr "Tipo de recurso desconocido %d en  save_resource.\n"
 
-#: src/dird/dird_conf.c:1605
+#: src/dird/dird_conf.c:1634
 #, c-format
 msgid "Name item is required in %s resource, but not found.\n"
 msgstr "Nombre del ítem se requiere en recurso %s, pero no se encuentra.\n"
 
-#: src/dird/dird_conf.c:1613 src/tray-monitor/tray_conf.c:372
+#: src/dird/dird_conf.c:1642 src/tray-monitor/tray_conf.c:372
 #: src/wx-console/console_conf.c:328 src/console/console_conf.c:322
 #: src/filed/filed_conf.c:446 src/qt-console/tray-monitor/tray_conf.cpp:372
 #: src/qt-console/bat_conf.cpp:334
@@ -2913,43 +2951,43 @@ msgid "Attempt to define second %s resource named \"%s\" is not permitted.\n"
 msgstr ""
 "Segundo intento de definir recurso %s llamado \"%s\" no está permitido.\n"
 
-#: src/dird/dird_conf.c:1618
+#: src/dird/dird_conf.c:1647
 #, c-format
 msgid "Inserting %s res: %s index=%d pass=%d\n"
 msgstr "Insertando %s res: %s index=%d pass=%d\n"
 
-#: src/dird/dird_conf.c:1631
+#: src/dird/dird_conf.c:1660
 #, c-format
 msgid "Expected one of: %s, got: %s"
 msgstr "Esperaba uno de: %s, obtuvo: %s"
 
-#: src/dird/dird_conf.c:1703
+#: src/dird/dird_conf.c:1732
 #, c-format
 msgid "Expected a Migration Job Type keyword, got: %s"
 msgstr "Espera una palabra clave Tipo Job de Migración, obtuvo: %s"
 
-#: src/dird/dird_conf.c:1729
+#: src/dird/dird_conf.c:1758
 #, c-format
 msgid "Expected a Job Type keyword, got: %s"
 msgstr "Esperaba una palabra clave Tipo Job, obtuvo: %s"
 
-#: src/dird/dird_conf.c:1753
+#: src/dird/dird_conf.c:1782
 #, c-format
 msgid "Expected a Job Level keyword, got: %s"
 msgstr "Esperaba una palabra clave Tipo Level, obtuvo: %s"
 
-#: src/dird/dird_conf.c:1773
+#: src/dird/dird_conf.c:1802
 #, c-format
 msgid "Expected a Restore replacement option, got: %s"
 msgstr "Esperaba una opción de reemplazo de Restauración, obtuvo: %s"
 
-#: src/dird/dird_conf.c:1823 src/dird/dird_conf.c:1939
-#: src/lib/parse_conf.c:761 src/lib/parse_conf.c:777
+#: src/dird/dird_conf.c:1852 src/dird/dird_conf.c:1968
+#: src/lib/parse_conf.c:761 src/lib/parse_conf.c:777 src/lib/ini.c:593
 #, c-format
 msgid "Expect %s, got: %s"
 msgstr "Esperaba %s, obtuvo: %s"
 
-#: src/dird/dird_conf.c:1845 src/lib/parse_conf.c:478
+#: src/dird/dird_conf.c:1874 src/lib/parse_conf.c:478
 #, c-format
 msgid "Could not find config Resource %s referenced on line %d : %s\n"
 msgstr ""
@@ -3095,7 +3133,7 @@ msgstr ""
 msgid "Select full restore to a specified Job date"
 msgstr "Seleccione restauración completa para una fecha especifica de Job"
 
-#: src/dird/ua_restore.c:446 src/dird/ua_status.c:863 src/stored/status.c:546
+#: src/dird/ua_restore.c:446 src/dird/ua_status.c:862 src/stored/status.c:611
 #: src/filed/status.c:373 src/wx-console/wxbconfigpanel.cpp:220
 msgid "Cancel"
 msgstr "Cancelar"
@@ -3105,7 +3143,7 @@ msgstr "Cancelar"
 msgid "Unknown keyword: %s\n"
 msgstr "Palabra clave desconocida: %s\n"
 
-#: src/dird/ua_restore.c:520 src/dird/ua_update.c:955
+#: src/dird/ua_restore.c:520 src/dird/ua_update.c:957
 #, c-format
 msgid "Improper date format: %s\n"
 msgstr "Inadecuado formato de fecha: %s\n"
@@ -3375,13 +3413,19 @@ msgstr ""
 "Advertencia, storage por defecto reemplazada por \"%s\" en la línea de "
 "comandos.\n"
 
-#: src/dird/ua_restore.c:1533
+#: src/dird/ua_restore.c:1534
+#, fuzzy, c-format
+msgid "Using Storage \"%s\" from MediaType \"%s\".\n"
+msgstr ""
+"Storage \"%s\" no encontrado, usando Storage \"%s\" desde MediaType\"%s\".\n"
+
+#: src/dird/ua_restore.c:1537
 #, c-format
 msgid "Storage \"%s\" not found, using Storage \"%s\" from MediaType \"%s\".\n"
 msgstr ""
 "Storage \"%s\" no encontrado, usando Storage \"%s\" desde MediaType\"%s\".\n"
 
-#: src/dird/ua_restore.c:1541
+#: src/dird/ua_restore.c:1546
 #, c-format
 msgid ""
 "\n"
@@ -3451,7 +3495,7 @@ msgid ""
 "resource.\n"
 msgstr ""
 
-#: src/dird/fd_cmds.c:500 src/filed/job.c:858
+#: src/dird/fd_cmds.c:500 src/filed/job.c:854
 #, c-format
 msgid "Cannot run program: %s. ERR=%s\n"
 msgstr "No se puede ejecutar el programa: %s. ERR=%s\n"
@@ -3496,9 +3540,9 @@ msgstr ""
 "<Archivado:atributos erróneos, se esperaban 3 campos se tienen %d\n"
 " msglen=%d msg=%s\n"
 
-#: src/dird/fd_cmds.c:825 src/dird/fd_cmds.c:884 src/dird/catreq.c:443
-#: src/cats/sqlite.c:374 src/cats/ingres.c:451 src/cats/postgresql.c:441
-#: src/cats/dbi.c:552 src/cats/mysql.c:358
+#: src/dird/fd_cmds.c:825 src/dird/fd_cmds.c:884 src/cats/sqlite.c:387
+#: src/cats/ingres.c:464 src/cats/postgresql.c:454 src/cats/dbi.c:565
+#: src/cats/mysql.c:371
 #, c-format
 msgid "Attribute create error. %s"
 msgstr "error al crear Atributo.%s"
@@ -3517,19 +3561,19 @@ msgstr "<filed: Error al obtener los atributos de red. ERR=%s\n"
 msgid "Negative numbers not permitted\n"
 msgstr "Números negativos no permitidos.\n"
 
-#: src/dird/ua_label.c:110
+#: src/dird/ua_label.c:110 src/lib/sellist.c:76
 msgid "Range end is not integer.\n"
 msgstr "Rango final no es entero.\n"
 
-#: src/dird/ua_label.c:115
+#: src/dird/ua_label.c:115 src/lib/sellist.c:81
 msgid "Range start is not an integer.\n"
 msgstr "Rango inicial no es entero.\n"
 
-#: src/dird/ua_label.c:121
+#: src/dird/ua_label.c:121 src/lib/sellist.c:87
 msgid "Range end not bigger than start.\n"
 msgstr "Rango final no más grande que inicial.\n"
 
-#: src/dird/ua_label.c:127
+#: src/dird/ua_label.c:127 src/lib/sellist.c:94
 msgid "Input value is not an integer.\n"
 msgstr "Valor de entrada no es un entero.\n"
 
@@ -3541,49 +3585,49 @@ msgstr "Los valores deben ser ser mayor que cero.\n"
 msgid "Slot too large.\n"
 msgstr "Ranura demasiado grande.\n"
 
-#: src/dird/ua_label.c:187 src/dird/ua_label.c:352 src/dird/ua_label.c:1214
-#: src/dird/ua_run.c:1557
+#: src/dird/ua_label.c:189 src/dird/ua_label.c:366 src/dird/ua_label.c:1228
+#: src/dird/ua_run.c:1563
 msgid "command line"
 msgstr "línea de comandos"
 
-#: src/dird/ua_label.c:205 src/dird/ua_label.c:516 src/dird/ua_label.c:1221
+#: src/dird/ua_label.c:207 src/dird/ua_label.c:531 src/dird/ua_label.c:1235
 msgid "No slots in changer to scan.\n"
 msgstr "No hay ranuras en cambiador para analizar.\n"
 
-#: src/dird/ua_label.c:217 src/dird/ua_label.c:527
+#: src/dird/ua_label.c:219 src/dird/ua_label.c:542
 msgid "No Volumes found to label, or no barcodes.\n"
 msgstr "No encontraron volúmenes para etiquetar, o sin códigos de barras.\n"
 
-#: src/dird/ua_label.c:227 src/dird/ua_label.c:1242
+#: src/dird/ua_label.c:229 src/dird/ua_label.c:1256
 #, c-format
 msgid "Slot %d greater than max %d ignored.\n"
 msgstr "Ranura %d mayor que el máximo %d ignorado.\n"
 
-#: src/dird/ua_label.c:256
+#: src/dird/ua_label.c:267
 #, c-format
 msgid "No VolName for Slot=%d InChanger set to zero.\n"
 msgstr "Ninguno VolName para Ranura=%d InChanger establecido en cero.\n"
 
-#: src/dird/ua_label.c:274
+#: src/dird/ua_label.c:288
 #, c-format
 msgid "Catalog record for Volume \"%s\" updated to reference slot %d.\n"
 msgstr ""
 "Registro de catálogo para Volumen \"%s\" actualizado para referenciar ranura "
 "%d.\n"
 
-#: src/dird/ua_label.c:278
+#: src/dird/ua_label.c:292
 #, c-format
 msgid "Catalog record for Volume \"%s\" is up to date.\n"
 msgstr "Registro de catálogo para Volumen \"%s\" esta actualizado.\n"
 
-#: src/dird/ua_label.c:284
+#: src/dird/ua_label.c:298
 #, c-format
 msgid "Volume \"%s\" not found in catalog. Slot=%d InChanger set to zero.\n"
 msgstr ""
 "Volumen \"%s\" no se encuentra en el catálogo. Ranura=%d InChanger "
 "configurado para cero.\n"
 
-#: src/dird/ua_label.c:381
+#: src/dird/ua_label.c:394
 #, c-format
 msgid ""
 "Volume \"%s\" has VolStatus %s. It must be Purged or Recycled before "
@@ -3592,39 +3636,39 @@ msgstr ""
 "Volumen \"%s\" hay VolStatus %s. Debe ser purgado o reciclado antes de "
 "volver a etiquetar.\n"
 
-#: src/dird/ua_label.c:397
+#: src/dird/ua_label.c:410
 msgid "Enter new Volume name: "
 msgstr "Introduzca el nuevo nombre de Volumen:"
 
-#: src/dird/ua_label.c:410
+#: src/dird/ua_label.c:425
 #, c-format
 msgid "Media record for new Volume \"%s\" already exists.\n"
 msgstr "Registro de Medios para nuevo volumen \"%s\" ya existe.\n"
 
-#: src/dird/ua_label.c:428
+#: src/dird/ua_label.c:443
 msgid "Enter slot (0 or Enter for none): "
 msgstr "Introduzca ranura (0 o Enter para ninguno):"
 
-#: src/dird/ua_label.c:456
+#: src/dird/ua_label.c:471
 #, c-format
 msgid "Delete of Volume \"%s\" failed. ERR=%s"
 msgstr "Fallo al eliminar el Volumen \"%s\". ERR=%s"
 
-#: src/dird/ua_label.c:459
+#: src/dird/ua_label.c:474
 #, c-format
 msgid "Old volume \"%s\" deleted from catalog.\n"
 msgstr "Antiguo volumen \"%s\" borrado del catalogo.\n"
 
-#: src/dird/ua_label.c:470
+#: src/dird/ua_label.c:485
 #, c-format
 msgid "Requesting to mount %s ...\n"
 msgstr "Solicitando para montar %s ...\n"
 
-#: src/dird/ua_label.c:492
+#: src/dird/ua_label.c:507
 msgid "Do not forget to mount the drive!!!\n"
 msgstr "No se olvide de montar la unidad!!!\n"
 
-#: src/dird/ua_label.c:532
+#: src/dird/ua_label.c:547
 msgid ""
 "The following Volumes will be labeled:\n"
 "Slot  Volume\n"
@@ -3634,98 +3678,98 @@ msgstr ""
 "Ranura Volumen\n"
 "==============\n"
 
-#: src/dird/ua_label.c:541
+#: src/dird/ua_label.c:556
 msgid "Do you want to label these Volumes? (yes|no): "
 msgstr "¿Quieres etiquetar estos volúmenes? (sí | no):"
 
-#: src/dird/ua_label.c:562
+#: src/dird/ua_label.c:576
 #, c-format
 msgid "Media record for Slot %d Volume \"%s\" already exists.\n"
 msgstr "Registro de Medios para ranura %d Volumen \"%s\" ya existe.\n"
 
-#: src/dird/ua_label.c:568
+#: src/dird/ua_label.c:582
 #, c-format
 msgid "Error setting InChanger: ERR=%s"
 msgstr "Error al configurar InChanger: ERR =% s"
 
-#: src/dird/ua_label.c:591
+#: src/dird/ua_label.c:605
 #, c-format
 msgid "Maximum pool Volumes=%d reached.\n"
 msgstr "Máximo pool Volúmenes=%d alcanzado.\n"
 
-#: src/dird/ua_label.c:598
+#: src/dird/ua_label.c:613
 #, c-format
 msgid "Catalog record for cleaning tape \"%s\" successfully created.\n"
 msgstr ""
 "Registro de catálogo para la limpieza de la cinta \"%s\" ha creado "
 "correctamente.\n"
 
-#: src/dird/ua_label.c:605
+#: src/dird/ua_label.c:620
 #, c-format
 msgid "Catalog error on cleaning tape: %s"
 msgstr "Error de catálogo en la limpieza de la cinta: %s"
 
-#: src/dird/ua_label.c:641
+#: src/dird/ua_label.c:656
 #, c-format
 msgid "Illegal character \"%c\" in a volume name.\n"
 msgstr "Ilegal carácter \"%c\" en un nombre de volumen.\n"
 
-#: src/dird/ua_label.c:688
+#: src/dird/ua_label.c:703
 #, c-format
 msgid "Sending relabel command from \"%s\" to \"%s\" ...\n"
 msgstr "Enviando comando relabel desde \"%s\" para \"%s\" ...\n"
 
-#: src/dird/ua_label.c:695
+#: src/dird/ua_label.c:710
 #, c-format
 msgid "Sending label command for Volume \"%s\" Slot %d ...\n"
 msgstr "Enviando comando relabel para Volumen \"%s\" Ranura %d ...\n"
 
-#: src/dird/ua_label.c:736
+#: src/dird/ua_label.c:751
 #, c-format
 msgid "Catalog record for Volume \"%s\", Slot %d  successfully created.\n"
 msgstr ""
 "Registro Catalogo para Volumen \"%s\", Ranura %d creado correctamente.\n"
 
-#: src/dird/ua_label.c:749
+#: src/dird/ua_label.c:764
 #, c-format
 msgid "Label command failed for Volume %s.\n"
 msgstr "Comando Label fallido para Volumen %s.\n"
 
-#: src/dird/ua_label.c:787
+#: src/dird/ua_label.c:802
 msgid "Could not open SD socket.\n"
 msgstr "No se pudo abrir socket SD.\n"
 
-#: src/dird/ua_label.c:859 src/dird/ua_label.c:869
+#: src/dird/ua_label.c:874 src/dird/ua_label.c:884
 #, c-format
 msgid "Invalid Slot number: %s\n"
 msgstr "Número de Ranura no válido:%s\n"
 
-#: src/dird/ua_label.c:878
+#: src/dird/ua_label.c:893
 #, c-format
 msgid "Invalid Volume name: %s\n"
 msgstr "Nombre de Volumen no válido:%s\n"
 
-#: src/dird/ua_label.c:972
+#: src/dird/ua_label.c:987
 #, c-format
 msgid "Device \"%s\" has %d slots.\n"
 msgstr "Dispositivo \"%s\" tiene %d ranuras.\n"
 
-#: src/dird/ua_label.c:1018
+#: src/dird/ua_label.c:1033
 #, c-format
 msgid "Pool \"%s\" resource not found for volume \"%s\"!\n"
 msgstr "Recurso Pool \"%s\" no encontrado para volumen \"%s\"!\n"
 
-#: src/dird/ua_label.c:1233
+#: src/dird/ua_label.c:1247
 msgid "No Volumes found, or no barcodes.\n"
 msgstr "Volúmenes no encontrados, o no códigos de barras.\n"
 
-#: src/dird/ua_label.c:1236
+#: src/dird/ua_label.c:1250
 msgid ""
 " Slot |   Volume Name    |   Status  |     Media Type       |      "
 "Pool          |\n"
 msgstr "Ranura | Nombre Volumen | Estado | Tipo de Media | Pool |\n"
 
-#: src/dird/ua_label.c:1237
+#: src/dird/ua_label.c:1251
 msgid ""
 "------+------------------+-----------+----------------------"
 "+--------------------|\n"
@@ -3947,16 +3991,16 @@ msgstr "Valor no válido. Debe ser sí o no.\n"
 msgid "New Recycle flag is: %s\n"
 msgstr "Nueva Recycle flag es: %s\n"
 
-#: src/dird/ua_update.c:257 src/dird/ua_update.c:277 src/dird/ua_update.c:698
-#: src/dird/ua_run.c:180 src/dird/backup.c:778 src/dird/backup.c:779
-#: src/dird/backup.c:780 src/dird/ua_input.c:131 src/stored/parse_bsr.c:864
+#: src/dird/ua_update.c:257 src/dird/ua_update.c:277 src/dird/ua_update.c:699
+#: src/dird/ua_run.c:180 src/dird/backup.c:788 src/dird/backup.c:789
+#: src/dird/backup.c:790 src/dird/ua_input.c:131 src/stored/parse_bsr.c:863
 #: src/tools/dbcheck.c:1352
 msgid "yes"
 msgstr "si"
 
-#: src/dird/ua_update.c:257 src/dird/ua_update.c:277 src/dird/ua_update.c:698
-#: src/dird/backup.c:778 src/dird/backup.c:779 src/dird/backup.c:780
-#: src/dird/ua_input.c:135 src/stored/parse_bsr.c:864
+#: src/dird/ua_update.c:257 src/dird/ua_update.c:277 src/dird/ua_update.c:699
+#: src/dird/ua_run.c:200 src/dird/backup.c:788 src/dird/backup.c:789
+#: src/dird/backup.c:790 src/dird/ua_input.c:135 src/stored/parse_bsr.c:863
 msgid "no"
 msgstr "no"
 
@@ -3970,47 +4014,47 @@ msgstr "Nueva InChanger flag es: %s\n"
 msgid "Invalid slot, it must be between 0 and MaxVols=%d\n"
 msgstr "Ranura no válido, debe estar entre 0 y MaxVols=%d\n"
 
-#: src/dird/ua_update.c:303 src/dird/ua_update.c:726
+#: src/dird/ua_update.c:304 src/dird/ua_update.c:728
 #, c-format
 msgid "Error updating media record Slot: ERR=%s"
 msgstr "Error actualizando registro de medios de Ranuras: ERR=%s"
 
-#: src/dird/ua_update.c:305
+#: src/dird/ua_update.c:306
 #, c-format
 msgid "New Slot is: %d\n"
 msgstr "Nueva Ranura es: %d\n"
 
-#: src/dird/ua_update.c:330
+#: src/dird/ua_update.c:331
 #, c-format
 msgid "New Pool is: %s\n"
 msgstr "Nuevo Pool es: %s\n"
 
-#: src/dird/ua_update.c:373
+#: src/dird/ua_update.c:374
 #, c-format
 msgid "New RecyclePool is: %s\n"
 msgstr "Nuevo RecyclePool es: %s\n"
 
-#: src/dird/ua_update.c:393
+#: src/dird/ua_update.c:394
 #, c-format
 msgid "Error updating Volume record: ERR=%s"
 msgstr "Error actualizando registro Volumen:  ERR=%s"
 
-#: src/dird/ua_update.c:395
+#: src/dird/ua_update.c:396
 #, c-format
 msgid "Volume defaults updated from \"%s\" Pool record.\n"
 msgstr "Volumen por defecto actualizado desde registro \"%s\" Pool.\n"
 
-#: src/dird/ua_update.c:419 src/dird/ua_update.c:452
+#: src/dird/ua_update.c:419 src/dird/ua_update.c:451
 #, c-format
 msgid "Error updating Volume records: ERR=%s"
 msgstr "Error actualizando registros Volumen:  ERR=%s"
 
-#: src/dird/ua_update.c:421 src/dird/ua_update.c:454
+#: src/dird/ua_update.c:421 src/dird/ua_update.c:453
 #, c-format
 msgid "All Volume defaults updated from \"%s\" Pool record.\n"
 msgstr "Todos Volúmenes por defectos actualizado desde registro \"%s\" Pool.\n"
 
-#: src/dird/ua_update.c:444
+#: src/dird/ua_update.c:443
 #, c-format
 msgid "Updating all pools, but skipped PoolId=%d. ERR=%s\n"
 msgstr "Actualizando todos los pools, pero saltando PoolId=%d. ERR=%s\n"
@@ -4025,189 +4069,189 @@ msgstr "Error actualizando registro media Activado:  ERR=%s"
 msgid "New Enabled is: %d\n"
 msgstr "Nuevo Activado es: %d\n"
 
-#: src/dird/ua_update.c:486
+#: src/dird/ua_update.c:487
 #, c-format
 msgid "Error updating media record ActionOnPurge: ERR=%s"
 msgstr "Error actualizando registro de medios ActionOnPurge: ERR=%s"
 
-#: src/dird/ua_update.c:489
+#: src/dird/ua_update.c:490
 #, c-format
 msgid "New ActionOnPurge is: %s\n"
 msgstr "Nueva ActionOnPurge es: %s\n"
 
-#: src/dird/ua_update.c:604 src/dird/ua_run.c:235
+#: src/dird/ua_update.c:605 src/dird/ua_run.c:222
 msgid "Parameters to modify:\n"
 msgstr "Parámetros para modificar:\n"
 
-#: src/dird/ua_update.c:605
+#: src/dird/ua_update.c:606
 msgid "Volume Status"
 msgstr "Estado del Volumen"
 
-#: src/dird/ua_update.c:606
+#: src/dird/ua_update.c:607
 msgid "Volume Retention Period"
 msgstr "Periodo de Retención del Volumen"
 
-#: src/dird/ua_update.c:607
+#: src/dird/ua_update.c:608
 msgid "Volume Use Duration"
 msgstr "Duración de uso del Volumen"
 
-#: src/dird/ua_update.c:608
+#: src/dird/ua_update.c:609
 msgid "Maximum Volume Jobs"
 msgstr "Máximo Volumen Jobs"
 
-#: src/dird/ua_update.c:609
+#: src/dird/ua_update.c:610
 msgid "Maximum Volume Files"
 msgstr "Máximo Archivos de Volumen"
 
-#: src/dird/ua_update.c:610
+#: src/dird/ua_update.c:611
 msgid "Maximum Volume Bytes"
 msgstr "Máximo Volumen Bytes"
 
-#: src/dird/ua_update.c:611
+#: src/dird/ua_update.c:612
 msgid "Recycle Flag"
 msgstr "Recycle Flag"
 
-#: src/dird/ua_update.c:612
+#: src/dird/ua_update.c:613
 msgid "Slot"
 msgstr "Ranura"
 
-#: src/dird/ua_update.c:613
+#: src/dird/ua_update.c:614
 msgid "InChanger Flag"
 msgstr "InChanger Flag"
 
-#: src/dird/ua_update.c:614
+#: src/dird/ua_update.c:615
 msgid "Volume Files"
 msgstr "Archivos de Volumen"
 
-#: src/dird/ua_update.c:616
+#: src/dird/ua_update.c:617
 msgid "Volume from Pool"
 msgstr "Volumen de Pool"
 
-#: src/dird/ua_update.c:617
+#: src/dird/ua_update.c:618
 msgid "All Volumes from Pool"
 msgstr "Todos Volúmenes de Pool"
 
-#: src/dird/ua_update.c:618
+#: src/dird/ua_update.c:619
 msgid "All Volumes from all Pools"
 msgstr "Todos los Volúmenes de todas los Pools"
 
-#: src/dird/ua_update.c:619
+#: src/dird/ua_update.c:620
 msgid "Enabled"
 msgstr "Activado"
 
-#: src/dird/ua_update.c:620
+#: src/dird/ua_update.c:621
 msgid "RecyclePool"
 msgstr "RecyclePool"
 
-#: src/dird/ua_update.c:621
+#: src/dird/ua_update.c:622
 msgid "Action On Purge"
 msgstr "Action On Purge"
 
-#: src/dird/ua_update.c:622
+#: src/dird/ua_update.c:623
 msgid "Done"
 msgstr "Hecho"
 
-#: src/dird/ua_update.c:623 src/dird/ua_run.c:265 src/dird/ua_run.c:594
+#: src/dird/ua_update.c:624 src/dird/ua_run.c:252 src/dird/ua_run.c:600
 msgid "Select parameter to modify"
 msgstr "Seleccione los parámetros para modificar"
 
-#: src/dird/ua_update.c:631
+#: src/dird/ua_update.c:632
 #, c-format
 msgid "Updating Volume \"%s\"\n"
 msgstr "Actualizando Volumen \"%s\"\n"
 
-#: src/dird/ua_update.c:636
+#: src/dird/ua_update.c:637
 #, c-format
 msgid "Current Volume status is: %s\n"
 msgstr "Actual estado del Volumen es: %s\n"
 
-#: src/dird/ua_update.c:637
+#: src/dird/ua_update.c:638
 msgid "Possible Values are:\n"
 msgstr "Posibles Valores son:\n"
 
-#: src/dird/ua_update.c:648
+#: src/dird/ua_update.c:649
 msgid "Choose new Volume Status"
 msgstr "Seleccione el nuevo estado del Volumen"
 
-#: src/dird/ua_update.c:654
+#: src/dird/ua_update.c:655
 #, c-format
 msgid "Current retention period is: %s\n"
 msgstr "Actual periodo de retención es: %s\n"
 
-#: src/dird/ua_update.c:656
+#: src/dird/ua_update.c:657
 msgid "Enter Volume Retention period: "
 msgstr "Introduzca periodo de Retención del Volumen:"
 
-#: src/dird/ua_update.c:663
+#: src/dird/ua_update.c:664
 #, c-format
 msgid "Current use duration is: %s\n"
 msgstr "Duración de uso actual es: %s\n"
 
-#: src/dird/ua_update.c:665
+#: src/dird/ua_update.c:666
 msgid "Enter Volume Use Duration: "
 msgstr "Introduzca Duración de Uso de Volumen:"
 
-#: src/dird/ua_update.c:672
+#: src/dird/ua_update.c:673
 #, c-format
 msgid "Current max jobs is: %u\n"
 msgstr "Máximo jobs actual es: %u\n"
 
-#: src/dird/ua_update.c:673
+#: src/dird/ua_update.c:674
 msgid "Enter new Maximum Jobs: "
 msgstr "Introduzca nuevo Máximo de Trabajos"
 
-#: src/dird/ua_update.c:680
+#: src/dird/ua_update.c:681
 #, c-format
 msgid "Current max files is: %u\n"
 msgstr "Actual máximo de archivos es: %u\n"
 
-#: src/dird/ua_update.c:681
+#: src/dird/ua_update.c:682
 msgid "Enter new Maximum Files: "
 msgstr "Introduzca nuevo máximo de archivos:"
 
-#: src/dird/ua_update.c:688
+#: src/dird/ua_update.c:689
 #, c-format
 msgid "Current value is: %s\n"
 msgstr "Valor actual es: %s\n"
 
-#: src/dird/ua_update.c:689
+#: src/dird/ua_update.c:690
 msgid "Enter new Maximum Bytes: "
 msgstr "Introduzca nuevo Máximo de Bytes:"
 
-#: src/dird/ua_update.c:697
+#: src/dird/ua_update.c:698
 #, c-format
 msgid "Current recycle flag is: %s\n"
 msgstr "Recycle flag actual es: %s\n"
 
-#: src/dird/ua_update.c:699
+#: src/dird/ua_update.c:700
 msgid "Enter new Recycle status: "
 msgstr "Introduzca el nuevo estado de Reciclaje:"
 
-#: src/dird/ua_update.c:706
+#: src/dird/ua_update.c:707
 #, c-format
 msgid "Current Slot is: %d\n"
 msgstr "Ranura Actual es: %d\n"
 
-#: src/dird/ua_update.c:707
+#: src/dird/ua_update.c:708
 msgid "Enter new Slot: "
 msgstr "Introduzca nueva Ranura:"
 
-#: src/dird/ua_update.c:714
+#: src/dird/ua_update.c:715
 #, c-format
 msgid "Current InChanger flag is: %d\n"
 msgstr "Bandera InChanger actual es: %d\n"
 
-#: src/dird/ua_update.c:715
+#: src/dird/ua_update.c:716
 #, c-format
 msgid "Set InChanger flag for Volume \"%s\": yes/no: "
 msgstr "Configurar bandera InChanger para Volumen \"%s\": sí/no: "
 
-#: src/dird/ua_update.c:728
+#: src/dird/ua_update.c:730
 #, c-format
 msgid "New InChanger flag is: %d\n"
 msgstr "Nueva InChanger flag es: %d\n"
 
-#: src/dird/ua_update.c:735
+#: src/dird/ua_update.c:737
 msgid ""
 "Warning changing Volume Files can result\n"
 "in loss of data on your Volume\n"
@@ -4217,87 +4261,87 @@ msgstr ""
 "en pérdida de datos en el Volumen\n"
 "\n"
 
-#: src/dird/ua_update.c:737
+#: src/dird/ua_update.c:739
 #, c-format
 msgid "Current Volume Files is: %u\n"
 msgstr "Archivos de Volumen actual es: %u\n"
 
-#: src/dird/ua_update.c:738
+#: src/dird/ua_update.c:740
 msgid "Enter new number of Files for Volume: "
 msgstr "Introduzca el nuevo número de Archivos para el Volumen:"
 
-#: src/dird/ua_update.c:743
+#: src/dird/ua_update.c:745
 msgid "Normally, you should only increase Volume Files by one!\n"
 msgstr "Normalmente, sólo debería aumentar el Archivo de Volumen en uno!\n"
 
-#: src/dird/ua_update.c:744
+#: src/dird/ua_update.c:746
 msgid "Increase Volume Files? (yes/no): "
 msgstr "Incrementar Archivo de Volumen? (sí/no):"
 
-#: src/dird/ua_update.c:754
+#: src/dird/ua_update.c:756
 #, c-format
 msgid "New Volume Files is: %u\n"
 msgstr "Nuevo Archivo de Volumen es: %u\n"
 
-#: src/dird/ua_update.c:766
+#: src/dird/ua_update.c:768
 #, c-format
 msgid "Current Pool is: %s\n"
 msgstr "Pool actual es: %s\n"
 
-#: src/dird/ua_update.c:767
+#: src/dird/ua_update.c:769
 msgid "Enter new Pool name: "
 msgstr "Introduzca el nuevo nombre del Pool:"
 
-#: src/dird/ua_update.c:788
+#: src/dird/ua_update.c:790
 #, c-format
 msgid "Current Enabled is: %d\n"
 msgstr "Habilitado(Enabled) actual es: %d\n"
 
-#: src/dird/ua_update.c:789
+#: src/dird/ua_update.c:791
 msgid "Enter new Enabled: "
 msgstr "Introduzca nuevo Habilitado(Enabled):"
 
-#: src/dird/ua_update.c:808
+#: src/dird/ua_update.c:810
 #, c-format
 msgid "Current RecyclePool is: %s\n"
 msgstr "RecyclePool actual es: %s\n"
 
-#: src/dird/ua_update.c:810
+#: src/dird/ua_update.c:812
 msgid "No current RecyclePool\n"
 msgstr "No actual RecyclePool\n"
 
-#: src/dird/ua_update.c:820
+#: src/dird/ua_update.c:822
 #, c-format
 msgid "Current ActionOnPurge is: %s\n"
 msgstr "Actual ActionOnPurge es: %s\n"
 
-#: src/dird/ua_update.c:822
+#: src/dird/ua_update.c:824
 msgid "Enter new ActionOnPurge (one of: Truncate, None): "
 msgstr "Introduzca nuevo ActionOnPurge (uno de: Truncar, Ninguno):"
 
-#: src/dird/ua_update.c:830
+#: src/dird/ua_update.c:832
 msgid "Selection terminated.\n"
 msgstr "Selección terminada.\n"
 
-#: src/dird/ua_update.c:850
+#: src/dird/ua_update.c:852
 #, c-format
 msgid "Updating %i job(s).\n"
 msgstr "Actualizando %i job(s).\n"
 
-#: src/dird/ua_update.c:882
+#: src/dird/ua_update.c:884
 #, c-format
 msgid "db_update_pool_record returned %d. ERR=%s\n"
 msgstr "db_update_pool_record regreso %d. ERR=%s\n"
 
-#: src/dird/ua_update.c:889
+#: src/dird/ua_update.c:891
 msgid "Pool DB record updated from resource.\n"
 msgstr "registro BD Pool actualizado desde recursos.\n"
 
-#: src/dird/ua_update.c:916
+#: src/dird/ua_update.c:918
 msgid "Expect JobId keyword, not found.\n"
 msgstr "Esperaba palabra clave JobId, no encontrada.\n"
 
-#: src/dird/ua_update.c:941
+#: src/dird/ua_update.c:943
 msgid "Neither Client nor StartTime specified.\n"
 msgstr "Ni el Cliente ni StartTime especificado.\n"
 
@@ -4339,7 +4383,7 @@ msgstr "Pool para JobId %s no esta en base de datos. ERR=%s\n"
 msgid "Pool resource \"%s\" not found.\n"
 msgstr "Recurso Pool \"%s\" no encontrado.\n"
 
-#: src/dird/migrate.c:316 src/dird/migrate.c:896
+#: src/dird/migrate.c:316 src/dird/migrate.c:898
 #, c-format
 msgid "Could not get job record for JobId %s to %s. ERR=%s"
 msgstr "No se pudo obtener el registro Job para JobId %s para %s. ERR=%s"
@@ -4354,147 +4398,142 @@ msgstr "JobId %s ya %s probablemente por otro Job. %s detenido.\n"
 msgid "Start %s JobId %s, Job=%s\n"
 msgstr "Inicio %s JobId %s, Job=%s\n"
 
-#: src/dird/migrate.c:710
+#: src/dird/migrate.c:712
 #, c-format
 msgid "No %s SQL selection pattern specified.\n"
 msgstr "Ninguno %s patrón de selección de SQL especificado.\n"
 
-#: src/dird/migrate.c:717 src/dird/migrate.c:736 src/dird/migrate.c:757
-#: src/dird/migrate.c:793 src/dird/migrate.c:820 src/dird/migrate.c:954
-#: src/dird/migrate.c:987 src/dird/migrate.c:1116
+#: src/dird/migrate.c:719 src/dird/migrate.c:738 src/dird/migrate.c:759
+#: src/dird/migrate.c:795 src/dird/migrate.c:822 src/dird/migrate.c:956
+#: src/dird/migrate.c:989 src/dird/migrate.c:1118
 #, c-format
 msgid "SQL failed. ERR=%s\n"
 msgstr "Fallo SQL. ERR=%s\n"
 
-#: src/dird/migrate.c:740 src/dird/migrate.c:747 src/dird/migrate.c:761
-#: src/dird/migrate.c:824
+#: src/dird/migrate.c:742 src/dird/migrate.c:749 src/dird/migrate.c:763
+#: src/dird/migrate.c:826
 #, c-format
 msgid "No Volumes found to %s.\n"
 msgstr "Volúmenes no encontrado para %s.\n"
 
-#: src/dird/migrate.c:775 src/dird/migrate.c:864 src/dird/migrate.c:884
+#: src/dird/migrate.c:777 src/dird/migrate.c:866 src/dird/migrate.c:886
 msgid "Invalid JobId found.\n"
 msgstr "JobId inválido encontrado.\n"
 
-#: src/dird/migrate.c:835
+#: src/dird/migrate.c:837
 #, c-format
 msgid "Unknown %s Selection Type.\n"
 msgstr "Tipo de selección %s desconocido.\n"
 
-#: src/dird/migrate.c:846 src/dird/migrate.c:867 src/dird/migrate.c:887
+#: src/dird/migrate.c:848 src/dird/migrate.c:869 src/dird/migrate.c:889
 #, c-format
 msgid "No JobIds found to %s.\n"
 msgstr "Ninguno JobIds encontrado para %s.\n"
 
-#: src/dird/migrate.c:850
+#: src/dird/migrate.c:852
 #, c-format
 msgid "The following %u JobId%s chosen to be %s: %s\n"
 msgstr "El siguiente %u JobId%s elegido para ser %s: %s\n"
 
-#: src/dird/migrate.c:851
+#: src/dird/migrate.c:853
 msgid " was"
 msgstr "era"
 
-#: src/dird/migrate.c:851
+#: src/dird/migrate.c:853
 msgid "s were"
 msgstr "s eran"
 
-#: src/dird/migrate.c:903
+#: src/dird/migrate.c:905
 #, c-format
 msgid "%s using JobId=%s Job=%s\n"
 msgstr "%s utilizando JobId=%s Job=%s\n"
 
-#: src/dird/migrate.c:937
+#: src/dird/migrate.c:939
 msgid "Could not start migration job.\n"
 msgstr "No se pudo arrancar el Job de migración.\n"
 
-#: src/dird/migrate.c:939
+#: src/dird/migrate.c:941
 #, c-format
 msgid "%s JobId %d started.\n"
 msgstr "%s JobId %d iniciado.\n"
 
-#: src/dird/migrate.c:958
+#: src/dird/migrate.c:960
 #, c-format
 msgid "No %s found to %s.\n"
 msgstr "Ninguno %s encontrado para %s.\n"
 
-#: src/dird/migrate.c:962
+#: src/dird/migrate.c:964
 #, c-format
 msgid "SQL error. Expected 1 MediaId got %d\n"
 msgstr "SQL error. Esperaba 1 MediaId, obtuvo %d\n"
 
-#: src/dird/migrate.c:991 src/dird/migrate.c:1121
+#: src/dird/migrate.c:993 src/dird/migrate.c:1123
 #, c-format
 msgid "No %ss found to %s.\n"
 msgstr "Ninguno %ss encontrado para %s.\n"
 
-#: src/dird/migrate.c:1013
+#: src/dird/migrate.c:1015
 msgid "Selection Type 'pooluncopiedjobs' only applies to Copy Jobs"
 msgstr ""
 "Selección del tipo 'pooluncopiedjos' sólo se aplica a Trabajos de Copia(Copy "
 "Jobs)"
 
-#: src/dird/migrate.c:1022
+#: src/dird/migrate.c:1024
 #, c-format
 msgid "SQL to get uncopied jobs failed. ERR=%s\n"
 msgstr "Fallo SQL para obtener uncopied jobs. ERR=%s\n"
 
-#: src/dird/migrate.c:1045
+#: src/dird/migrate.c:1047
 #, c-format
 msgid "No %s %s selection pattern specified.\n"
 msgstr "Ninguno %s %s patrón de selección especificados.\n"
 
-#: src/dird/migrate.c:1056
+#: src/dird/migrate.c:1058
 #, c-format
 msgid "SQL to get %s failed. ERR=%s\n"
 msgstr "Fallo SQL para obtener %s. ERR=%s\n"
 
-#: src/dird/migrate.c:1061
+#: src/dird/migrate.c:1063
 #, c-format
 msgid "Query of Pool \"%s\" returned no Jobs to %s.\n"
 msgstr "Consulta de Pool \"%s\" No regreso Jobs  para %s.\n"
 
-#: src/dird/migrate.c:1070
-#, c-format
-msgid "Could not compile regex pattern \"%s\" ERR=%s\n"
-msgstr "No se ha podido compilar patrón regex  \"%s\" ERR=%s\n"
-
-#: src/dird/migrate.c:1099
+#: src/dird/migrate.c:1101
 #, c-format
 msgid "Regex pattern matched no Jobs to %s.\n"
 msgstr "Patrón Regex no encontró Jobs para %s.\n"
 
-#: src/dird/migrate.c:1264
+#: src/dird/migrate.c:1265
 #, c-format
 msgid "%s OK -- with warnings"
 msgstr "%s OK -- con alertas"
 
-#: src/dird/migrate.c:1266
+#: src/dird/migrate.c:1267
 #, c-format
 msgid "%s OK"
 msgstr "%s OK"
 
-#: src/dird/migrate.c:1271
+#: src/dird/migrate.c:1272
 #, c-format
 msgid "*** %s Error ***"
 msgstr "*** %s Error ***"
 
-#: src/dird/migrate.c:1281
+#: src/dird/migrate.c:1282
 #, c-format
 msgid "%s Canceled"
 msgstr "%s Cancelado"
 
-#: src/dird/migrate.c:1290
+#: src/dird/migrate.c:1291
 #, c-format
 msgid "Inappropriate %s term code"
 msgstr "Inadecuado código de terminación %s"
 
-#: src/dird/migrate.c:1300
+#: src/dird/migrate.c:1301
 #, c-format
 msgid "%s -- no files to %s"
 msgstr "%s -- ninguno archivo para %s"
 
-#: src/dird/migrate.c:1315
+#: src/dird/migrate.c:1316
 #, fuzzy, c-format
 msgid ""
 "%s %s %s (%s):\n"
@@ -4559,17 +4598,17 @@ msgstr ""
 " Terminación: %s\n"
 "\n"
 
-#: src/dird/migrate.c:1426
+#: src/dird/migrate.c:1427
 #, c-format
 msgid "No Next Pool specification found in Pool \"%s\".\n"
 msgstr "Especificación Next Pool no encontrada en Pool \"%s\".\n"
 
-#: src/dird/migrate.c:1432
+#: src/dird/migrate.c:1433
 #, c-format
 msgid "No Storage specification found in Next Pool \"%s\".\n"
 msgstr "Especificación Storage no encontrada en Next Pool \"%s\".\n"
 
-#: src/dird/migrate.c:1438
+#: src/dird/migrate.c:1439
 msgid "Storage from Pool's NextPool resource"
 msgstr "Storage desde recurso Pool's NextPool "
 
@@ -4577,48 +4616,48 @@ msgstr "Storage desde recurso Pool's NextPool "
 msgid "Choose item to prune"
 msgstr "Elija el ítem para podar"
 
-#: src/dird/ua_prune.c:171
+#: src/dird/ua_prune.c:175
 #, c-format
 msgid "Cannot prune Volume \"%s\" because it is archived.\n"
 msgstr "No se puede podar Volumen \"%s\", porque el esta archivo.\n"
 
-#: src/dird/ua_prune.c:213
+#: src/dird/ua_prune.c:217
 msgid "Pruned Jobs from JobHisto catalog.\n"
 msgstr "Podar Jobs del catálogo JobHisto.\n"
 
-#: src/dird/ua_prune.c:301
+#: src/dird/ua_prune.c:305
 #, fuzzy
 msgid "Begin pruning Files.\n"
 msgstr "Comenzar poda de Archivos.\n"
 
-#: src/dird/ua_prune.c:316
+#: src/dird/ua_prune.c:320
 msgid "No Files found to prune.\n"
 msgstr "No se encontraron archivos para podar.\n"
 
-#: src/dird/ua_prune.c:339
+#: src/dird/ua_prune.c:343
 #, c-format
 msgid "Pruned Files from %s Jobs for client %s from catalog.\n"
 msgstr "Archivos podados desde Jobs %s para el cliente %s desde el catálogo.\n"
 
-#: src/dird/ua_prune.c:481
+#: src/dird/ua_prune.c:489
 #, fuzzy, c-format
 msgid "Begin pruning Jobs older than %s.\n"
 msgstr "Comenzar poda de Jobs.\n"
 
-#: src/dird/ua_prune.c:592
+#: src/dird/ua_prune.c:600
 #, c-format
 msgid "Pruned %d %s for client %s from catalog.\n"
 msgstr "Podados %d %s para el cliente %s desde el catálogo.\n"
 
-#: src/dird/ua_prune.c:593
+#: src/dird/ua_prune.c:601
 msgid "Jobs"
 msgstr "Jobs"
 
-#: src/dird/ua_prune.c:595
+#: src/dird/ua_prune.c:603
 msgid "No Jobs found to prune.\n"
 msgstr "No encontraron Jobs para podar.\n"
 
-#: src/dird/autoprune.c:76
+#: src/dird/autoprune.c:75
 msgid ""
 "End auto prune.\n"
 "\n"
@@ -4639,50 +4678,58 @@ msgstr "Job fallido.\n"
 msgid "Job queued. JobId=%s\n"
 msgstr "Cola de Job. JobId=%s\n"
 
-#: src/dird/ua_run.c:202
+#: src/dird/ua_run.c:203
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Bad response: %s. You must answer yes, mod, or no.\n"
+"\n"
+msgstr "Respuesta no válida. Usted tiene que contestar sí o no.\n"
+
+#: src/dird/ua_run.c:207
 msgid "Job not run.\n"
 msgstr "Job no ejecutando.\n"
 
-#: src/dird/ua_run.c:236
+#: src/dird/ua_run.c:223
 msgid "Level"
 msgstr "Level"
 
-#: src/dird/ua_run.c:241
+#: src/dird/ua_run.c:228
 msgid "Restore Client"
 msgstr "Restaurar Client"
 
-#: src/dird/ua_run.c:245 src/wx-console/wxbrestorepanel.cpp:356
+#: src/dird/ua_run.c:232 src/wx-console/wxbrestorepanel.cpp:356
 #: src/wx-console/wxbrestorepanel.cpp:854
 #: src/wx-console/wxbrestorepanel.cpp:1918
 msgid "When"
 msgstr "Cuando "
 
-#: src/dird/ua_run.c:246 src/wx-console/wxbrestorepanel.cpp:357
+#: src/dird/ua_run.c:233 src/wx-console/wxbrestorepanel.cpp:357
 #: src/wx-console/wxbrestorepanel.cpp:1128
 #: src/wx-console/wxbrestorepanel.cpp:1921
 msgid "Priority"
 msgstr "Prioridad"
 
-#: src/dird/ua_run.c:253
+#: src/dird/ua_run.c:240
 msgid "Verify Job"
 msgstr "Verificar Job"
 
-#: src/dird/ua_run.c:256 src/wx-console/wxbrestorepanel.cpp:349
+#: src/dird/ua_run.c:243 src/wx-console/wxbrestorepanel.cpp:349
 #: src/wx-console/wxbrestorepanel.cpp:1899
 msgid "Bootstrap"
 msgstr "Bootstrap"
 
-#: src/dird/ua_run.c:257 src/wx-console/wxbrestorepanel.cpp:350
+#: src/dird/ua_run.c:244 src/wx-console/wxbrestorepanel.cpp:350
 #: src/wx-console/wxbrestorepanel.cpp:1104
 #: src/wx-console/wxbrestorepanel.cpp:1901
 msgid "Where"
 msgstr "Donde"
 
-#: src/dird/ua_run.c:258
+#: src/dird/ua_run.c:245
 msgid "File Relocation"
 msgstr "Reubicar Archivo"
 
-#: src/dird/ua_run.c:259 src/wx-console/wxbrestorepanel.cpp:352
+#: src/dird/ua_run.c:246 src/wx-console/wxbrestorepanel.cpp:352
 #: src/wx-console/wxbrestorepanel.cpp:1112
 #: src/wx-console/wxbrestorepanel.cpp:1905
 #: src/wx-console/wxbrestorepanel.cpp:1906
@@ -4692,218 +4739,222 @@ msgstr "Reubicar Archivo"
 msgid "Replace"
 msgstr "Reemplazar"
 
-#: src/dird/ua_run.c:260
+#: src/dird/ua_run.c:247
 msgid "JobId"
 msgstr "JobId"
 
-#: src/dird/ua_run.c:263
+#: src/dird/ua_run.c:250
 msgid "Plugin Options"
 msgstr "Opciones de Plug-in"
 
-#: src/dird/ua_run.c:274 src/dird/ua_run.c:1563
+#: src/dird/ua_run.c:261 src/dird/ua_run.c:1569
 msgid "user selection"
 msgstr "Selección de usuario"
 
-#: src/dird/ua_run.c:306
+#: src/dird/ua_run.c:293
 msgid ""
 "Please enter desired start time as YYYY-MM-DD HH:MM:SS (return for now): "
 msgstr ""
 "Por favor, introduzca hora de inicio deseada YYYY-MM-DD HH:MM:SS (Enter para "
 "ahora)"
 
-#: src/dird/ua_run.c:314 src/dird/ua_run.c:490
+#: src/dird/ua_run.c:301 src/dird/ua_run.c:477
 msgid "Invalid time, using current time.\n"
 msgstr "Hora inválida, usando hora actual.\n"
 
-#: src/dird/ua_run.c:321
+#: src/dird/ua_run.c:308
 msgid "Enter new Priority: "
 msgstr "Introduzca nueva prioridad:"
 
-#: src/dird/ua_run.c:325
+#: src/dird/ua_run.c:312
 msgid "Priority must be a positive integer.\n"
 msgstr "Prioridad debe ser un entero positivo.\n"
 
-#: src/dird/ua_run.c:346
+#: src/dird/ua_run.c:333
 msgid "Please enter the Bootstrap file name: "
 msgstr "Por favor, introduzca nombre de archivo Bootstrap:"
 
-#: src/dird/ua_run.c:358
+#: src/dird/ua_run.c:345
 #, c-format
 msgid "Warning cannot open %s: ERR=%s\n"
 msgstr "Advertencia no puede abrir %s: ERR=%s\n"
 
-#: src/dird/ua_run.c:377
-msgid "Please enter path prefix for restore (/ for none): "
+#: src/dird/ua_run.c:364
+#, fuzzy
+msgid "Please enter the full path prefix for restore (/ for none): "
 msgstr ""
 "Por favor, introduzca el prefijo de ruta para restaurar (/ para ninguno):"
 
-#: src/dird/ua_run.c:399
+#: src/dird/ua_run.c:386
 msgid "Replace:\n"
 msgstr "Reemplazar:\n"
 
-#: src/dird/ua_run.c:403
+#: src/dird/ua_run.c:390
 msgid "Select replace option"
 msgstr "Seleccione la opción sustituir"
 
-#: src/dird/ua_run.c:414
+#: src/dird/ua_run.c:401
 msgid ""
 "You must set the bootstrap file to NULL to be able to specify a JobId.\n"
 msgstr ""
 "Usted debe configurar el archivo bootstrap a NULL para poder especificar un "
 "jobId.\n"
 
-#: src/dird/ua_run.c:419
+#: src/dird/ua_run.c:406
 msgid "Please Plugin Options string: "
 msgstr "Por favor, cadena de Opciones de Plugin:"
 
-#: src/dird/ua_run.c:457 src/dird/ua_run.c:466
+#: src/dird/ua_run.c:444 src/dird/ua_run.c:453
 msgid "User input"
 msgstr "Entrada del usuario"
 
-#: src/dird/ua_run.c:520
+#: src/dird/ua_run.c:507
 #, c-format
 msgid "Invalid replace option: %s\n"
 msgstr "Opción replace no valida: %s\n"
 
-#: src/dird/ua_run.c:583
+#: src/dird/ua_run.c:589
 #, c-format
 msgid "strip_prefix=%s add_prefix=%s add_suffix=%s\n"
 msgstr "strip_prefix=%s add_prefix=%s add_suffix=%s\n"
 
-#: src/dird/ua_run.c:586
+#: src/dird/ua_run.c:592
 msgid "This will replace your current Where value\n"
 msgstr "Este sustituirá a su actual valor Donde\n"
 
-#: src/dird/ua_run.c:587
+#: src/dird/ua_run.c:593
 msgid "Strip prefix"
 msgstr "Eliminar prefijo"
 
-#: src/dird/ua_run.c:588
+#: src/dird/ua_run.c:594
 msgid "Add prefix"
 msgstr "Añadir prefijo"
 
-#: src/dird/ua_run.c:589
+#: src/dird/ua_run.c:595
 msgid "Add file suffix"
 msgstr "Añadir sufijo de archivo"
 
-#: src/dird/ua_run.c:590
+#: src/dird/ua_run.c:596
 msgid "Enter a regexp"
 msgstr "Introduzca una expresión regular"
 
-#: src/dird/ua_run.c:591
+#: src/dird/ua_run.c:597
 msgid "Test filename manipulation"
 msgstr "Prueba de la manipulación de nombre de archivo"
 
-#: src/dird/ua_run.c:592
+#: src/dird/ua_run.c:598
 msgid "Use this ?"
 msgstr "Usar esto ?"
 
-#: src/dird/ua_run.c:597
-msgid "Please enter path prefix to strip: "
+#: src/dird/ua_run.c:603
+#, fuzzy
+msgid "Please enter the path prefix to strip: "
 msgstr "Por favor, introduzca la ruta de prefijo para eliminar:"
 
-#: src/dird/ua_run.c:605
-msgid "Please enter path prefix to add (/ for none): "
+#: src/dird/ua_run.c:611
+#, fuzzy
+msgid "Please enter the path prefix to add (/ for none): "
 msgstr ""
 "Por favor, introduzca el prefijo de la ruta para añadir (/ para ninguno):"
 
-#: src/dird/ua_run.c:616
-msgid "Please enter file suffix to add: "
+#: src/dird/ua_run.c:622
+#, fuzzy
+msgid "Please enter the file suffix to add: "
 msgstr "Por favor, introduzca el sufijo de archivo para añadir:"
 
-#: src/dird/ua_run.c:623
+#: src/dird/ua_run.c:629
 msgid "Please enter a valid regexp (!from!to!): "
 msgstr "Por favor, introduzca una expresión regular válida (!from!to!):"
 
-#: src/dird/ua_run.c:636
+#: src/dird/ua_run.c:642
 #, c-format
 msgid "regexwhere=%s\n"
 msgstr "regexdonde=%s\n"
 
-#: src/dird/ua_run.c:642
+#: src/dird/ua_run.c:648
 #, c-format
 msgid "strip_prefix=%s add_prefix=%s add_suffix=%s result=%s\n"
 msgstr "strip_prefix=%s add_prefix=%s add_suffix=%s resultado=%s\n"
 
-#: src/dird/ua_run.c:649
+#: src/dird/ua_run.c:655
 msgid "Cannot use your regexp\n"
 msgstr "No se pudo utilizar su regexp\n"
 
-#: src/dird/ua_run.c:652
+#: src/dird/ua_run.c:658
 msgid "Enter a period (.) to stop this test\n"
 msgstr ""
 
-#: src/dird/ua_run.c:653
+#: src/dird/ua_run.c:659
 msgid "Please enter filename to test: "
 msgstr "Por favor, introduzca el nombre de archivo de prueba:"
 
-#: src/dird/ua_run.c:655
+#: src/dird/ua_run.c:661
 #, c-format
 msgid "%s -> %s\n"
 msgstr "%s -> %s\n"
 
-#: src/dird/ua_run.c:699
+#: src/dird/ua_run.c:705
 msgid "Cannot use your regexp.\n"
 msgstr "No puede utilizar su expresión regular.\n"
 
-#: src/dird/ua_run.c:712 src/dird/ua_run.c:742
+#: src/dird/ua_run.c:718 src/dird/ua_run.c:748
 msgid "Levels:\n"
 msgstr "Niveles:\n"
 
-#: src/dird/ua_run.c:714 src/stored/status.c:600 src/lib/util.c:426
+#: src/dird/ua_run.c:720 src/stored/status.c:665 src/lib/util.c:426
 #: src/lib/util.c:472 src/filed/status.c:519
 msgid "Full"
 msgstr "Completo"
 
-#: src/dird/ua_run.c:715 src/stored/status.c:603 src/lib/util.c:429
+#: src/dird/ua_run.c:721 src/stored/status.c:668 src/lib/util.c:429
 #: src/filed/status.c:522
 msgid "Incremental"
 msgstr "Incremental"
 
-#: src/dird/ua_run.c:716 src/stored/status.c:606 src/lib/util.c:432
+#: src/dird/ua_run.c:722 src/stored/status.c:671 src/lib/util.c:432
 #: src/filed/status.c:525
 msgid "Differential"
 msgstr "Diferencial"
 
-#: src/dird/ua_run.c:717 src/stored/status.c:609 src/lib/util.c:435
+#: src/dird/ua_run.c:723 src/stored/status.c:674 src/lib/util.c:435
 #: src/filed/status.c:528
 msgid "Since"
 msgstr "Desde"
 
-#: src/dird/ua_run.c:718
+#: src/dird/ua_run.c:724
 msgid "VirtualFull"
 msgstr "VirtualFull"
 
-#: src/dird/ua_run.c:719 src/dird/ua_run.c:748
+#: src/dird/ua_run.c:725 src/dird/ua_run.c:754
 msgid "Select level"
 msgstr "Seleccionar Nivel"
 
-#: src/dird/ua_run.c:743
+#: src/dird/ua_run.c:749
 msgid "Initialize Catalog"
 msgstr "Iniciar Catálogo"
 
-#: src/dird/ua_run.c:744 src/stored/status.c:612 src/lib/util.c:438
+#: src/dird/ua_run.c:750 src/stored/status.c:677 src/lib/util.c:438
 #: src/filed/status.c:531
 msgid "Verify Catalog"
 msgstr "Verificar Catálogo"
 
-#: src/dird/ua_run.c:745 src/lib/util.c:444
+#: src/dird/ua_run.c:751 src/lib/util.c:444
 msgid "Verify Volume to Catalog"
 msgstr "Verificar volumen de catalogo"
 
-#: src/dird/ua_run.c:746 src/lib/util.c:447
+#: src/dird/ua_run.c:752 src/lib/util.c:447
 msgid "Verify Disk to Catalog"
 msgstr "Verificar disco de catalogo"
 
-#: src/dird/ua_run.c:747
+#: src/dird/ua_run.c:753
 msgid "Verify Volume Data (not yet implemented)"
 msgstr "Verificar volumen de datos (aún no implementado)"
 
-#: src/dird/ua_run.c:768
+#: src/dird/ua_run.c:774
 msgid "Level not appropriate for this Job. Cannot be changed.\n"
 msgstr "Nivel no adecuado para este trabajo. No se puede cambiar.\n"
 
-#: src/dird/ua_run.c:799
+#: src/dird/ua_run.c:805
 #, fuzzy, c-format
 msgid ""
 "Run Admin Job\n"
@@ -4922,7 +4973,7 @@ msgstr ""
 "Cuando: %s\n"
 "Prioridad: %d\n"
 
-#: src/dird/ua_run.c:843
+#: src/dird/ua_run.c:849
 #, fuzzy, c-format
 msgid ""
 "Run Backup job\n"
@@ -4947,12 +4998,12 @@ msgstr ""
 "Prioridad: %d\n"
 "%s%s%s"
 
-#: src/dird/ua_run.c:874
+#: src/dird/ua_run.c:880
 #, fuzzy, c-format
 msgid "Could not get job record for selected JobId. ERR=%s"
 msgstr "No se ha podido obtener el registro Job para Job anterior. ERR=%s"
 
-#: src/dird/ua_run.c:913
+#: src/dird/ua_run.c:919
 #, fuzzy, c-format
 msgid ""
 "Run Verify Job\n"
@@ -4979,11 +5030,11 @@ msgstr ""
 "Cuando: %s\n"
 "Prioridad: %d\n"
 
-#: src/dird/ua_run.c:942
+#: src/dird/ua_run.c:948
 msgid "Please enter a JobId for restore: "
 msgstr "Por favor, introduzca un JobId para restaurar:"
 
-#: src/dird/ua_run.c:982
+#: src/dird/ua_run.c:988
 #, c-format
 msgid ""
 "Run Restore job\n"
@@ -5014,7 +5065,7 @@ msgstr ""
 "Prioridad: %d\n"
 "Opciones de Plugin: %s\n"
 
-#: src/dird/ua_run.c:1038
+#: src/dird/ua_run.c:1044
 #, c-format
 msgid ""
 "Run Restore job\n"
@@ -5045,7 +5096,7 @@ msgstr ""
 "Prioridad: %d\n"
 "Opciones de Plugin: %s\n"
 
-#: src/dird/ua_run.c:1069
+#: src/dird/ua_run.c:1075
 #, c-format
 msgid ""
 "Run Restore job\n"
@@ -5056,17 +5107,17 @@ msgstr ""
 "JobName: %s\n"
 "Bootstrap: %s\n"
 
-#: src/dird/ua_run.c:1077
+#: src/dird/ua_run.c:1083
 #, c-format
 msgid "RegexWhere: %s\n"
 msgstr "RegexWhere: %s\n"
 
-#: src/dird/ua_run.c:1080
+#: src/dird/ua_run.c:1086
 #, c-format
 msgid "Where:      %s\n"
 msgstr "Donde: %s\n"
 
-#: src/dird/ua_run.c:1084
+#: src/dird/ua_run.c:1090
 #, c-format
 msgid ""
 "Replace:         %s\n"
@@ -5087,249 +5138,249 @@ msgstr ""
 "Prioridad: %d\n"
 "Opciones de Plugin: %s\n"
 
-#: src/dird/ua_run.c:1139
+#: src/dird/ua_run.c:1145
 msgid "Run Copy job\n"
 msgstr "Ejecutar Job de Copia\n"
 
-#: src/dird/ua_run.c:1141
+#: src/dird/ua_run.c:1147
 msgid "Run Migration job\n"
 msgstr "Ejecutar Job de Migración\n"
 
-#: src/dird/ua_run.c:1170
+#: src/dird/ua_run.c:1176
 #, c-format
 msgid "Unknown Job Type=%d\n"
 msgstr "Tipo de Job desconocido=%d\n"
 
-#: src/dird/ua_run.c:1239
+#: src/dird/ua_run.c:1245
 #, c-format
 msgid "Value missing for keyword %s\n"
 msgstr "Falta valor para la palabra clave %s\n"
 
-#: src/dird/ua_run.c:1246
+#: src/dird/ua_run.c:1252
 msgid "Job name specified twice.\n"
 msgstr "Nombre del Job especificado dos veces.\n"
 
-#: src/dird/ua_run.c:1254
+#: src/dird/ua_run.c:1260
 msgid "JobId specified twice.\n"
 msgstr "JobId especificada dos veces.\n"
 
-#: src/dird/ua_run.c:1263 src/dird/ua_run.c:1403
+#: src/dird/ua_run.c:1269 src/dird/ua_run.c:1409
 msgid "Client specified twice.\n"
 msgstr "Cliente especificado dos veces.\n"
 
-#: src/dird/ua_run.c:1271
+#: src/dird/ua_run.c:1277
 msgid "FileSet specified twice.\n"
 msgstr "FileSet especificado dos veces.\n"
 
-#: src/dird/ua_run.c:1279
+#: src/dird/ua_run.c:1285
 msgid "Level specified twice.\n"
 msgstr "Level especificado dos veces.\n"
 
-#: src/dird/ua_run.c:1288
+#: src/dird/ua_run.c:1294
 msgid "Storage specified twice.\n"
 msgstr "Storage especificado dos veces.\n"
 
-#: src/dird/ua_run.c:1296
+#: src/dird/ua_run.c:1302
 msgid "RegexWhere or Where specified twice.\n"
 msgstr "RegexDónde o Dónde especificado dos veces.\n"
 
-#: src/dird/ua_run.c:1301
+#: src/dird/ua_run.c:1307
 msgid "No authorization for \"regexwhere\" specification.\n"
 msgstr "Sin autorización para especificación  \"regexwhere\".\n"
 
-#: src/dird/ua_run.c:1308
+#: src/dird/ua_run.c:1314
 msgid "Where or RegexWhere specified twice.\n"
 msgstr "Dónde o RegexDónde especificado dos veces.\n"
 
-#: src/dird/ua_run.c:1313
+#: src/dird/ua_run.c:1319
 msgid "No authoriztion for \"where\" specification.\n"
 msgstr "Sin autorización para especificación  \"where\".\n"
 
-#: src/dird/ua_run.c:1320
+#: src/dird/ua_run.c:1326
 msgid "Bootstrap specified twice.\n"
 msgstr "Bootstrap especificado dos veces.\n"
 
-#: src/dird/ua_run.c:1328
+#: src/dird/ua_run.c:1334
 msgid "Replace specified twice.\n"
 msgstr "Replace especificado dos veces.\n"
 
-#: src/dird/ua_run.c:1336
+#: src/dird/ua_run.c:1342
 msgid "When specified twice.\n"
 msgstr "Cuando especificado dos veces.\n"
 
-#: src/dird/ua_run.c:1344
+#: src/dird/ua_run.c:1350
 msgid "Priority specified twice.\n"
 msgstr "Prioridad especificada dos veces.\n"
 
-#: src/dird/ua_run.c:1349
+#: src/dird/ua_run.c:1355
 msgid "Priority must be positive nonzero setting it to 10.\n"
 msgstr "Prioridad debe ser positivo y distinto a cero, configurando en 10.\n"
 
-#: src/dird/ua_run.c:1359
+#: src/dird/ua_run.c:1365
 msgid "Verify Job specified twice.\n"
 msgstr "Job Verificar especificado dos veces.\n"
 
-#: src/dird/ua_run.c:1387
+#: src/dird/ua_run.c:1393
 msgid "Migration Job specified twice.\n"
 msgstr "Job Migración especificado dos veces.\n"
 
-#: src/dird/ua_run.c:1395
+#: src/dird/ua_run.c:1401
 msgid "Pool specified twice.\n"
 msgstr "Pool especificado dos veces.\n"
 
-#: src/dird/ua_run.c:1411
+#: src/dird/ua_run.c:1417
 msgid "Restore Client specified twice.\n"
 msgstr "Restaurar Cliente especificado dos veces.\n"
 
-#: src/dird/ua_run.c:1418
+#: src/dird/ua_run.c:1424
 msgid "Plugin Options not yet implemented.\n"
 msgstr "Opciones de Plugin todavía no se ha implementado.\n"
 
-#: src/dird/ua_run.c:1421
+#: src/dird/ua_run.c:1427
 msgid "Plugin Options specified twice.\n"
 msgstr "Opciones de Plugin especificado dos veces.\n"
 
-#: src/dird/ua_run.c:1426
+#: src/dird/ua_run.c:1432
 msgid "No authoriztion for \"PluginOptions\" specification.\n"
 msgstr "Sin autorización para especificación \"PluginOptions\".\n"
 
-#: src/dird/ua_run.c:1433
+#: src/dird/ua_run.c:1439
 msgid "Spool flag specified twice.\n"
 msgstr "Bandera de cola especificada dos veces.\n"
 
-#: src/dird/ua_run.c:1440
+#: src/dird/ua_run.c:1446
 msgid "Invalid spooldata flag.\n"
 msgstr "Invalida bandera spooldata.\n"
 
-#: src/dird/ua_run.c:1449
+#: src/dird/ua_run.c:1455
 #, fuzzy
 msgid "IgnoreDuplicateCheck flag specified twice.\n"
 msgstr "Bandera de cola especificada dos veces.\n"
 
-#: src/dird/ua_run.c:1456
+#: src/dird/ua_run.c:1462
 #, fuzzy
 msgid "Invalid ignoreduplicatecheck flag.\n"
 msgstr "Invalida bandera spooldata.\n"
 
-#: src/dird/ua_run.c:1461
+#: src/dird/ua_run.c:1467
 #, fuzzy
 msgid "Accurate flag specified twice.\n"
 msgstr "Bandera de cola especificada dos veces.\n"
 
-#: src/dird/ua_run.c:1468
+#: src/dird/ua_run.c:1474
 #, fuzzy
 msgid "Invalid accurate flag.\n"
 msgstr "Invalida bandera spooldata.\n"
 
-#: src/dird/ua_run.c:1489
+#: src/dird/ua_run.c:1495
 #, c-format
 msgid "Invalid keyword: %s\n"
 msgstr "Palabra clave inválida: %s\n"
 
-#: src/dird/ua_run.c:1504
+#: src/dird/ua_run.c:1510
 #, c-format
 msgid "Catalog \"%s\" not found\n"
 msgstr "Catalogo \"%s\" no encontrado\n"
 
-#: src/dird/ua_run.c:1508
+#: src/dird/ua_run.c:1514
 #, c-format
 msgid "No authorization. Catalog \"%s\".\n"
 msgstr "Sin autorización. Catalogo \"%s\".\n"
 
-#: src/dird/ua_run.c:1519
+#: src/dird/ua_run.c:1525
 #, c-format
 msgid "Job \"%s\" not found\n"
 msgstr "Job \"%s\" no encontrado\n"
 
-#: src/dird/ua_run.c:1526
+#: src/dird/ua_run.c:1532
 msgid "A job name must be specified.\n"
 msgstr "Un nombre de job debe de ser especificado.\n"
 
-#: src/dird/ua_run.c:1532
+#: src/dird/ua_run.c:1538
 #, c-format
 msgid "No authorization. Job \"%s\".\n"
 msgstr "Sin autorización. Job \"%s\".\n"
 
-#: src/dird/ua_run.c:1540
+#: src/dird/ua_run.c:1546
 #, c-format
 msgid "Pool \"%s\" not found.\n"
 msgstr "Pool \"%s\" no encontrado.\n"
 
-#: src/dird/ua_run.c:1550
+#: src/dird/ua_run.c:1556
 #, c-format
 msgid "No authorization. Pool \"%s\".\n"
 msgstr "Sin autorización. Pool \"%s\".\n"
 
-#: src/dird/ua_run.c:1560
+#: src/dird/ua_run.c:1566
 #, c-format
 msgid "Storage \"%s\" not found.\n"
 msgstr "Storage \"%s\" no encontrado\n"
 
-#: src/dird/ua_run.c:1569 src/dird/job.c:1242
+#: src/dird/ua_run.c:1575 src/dird/job.c:1245
 msgid "No storage specified.\n"
 msgstr "Almacenamiento no especificado.\n"
 
-#: src/dird/ua_run.c:1572
+#: src/dird/ua_run.c:1578
 #, c-format
 msgid "No authorization. Storage \"%s\".\n"
 msgstr "Sin autorización. Storage \"%s\".\n"
 
-#: src/dird/ua_run.c:1592 src/dird/ua_run.c:1612
+#: src/dird/ua_run.c:1598 src/dird/ua_run.c:1618
 #, c-format
 msgid "No authorization. Client \"%s\".\n"
 msgstr "Sin autorización. Cliente \"%s\".\n"
 
-#: src/dird/ua_run.c:1602
+#: src/dird/ua_run.c:1608
 #, c-format
 msgid "Restore Client \"%s\" not found.\n"
 msgstr "Restaurar Cliente \"%s\" no encontrado.\n"
 
-#: src/dird/ua_run.c:1621
+#: src/dird/ua_run.c:1627
 #, c-format
 msgid "FileSet \"%s\" not found.\n"
 msgstr "FileSet \"%s\" no encontrado.\n"
 
-#: src/dird/ua_run.c:1630
+#: src/dird/ua_run.c:1636
 #, c-format
 msgid "No authorization. FileSet \"%s\".\n"
 msgstr "Sin autorización. FileSet \"%s\".\n"
 
-#: src/dird/ua_run.c:1638
+#: src/dird/ua_run.c:1644
 #, c-format
 msgid "Verify Job \"%s\" not found.\n"
 msgstr "Job Verificar \"%s\" no encontrado.\n"
 
-#: src/dird/ua_run.c:1648
+#: src/dird/ua_run.c:1654
 #, c-format
 msgid "Migration Job \"%s\" not found.\n"
 msgstr "Job Migración \"%s\" no encontrado.\n"
 
-#: src/dird/dir_plugins.c:180 src/stored/sd_plugins.c:183
-#: src/filed/fd_plugins.c:973
+#: src/dird/dir_plugins.c:181 src/stored/sd_plugins.c:194
+#: src/filed/fd_plugins.c:1130
 #, c-format
 msgid "Loaded plugin: %s\n"
 msgstr "Cargado el plugin: %s\n"
 
-#: src/dird/dir_plugins.c:200 src/stored/sd_plugins.c:203
-#: src/filed/fd_plugins.c:992
+#: src/dird/dir_plugins.c:201 src/stored/sd_plugins.c:214
+#: src/filed/fd_plugins.c:1151
 #, c-format
 msgid "Plugin magic wrong. Plugin=%s wanted=%s got=%s\n"
 msgstr "Incorrecto plugin mágico. Plugin=%s esperaba=%s obtuvo=%s\n"
 
-#: src/dird/dir_plugins.c:208 src/stored/sd_plugins.c:211
-#: src/filed/fd_plugins.c:1000
+#: src/dird/dir_plugins.c:209 src/stored/sd_plugins.c:222
+#: src/filed/fd_plugins.c:1159
 #, c-format
 msgid "Plugin version incorrect. Plugin=%s wanted=%d got=%d\n"
 msgstr "Plugin versión incorrecta. Plugin=%s quería=%d obtuvo=%d\n"
 
-#: src/dird/dir_plugins.c:217 src/stored/sd_plugins.c:220
-#: src/filed/fd_plugins.c:1008
+#: src/dird/dir_plugins.c:218 src/stored/sd_plugins.c:231
+#: src/filed/fd_plugins.c:1167
 #, c-format
 msgid "Plugin license incompatible. Plugin=%s license=%s\n"
 msgstr "Plugin licencia incompatible. Plugin=%s licencia=%s\n"
 
-#: src/dird/dir_plugins.c:225 src/stored/sd_plugins.c:228
-#: src/filed/fd_plugins.c:1016
+#: src/dird/dir_plugins.c:226 src/stored/sd_plugins.c:239
+#: src/filed/fd_plugins.c:1175
 #, fuzzy, c-format
 msgid "Plugin size incorrect. Plugin=%s wanted=%d got=%d\n"
 msgstr "Plugin versión incorrecta. Plugin=%s quería=%d obtuvo=%d\n"
@@ -5356,25 +5407,25 @@ msgstr "Enviando información precisa.\n"
 msgid "Start Backup JobId %s, Job=%s\n"
 msgstr "Iniciar Respaldo JobId %s, Job=%s\n"
 
-#: src/dird/backup.c:517
+#: src/dird/backup.c:521
 #, c-format
 msgid "Unexpected Client Job message: %s\n"
 msgstr "Inesperado Cliente Job mensaje: %s\n"
 
-#: src/dird/backup.c:530
+#: src/dird/backup.c:534
 #, c-format
 msgid "Network error with FD during %s: ERR=%s\n"
 msgstr "Error de red con FD durante %s: ERR=%s\n"
 
-#: src/dird/backup.c:565
+#: src/dird/backup.c:569
 msgid "No Job status returned from FD.\n"
 msgstr "Estado de Job no retornado desde FD.\n"
 
-#: src/dird/backup.c:647
+#: src/dird/backup.c:657
 msgid "Backup failed -- incomplete"
 msgstr ""
 
-#: src/dird/backup.c:720
+#: src/dird/backup.c:730
 #, fuzzy, c-format
 msgid ""
 "%s %s %s (%s):\n"
@@ -5447,14 +5498,14 @@ msgstr ""
 " Terminación: %s\n"
 "\n"
 
-#: src/dird/backup.c:822
+#: src/dird/backup.c:832
 #, c-format
 msgid "Could not get Job Volume Parameters to update Bootstrap file. ERR=%s\n"
 msgstr ""
 "No es posible obtener los parámetros de Job Volumen para actualizar el "
 "archivo Bootstrap. ERR=%s\n"
 
-#: src/dird/backup.c:858
+#: src/dird/backup.c:868
 #, c-format
 msgid ""
 "Could not open WriteBootstrap file:\n"
@@ -5463,7 +5514,7 @@ msgstr ""
 "No se pudo abrir el archivo WriteBootstrap:\n"
 "%s: ERR=%s\n"
 
-#: src/dird/restore.c:137 src/dird/msgchan.c:463 src/filed/job.c:2409
+#: src/dird/restore.c:137 src/dird/msgchan.c:476
 #, c-format
 msgid "Could not open bootstrap file %s: ERR=%s\n"
 msgstr "No se puede abrir el archivo de arranque %s: ERR=%s\n"
@@ -5478,7 +5529,7 @@ msgstr "No se pudo obtener recurso de almacenamiento '%s'.\n"
 msgid "Could not acquire read storage lock for \"%s\""
 msgstr "No se pudo obtener recurso de almacenamiento '%s'.\n"
 
-#: src/dird/restore.c:502
+#: src/dird/restore.c:505
 msgid ""
 "Cannot restore without a bootstrap file.\n"
 "You probably ran a restore job directly. All restore jobs must\n"
@@ -5489,32 +5540,32 @@ msgstr ""
 "de restauración deben\n"
 "ser ejecutadas utilizando el comando de restauración.\n"
 
-#: src/dird/restore.c:510
+#: src/dird/restore.c:513
 #, c-format
 msgid "Start Restore Job %s\n"
 msgstr "Iniciar Job Restaurar %s\n"
 
-#: src/dird/restore.c:561
+#: src/dird/restore.c:564
 msgid "Restore OK -- warning file count mismatch"
 msgstr "Restauración OK -- alerta, número de archivos desajustado."
 
-#: src/dird/restore.c:563
+#: src/dird/restore.c:566
 msgid "Restore OK"
 msgstr "Restauración OK"
 
-#: src/dird/restore.c:567
+#: src/dird/restore.c:570
 msgid "Restore OK -- with warnings"
 msgstr "Restaurar OK - con advertencias"
 
-#: src/dird/restore.c:571
+#: src/dird/restore.c:574
 msgid "*** Restore Error ***"
 msgstr "*** Error de Restauración ***"
 
-#: src/dird/restore.c:581
+#: src/dird/restore.c:584
 msgid "Restore Canceled"
 msgstr "Restauración Cancelada"
 
-#: src/dird/restore.c:608
+#: src/dird/restore.c:611
 #, fuzzy, c-format
 msgid ""
 "%s %s %s (%s):\n"
@@ -5559,7 +5610,7 @@ msgstr "Estado disponible para:\n"
 msgid "Select daemon type for status"
 msgstr "Seleccione el tipo de demonio para estado"
 
-#: src/dird/ua_status.c:294 src/stored/status.c:218
+#: src/dird/ua_status.c:294 src/stored/status.c:248
 #, c-format
 msgid "%s Version: %s (%s) %s %s %s\n"
 msgstr "%s Versión: %s (%s) %s %s %s\n"
@@ -5569,7 +5620,7 @@ msgstr "%s Versión: %s (%s) %s %s %s\n"
 msgid "Daemon started %s. Jobs: run=%d, running=%d mode=%d,%d\n"
 msgstr "Demonio iniciado %s, %d Job ejecutando desde el inicio.\n"
 
-#: src/dird/ua_status.c:300 src/stored/status.c:228 src/filed/status.c:142
+#: src/dird/ua_status.c:300 src/stored/status.c:258 src/filed/status.c:142
 #, c-format
 msgid " Heap: heap=%s smbytes=%s max_bytes=%s bufs=%s max_bufs=%s\n"
 msgstr "Heap: heap=%s smbytes=%s max_bytes=%s bufs=%s max_bufs=%s\n"
@@ -5615,25 +5666,25 @@ msgstr "Nivel Tipo Pri Scheduled Nombre Volumen\n"
 msgid "===================================================================================\n"
 msgstr "===================================================================================\n"
 
-#: src/dird/ua_status.c:487
+#: src/dird/ua_status.c:486
 #, c-format
 msgid "%-14s\t%-8s\t%3d\t%-18s\t%-18s\t%s\n"
 msgstr "%-14s\t%-8s\t%3d\t%-18s\t%-18s\t%s\n"
 
-#: src/dird/ua_status.c:491
+#: src/dird/ua_status.c:490
 #, c-format
 msgid "%-14s %-8s %3d  %-18s %-18s %s\n"
 msgstr "%-14s %-8s %3d %-18s %-18s %s\n"
 
-#: src/dird/ua_status.c:545
+#: src/dird/ua_status.c:544
 msgid "Ignoring invalid value for days. Max is 500.\n"
 msgstr "Ignorando valores inválidos para el día. Máximo es de 500.\n"
 
-#: src/dird/ua_status.c:588
+#: src/dird/ua_status.c:587
 msgid "No Scheduled Jobs.\n"
 msgstr "No hay Jobs Programados.\n"
 
-#: src/dird/ua_status.c:605 src/stored/status.c:396 src/filed/status.c:183
+#: src/dird/ua_status.c:604 src/stored/status.c:450 src/filed/status.c:183
 msgid ""
 "\n"
 "Running Jobs:\n"
@@ -5641,12 +5692,12 @@ msgstr ""
 "\n"
 "Jobs Ejecutando:\n"
 
-#: src/dird/ua_status.c:613
+#: src/dird/ua_status.c:612
 #, c-format
 msgid "Console connected at %s\n"
 msgstr "Consola conectada en %s\n"
 
-#: src/dird/ua_status.c:623
+#: src/dird/ua_status.c:622
 msgid ""
 "No Jobs running.\n"
 "====\n"
@@ -5654,154 +5705,154 @@ msgstr ""
 "Ningún Jobs ejecutando.\n"
 "====\n"
 
-#: src/dird/ua_status.c:629
+#: src/dird/ua_status.c:628
 msgid " JobId Level   Name                       Status\n"
 msgstr "JobId Nivel Nombre Estado\n"
 
-#: src/dird/ua_status.c:630 src/filed/status.c:342
+#: src/dird/ua_status.c:629 src/filed/status.c:342
 msgid "======================================================================\n"
 msgstr "======================================================================\n"
 
-#: src/dird/ua_status.c:639
+#: src/dird/ua_status.c:638
 msgid "is waiting execution"
 msgstr "esta esperando ejecución"
 
-#: src/dird/ua_status.c:642
+#: src/dird/ua_status.c:641
 msgid "is running"
 msgstr "esta ejecutando"
 
-#: src/dird/ua_status.c:645
+#: src/dird/ua_status.c:644
 msgid "is blocked"
 msgstr "esta bloqueado"
 
-#: src/dird/ua_status.c:648
+#: src/dird/ua_status.c:647
 msgid "has terminated"
 msgstr "ha terminado"
 
-#: src/dird/ua_status.c:651
+#: src/dird/ua_status.c:650
 msgid "has terminated with warnings"
 msgstr "ha terminado con advertencias"
 
-#: src/dird/ua_status.c:654
+#: src/dird/ua_status.c:653
 msgid "has erred"
 msgstr "ha errado"
 
-#: src/dird/ua_status.c:657
+#: src/dird/ua_status.c:656
 msgid "has errors"
 msgstr "tiene errores"
 
-#: src/dird/ua_status.c:660
+#: src/dird/ua_status.c:659
 msgid "has a fatal error"
 msgstr "tiene un error fatal"
 
-#: src/dird/ua_status.c:663
+#: src/dird/ua_status.c:662
 msgid "has verify differences"
 msgstr "ha verificar diferencias"
 
-#: src/dird/ua_status.c:666
+#: src/dird/ua_status.c:665
 msgid "has been canceled"
 msgstr "ha sido cancelado"
 
-#: src/dird/ua_status.c:671
+#: src/dird/ua_status.c:670
 msgid "is waiting on Client"
 msgstr "esta esperando por Client"
 
-#: src/dird/ua_status.c:673
+#: src/dird/ua_status.c:672
 #, c-format
 msgid "is waiting on Client %s"
 msgstr "esta esperando por Cliente %s"
 
-#: src/dird/ua_status.c:681 src/dird/ua_status.c:683
+#: src/dird/ua_status.c:680 src/dird/ua_status.c:682
 #, fuzzy, c-format
 msgid "is waiting on Storage \"%s\""
 msgstr "esta esperando por Storage %s"
 
-#: src/dird/ua_status.c:685
+#: src/dird/ua_status.c:684
 msgid "is waiting on Storage"
 msgstr "esta esperando por Storage"
 
-#: src/dird/ua_status.c:691
+#: src/dird/ua_status.c:690
 msgid "is waiting on max Storage jobs"
 msgstr "esta esperando por máximo Storage jobs"
 
-#: src/dird/ua_status.c:694
+#: src/dird/ua_status.c:693
 msgid "is waiting on max Client jobs"
 msgstr "esta esperando por máximo Cliente jobs"
 
-#: src/dird/ua_status.c:697
+#: src/dird/ua_status.c:696
 msgid "is waiting on max Job jobs"
 msgstr "esta esperando por máximo Jobs jobs"
 
-#: src/dird/ua_status.c:700
+#: src/dird/ua_status.c:699
 msgid "is waiting on max total jobs"
 msgstr "esta esperando por máximo total jobs"
 
-#: src/dird/ua_status.c:703
+#: src/dird/ua_status.c:702
 msgid "is waiting for its start time"
 msgstr "esta esperando por su hora de inicio"
 
-#: src/dird/ua_status.c:706
+#: src/dird/ua_status.c:705
 msgid "is waiting for higher priority jobs to finish"
 msgstr "está esperando por jobs de una mayor prioridad para terminar"
 
-#: src/dird/ua_status.c:709 src/dird/ua_status.c:760 src/lib/util.c:241
+#: src/dird/ua_status.c:708 src/dird/ua_status.c:759 src/lib/util.c:241
 msgid "SD committing Data"
 msgstr "SD perpetrando Datos"
 
-#: src/dird/ua_status.c:712 src/dird/ua_status.c:763 src/lib/util.c:244
+#: src/dird/ua_status.c:711 src/dird/ua_status.c:762 src/lib/util.c:244
 msgid "SD despooling Data"
 msgstr "SD desencolando Datos"
 
-#: src/dird/ua_status.c:715 src/dird/ua_status.c:766 src/lib/util.c:247
+#: src/dird/ua_status.c:714 src/dird/ua_status.c:765 src/lib/util.c:247
 msgid "SD despooling Attributes"
 msgstr "SD desencolando Atributos"
 
-#: src/dird/ua_status.c:718 src/dird/ua_status.c:769 src/lib/util.c:250
+#: src/dird/ua_status.c:717 src/dird/ua_status.c:768 src/lib/util.c:250
 msgid "Dir inserting Attributes"
 msgstr "Insertando Atributos Dir"
 
-#: src/dird/ua_status.c:723
+#: src/dird/ua_status.c:722
 #, c-format
 msgid "is in unknown state %c"
 msgstr "esta en estado desconocido %c"
 
-#: src/dird/ua_status.c:737
+#: src/dird/ua_status.c:736
 msgid "is waiting for a mount request"
 msgstr "esta esperando por petición de montaje"
 
-#: src/dird/ua_status.c:744
+#: src/dird/ua_status.c:743
 msgid "is waiting for an appendable Volume"
 msgstr "está esperando un Volumen appendable"
 
-#: src/dird/ua_status.c:752
+#: src/dird/ua_status.c:751
 msgid "is waiting for Client to connect to Storage daemon"
 msgstr "está esperando por cliente para conectarse al demonio Storage"
 
-#: src/dird/ua_status.c:754
+#: src/dird/ua_status.c:753
 #, c-format
 msgid "is waiting for Client %s to connect to Storage %s"
 msgstr "está aguardando por el Cliente %s para conectarse al Storage %s"
 
-#: src/dird/ua_status.c:785
+#: src/dird/ua_status.c:784
 #, fuzzy, c-format
 msgid "%6d\t%-6s\t%-20s\t%s\t%s\n"
 msgstr "%6d\t%-6s\t%-20s\t%s\n"
 
-#: src/dird/ua_status.c:789
+#: src/dird/ua_status.c:788
 #, c-format
 msgid "%6d %-6s  %-20s %s\n"
 msgstr "%6d %-6s %-20s %s\n"
 
-#: src/dird/ua_status.c:793
+#: src/dird/ua_status.c:792
 #, fuzzy, c-format
 msgid "               %-30s\n"
 msgstr "Job : %s\n"
 
-#: src/dird/ua_status.c:813
+#: src/dird/ua_status.c:812
 msgid "No Terminated Jobs.\n"
 msgstr "Jobs No Terminados.\n"
 
-#: src/dird/ua_status.c:819 src/stored/status.c:507 src/filed/status.c:330
+#: src/dird/ua_status.c:818 src/stored/status.c:572 src/filed/status.c:330
 msgid ""
 "\n"
 "Terminated Jobs:\n"
@@ -5809,54 +5860,54 @@ msgstr ""
 "\n"
 "Jobs No Terminados:\n"
 
-#: src/dird/ua_status.c:820 src/stored/status.c:514 src/filed/status.c:340
+#: src/dird/ua_status.c:819 src/stored/status.c:579 src/filed/status.c:340
 msgid " JobId  Level    Files      Bytes   Status   Finished        Name \n"
 msgstr "JobId Nivel Archivos Bytes Estado Finalizado Nombre \n"
 
-#: src/dird/ua_status.c:821
+#: src/dird/ua_status.c:820
 msgid "====================================================================\n"
 msgstr "====================================================================\n"
 
-#: src/dird/ua_status.c:853 src/stored/status.c:536 src/lib/util.c:180
+#: src/dird/ua_status.c:852 src/stored/status.c:601 src/lib/util.c:180
 #: src/filed/status.c:363
 msgid "Created"
 msgstr "Creado"
 
-#: src/dird/ua_status.c:857 src/stored/status.c:540 src/lib/util.c:196
+#: src/dird/ua_status.c:856 src/stored/status.c:605 src/lib/util.c:196
 #: src/lib/util.c:331 src/lib/util.c:478 src/filed/status.c:367
 msgid "Error"
 msgstr "Error"
 
-#: src/dird/ua_status.c:860 src/stored/status.c:543 src/filed/status.c:370
+#: src/dird/ua_status.c:859 src/stored/status.c:608 src/filed/status.c:370
 msgid "Diffs"
 msgstr "Diferencias"
 
-#: src/dird/ua_status.c:866 src/stored/status.c:549 src/stored/btape.c:1521
+#: src/dird/ua_status.c:865 src/stored/status.c:614 src/stored/btape.c:1523
 #: src/lib/util.c:189 src/lib/util.c:324 src/filed/status.c:376
 #: src/wx-console/wxbconfigpanel.cpp:209
 msgid "OK"
 msgstr "OK"
 
-#: src/dird/ua_status.c:869 src/stored/status.c:552 src/lib/util.c:202
+#: src/dird/ua_status.c:868 src/stored/status.c:617 src/lib/util.c:202
 #: src/lib/util.c:327
 msgid "OK -- with warnings"
 msgstr "OK - con advertencias"
 
-#: src/dird/ua_status.c:872 src/stored/status.c:555 src/filed/status.c:379
+#: src/dird/ua_status.c:871 src/stored/status.c:620 src/filed/status.c:379
 msgid "Other"
 msgstr "Otros"
 
-#: src/dird/ua_status.c:876 src/stored/status.c:567 src/filed/status.c:391
+#: src/dird/ua_status.c:875 src/stored/status.c:632 src/filed/status.c:391
 #, c-format
 msgid "%6d\t%-6s\t%8s\t%10s\t%-7s\t%-8s\t%s\n"
 msgstr "%6d\t%-6s\t%8s\t%10s\t%-7s\t%-8s\t%s\n"
 
-#: src/dird/ua_status.c:884 src/stored/status.c:575 src/filed/status.c:399
+#: src/dird/ua_status.c:883 src/stored/status.c:640 src/filed/status.c:399
 #, c-format
 msgid "%6d  %-6s %8s %10s  %-7s  %-8s %s\n"
 msgstr "%6d %-6s %8s %10s %-7s %-8s %s\n"
 
-#: src/dird/ua_status.c:893
+#: src/dird/ua_status.c:892
 msgid "\n"
 msgstr "\n"
 
@@ -5935,8 +5986,8 @@ msgid "Could not add job queue: ERR=%s\n"
 msgstr "No se ha podido añadir la cola de trabajo: ERR=%s\n"
 
 #: src/dird/job.c:183 src/dird/job.c:433 src/dird/job.c:435 src/dird/job.c:485
-#: src/dird/job.c:487 src/dird/job.c:1126 src/dird/job.c:1167
-#: src/dird/job.c:1176
+#: src/dird/job.c:487 src/dird/job.c:1129 src/dird/job.c:1170
+#: src/dird/job.c:1179
 msgid "Job resource"
 msgstr "Recurso Job"
 
@@ -5988,77 +6039,77 @@ msgstr "Poll \"%s\" no en base de datos. ERR=%s"
 msgid "Created database record for Pool \"%s\".\n"
 msgstr "Creado registro base de datos para Pool \"%s\".\n"
 
-#: src/dird/job.c:765 src/dird/job.c:806
+#: src/dird/job.c:766 src/dird/job.c:809
 #, c-format
 msgid "JobId %d already running. Duplicate job not allowed.\n"
 msgstr "JobId %d ya esta en ejecución. No se permite job duplicados.\n"
 
-#: src/dird/job.c:796
+#: src/dird/job.c:797
 #, c-format
 msgid "Cancelling duplicate JobId=%d.\n"
 msgstr "Cancelando duplicado JobId=%d.\n"
 
-#: src/dird/job.c:825 src/dird/job.c:1113
+#: src/dird/job.c:828 src/dird/job.c:1116
 msgid "Run pool override"
 msgstr "Anular Ejecutar Pool"
 
-#: src/dird/job.c:836
+#: src/dird/job.c:839
 msgid "Run FullPool override"
 msgstr "Anular Ejecutar FullPool "
 
-#: src/dird/job.c:838
+#: src/dird/job.c:841
 msgid "Job FullPool override"
 msgstr "Anular Job FullPool"
 
-#: src/dird/job.c:847
+#: src/dird/job.c:850
 msgid "Run IncPool override"
 msgstr "Anular Ejecutar IncPoll"
 
-#: src/dird/job.c:849
+#: src/dird/job.c:852
 msgid "Job IncPool override"
 msgstr "Anular Job IncPoll"
 
-#: src/dird/job.c:858
+#: src/dird/job.c:861
 msgid "Run DiffPool override"
 msgstr "Anular Ejecutar DiffPool"
 
-#: src/dird/job.c:860
+#: src/dird/job.c:863
 msgid "Job DiffPool override"
 msgstr "Anular Job DiffPool"
 
-#: src/dird/job.c:890 src/stored/bscan.c:1052
+#: src/dird/job.c:893 src/stored/bscan.c:1056
 #, c-format
 msgid "Could not create Client record. ERR=%s\n"
 msgstr "No es posible crear el registro de clientes. ERR=%s\n"
 
-#: src/dird/job.c:926
+#: src/dird/job.c:929
 msgid "FileSet MD5 digest not found.\n"
 msgstr "FileSet MD5 digest no encontrado.\n"
 
-#: src/dird/job.c:931
+#: src/dird/job.c:934
 #, c-format
 msgid "Could not create FileSet \"%s\" record. ERR=%s\n"
 msgstr "No es posible crear el registro FileSet \"%s\". ERR=%s\n"
 
-#: src/dird/job.c:973
+#: src/dird/job.c:976
 #, c-format
 msgid "Error updating job record. %s"
 msgstr "Error actualizando registro job. %s"
 
-#: src/dird/job.c:1118
+#: src/dird/job.c:1121
 msgid "Run storage override"
 msgstr "Anular Ejecutar Storage"
 
-#: src/dird/job.c:1186
+#: src/dird/job.c:1189
 msgid "Client resource"
 msgstr "Recurso de cliente"
 
-#: src/dird/job.c:1403
+#: src/dird/job.c:1406
 #, c-format
 msgid "Could not start clone job: \"%s\".\n"
 msgstr "No se pudo iniciar el job de clonación: \"%s\".\n"
 
-#: src/dird/job.c:1406
+#: src/dird/job.c:1409
 #, c-format
 msgid "Clone JobId %d started.\n"
 msgstr "Clonar JobId %d iniciado.\n"
@@ -6230,53 +6281,53 @@ msgstr "No se puede autenticar la consola \"%s\" en %s:%s:%d.\n"
 msgid "1000 OK: %s Version: %s (%s)\n"
 msgstr "1000 OK: %s Versión: %s(%s)\n"
 
-#: src/dird/catreq.c:129 src/dird/catreq.c:356
+#: src/dird/catreq.c:128 src/dird/catreq.c:355
 #, c-format
 msgid "1990 Invalid Catalog Request: %s"
 msgstr "1990 Solicitud de Catalogo no válido: %s"
 
-#: src/dird/catreq.c:130
+#: src/dird/catreq.c:129
 #, c-format
 msgid "Invalid Catalog request; DB not open: %s"
 msgstr "Solicitud de Catalogo no válido; BD no abierta: %s"
 
-#: src/dird/catreq.c:155
+#: src/dird/catreq.c:154
 msgid "1901 No Media.\n"
 msgstr "1901 Ninguna Media.\n"
 
-#: src/dird/catreq.c:183
+#: src/dird/catreq.c:182
 msgid "not in Pool"
 msgstr "no está¡ en Pool"
 
-#: src/dird/catreq.c:185
+#: src/dird/catreq.c:184
 msgid "not correct MediaType"
 msgstr "Tipo de Medio incorrecto"
 
-#: src/dird/catreq.c:195
+#: src/dird/catreq.c:194
 msgid "is not Enabled"
 msgstr "no está¡ Habilitado"
 
-#: src/dird/catreq.c:204
+#: src/dird/catreq.c:203
 #, fuzzy, c-format
 msgid "1998 Volume \"%s\" catalog status is %s, %s.\n"
 msgstr "1998 Volumen \"%s\" en estado %s, %s.\n"
 
-#: src/dird/catreq.c:209
+#: src/dird/catreq.c:208
 #, c-format
 msgid "1997 Volume \"%s\" not in catalog.\n"
 msgstr "1197 Volumen \"%s\" no está¡ en catálogo.\n"
 
-#: src/dird/catreq.c:231
+#: src/dird/catreq.c:230
 #, c-format
 msgid "Unable to get Media record for Volume %s: ERR=%s\n"
 msgstr "No es posible obtener registro Media para el Volumen %s: ERR=%s\n"
 
-#: src/dird/catreq.c:233
+#: src/dird/catreq.c:232
 #, c-format
 msgid "1991 Catalog Request for vol=%s failed: %s"
 msgstr "1991 Solicitud de Catalogo para vol=%s fallida:%s"
 
-#: src/dird/catreq.c:260
+#: src/dird/catreq.c:259
 #, c-format
 msgid ""
 "Volume Files at %u being set to %u for Volume \"%s\". This is incorrect.\n"
@@ -6284,83 +6335,83 @@ msgstr ""
 "Archivos de Volumen en %u se establece en %u para Volumen \"%s\". Esto es "
 "incorrecto.\n"
 
-#: src/dird/catreq.c:263
+#: src/dird/catreq.c:262
 #, c-format
 msgid "1992 Update Media error. VolFiles=%u, CatFiles=%u\n"
 msgstr "1992 Error de actualización de Media. VolFiles=%u, CatFiles=%u\n"
 
-#: src/dird/catreq.c:288
-#, fuzzy
-msgid "Attempt to set StorageId to zero.\n"
-msgstr "Intento de abrir sesión ya abierta.\n"
-
-#: src/dird/catreq.c:319
+#: src/dird/catreq.c:318
 #, c-format
 msgid "Catalog error updating Media record. %s"
 msgstr "Error de catalogo actualizando registro Media. %s"
 
-#: src/dird/catreq.c:321
+#: src/dird/catreq.c:320
 msgid "1993 Update Media error\n"
 msgstr "1993 Error de actualización de Media\n"
 
-#: src/dird/catreq.c:345
+#: src/dird/catreq.c:344
 #, c-format
 msgid "Catalog error creating JobMedia record. %s"
 msgstr "Error de Catalogo al crear registro JobMedia. %s"
 
-#: src/dird/catreq.c:347
+#: src/dird/catreq.c:346
 msgid "1992 Create JobMedia error\n"
 msgstr "1992 Error al crear JobMedia\n"
 
-#: src/dird/catreq.c:357
+#: src/dird/catreq.c:356
 #, c-format
 msgid "Invalid Catalog request: %s"
 msgstr "Invalida petición de Catalogo: %s"
 
+#: src/dird/catreq.c:443
+#, fuzzy, c-format
+msgid "Attribute create error: ERR=%s"
+msgstr "error al crear Atributo.%s"
+
 #: src/dird/catreq.c:538
 #, fuzzy, c-format
 msgid "Restore object create error. %s"
 msgstr "error al crear Atributo.%s"
 
 #: src/dird/catreq.c:544
-#, c-format
-msgid "Got %s but not same File as attributes\n"
+#, fuzzy, c-format
+msgid "%s not same File=%d as attributes=%d\n"
 msgstr "Obtuvo %s, pero no igual que los atributos de File\n"
 
-#: src/dird/catreq.c:570
+#: src/dird/catreq.c:571
 #, c-format
 msgid "Catalog error updating file digest. Unsupported digest stream type: %d"
 msgstr ""
 "Error al actualizar el resumen de archivo de catálogo.  Incompatible resumen "
 "de tipo de flujo: %d"
 
-#: src/dird/catreq.c:585
+#: src/dird/catreq.c:586
 #, fuzzy, c-format
 msgid "attribute create error. %s"
 msgstr "error al crear Atributo.%s"
 
-#: src/dird/catreq.c:591
+#: src/dird/catreq.c:592
 #, c-format
 msgid "Catalog error updating file digest. %s"
 msgstr "Error de catalogo actualizando archivo de resumen. %s"
 
-#: src/dird/catreq.c:614
+#: src/dird/catreq.c:615
 #, c-format
 msgid "1994 Invalid Catalog Update: %s"
 msgstr "1994 Invalido Catálogo de Actualizaciones: %s"
 
-#: src/dird/catreq.c:615
+#: src/dird/catreq.c:616
 #, c-format
 msgid "Invalid Catalog Update; DB not open: %s"
 msgstr "Actualización de Catalogo Inválida; La Base de Datos no se abre: %s"
 
-#: src/dird/catreq.c:670 src/dird/catreq.c:685 src/lib/bsock.c:605
+#: src/dird/catreq.c:671 src/dird/catreq.c:686 src/lib/bsock.c:645
 #, c-format
 msgid "fread attr spool error. ERR=%s\n"
 msgstr "Error fread attr spool. ERR=%s\n"
 
 #: src/dird/msgchan.c:106 src/tray-monitor/tray-monitor.c:952
-#: src/filed/job.c:1771 src/qt-console/tray-monitor/tray-monitor.cpp:375
+#: src/filed/job.c:1775 src/qt-console/tray-monitor/tray-monitor.cpp:375
 msgid "Storage daemon"
 msgstr "Demonio Storage"
 
@@ -6374,7 +6425,17 @@ msgstr "Storage daemon rechazo Job comando: %s\n"
 msgid "<stored: bad response to Job command: %s\n"
 msgstr "<stored: mala respuesta para Job comando: %s\n"
 
-#: src/dird/msgchan.c:312
+#: src/dird/msgchan.c:273
+#, fuzzy, c-format
+msgid "Using Device \"%s\" to read.\n"
+msgstr "Utilizando el dispositivo: \"%s\" para lectura.\n"
+
+#: src/dird/msgchan.c:311
+#, fuzzy, c-format
+msgid "Using Device \"%s\" to write.\n"
+msgstr "Utilizando el dispositivo: \"%s\" para escritura.\n"
+
+#: src/dird/msgchan.c:318
 #, c-format
 msgid ""
 "\n"
@@ -6385,7 +6446,7 @@ msgstr ""
 " Demonio Storage no aceptó Dispositivo \"%s\" porque:\n"
 " %s"
 
-#: src/dird/msgchan.c:316
+#: src/dird/msgchan.c:322
 #, c-format
 msgid ""
 "\n"
@@ -6394,16 +6455,15 @@ msgstr ""
 "\n"
 " Demonio Storage no aceptó Dispositivo \"%s\" comando.\n"
 
-#: src/dird/msgchan.c:321
-#, c-format
-msgid "Using Device \"%s\"\n"
-msgstr "Usando Dispositivo \"%s\"\n"
-
-#: src/dird/msgchan.c:341 src/dird/msgchan.c:529
+#: src/dird/msgchan.c:345 src/dird/msgchan.c:542
 #, c-format
 msgid "Cannot create message thread: %s\n"
 msgstr "No se puede crear hilo de mensaje: %s\n"
 
+#: src/dird/msgchan.c:417
+msgid "Director's comm line to SD dropped.\n"
+msgstr ""
+
 #: src/tray-monitor/tray_conf.c:177
 #: src/qt-console/tray-monitor/tray_conf.cpp:177
 #, c-format
@@ -6702,14 +6762,14 @@ msgstr "Conectando al Director %s:%d\n"
 
 #: src/tray-monitor/tray-monitor.c:937
 #: src/qt-console/tray-monitor/tray-monitor.cpp:359
-#: src/qt-console/bcomm/dircomm.cpp:101
+#: src/qt-console/bcomm/dircomm.cpp:103
 #, c-format
 msgid "Connecting to Director %s:%d"
 msgstr "Conectando con Director %s:%d"
 
 #: src/tray-monitor/tray-monitor.c:938 src/wx-console/console_thread.cpp:428
 #: src/qt-console/tray-monitor/tray-monitor.cpp:361
-#: src/qt-console/bcomm/dircomm.cpp:171
+#: src/qt-console/bcomm/dircomm.cpp:173
 msgid "Director daemon"
 msgstr "Servicio Director"
 
@@ -6874,7 +6934,7 @@ msgid ""
 "Please see "
 msgstr "Contraseñas del demonio Director y File no son los mismos.\n"
 
-#: src/stored/reserve.c:86
+#: src/stored/reserve.c:87
 #, c-format
 msgid "Unable to initialize reservation lock. ERR=%s\n"
 msgstr "No se puede inicializar bloqueo de reserva. ERR=%s\n"
@@ -6884,21 +6944,21 @@ msgstr "No se puede inicializar bloqueo de reserva. ERR=%s\n"
 msgid "Hey! num_writers=%d!!!!\n"
 msgstr "Hey! num_writers=%d!!!!\n"
 
-#: src/stored/reserve.c:255
+#: src/stored/reserve.c:256
 msgid "3939 Could not get dcr\n"
 msgstr "3939 No se pudo obtener DCR\n"
 
-#: src/stored/reserve.c:357
+#: src/stored/reserve.c:364
 #, c-format
 msgid "Device reservation failed for JobId=%d: %s\n"
 msgstr "Reservación del Dispositivo fallida para JobId=%d: %s\n"
 
-#: src/stored/reserve.c:366
+#: src/stored/reserve.c:373
 #, c-format
 msgid "Failed command: %s\n"
 msgstr "Comando fallido: %s\n"
 
-#: src/stored/reserve.c:625 src/stored/dircmd.c:618
+#: src/stored/reserve.c:632 src/stored/dircmd.c:633
 #, c-format
 msgid ""
 "\n"
@@ -6909,7 +6969,7 @@ msgstr ""
 "Dispositivo \"%s\" en el cambiador \"%s\" solicitado por el DIR no se pudo "
 "abrir o no existe.\n"
 
-#: src/stored/reserve.c:629 src/stored/dircmd.c:596
+#: src/stored/reserve.c:636 src/stored/dircmd.c:611
 #, c-format
 msgid ""
 "\n"
@@ -6918,35 +6978,35 @@ msgstr ""
 "\n"
 "Dispositivo \"%s\" solicitado por el DIR no se pudo abrir o no existe.\n"
 
-#: src/stored/reserve.c:645
+#: src/stored/reserve.c:652
 #, c-format
 msgid "3926 Could not get dcr for device: %s\n"
 msgstr "3926 No se pudo obtener dcr para el dispositivo: %s\n"
 
-#: src/stored/reserve.c:771
+#: src/stored/reserve.c:778
 #, c-format
 msgid "3601 JobId=%u device %s is BLOCKED due to user unmount.\n"
 msgstr ""
 "3601 JobId=%u dispositivo %s está BLOQUEADO debido al desmontar por el "
 "usuario.\n"
 
-#: src/stored/reserve.c:781
+#: src/stored/reserve.c:788
 #, c-format
 msgid "3602 JobId=%u device %s is busy (already reading/writing).\n"
 msgstr "3602 JobId=%u dispositivo %s está ocupado (ya leyendo/escribiendo).\n"
 
-#: src/stored/reserve.c:833
+#: src/stored/reserve.c:840
 #, c-format
 msgid "3603 JobId=%u device %s is busy reading.\n"
 msgstr "3603 JobId=%u dispositivo %s está ocupado leyendo.\n"
 
-#: src/stored/reserve.c:842
+#: src/stored/reserve.c:849
 #, c-format
 msgid "3604 JobId=%u device %s is BLOCKED due to user unmount.\n"
 msgstr ""
 "3604 JobId=%u dispositivo %s está BLOQUEADO debido al desmonte de usuario.\n"
 
-#: src/stored/reserve.c:884
+#: src/stored/reserve.c:891
 #, c-format
 msgid ""
 "3608 JobId=%u wants Pool=\"%s\" but have Pool=\"%s\" nreserve=%d on drive "
@@ -6955,52 +7015,52 @@ msgstr ""
 "3608 JobId=%u requiere Pool=\"%s\", pero hay Pool=\"%s\" nreserve=%d en la "
 "unidad %s.\n"
 
-#: src/stored/reserve.c:907
+#: src/stored/reserve.c:914
 #, c-format
 msgid "3609 JobId=%u Max concurrent jobs exceeded on drive %s.\n"
 msgstr "3609 JobId=%u Máximo trabajos simultáneos superado en la unidad %s.\n"
 
-#: src/stored/reserve.c:919
+#: src/stored/reserve.c:926
 #, c-format
 msgid "3610 JobId=%u Volume max jobs exceeded on drive %s.\n"
 msgstr "3610 JobId=%u máximo volumen jobs excedido en la unidad %s.\n"
 
-#: src/stored/reserve.c:971
+#: src/stored/reserve.c:978
 #, c-format
 msgid "3605 JobId=%u wants free drive but device %s is busy.\n"
 msgstr ""
 "3605 JobId=%u requiere la unidad disponible, pero el dispositivo %s está "
 "ocupado.\n"
 
-#: src/stored/reserve.c:980
+#: src/stored/reserve.c:987
 #, c-format
 msgid "3606 JobId=%u prefers mounted drives, but drive %s has no Volume.\n"
 msgstr ""
 "3606 JobId=%u prefiere unidades montadas, pero la unidad %s no tiene "
 "Volumen.\n"
 
-#: src/stored/reserve.c:1002
+#: src/stored/reserve.c:1009
 #, c-format
 msgid "3607 JobId=%u wants Vol=\"%s\" drive has Vol=\"%s\" on drive %s.\n"
 msgstr ""
 "3607 JobId=%u quiere Vol=\"%s\" la unidad tiene Vol=\"%s\" en la unidad %s.\n"
 
-#: src/stored/reserve.c:1057
+#: src/stored/reserve.c:1064
 #, c-format
 msgid "Logic error!!!! JobId=%u Should not get here.\n"
 msgstr "Error lógico!! JobId=%u No debería llegar hasta aquí.\n"
 
-#: src/stored/reserve.c:1058
+#: src/stored/reserve.c:1065
 #, c-format
 msgid "3910 JobId=%u Logic error!!!! drive %s Should not get here.\n"
 msgstr ""
 "3910 JobId=%u Error de lógica!!! la unidad %s no debería llegar aquí.\n"
 
-#: src/stored/reserve.c:1061
+#: src/stored/reserve.c:1068
 msgid "Logic error!!!! Should not get here.\n"
 msgstr "Error lógico!!! No debe llegar aquí.\n"
 
-#: src/stored/reserve.c:1064
+#: src/stored/reserve.c:1071
 #, c-format
 msgid "3911 JobId=%u failed reserve drive %s.\n"
 msgstr "3911 JobId=%u fallo al reservar unidad %s.\n"
@@ -7113,23 +7173,23 @@ msgstr ""
 msgid "FileIndex=%d VolSessionId=%d VolSessionTime=%d Stream=%d DataLen=%d\n"
 msgstr "FileIndex=%d VolSessionId=%d VolSessionTime=%d Stream=%d DataLen=%d\n"
 
-#: src/stored/bls.c:425 src/stored/read_record.c:414 src/stored/bcopy.c:332
+#: src/stored/bls.c:425 src/stored/read_record.c:414 src/stored/bcopy.c:330
 msgid "Fresh Volume Label"
 msgstr "Nueva Etiqueta de Volumen"
 
-#: src/stored/bls.c:428 src/stored/read_record.c:417 src/stored/bcopy.c:335
+#: src/stored/bls.c:428 src/stored/read_record.c:417 src/stored/bcopy.c:333
 msgid "Volume Label"
 msgstr "Etiqueta de Volumen"
 
-#: src/stored/bls.c:432 src/stored/label.c:1033 src/stored/bcopy.c:339
+#: src/stored/bls.c:432 src/stored/label.c:1028 src/stored/bcopy.c:337
 msgid "Begin Job Session"
 msgstr "Inicio Job Sesión"
 
-#: src/stored/bls.c:437 src/stored/label.c:1036 src/stored/bcopy.c:343
+#: src/stored/bls.c:437 src/stored/label.c:1031 src/stored/bcopy.c:341
 msgid "End Job Session"
 msgstr "Fin Job Sesión"
 
-#: src/stored/bls.c:441 src/stored/bcopy.c:348
+#: src/stored/bls.c:441 src/stored/bcopy.c:346
 msgid "End of Medium"
 msgstr "Fin de Medio"
 
@@ -7147,17 +7207,17 @@ msgstr ""
 msgid "End of object"
 msgstr "Fin de la Cinta"
 
-#: src/stored/bls.c:453 src/stored/label.c:1045 src/stored/bcopy.c:351
+#: src/stored/bls.c:453 src/stored/label.c:1040 src/stored/bcopy.c:349
 msgid "Unknown"
 msgstr "Desconocido"
 
-#: src/stored/bls.c:460 src/stored/read_record.c:435 src/stored/bcopy.c:357
+#: src/stored/bls.c:460 src/stored/read_record.c:435 src/stored/bcopy.c:355
 #, c-format
 msgid "%s Record: VolSessionId=%d VolSessionTime=%d JobId=%d DataLen=%d\n"
 msgstr "%s Registro: VolSessionId=%d VolSessionTime=%d JobId=%d DataLen=%d\n"
 
-#: src/stored/bls.c:479 src/stored/bextract.c:612 src/stored/bcopy.c:375
-#: src/stored/bscan.c:1370 src/stored/btape.c:3048
+#: src/stored/bls.c:479 src/stored/bextract.c:612 src/stored/bcopy.c:373
+#: src/stored/bscan.c:1374 src/stored/btape.c:3050
 #, c-format
 msgid "Mount Volume \"%s\" on device %s and press return when ready: "
 msgstr ""
@@ -7169,87 +7229,87 @@ msgstr ""
 msgid "Connection request from %s failed.\n"
 msgstr "Fallo solicitud de conexión desde %s.\n"
 
-#: src/stored/dircmd.c:165
+#: src/stored/dircmd.c:166
 #, c-format
 msgid "Invalid connection from %s. Len=%d\n"
 msgstr "Inválida conexión desde %s. Len=%d\n"
 
-#: src/stored/dircmd.c:208 src/filed/authenticate.c:208
+#: src/stored/dircmd.c:210 src/filed/authenticate.c:208
 msgid "Unable to authenticate Director\n"
 msgstr "No se puede autentificar el Director\n"
 
-#: src/stored/dircmd.c:294
+#: src/stored/dircmd.c:299
 #, c-format
 msgid "3991 Bad setdebug command: %s\n"
 msgstr "3991 Malo comando setdebug: %s\n"
 
-#: src/stored/dircmd.c:317
+#: src/stored/dircmd.c:326
+msgid "3903 Error scanning cancel command.\n"
+msgstr "3903 Error escaneando comando cancel.\n"
+
+#: src/stored/dircmd.c:330
 #, c-format
 msgid "3904 Job %s not found.\n"
 msgstr "3904 Job %s no encontrado.\n"
 
-#: src/stored/dircmd.c:345
+#: src/stored/dircmd.c:358
 #, fuzzy, c-format
-msgid "3000 JobId=%ld Job=\"%s\" marked to be canceled.\n"
+msgid "3000 JobId=%ld Job=\"%s\" marked to be %s.\n"
 msgstr "JobId %s, Job %s marcado para ser cancelado.\n"
 
-#: src/stored/dircmd.c:349
-msgid "3903 Error scanning cancel command.\n"
-msgstr "3903 Error escaneando comando cancel.\n"
-
-#: src/stored/dircmd.c:425 src/stored/dircmd.c:791 src/stored/dircmd.c:883
-#: src/stored/dircmd.c:994 src/stored/dircmd.c:1116 src/stored/dircmd.c:1159
+#: src/stored/dircmd.c:437 src/stored/dircmd.c:812 src/stored/dircmd.c:904
+#: src/stored/dircmd.c:1015 src/stored/dircmd.c:1137 src/stored/dircmd.c:1179
 #, c-format
 msgid "3999 Device \"%s\" not found or could not be opened.\n"
 msgstr "3999 Dispositivo \"%s\" no encontrado o no pudo ser abierto.\n"
 
-#: src/stored/dircmd.c:430
+#: src/stored/dircmd.c:442
 #, c-format
 msgid "3903 Error scanning label command: %s\n"
 msgstr "3903 Error escaneando comando cancel: %s\n"
 
-#: src/stored/dircmd.c:480
+#: src/stored/dircmd.c:492
 #, fuzzy, c-format
 msgid "3910 Unable to open device \"%s\": ERR=%s\n"
 msgstr "3910 No se puede abrir el dispositivo %s: ERR=%s\n"
 
-#: src/stored/dircmd.c:497
+#: src/stored/dircmd.c:509
 #, c-format
 msgid "3920 Cannot label Volume because it is already labeled: \"%s\"\n"
 msgstr ""
 "3920 No se puede etiquetar el volumen porque ya está etiquetado: \"%s\"\n"
 
-#: src/stored/dircmd.c:504
+#: src/stored/dircmd.c:516
 msgid "3921 Wrong volume mounted.\n"
 msgstr "3921 Volumen incorrecto montado.\n"
 
-#: src/stored/dircmd.c:508
+#: src/stored/dircmd.c:520
 msgid "3922 Cannot relabel an ANSI/IBM labeled Volume.\n"
 msgstr "3922 No se puede renombrar un volumen ANSI/IBM etiquetado.\n"
 
-#: src/stored/dircmd.c:516
+#: src/stored/dircmd.c:528
 #, c-format
 msgid "3912 Failed to label Volume: ERR=%s\n"
 msgstr "3912 Fallo al etiquetar el Volumen: ERR=%s\n"
 
-#: src/stored/dircmd.c:526
+#: src/stored/dircmd.c:538
 #, c-format
 msgid "3914 Failed to label Volume (no media): ERR=%s\n"
 msgstr "3914 No se ha podido etiquetar el volumen (no hay medios): ERR=%s\n"
 
-#: src/stored/dircmd.c:529
+#: src/stored/dircmd.c:541
 #, c-format
 msgid "3913 Cannot label Volume. Unknown status %d from read_volume_label()\n"
 msgstr ""
 "3913 No se puede etiquetar el volumen. Estado desconocido %d de "
 "read_volume_label()\n"
 
-#: src/stored/dircmd.c:563
+#: src/stored/dircmd.c:578
 #, c-format
 msgid "3001 Mounted Volume: %s\n"
 msgstr "3001 Volumen Montado: %s\n"
 
-#: src/stored/dircmd.c:567 src/stored/dircmd.c:1195
+#: src/stored/dircmd.c:582 src/stored/dircmd.c:1215
 #, fuzzy, c-format
 msgid ""
 "3902 Cannot mount Volume on Storage Device \"%s\" because:\n"
@@ -7258,21 +7318,21 @@ msgstr ""
 "3902 No se puede montar el volumen en Storage Device %s debido a que:\n"
 "%s"
 
-#: src/stored/dircmd.c:680
+#: src/stored/dircmd.c:696
 msgid "Specified slot ignored. "
 msgstr "Ranura especificado ignorado."
 
-#: src/stored/dircmd.c:695 src/stored/dircmd.c:752
+#: src/stored/dircmd.c:712 src/stored/dircmd.c:770
 #, fuzzy, c-format
 msgid "3901 Unable to open device \"%s\": ERR=%s\n"
 msgstr "3901 No se puede abrir el dispositivo %s: ERR=%s\n"
 
-#: src/stored/dircmd.c:715 src/stored/dircmd.c:743
+#: src/stored/dircmd.c:732 src/stored/dircmd.c:761
 #, fuzzy, c-format
 msgid "3001 Device \"%s\" is mounted with Volume \"%s\"\n"
 msgstr "3001 Dispositivo %s esta montado con volumen \"%s\"\n"
 
-#: src/stored/dircmd.c:718 src/stored/dircmd.c:746 src/stored/dircmd.c:761
+#: src/stored/dircmd.c:735 src/stored/dircmd.c:764 src/stored/dircmd.c:779
 #, fuzzy, c-format
 msgid ""
 "3905 Device \"%s\" open but no Bacula volume is mounted.\n"
@@ -7282,151 +7342,151 @@ msgstr ""
 "Si esto no es una cinta en blanco, trate de desmontar y volver a montar el "
 "volumen.\n"
 
-#: src/stored/dircmd.c:728
+#: src/stored/dircmd.c:745
 #, fuzzy, c-format
 msgid "3001 Device \"%s\" is doing acquire.\n"
 msgstr "3001% s dispositivo está haciendo adquirir.\n"
 
-#: src/stored/dircmd.c:733 src/stored/dircmd.c:854
+#: src/stored/dircmd.c:750 src/stored/dircmd.c:875
 #, fuzzy, c-format
 msgid "3903 Device \"%s\" is being labeled.\n"
 msgstr "3903 Dispositivo %s ha sido etiquetada.\n"
 
-#: src/stored/dircmd.c:758
+#: src/stored/dircmd.c:776
 #, fuzzy, c-format
 msgid "3001 Device \"%s\" is already mounted with Volume \"%s\"\n"
 msgstr "3001 Dispositivo %s ya está montado con el volumen \"%s\"\n"
 
-#: src/stored/dircmd.c:767
+#: src/stored/dircmd.c:788
 #, fuzzy, c-format
 msgid "3002 Device \"%s\" is mounted.\n"
 msgstr "3002 Dispositivo %s está montado.\n"
 
-#: src/stored/dircmd.c:769 src/stored/dircmd.c:826 src/stored/dircmd.c:842
-#: src/stored/dircmd.c:874
+#: src/stored/dircmd.c:790 src/stored/dircmd.c:847 src/stored/dircmd.c:863
+#: src/stored/dircmd.c:895
 #, c-format
 msgid "3907 %s"
 msgstr "3907 %s"
 
-#: src/stored/dircmd.c:772
+#: src/stored/dircmd.c:793
 #, fuzzy, c-format
 msgid "3906 File device \"%s\" is always mounted.\n"
 msgstr "3906 Dispositivo de Archivo %s está siempre montado.\n"
 
-#: src/stored/dircmd.c:781
+#: src/stored/dircmd.c:802
 #, fuzzy, c-format
 msgid "3930 Device \"%s\" is being released.\n"
 msgstr "3903 Dispositivo %s ha sido etiquetada.\n"
 
-#: src/stored/dircmd.c:785
+#: src/stored/dircmd.c:806
 #, fuzzy, c-format
 msgid "3905 Unknown wait state %d\n"
 msgstr "Estado del Analizador %d desconocido\n"
 
-#: src/stored/dircmd.c:795
+#: src/stored/dircmd.c:816
 #, c-format
 msgid "3909 Error scanning mount command: %s\n"
 msgstr "3909 Error escaneando comando mount: %s\n"
 
-#: src/stored/dircmd.c:823 src/stored/dircmd.c:876
+#: src/stored/dircmd.c:844 src/stored/dircmd.c:897
 #, fuzzy, c-format
 msgid "3002 Device \"%s\" unmounted.\n"
 msgstr "3002 Dispositivo %s desmontado.\n"
 
-#: src/stored/dircmd.c:830
+#: src/stored/dircmd.c:851
 #, fuzzy, c-format
 msgid "3901 Device \"%s\" is already unmounted.\n"
 msgstr "3901 Dispositivos %s ya está desmontado.\n"
 
-#: src/stored/dircmd.c:845
+#: src/stored/dircmd.c:866
 #, fuzzy, c-format
 msgid "3001 Device \"%s\" unmounted.\n"
 msgstr "3001 Dispositivo %s desmontado.\n"
 
-#: src/stored/dircmd.c:850
+#: src/stored/dircmd.c:871
 #, fuzzy, c-format
 msgid "3902 Device \"%s\" is busy in acquire.\n"
 msgstr "3902 Dispositivo %s está ocupado en adquirir.\n"
 
-#: src/stored/dircmd.c:888
+#: src/stored/dircmd.c:909
 #, c-format
 msgid "3907 Error scanning unmount command: %s\n"
 msgstr "3907 Error escaneando comando unmount: %s\n"
 
-#: src/stored/dircmd.c:916
+#: src/stored/dircmd.c:937
 msgid "3916 Error scanning action_on_purge command\n"
 msgstr "3916 Error de escaneando comando action_on_purge\n"
 
-#: src/stored/dircmd.c:959
+#: src/stored/dircmd.c:980
 #, fuzzy, c-format
 msgid "3921 Device \"%s\" already released.\n"
 msgstr "3921 Dispositivo %s ya liberado.\n"
 
-#: src/stored/dircmd.c:966
+#: src/stored/dircmd.c:987
 #, fuzzy, c-format
 msgid "3922 Device \"%s\" waiting for sysop.\n"
 msgstr "3922 Dispositivo %s aguardando por sysop.\n"
 
-#: src/stored/dircmd.c:972
+#: src/stored/dircmd.c:993
 #, fuzzy, c-format
 msgid "3922 Device \"%s\" waiting for mount.\n"
 msgstr "3922 Dispositivo %s aguardando por montar.\n"
 
-#: src/stored/dircmd.c:976
+#: src/stored/dircmd.c:997
 #, fuzzy, c-format
 msgid "3923 Device \"%s\" is busy in acquire.\n"
 msgstr "3923 Dispositivo %s está ocupado en adquirir.\n"
 
-#: src/stored/dircmd.c:980
+#: src/stored/dircmd.c:1001
 #, fuzzy, c-format
 msgid "3914 Device \"%s\" is being labeled.\n"
 msgstr "3914 Dispositivo %s ha sido etiquetada.\n"
 
-#: src/stored/dircmd.c:988
+#: src/stored/dircmd.c:1009
 #, fuzzy, c-format
 msgid "3022 Device \"%s\" released.\n"
 msgstr "3022 Dispositivo %s liberado.\n"
 
-#: src/stored/dircmd.c:999
+#: src/stored/dircmd.c:1020
 #, c-format
 msgid "3927 Error scanning release command: %s\n"
 msgstr "3927 Error escaneando  comando de liberación: %s\n"
 
-#: src/stored/dircmd.c:1028 src/filed/job.c:1531
+#: src/stored/dircmd.c:1049 src/filed/job.c:1535
 #, c-format
 msgid "Could not create bootstrap file %s: ERR=%s\n"
 msgstr "No se pudo crear el archivo de arranque %s: ERR=%s\n"
 
-#: src/stored/dircmd.c:1041
+#: src/stored/dircmd.c:1062
 msgid "Error parsing bootstrap file.\n"
 msgstr "Error analizando archivo bootstrap.\n"
 
-#: src/stored/dircmd.c:1103
+#: src/stored/dircmd.c:1124
 #, fuzzy, c-format
-msgid "3995 Device \"%s\" is not an autochanger.\n"
+msgid "3998 Device \"%s\" is not an autochanger.\n"
 msgstr "3995 Dispositivo %s no es un auto-cargador.\n"
 
-#: src/stored/dircmd.c:1120
+#: src/stored/dircmd.c:1141
 #, fuzzy, c-format
 msgid "3908 Error scanning autochanger drives/list/slots command: %s\n"
 msgstr "3908 Error comando scanning auto-cambiador drives/list/ranuras: %s\n"
 
-#: src/stored/dircmd.c:1163
+#: src/stored/dircmd.c:1183
 #, c-format
 msgid "3909 Error scanning readlabel command: %s\n"
 msgstr "3909 Error comando scanning readlabel: %s\n"
 
-#: src/stored/dircmd.c:1191
+#: src/stored/dircmd.c:1211
 #, c-format
 msgid "3001 Volume=%s Slot=%d\n"
 msgstr "3001 Volumen=%s Ranura=%d\n"
 
-#: src/stored/dircmd.c:1223
+#: src/stored/dircmd.c:1243
 #, fuzzy, c-format
 msgid "3931 Device \"%s\" is BLOCKED. user unmounted.\n"
 msgstr "3931 Dispositivo %s está BLOQUEADO. Usuario sin montar.\n"
 
-#: src/stored/dircmd.c:1227
+#: src/stored/dircmd.c:1247
 #, fuzzy, c-format
 msgid ""
 "3932 Device \"%s\" is BLOCKED. user unmounted during wait for media/mount.\n"
@@ -7434,37 +7494,37 @@ msgstr ""
 "3932 Dispositivo %s está BLOQUEADO. Usuario sin montar en espera por medios/"
 "montar.\n"
 
-#: src/stored/dircmd.c:1231
+#: src/stored/dircmd.c:1251
 #, fuzzy, c-format
 msgid "3933 Device \"%s\" is BLOCKED waiting for media.\n"
 msgstr "3933 Dispositivo %s está BLOQUEADO esperando por media.\n"
 
-#: src/stored/dircmd.c:1235
+#: src/stored/dircmd.c:1255
 #, fuzzy, c-format
 msgid "3934 Device \"%s\" is being initialized.\n"
 msgstr "3934 Dispositivo %s se está inicializado.\n"
 
-#: src/stored/dircmd.c:1239
+#: src/stored/dircmd.c:1259
 #, fuzzy, c-format
 msgid "3935 Device \"%s\" is blocked labeling a Volume.\n"
 msgstr "3935 Dispositivo %s está BLOQUEADO etiquetando un Volumen.\n"
 
-#: src/stored/dircmd.c:1243
+#: src/stored/dircmd.c:1263
 #, fuzzy, c-format
 msgid "3935 Device \"%s\" is blocked for unknown reason.\n"
 msgstr "3935 Dispositivo %s está BLOQUEADO por razón desconocida.\n"
 
-#: src/stored/dircmd.c:1248
+#: src/stored/dircmd.c:1268
 #, fuzzy, c-format
 msgid "3936 Device \"%s\" is busy reading.\n"
 msgstr "3936 Dispositivo %s está ocupado leyendo.\n"
 
-#: src/stored/dircmd.c:1251
+#: src/stored/dircmd.c:1271
 #, fuzzy, c-format
 msgid "3937 Device \"%s\" is busy with writers=%d reserved=%d.\n"
 msgstr "3937 Dispositivo %s está ocupado con %d escritura(s).\n"
 
-#: src/stored/parse_bsr.c:123 src/stored/parse_bsr.c:127
+#: src/stored/parse_bsr.c:122 src/stored/parse_bsr.c:126
 #, c-format
 msgid ""
 "Bootstrap file error: %s\n"
@@ -7475,154 +7535,154 @@ msgstr ""
 " : Linea %d, columna %d del archivo %s\n"
 "%s\n"
 
-#: src/stored/parse_bsr.c:149
+#: src/stored/parse_bsr.c:148
 #, c-format
 msgid "Cannot open bootstrap file %s: %s\n"
 msgstr "No se puede abrir el archivo bootstrap %s: %s\n"
 
-#: src/stored/parse_bsr.c:280
+#: src/stored/parse_bsr.c:279
 #, c-format
 msgid "MediaType %s in bsr at inappropriate place.\n"
 msgstr "MediaType %s en BSR en el lugar inadecuado.\n"
 
-#: src/stored/parse_bsr.c:312
+#: src/stored/parse_bsr.c:311
 #, c-format
 msgid "Device \"%s\" in bsr at inappropriate place.\n"
 msgstr "Dispositivo %s en BSR en el lugar inadecuado.\n"
 
-#: src/stored/parse_bsr.c:485
+#: src/stored/parse_bsr.c:484
 #, c-format
 msgid "REGEX '%s' compile error. ERR=%s\n"
 msgstr "error de compilación REGEX '%s'. ERR=%s\n"
 
-#: src/stored/parse_bsr.c:495
+#: src/stored/parse_bsr.c:494
 msgid "JobType not yet implemented\n"
 msgstr "JobType aún no se han implementado\n"
 
-#: src/stored/parse_bsr.c:503
+#: src/stored/parse_bsr.c:502
 msgid "JobLevel not yet implemented\n"
 msgstr "JobLevel aún no se han implementado\n"
 
-#: src/stored/parse_bsr.c:720
+#: src/stored/parse_bsr.c:719
 #, c-format
 msgid "Slot %d in bsr at inappropriate place.\n"
 msgstr "Ranura %d en BSR en el lugar inadecuado.\n"
 
-#: src/stored/parse_bsr.c:744
+#: src/stored/parse_bsr.c:743
 #, c-format
 msgid "VolFile     : %u-%u\n"
 msgstr "VolFile : %u-%u\n"
 
-#: src/stored/parse_bsr.c:752
+#: src/stored/parse_bsr.c:751
 #, c-format
 msgid "VolBlock    : %u-%u\n"
 msgstr "VolBlock : %u-%u\n"
 
-#: src/stored/parse_bsr.c:760
+#: src/stored/parse_bsr.c:759
 #, c-format
 msgid "VolAddr    : %llu-%llu\n"
 msgstr "VolAddr : %llu-%llu\n"
 
-#: src/stored/parse_bsr.c:769
+#: src/stored/parse_bsr.c:768
 #, c-format
 msgid "FileIndex   : %u\n"
 msgstr "FileIndex : %u\n"
 
-#: src/stored/parse_bsr.c:771
+#: src/stored/parse_bsr.c:770
 #, c-format
 msgid "FileIndex   : %u-%u\n"
 msgstr "FileIndex : %u-%u\n"
 
-#: src/stored/parse_bsr.c:781
+#: src/stored/parse_bsr.c:780
 #, c-format
 msgid "JobId       : %u\n"
 msgstr "JobId : %u\n"
 
-#: src/stored/parse_bsr.c:783
+#: src/stored/parse_bsr.c:782
 #, c-format
 msgid "JobId       : %u-%u\n"
 msgstr "JobId : %u-%u\n"
 
-#: src/stored/parse_bsr.c:793
+#: src/stored/parse_bsr.c:792
 #, c-format
 msgid "SessId      : %u\n"
 msgstr "SessId : %u\n"
 
-#: src/stored/parse_bsr.c:795
+#: src/stored/parse_bsr.c:794
 #, c-format
 msgid "SessId      : %u-%u\n"
 msgstr "SessId : %u-%u\n"
 
-#: src/stored/parse_bsr.c:804
+#: src/stored/parse_bsr.c:803
 #, c-format
 msgid "VolumeName  : %s\n"
 msgstr "VolumeName : %s\n"
 
-#: src/stored/parse_bsr.c:805
+#: src/stored/parse_bsr.c:804
 #, c-format
 msgid "  MediaType : %s\n"
 msgstr "MediaType : %s\n"
 
-#: src/stored/parse_bsr.c:806
+#: src/stored/parse_bsr.c:805
 #, c-format
 msgid "  Device    : %s\n"
 msgstr "Dispositivo : %s\n"
 
-#: src/stored/parse_bsr.c:807
+#: src/stored/parse_bsr.c:806
 #, c-format
 msgid "  Slot      : %d\n"
 msgstr "Ranura : %d\n"
 
-#: src/stored/parse_bsr.c:816
+#: src/stored/parse_bsr.c:815
 #, c-format
 msgid "Client      : %s\n"
 msgstr "Cliente : %s\n"
 
-#: src/stored/parse_bsr.c:824
+#: src/stored/parse_bsr.c:823
 #, c-format
 msgid "Job          : %s\n"
 msgstr "Job : %s\n"
 
-#: src/stored/parse_bsr.c:832
+#: src/stored/parse_bsr.c:831
 #, c-format
 msgid "SessTime    : %u\n"
 msgstr "SessTime : %u\n"
 
-#: src/stored/parse_bsr.c:843
+#: src/stored/parse_bsr.c:842
 msgid "BSR is NULL\n"
 msgstr "BSR is NULL\n"
 
-#: src/stored/parse_bsr.c:847
+#: src/stored/parse_bsr.c:846
 #, c-format
 msgid "Next        : 0x%x\n"
 msgstr "Siguiente : 0x%x\n"
 
-#: src/stored/parse_bsr.c:848
+#: src/stored/parse_bsr.c:847
 #, c-format
 msgid "Root bsr    : 0x%x\n"
 msgstr "Root bsr : 0x%x\n"
 
-#: src/stored/parse_bsr.c:860
+#: src/stored/parse_bsr.c:859
 #, c-format
 msgid "count       : %u\n"
 msgstr "contado : %u\n"
 
-#: src/stored/parse_bsr.c:861
+#: src/stored/parse_bsr.c:860
 #, c-format
 msgid "found       : %u\n"
 msgstr "encontrado : %u\n"
 
-#: src/stored/parse_bsr.c:864
+#: src/stored/parse_bsr.c:863
 #, c-format
 msgid "done        : %s\n"
 msgstr "realizado : %s\n"
 
-#: src/stored/parse_bsr.c:865
+#: src/stored/parse_bsr.c:864
 #, c-format
 msgid "positioning : %d\n"
 msgstr "posicionamiento : %d\n"
 
-#: src/stored/parse_bsr.c:866
+#: src/stored/parse_bsr.c:865
 #, c-format
 msgid "fast_reject : %d\n"
 msgstr "fast_reject : %d\n"
@@ -7706,66 +7766,64 @@ msgstr "DEVICE es NULL!!!\n"
 msgid "Unable to set network buffer size.\n"
 msgstr "No se puede establecer el tamaño del búfer de red.\n"
 
-#: src/stored/append.c:96 src/stored/append.c:105 src/stored/append.c:117
-#: src/stored/append.c:297 src/stored/append.c:298 src/stored/askdir.c:339
-#: src/stored/askdir.c:340
+#: src/stored/append.c:95 src/stored/append.c:104 src/stored/append.c:116
+#: src/stored/askdir.c:340 src/stored/askdir.c:341
 msgid "NULL Volume name. This shouldn't happen!!!\n"
 msgstr "Nombre de volumen VACÍO. Esto no debería suceder!\n"
 
-#: src/stored/append.c:111 src/stored/btape.c:2233
+#: src/stored/append.c:110 src/stored/btape.c:2235
 #, c-format
 msgid "Write session label failed. ERR=%s\n"
 msgstr "Fallo al escribir la etiqueta de sesión. ERR=%s\n"
 
-#: src/stored/append.c:123
+#: src/stored/append.c:122
 #, c-format
 msgid "Network send error to FD. ERR=%s\n"
 msgstr "Error de red al enviar a FD. ERR=%s\n"
 
-#: src/stored/append.c:160
+#: src/stored/append.c:159
 #, c-format
 msgid "Error reading data header from FD. ERR=%s\n"
 msgstr "Error al leer datos de cabecera de FD. ERR=%s\n"
 
-#: src/stored/append.c:168
+#: src/stored/append.c:167
 #, c-format
 msgid "Malformed data header from FD: %s\n"
 msgstr "Datos de cabecera mal formados desde FD: %s\n"
 
-#: src/stored/append.c:188
+#: src/stored/append.c:187
 #, fuzzy, c-format
 msgid "FI=%d from FD not positive or sequential=%d\n"
 msgstr "Archivo de índice de FD no es positivo o secuencial\n"
 
-#: src/stored/append.c:244
+#: src/stored/append.c:235
 #, c-format
 msgid "Network error reading from FD. ERR=%s\n"
 msgstr "Error al leer la red desde FD. ERR=%s\n"
 
-#: src/stored/append.c:274
-#, c-format
-msgid ""
-"Job write elapsed time = %02d:%02d:%02d, Transfer rate = %s Bytes/second\n"
-msgstr ""
-"Tiempo transcurrido de escritura del Job = %02d:%02d:%02d, Tasa de "
-"transferencia = %s Bytes/segundo\n"
-
-#: src/stored/append.c:289 src/stored/btape.c:2352
+#: src/stored/append.c:265 src/stored/btape.c:2354
 #, c-format
 msgid "Error writing end session label. ERR=%s\n"
 msgstr "Error escribiendo etiqueta de fin de sesión. ERR=%s\n"
 
-#: src/stored/append.c:305 src/stored/mac.c:126 src/stored/mac.c:247
+#: src/stored/append.c:277 src/stored/mac.c:126 src/stored/mac.c:261
 #: src/stored/spool.c:300
 #, c-format
 msgid "Fatal append error on device %s: ERR=%s\n"
 msgstr "Error Fatal añadiendo en el dispositivo %s: ERR=%s\n"
 
-#: src/stored/append.c:307 src/stored/mac.c:128
+#: src/stored/append.c:279 src/stored/mac.c:128
 msgid "Set ok=FALSE after write_block_to_device.\n"
 msgstr "Set ok=FALSE después de write_block_to_device.\n"
 
-#: src/stored/append.c:360
+#: src/stored/append.c:308 src/stored/mac.c:151
+#, fuzzy, c-format
+msgid "Elapsed time=%02d:%02d:%02d, Transfer rate=%s Bytes/second\n"
+msgstr ""
+"Tiempo transcurrido de escritura del Job = %02d:%02d:%02d, Tasa de "
+"transferencia = %s Bytes/segundo\n"
+
+#: src/stored/append.c:345
 #, c-format
 msgid "Error updating file attributes. ERR=%s\n"
 msgstr "Error al actualizar los atributos de archivo. ERR=%s\n"
@@ -7775,11 +7833,6 @@ msgstr "Error al actualizar los atributos de archivo. ERR=%s\n"
 msgid "Unable to initialize volume list lock. ERR=%s\n"
 msgstr "No se puede inicializar la lista de bloqueo de volumen. ERR=%s\n"
 
-#: src/stored/vol_mgr.c:491
-#, c-format
-msgid "Device switch. New device %s chosen.\n"
-msgstr "Cambiar Dispositivo. Seleccione nuevo dispositivo %s.\n"
-
 #: src/stored/label.c:93
 #, c-format
 msgid "Couldn't rewind device %s: ERR=%s\n"
@@ -7829,73 +7882,73 @@ msgstr ""
 msgid "Volume on %s has bad Bacula label type: %x\n"
 msgstr "Volumen en %s tiene una malo tipo de etiqueta Bacula: %x\n"
 
-#: src/stored/label.c:236 src/stored/label.c:399 src/stored/mount.c:460
+#: src/stored/label.c:236 src/stored/label.c:397 src/stored/mount.c:463
 #, c-format
 msgid "Could not reserve volume %s on %s\n"
 msgstr "No es posible reservar volumen %s en %s\n"
 
-#: src/stored/label.c:276
+#: src/stored/label.c:277
 #, c-format
 msgid "Cannot write Volume label to block for device %s\n"
 msgstr ""
 "No se puede escribir la etiqueta de volumen para bloquear el dispositivo %s\n"
 
-#: src/stored/label.c:328 src/stored/label.c:429 src/stored/mount.c:216
+#: src/stored/label.c:328 src/stored/label.c:426 src/stored/mount.c:218
 #, c-format
 msgid "Open device %s Volume \"%s\" failed: ERR=%s\n"
 msgstr "Fallo al abrir dispositivo %s Volumen \"%s\": ERR=%s\n"
 
-#: src/stored/label.c:454
+#: src/stored/label.c:451
 #, c-format
 msgid "Rewind error on device %s: ERR=%s\n"
 msgstr "Error de rebobinado en el dispositivo %s: ERR=%s\n"
 
-#: src/stored/label.c:462
+#: src/stored/label.c:458
 #, c-format
 msgid "Truncate error on device %s: ERR=%s\n"
 msgstr "Error al truncar en el dispositivo %s :ERR=%s\n"
 
-#: src/stored/label.c:468
+#: src/stored/label.c:464
 #, c-format
 msgid "Failed to re-open DVD after truncate on device %s: ERR=%s\n"
 msgstr ""
 "No se ha podido re-abrir el DVD después de truncar el dispositivo %s: ERR="
 "%s\n"
 
-#: src/stored/label.c:491
+#: src/stored/label.c:487
 #, c-format
 msgid "Unable to write device %s: ERR=%s\n"
 msgstr "No es posible escribir el dispositivo %s: ERR=%s\n"
 
-#: src/stored/label.c:522
+#: src/stored/label.c:518
 #, c-format
 msgid "Recycled volume \"%s\" on device %s, all previous data lost.\n"
 msgstr ""
 "Volumen \"%s\" reciclado en el dispositivo %s, todos los datos anteriores "
 "perdidos.\n"
 
-#: src/stored/label.c:525
+#: src/stored/label.c:521
 #, c-format
 msgid "Wrote label to prelabeled Volume \"%s\" on device %s\n"
 msgstr ""
 "Escribió etiqueta de volumen  \"%s\" pre-etiquetada en el dispositivo %s\n"
 
-#: src/stored/label.c:726
+#: src/stored/label.c:721
 #, c-format
 msgid "Bad Volume session label = %d\n"
 msgstr "Mala etiqueta de Volumen de sesión = %d\n"
 
-#: src/stored/label.c:781
+#: src/stored/label.c:776
 #, c-format
 msgid "Expecting Volume Label, got FI=%s Stream=%s len=%d\n"
 msgstr "Esperando Etiqueta de Volumen, obtuvo FI=%s Stream=%s len=%d\n"
 
-#: src/stored/label.c:908
+#: src/stored/label.c:903
 #, c-format
 msgid "Unknown %d"
 msgstr "Desconocido %d"
 
-#: src/stored/label.c:912
+#: src/stored/label.c:907
 #, c-format
 msgid ""
 "\n"
@@ -7924,17 +7977,17 @@ msgstr ""
 "PoolType : %s\n"
 "HostName : %s\n"
 
-#: src/stored/label.c:934
+#: src/stored/label.c:929
 #, c-format
 msgid "Date label written: %s\n"
 msgstr "Fecha de etiqueta escrito: %s\n"
 
-#: src/stored/label.c:940
+#: src/stored/label.c:935
 #, c-format
 msgid "Date label written: %04d-%02d-%02d at %02d:%02d\n"
 msgstr "Fecha de etiqueta escrito: %04d-%02d-%02d at %02d:%02d\n"
 
-#: src/stored/label.c:960
+#: src/stored/label.c:955
 #, c-format
 msgid ""
 "\n"
@@ -7955,7 +8008,7 @@ msgstr ""
 "Nombre del Job : %s\n"
 "Nombre del Cliente : %s\n"
 
-#: src/stored/label.c:973
+#: src/stored/label.c:968
 #, c-format
 msgid ""
 "Job (unique name) : %s\n"
@@ -7968,7 +8021,7 @@ msgstr ""
 "Tipo de Job : %c\n"
 "JobLevel : %c\n"
 
-#: src/stored/label.c:982
+#: src/stored/label.c:977
 #, c-format
 msgid ""
 "JobFiles          : %s\n"
@@ -7989,53 +8042,53 @@ msgstr ""
 "JobErrors : %s\n"
 "JobStatus : %c\n"
 
-#: src/stored/label.c:1003
+#: src/stored/label.c:998
 #, c-format
 msgid "Date written      : %s\n"
 msgstr "Fecha escrito: %s\n"
 
-#: src/stored/label.c:1008
+#: src/stored/label.c:1003
 #, c-format
 msgid "Date written      : %04d-%02d-%02d at %02d:%02d\n"
 msgstr "Fecha escrito: %04d-%02d-%02d at %02d:%02d\n"
 
-#: src/stored/label.c:1027
+#: src/stored/label.c:1022
 msgid "Fresh Volume"
 msgstr "Volumen fresco"
 
-#: src/stored/label.c:1030
+#: src/stored/label.c:1025
 msgid "Volume"
 msgstr "Volumen"
 
-#: src/stored/label.c:1039 src/stored/read_record.c:428
+#: src/stored/label.c:1034 src/stored/read_record.c:428
 msgid "End of Media"
 msgstr "Fin de la Media"
 
-#: src/stored/label.c:1042
+#: src/stored/label.c:1037
 msgid "End of Tape"
 msgstr "Fin de la Cinta"
 
-#: src/stored/label.c:1062 src/stored/label.c:1070 src/stored/label.c:1103
+#: src/stored/label.c:1057 src/stored/label.c:1065 src/stored/label.c:1098
 #, c-format
 msgid "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d DataLen=%d\n"
 msgstr ""
 "%s Registro: Archivo:blk=%u:%u SessId=%d SessTime=%d JobId=%d DataLen=%d\n"
 
-#: src/stored/label.c:1067
+#: src/stored/label.c:1062
 msgid "End of physical tape.\n"
 msgstr "Fin de la cinta física.\n"
 
-#: src/stored/label.c:1082 src/stored/label.c:1091
+#: src/stored/label.c:1077 src/stored/label.c:1086
 #, c-format
 msgid "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d\n"
 msgstr "Registro %s: Archivo:blk=%u:%u SessId=%d SessTime=%d JobId=%d\n"
 
-#: src/stored/label.c:1084
+#: src/stored/label.c:1079
 #, c-format
 msgid "   Job=%s Date=%s Level=%c Type=%c\n"
 msgstr "Job=%s Fecha=%s Nivel=%c Tipo=%c\n"
 
-#: src/stored/label.c:1093
+#: src/stored/label.c:1088
 #, c-format
 msgid "   Date=%s Level=%c Type=%c Files=%s Bytes=%s Errors=%d Status=%c\n"
 msgstr "Fecha=%s Nivel=%c Tipo=%c Archivos=%s Bytes=%s Errores=%d Estado=%c\n"
@@ -8044,15 +8097,13 @@ msgstr "Fecha=%s Nivel=%c Tipo=%c Archivos=%s Bytes=%s Errores=%d Estado=%c\n"
 msgid "Used Volume status:\n"
 msgstr "Estado de Volumen Usados:\n"
 
-#: src/stored/status.c:107 src/stored/status.c:109
+#: src/stored/status.c:117
 msgid ""
-"====\n"
 "\n"
+"SD Resources:\n"
 msgstr ""
-"====\n"
-"\n"
 
-#: src/stored/status.c:128
+#: src/stored/status.c:153
 msgid ""
 "\n"
 "Device status:\n"
@@ -8060,15 +8111,16 @@ msgstr ""
 "\n"
 "Estado del dispositivo:\n"
 
-#: src/stored/status.c:132
+#: src/stored/status.c:157
 #, c-format
 msgid "Autochanger \"%s\" with devices:\n"
 msgstr "Auto-cambiador \"%s\" con los dispositivos:\n"
 
-#: src/stored/status.c:150
-#, c-format
+#: src/stored/status.c:177
+#, fuzzy, c-format
 msgid ""
-"Device %s is mounted with:\n"
+"\n"
+"Device %s is %s:\n"
 "    Volume:      %s\n"
 "    Pool:        %s\n"
 "    Media type:  %s\n"
@@ -8078,42 +8130,62 @@ msgstr ""
 " Pool: %s\n"
 " Tipo de Media: %s\n"
 
-#: src/stored/status.c:160
-#, c-format
-msgid "Device %s open but no Bacula volume is currently mounted.\n"
+#: src/stored/status.c:182
+#, fuzzy
+msgid "waiting for"
+msgstr "Esperando por montaje"
+
+#: src/stored/status.c:182
+msgid "mounted with"
+msgstr ""
+
+#: src/stored/status.c:184
+#, fuzzy
+msgid "*unknown*"
+msgstr "desconocido"
+
+#: src/stored/status.c:188
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Device %s open but no Bacula volume is currently mounted.\n"
 msgstr "Dispositivo %s abierto, pero volumen actual montado no es Bacula.\n"
 
-#: src/stored/status.c:171
+#: src/stored/status.c:199
 #, c-format
 msgid "    Total Bytes=%s Blocks=%s Bytes/block=%s\n"
 msgstr "Total de Bytes=%s Bloques=%s Bytes/bloques=%s\n"
 
-#: src/stored/status.c:186
+#: src/stored/status.c:214
 #, c-format
 msgid "    Total Bytes Read=%s Blocks Read=%s Bytes/block=%s\n"
 msgstr "Total de Bytes Leídos=%s Bloques Leídos=%s Bytes/bloque=%s\n"
 
-#: src/stored/status.c:192
+#: src/stored/status.c:220
 #, c-format
 msgid "    Positioned at File=%s Block=%s\n"
 msgstr "Situado en el archivo=%s Bloque=%s\n"
 
-#: src/stored/status.c:199
-#, c-format
-msgid "Device %s is not open.\n"
+#: src/stored/status.c:227
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Device %s is not open.\n"
 msgstr "Dispositivo %s no está abierto.\n"
 
-#: src/stored/status.c:203
-#, c-format
-msgid "Device \"%s\" is not open or does not exist.\n"
+#: src/stored/status.c:231
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Device \"%s\" is not open or does not exist.\n"
 msgstr "Dispositivo \"%s\" no está abierto o no existe.\n"
 
-#: src/stored/status.c:225
+#: src/stored/status.c:255
 #, fuzzy, c-format
 msgid "Daemon started %s. Jobs: run=%d, running=%d.\n"
 msgstr "Demonio iniciado %s, %d Job ejecutando desde el inicio.\n"
 
-#: src/stored/status.c:248
+#: src/stored/status.c:293
 msgid ""
 "No DEVICE structure.\n"
 "\n"
@@ -8121,17 +8193,17 @@ msgstr ""
 "Ninguna estructura del DISPOSITIVO.\n"
 "\n"
 
-#: src/stored/status.c:254
+#: src/stored/status.c:299
 msgid "    Device is BLOCKED. User unmounted.\n"
 msgstr "Dispositivo está BLOQUEADO. Usuario desmontado.\n"
 
-#: src/stored/status.c:258
+#: src/stored/status.c:303
 msgid "    Device is BLOCKED. User unmounted during wait for media/mount.\n"
 msgstr ""
 "    Dispositivo está BLOQUEADO. Usuario desmontado durante espera por media/"
 "mount.\n"
 
-#: src/stored/status.c:270
+#: src/stored/status.c:313
 #, c-format
 msgid ""
 "    Device is BLOCKED waiting for mount of volume \"%s\",\n"
@@ -8142,7 +8214,7 @@ msgstr ""
 " Pool: %s\n"
 " Tipo de Media: %s\n"
 
-#: src/stored/status.c:279
+#: src/stored/status.c:322
 #, c-format
 msgid ""
 "    Device is BLOCKED waiting to create a volume for:\n"
@@ -8153,77 +8225,77 @@ msgstr ""
 " Pool: %s\n"
 " Tipo de Media: %s\n"
 
-#: src/stored/status.c:291
+#: src/stored/status.c:333
 msgid "    Device is BLOCKED waiting for media.\n"
 msgstr "Dispositivo está bloqueado esperando por medios.\n"
 
-#: src/stored/status.c:297
+#: src/stored/status.c:339
 msgid "    Device is being initialized.\n"
 msgstr "Dispositivo se está inicializando.\n"
 
-#: src/stored/status.c:301
+#: src/stored/status.c:343
 msgid "    Device is blocked labeling a Volume.\n"
 msgstr "El dispositivo está bloqueado etiquetando un volumen.\n"
 
-#: src/stored/status.c:310
-#, c-format
-msgid "    Slot %d is loaded in drive %d.\n"
+#: src/stored/status.c:352
+#, fuzzy, c-format
+msgid "    Slot %d %s loaded in drive %d.\n"
 msgstr "Ranura %d esta cargado en la unidad %d.\n"
 
-#: src/stored/status.c:314
+#: src/stored/status.c:356
 #, c-format
 msgid "    Drive %d is not loaded.\n"
 msgstr "Unidad %d no está cargada.\n"
 
-#: src/stored/status.c:317
-#, c-format
-msgid "    Drive %d status unknown.\n"
-msgstr "Unidad %d estado desconocido.\n"
-
-#: src/stored/status.c:331 src/stored/btape.c:688
+#: src/stored/status.c:371 src/stored/btape.c:688
 #, c-format
 msgid "Configured device capabilities:\n"
 msgstr "Capacidades del dispositivo configuradas:\n"
 
-#: src/stored/status.c:349
+#: src/stored/status.c:389
 msgid "Device state:\n"
 msgstr "Estado del dispositivo:\n"
 
-#: src/stored/status.c:367
-#, c-format
-msgid ""
-"num_writers=%d reserved=%d block=%d\n"
-"\n"
+#: src/stored/status.c:405
+#, fuzzy, c-format
+msgid "  num_writers=%d reserves=%d block=%d\n"
 msgstr ""
 "num_writers=%d reservado=%d bloque=%d\n"
 "\n"
 
-#: src/stored/status.c:371 src/stored/btape.c:720
+#: src/stored/status.c:409
+#, fuzzy
+msgid "Attached Jobs: "
+msgstr ""
+"\n"
+"Scheduled Jobs:\n"
+
+#: src/stored/status.c:427 src/stored/btape.c:720
 #, c-format
 msgid "Device parameters:\n"
 msgstr "Parámetros del Dispositivo:\n"
 
-#: src/stored/status.c:374
-#, c-format
-msgid "Archive name: %s Device name: %s\n"
+#: src/stored/status.c:429
+#, fuzzy, c-format
+msgid "  Archive name: %s Device name: %s\n"
 msgstr "Nombre del archivo: %s Nombre del dispositivo: %s\n"
 
-#: src/stored/status.c:378
-#, c-format
-msgid "File=%u block=%u\n"
+#: src/stored/status.c:432
+#, fuzzy, c-format
+msgid "  File=%u block=%u\n"
 msgstr "Archivo=%u bloque=%u\n"
 
-#: src/stored/status.c:381
-#, c-format
-msgid "Min block=%u Max block=%u\n"
+#: src/stored/status.c:434
+#, fuzzy, c-format
+msgid "  Min block=%u Max block=%u\n"
 msgstr "Bloque Min=%u Bloque Max=%u\n"
 
-#: src/stored/status.c:401
+#: src/stored/status.c:455
 #, c-format
 msgid "%s Job %s waiting for Client connection.\n"
 msgstr "%s Job %s esperando por conexión de cliente.\n"
 
-#: src/stored/status.c:417
+#: src/stored/status.c:471
 #, c-format
 msgid ""
 "Reading: %s %s job %s JobId=%d Volume=\"%s\"\n"
@@ -8232,7 +8304,7 @@ msgstr ""
 "Leyendo: %s %s trabajo %s JobId=%d Volumen=\"%s\"\n"
 " pool=\"%s\" dispositivo=%s\n"
 
-#: src/stored/status.c:430
+#: src/stored/status.c:484
 #, c-format
 msgid ""
 "Writing: %s %s job %s JobId=%d Volume=\"%s\"\n"
@@ -8241,26 +8313,26 @@ msgstr ""
 "Escribiendo: %s %s trabajo %s JobId=%d Volumen=\"%s\"\n"
 " pool=\"%s\" dispositivo=%s\n"
 
-#: src/stored/status.c:441
+#: src/stored/status.c:495
 #, c-format
 msgid "    spooling=%d despooling=%d despool_wait=%d\n"
 msgstr "encolando=%d desencolando=%d despool_wait=%d\n"
 
-#: src/stored/status.c:450
-#, c-format
-msgid "    Files=%s Bytes=%s Bytes/sec=%s\n"
-msgstr "Archivos=%s Bytes=%s Bytes/sec=%s\n"
+#: src/stored/status.c:511
+#, fuzzy, c-format
+msgid "    Files=%s Bytes=%s AveBytes/sec=%s LastBytes/sec=%s\n"
+msgstr "Archivos=%s Bytes=%s Bytes/sec=%s Errores=%d\n"
 
-#: src/stored/status.c:458
+#: src/stored/status.c:523
 #, c-format
 msgid "    FDReadSeqNo=%s in_msg=%u out_msg=%d fd=%d\n"
 msgstr " FDReadSeqNo=%s in_msg=%u out_msg=%d fd=%d\n"
 
-#: src/stored/status.c:464
+#: src/stored/status.c:529
 msgid "    FDSocket closed\n"
 msgstr "FDSocket cerrado\n"
 
-#: src/stored/status.c:485
+#: src/stored/status.c:550
 msgid ""
 "\n"
 "Jobs waiting to reserve a drive:\n"
@@ -8268,65 +8340,61 @@ msgstr ""
 "\n"
 "Jobs esperando para reservar una unidad:\n"
 
-#: src/stored/status.c:516
+#: src/stored/status.c:581
 msgid "===================================================================\n"
 msgstr "===================================================================\n"
 
-#: src/stored/status.c:598 src/lib/util.c:423 src/filed/status.c:517
+#: src/stored/status.c:663 src/lib/util.c:423 src/filed/status.c:517
 msgid "Base"
 msgstr "Base"
 
-#: src/stored/status.c:615 src/filed/status.c:534
+#: src/stored/status.c:680 src/filed/status.c:534
 msgid "Init Catalog"
 msgstr "Catálogo de inicio"
 
-#: src/stored/status.c:618 src/filed/status.c:537
+#: src/stored/status.c:683 src/filed/status.c:537
 msgid "Volume to Catalog"
 msgstr "Volumen para Catalogo"
 
-#: src/stored/status.c:621 src/filed/status.c:540
+#: src/stored/status.c:686 src/filed/status.c:540
 msgid "Disk to Catalog"
 msgstr "Disco para Catalogo"
 
-#: src/stored/status.c:624 src/filed/status.c:543
+#: src/stored/status.c:689 src/filed/status.c:543
 msgid "Data"
 msgstr "Datos"
 
-#: src/stored/status.c:630 src/lib/util.c:459 src/filed/status.c:549
+#: src/stored/status.c:695 src/lib/util.c:459 src/filed/status.c:549
 msgid "Unknown Job Level"
 msgstr "Nivel del Job desconocido"
 
-#: src/stored/status.c:698 src/stored/status.c:744 src/filed/status.c:463
-#: src/filed/status.c:496
-#, c-format
-msgid "Bad .status command: %s\n"
+#: src/stored/status.c:763
+#, fuzzy, c-format
+msgid "3900 No arg in .status command: %s\n"
 msgstr "Comando .status malo: %s\n"
 
-#: src/stored/status.c:699
-msgid "3900 Bad .status command, missing argument.\n"
-msgstr "3900 Malo comando .status, falta argumentos.\n"
-
-#: src/stored/status.c:745
-msgid "3900 Bad .status command, wrong argument.\n"
-msgstr "3900 Malo comando .status, argumentos incorrectos.\n"
+#: src/stored/status.c:811
+#, fuzzy, c-format
+msgid "3900 Unknown arg in .status command: %s\n"
+msgstr "Comando .status malo: %s\n"
 
-#: src/stored/status.c:760
+#: src/stored/status.c:826
 msgid "Bacula Storage: Idle"
 msgstr "Bacula Storage: Libre"
 
-#: src/stored/status.c:771
+#: src/stored/status.c:837
 msgid "Bacula Storage: Running"
 msgstr "Bacula Storage: Ejecutando"
 
-#: src/stored/status.c:785
+#: src/stored/status.c:851
 msgid "Bacula Storage: Last Job Canceled"
 msgstr "Bacula Storage: Último Job Cancelado"
 
-#: src/stored/status.c:789
+#: src/stored/status.c:855
 msgid "Bacula Storage: Last Job Failed"
 msgstr "Bacula Storage: Último Job Fallido"
 
-#: src/stored/status.c:793
+#: src/stored/status.c:859
 msgid "Bacula Storage: Last Job had Warnings"
 msgstr "Bacula Storage: Último Job con Advertencias"
 
@@ -8411,7 +8479,7 @@ msgstr ""
 " -? imprime esta mensaje\n"
 "\n"
 
-#: src/stored/bextract.c:196 src/stored/bcopy.c:163 src/stored/bscan.c:248
+#: src/stored/bextract.c:196 src/stored/bcopy.c:161 src/stored/bscan.c:248
 #: src/tools/bvfs_test.c:201 src/tools/bbatch.c:190 src/tools/ing_test.c:185
 #: src/tools/cats_test.c:321
 msgid "Wrong number of arguments: \n"
@@ -8445,7 +8513,7 @@ msgid "%u files restored.\n"
 msgstr "%u archivos restaurados.\n"
 
 #: src/stored/bextract.c:284 src/stored/bextract.c:290
-#: src/filed/restore.c:1474
+#: src/filed/restore.c:1480
 #, c-format
 msgid "Write error on %s: %s\n"
 msgstr "Error de escritura en %s: %s\n"
@@ -8454,7 +8522,7 @@ msgstr "Error de escritura en %s: %s\n"
 msgid "Logic error output file should be open but is not.\n"
 msgstr "Error lógico, archivo de salida debería estar abierto, pero no esta.\n"
 
-#: src/stored/bextract.c:335 src/filed/restore.c:566
+#: src/stored/bextract.c:335 src/filed/restore.c:569
 #, c-format
 msgid "%s stream not supported on this Client.\n"
 msgstr "flujo %s no suportado en este Cliente.\n"
@@ -8470,7 +8538,7 @@ msgid "Seek error on %s: %s\n"
 msgstr "Buscar error en %s: %s\n"
 
 #: src/stored/bextract.c:429 src/stored/bextract.c:494
-#: src/filed/restore.c:1329
+#: src/filed/restore.c:1335
 #, c-format
 msgid "Seek to %s error on %s: ERR=%s\n"
 msgstr "Tratar de %s error en %s: ERR=%s\n"
@@ -8480,16 +8548,16 @@ msgstr "Tratar de %s error en %s: ERR=%s\n"
 msgid "Uncompression error. ERR=%d\n"
 msgstr "Error de descompresión. ERR=%d\n"
 
-#: src/stored/bextract.c:462 src/filed/restore.c:1444
+#: src/stored/bextract.c:462 src/filed/restore.c:1450
 msgid "GZIP data stream found, but GZIP not configured!\n"
 msgstr "Flujo de datos GZIP encontrado, pero GZIP no está configurado!\n"
 
-#: src/stored/bextract.c:517 src/filed/restore.c:1370
+#: src/stored/bextract.c:517 src/filed/restore.c:1376
 #, c-format
 msgid "Compressed header version error. version=0x%x\n"
 msgstr ""
 
-#: src/stored/bextract.c:522 src/filed/restore.c:1375
+#: src/stored/bextract.c:522 src/filed/restore.c:1381
 #, c-format
 msgid "Compressed header size error. comp_len=%d, msglen=%d\n"
 msgstr ""
@@ -8499,7 +8567,7 @@ msgstr ""
 msgid "LZO uncompression error. ERR=%d\n"
 msgstr "Error de descompresión. ERR=%d\n"
 
-#: src/stored/bextract.c:556 src/filed/restore.c:1408
+#: src/stored/bextract.c:556 src/filed/restore.c:1414
 #, c-format
 msgid "Compression algorithm 0x%x found, but not supported!\n"
 msgstr ""
@@ -8508,12 +8576,12 @@ msgstr ""
 msgid "Got Program Name or Data Stream. Ignored.\n"
 msgstr "Obtener Nombre de Programa o Secuencia de Datos. Ignorado.\n"
 
-#: src/stored/bextract.c:592 src/filed/restore.c:325 src/filed/restore.c:1027
+#: src/stored/bextract.c:592 src/filed/restore.c:328 src/filed/restore.c:1033
 #, c-format
 msgid "Unknown stream=%d ignored. This shouldn't happen!\n"
 msgstr "Flujo desconocido=%d ignorado. Esto no debería suceder!\n"
 
-#: src/stored/bcopy.c:76
+#: src/stored/bcopy.c:74
 #, c-format
 msgid ""
 "\n"
@@ -8549,48 +8617,48 @@ msgstr ""
 " -? imprime esta mensaje\n"
 "\n"
 
-#: src/stored/bcopy.c:204 src/stored/device.c:298 src/stored/btape.c:473
+#: src/stored/bcopy.c:202 src/stored/device.c:298 src/stored/btape.c:473
 #, c-format
 msgid "dev open failed: %s\n"
 msgstr "Fallo al abrir dev: %s\n"
 
-#: src/stored/bcopy.c:219
+#: src/stored/bcopy.c:217
 msgid "Write of last block failed.\n"
 msgstr "Fallo al escribir ultimo bloque.\n"
 
-#: src/stored/bcopy.c:223
+#: src/stored/bcopy.c:221
 #, c-format
 msgid "%u Jobs copied. %u records copied.\n"
 msgstr "%u Jobs copiado. %u registros copiados.\n"
 
-#: src/stored/bcopy.c:240 src/stored/bscan.c:428
+#: src/stored/bcopy.c:238 src/stored/bscan.c:428
 #, c-format
 msgid "Record: SessId=%u SessTim=%u FileIndex=%d Stream=%d len=%u\n"
 msgstr "Registro: SessId=%u SessTim=%u FileIndex=%d Stream=%d len=%u\n"
 
-#: src/stored/bcopy.c:256
+#: src/stored/bcopy.c:254
 msgid "Volume is prelabeled. This volume cannot be copied.\n"
 msgstr "Volumen esta pre-etiquetado. Este volumen no puede ser copiado.\n"
 
-#: src/stored/bcopy.c:259
+#: src/stored/bcopy.c:257
 msgid "Volume label not copied.\n"
 msgstr "Etiqueta Volumen no copiada.\n"
 
-#: src/stored/bcopy.c:265
+#: src/stored/bcopy.c:263
 msgid "Copy skipped. Record does not match BSR filter.\n"
 msgstr "Copia omitida. Registro no coincide con filtro de BSR.\n"
 
-#: src/stored/bcopy.c:282 src/stored/bcopy.c:290 src/stored/bcopy.c:318
-#: src/stored/btape.c:2754
+#: src/stored/bcopy.c:280 src/stored/bcopy.c:288 src/stored/bcopy.c:316
+#: src/stored/btape.c:2756
 #, c-format
 msgid "Cannot fixup device error. %s\n"
 msgstr "No se puede corregir error de dispositivo. %s\n"
 
-#: src/stored/bcopy.c:296
+#: src/stored/bcopy.c:294
 msgid "EOM label not copied.\n"
 msgstr "Etiqueta EOM no copiada.\n"
 
-#: src/stored/bcopy.c:299
+#: src/stored/bcopy.c:297
 msgid "EOT label not copied.\n"
 msgstr "Etiqueta EOT no copiada.\n"
 
@@ -8629,12 +8697,7 @@ msgid "Next Volume part already exists on DVD. Cannot continue: %s\n"
 msgstr ""
 "Siguiente parte del volumen ya existe en DVD. No se puede continuar: %s\n"
 
-#: src/stored/dvd.c:377
-#, c-format
-msgid "open_next_part can't unlink existing part %s, ERR=%s\n"
-msgstr "open_next_part no se puede desvincular parte %s existente, ERR=%s\n"
-
-#: src/stored/dvd.c:583
+#: src/stored/dvd.c:563
 #, c-format
 msgid ""
 "Error writing. Current part less than total number of parts (%d/%d, device="
@@ -8643,7 +8706,7 @@ msgstr ""
 "Error al escribir. Parte actual menor que número total de partes (%d/%d, "
 "dispositivo=%s)\n"
 
-#: src/stored/dvd.c:590
+#: src/stored/dvd.c:570
 #, c-format
 msgid "Unable to write last on %s: ERR=%s\n"
 msgstr "No se puede escribir última en %s: ERR=%s\n"
@@ -8727,26 +8790,22 @@ msgstr "Puerta de la cinta está abierta\n"
 msgid "Unexpected Tape is Off-line\n"
 msgstr "Inesperado Cinta esta off-line\n"
 
-#: src/stored/acquire.c:70
+#: src/stored/acquire.c:74
 #, c-format
 msgid "Acquire read: num_writers=%d not zero. Job %d canceled.\n"
 msgstr "Adquirir leer: num_writers=%d no es cero. Empleo %d cancelado.\n"
 
-#: src/stored/acquire.c:79
+#: src/stored/acquire.c:83
 #, c-format
 msgid "No volumes specified for reading. Job %s canceled.\n"
 msgstr "No se especifica el volumen de lectura. Job %s cancelado.\n"
 
-#: src/stored/acquire.c:88
+#: src/stored/acquire.c:92
 #, c-format
 msgid "Logic error: no next volume to read. Numvol=%d Curvol=%d\n"
 msgstr "Error logico: no hay prójimo volumen para leer. Numvol=%d Curvol=%d\n"
 
-#: src/stored/acquire.c:95 src/stored/acquire.c:163 src/stored/acquire.c:431
-msgid "generate_plugin_event(bsdEventDeviceOpen) Failed\n"
-msgstr ""
-
-#: src/stored/acquire.c:119
+#: src/stored/acquire.c:118
 #, c-format
 msgid ""
 "Changing read device. Want Media Type=\"%s\" have=\"%s\"\n"
@@ -8755,101 +8814,105 @@ msgstr ""
 "Cambiando dispositivo de lectura. Media Type=\"%s\" tiene=\"%s\"\n"
 " dispositivo=%s\n"
 
-#: src/stored/acquire.c:159
+#: src/stored/acquire.c:162
 #, c-format
 msgid "Media Type change.  New read device %s chosen.\n"
 msgstr "Cambio Media Type. Nuevo dispositivo de lectura %s elegido.\n"
 
-#: src/stored/acquire.c:175
+#: src/stored/acquire.c:174
 #, c-format
 msgid "No suitable device found to read Volume \"%s\"\n"
 msgstr "No encuentra dispositivo adecuado para leer Volumen \"%s\"\n"
 
-#: src/stored/acquire.c:214
+#: src/stored/acquire.c:213
 #, c-format
 msgid "Job %s canceled.\n"
 msgstr "Job %s cancelado.\n"
 
-#: src/stored/acquire.c:232
+#: src/stored/acquire.c:231
 #, c-format
 msgid "Read open device %s Volume \"%s\" failed: ERR=%s\n"
 msgstr "Fallo al leer dispositivo %s abierto, Volumen \"%s\": ERR=%s\n"
 
-#: src/stored/acquire.c:322
+#: src/stored/acquire.c:321
 #, c-format
 msgid "Too many errors trying to mount device %s for reading.\n"
 msgstr ""
 "Demasiados errores tratando de montar el dispositivo %s para la lectura.\n"
 
-#: src/stored/acquire.c:330
+#: src/stored/acquire.c:329
 #, c-format
 msgid "Ready to read from volume \"%s\" on device %s.\n"
 msgstr "Listo para leer desde volumen \"%s\" en el dispositivo %s.\n"
 
-#: src/stored/acquire.c:383
+#: src/stored/acquire.c:381
 #, c-format
 msgid "Want to append, but device %s is busy reading.\n"
 msgstr "Esperando anexar, pero el dispositivo %s está ocupado leyendo.\n"
 
-#: src/stored/acquire.c:416
+#: src/stored/acquire.c:414
 #, c-format
 msgid "Could not ready device %s for append.\n"
 msgstr "Dispositivo %s puede no está listo para anexar.\n"
 
-#: src/stored/acquire.c:508 src/stored/spool.c:321 src/stored/block.c:368
-#: src/stored/block.c:738 src/stored/block.c:812
+#: src/stored/acquire.c:501 src/stored/spool.c:321 src/stored/block.c:386
+#: src/stored/block.c:769 src/stored/block.c:847
 #, c-format
 msgid "Could not create JobMedia record for Volume=\"%s\" Job=%s\n"
 msgstr "No es posible crear el registro JobMedia para Volumen=\"%s\" Job=%s\n"
 
-#: src/stored/acquire.c:559
+#: src/stored/acquire.c:552
 #, c-format
 msgid "Alert: %s"
 msgstr "Alerta: %s"
 
-#: src/stored/acquire.c:567
+#: src/stored/acquire.c:560
 #, c-format
 msgid "3997 Bad alert command: %s: ERR=%s.\n"
 msgstr "3997 Malo comando alerta: %s: ERR=%s.\n"
 
-#: src/stored/acquire.c:637 src/stored/dev.c:263 src/stored/dev.c:281
-#: src/stored/dev.c:287 src/stored/dev.c:298 src/lib/openssl.c:122
-#: src/lib/openssl.c:181
+#: src/stored/acquire.c:629 src/stored/dev.c:270 src/stored/dev.c:311
+#: src/lib/openssl.c:122 src/lib/openssl.c:181
 #, c-format
 msgid "Unable to init mutex: ERR=%s\n"
 msgstr "No se puede iniciar mutex: ERR=%s\n"
 
-#: src/stored/askdir.c:178
+#: src/stored/acquire.c:635
+#, fuzzy, c-format
+msgid "Unable to init r_mutex: ERR=%s\n"
+msgstr "No se puede iniciar mutex: ERR=%s\n"
+
+#: src/stored/askdir.c:179
 msgid "Network error on bnet_recv in req_vol_info.\n"
 msgstr "Error de red en bnet_recv en req_vol_info.\n"
 
-#: src/stored/askdir.c:196
+#: src/stored/askdir.c:197
 #, c-format
 msgid "Error getting Volume info: %s"
 msgstr "Error al obtener Volumen información: %s"
 
-#: src/stored/askdir.c:374
+#: src/stored/askdir.c:376
 #, c-format
 msgid "Didn't get vol info vol=%s: ERR=%s"
 msgstr "no recibió información de volumen vol=%s: ERR=%s"
 
-#: src/stored/askdir.c:429
+#: src/stored/askdir.c:432
 #, c-format
 msgid "Error creating JobMedia record: ERR=%s\n"
 msgstr "Error al crear registro JobMedia: ERR=%s\n"
 
-#: src/stored/askdir.c:436
+#: src/stored/askdir.c:439
 #, c-format
 msgid "Error creating JobMedia record: %s\n"
 msgstr "Error al crear registro JobMedia: %s\n"
 
-#: src/stored/askdir.c:519
+#: src/stored/askdir.c:522
 #, c-format
 msgid "Job %s canceled while waiting for mount on Storage Device \"%s\".\n"
 msgstr ""
 "Job %s cancelado a la espera de montar el dispositivo Storage \"%s\".\n"
 
-#: src/stored/askdir.c:530
+#: src/stored/askdir.c:533
 #, fuzzy, c-format
 msgid ""
 "Job %s is waiting. Cannot find any appendable volumes.\n"
@@ -8864,30 +8927,30 @@ msgstr ""
 "Pool: %s\n"
 "Tipo de Media: %s\n"
 
-#: src/stored/askdir.c:556 src/stored/askdir.c:658
+#: src/stored/askdir.c:558 src/stored/askdir.c:658
 #, c-format
 msgid "Max time exceeded waiting to mount Storage Device %s for Job %s\n"
 msgstr ""
 "Tiempo máximo de espera excedido para montar dispositivo Storage %s para el "
 "Job %s\n"
 
-#: src/stored/askdir.c:566
+#: src/stored/askdir.c:568
 msgid "pthread error in mount_next_volume.\n"
 msgstr "pthread error en mount_next_volume.\n"
 
-#: src/stored/askdir.c:600
+#: src/stored/askdir.c:601
 msgid "Cannot request another volume: no volume name given.\n"
 msgstr "No puede solicitar otro volumen: nombre de volumen no entregado.\n"
 
-#: src/stored/askdir.c:606
+#: src/stored/askdir.c:607
 #, c-format
 msgid "Job %s canceled while waiting for mount on Storage Device %s.\n"
 msgstr "Job %s cancelado a la espera de montar el dispositivo Storage %s.\n"
 
-#: src/stored/askdir.c:623
-#, c-format
+#: src/stored/askdir.c:624
+#, fuzzy, c-format
 msgid ""
-"Please mount Volume \"%s\" or label a new one for:\n"
+"Please mount append Volume \"%s\" or label a new one for:\n"
 "    Job:          %s\n"
 "    Storage:      %s\n"
 "    Pool:         %s\n"
@@ -8899,10 +8962,10 @@ msgstr ""
 " Pool: %s\n"
 " Media type: %s\n"
 
-#: src/stored/askdir.c:629
-#, c-format
+#: src/stored/askdir.c:630
+#, fuzzy, c-format
 msgid ""
-"Please mount Volume \"%s\" for:\n"
+"Please mount read Volume \"%s\" for:\n"
 "    Job:          %s\n"
 "    Storage:      %s\n"
 "    Pool:         %s\n"
@@ -8923,11 +8986,11 @@ msgstr "pthread error en mount_volume\n"
 msgid "unknown: %d"
 msgstr "desconocido: %d"
 
-#: src/stored/record.c:424
+#: src/stored/record.c:392
 msgid "Damaged buffer\n"
 msgstr "Buffer dañado\n"
 
-#: src/stored/record.c:600
+#: src/stored/record.c:670
 #, c-format
 msgid "Sanity check failed. maxlen=%d datalen=%d. Block discarded.\n"
 msgstr ""
@@ -8966,51 +9029,43 @@ msgstr ""
 "Ningún Comando Changer obtenido para el dispositivo %s. No se puede "
 "continuar.\n"
 
-#: src/stored/autochanger.c:84
-#, c-format
-msgid ""
-"Media Type not the same for all devices in changer %s. Cannot continue.\n"
-msgstr ""
-"Tipo de Media no es el mismo para todos los dispositivos en el cambiador %s. "
-"No se puede continuar.\n"
-
-#: src/stored/autochanger.c:154
+#: src/stored/autochanger.c:139
 #, fuzzy, c-format
 msgid "No slot defined in catalog (slot=%d) for Volume \"%s\" on %s.\n"
 msgstr ""
 "Invalida ranura=%d definida en el catálogo para volumen \"%s\" en %s. Carga "
 "manual puede ser requerida.\n"
 
-#: src/stored/autochanger.c:156
+#: src/stored/autochanger.c:141
 msgid "Cartridge change or \"update slots\" may be required.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:162
+#: src/stored/autochanger.c:147
 #, c-format
 msgid "No \"Changer Device\" for %s. Manual load of Volume may be required.\n"
 msgstr ""
 "Ninguno \"Dispositivo Changer\" para %s. Carga manual de volumen puede ser "
 "requerido.\n"
 
-#: src/stored/autochanger.c:169
+#: src/stored/autochanger.c:154
 #, c-format
 msgid "No \"Changer Command\" for %s. Manual load of Volume may be requird.\n"
 msgstr ""
 "Ninguno \"Comando Changer\" para %s. Carga manual de volumen puede ser "
 "requerido.\n"
 
-#: src/stored/autochanger.c:200
+#: src/stored/autochanger.c:185
 #, c-format
 msgid "3304 Issuing autochanger \"load slot %d, drive %d\" command.\n"
 msgstr ""
 "3304 Emitiendo comando auto-cambiador \"cargar ranura %d, unidad %d\".\n"
 
-#: src/stored/autochanger.c:208
+#: src/stored/autochanger.c:193
 #, c-format
 msgid "3305 Autochanger \"load slot %d, drive %d\", status is OK.\n"
 msgstr "3305 Auto-cambiador \"carga ranura %d, unidad %d\", estado es OK.\n"
 
-#: src/stored/autochanger.c:217
+#: src/stored/autochanger.c:206
 #, c-format
 msgid ""
 "3992 Bad autochanger \"load slot %d, drive %d\": ERR=%s.\n"
@@ -9019,24 +9074,24 @@ msgstr ""
 "2992 Malo Auto-cambiador \"carga ranura %d, unidad %d\": ERR=%s.\n"
 "Resultados=%s\n"
 
-#: src/stored/autochanger.c:280
+#: src/stored/autochanger.c:268
 #, c-format
 msgid "3301 Issuing autochanger \"loaded? drive %d\" command.\n"
 msgstr "3301 Emitiendo comando auto-cambiador \"¿cargado? unidad %d\".\n"
 
-#: src/stored/autochanger.c:292
+#: src/stored/autochanger.c:280
 #, c-format
 msgid "3302 Autochanger \"loaded? drive %d\", result is Slot %d.\n"
 msgstr ""
 "3302 Auto-cambiador \"¿cargado? unidad %d\", el resultado es Ranura %d.\n"
 
-#: src/stored/autochanger.c:299
+#: src/stored/autochanger.c:287
 #, c-format
 msgid "3302 Autochanger \"loaded? drive %d\", result: nothing loaded.\n"
 msgstr ""
 "3302 Auto-cambiador \"¿cargado? unidad %d\", resultado: nada cargado.\n"
 
-#: src/stored/autochanger.c:311
+#: src/stored/autochanger.c:299
 #, c-format
 msgid ""
 "3991 Bad autochanger \"loaded? drive %d\" command: ERR=%s.\n"
@@ -9045,23 +9100,23 @@ msgstr ""
 "3991 Malo comando auto-cambiador comando \"cargar? unidad %d\": ERR=%s\n"
 "Resultados=%s\n"
 
-#: src/stored/autochanger.c:328
+#: src/stored/autochanger.c:316
 #, fuzzy, c-format
 msgid "Lock failure on autochanger. ERR=%s\n"
 msgstr "Error bloqueando Mutex. ERR=%s\n"
 
-#: src/stored/autochanger.c:342
+#: src/stored/autochanger.c:330
 #, fuzzy, c-format
 msgid "Unlock failure on autochanger. ERR=%s\n"
 msgstr "Error desbloqueando Mutex. ERR=%s\n"
 
-#: src/stored/autochanger.c:386 src/stored/autochanger.c:508
+#: src/stored/autochanger.c:374 src/stored/autochanger.c:523
 #, c-format
 msgid "3307 Issuing autochanger \"unload slot %d, drive %d\" command.\n"
 msgstr ""
 "3307 Emitiendo comando auto-cambiador \"descargar ranura %d, unidad %d\"\n"
 
-#: src/stored/autochanger.c:399
+#: src/stored/autochanger.c:387
 #, c-format
 msgid ""
 "3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s\n"
@@ -9070,44 +9125,44 @@ msgstr ""
 "3995 Malo comando auto-cambiador \"descargar ranura %d, unidad %d\": ERR=%s\n"
 "Resultados=%s\n"
 
-#: src/stored/autochanger.c:465
+#: src/stored/autochanger.c:473
 #, c-format
 msgid "Volume \"%s\" wanted on %s is in use by device %s\n"
 msgstr "Volumen \"%s\" buscado en %s está en uso por el dispositivo %s\n"
 
-#: src/stored/autochanger.c:526
-#, c-format
-msgid "3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
+#: src/stored/autochanger.c:541
+#, fuzzy, c-format
+msgid "3997 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
 msgstr ""
 "3995 Malo comando auto-cambiador \"descargar ranura %d, unidad %d\": ERR="
 "%s.\n"
 
-#: src/stored/autochanger.c:570
+#: src/stored/autochanger.c:585
 #, c-format
 msgid "3993 Device %s not an autochanger device.\n"
 msgstr "3993 Dispositivo %s no es un dispositivo auto-cargador.\n"
 
-#: src/stored/autochanger.c:591
+#: src/stored/autochanger.c:612
 #, c-format
 msgid "3306 Issuing autochanger \"%s\" command.\n"
 msgstr "3306 Emitiendo comando \"%s\" al auto-cambiador.\n"
 
-#: src/stored/autochanger.c:594
+#: src/stored/autochanger.c:615
 msgid "3996 Open bpipe failed.\n"
 msgstr "3996 Fallo al abrir bpipe.\n"
 
-#: src/stored/autochanger.c:621 src/console/console.c:1458
+#: src/stored/autochanger.c:642 src/console/console.c:1458
 #, c-format
 msgid "Autochanger error: ERR=%s\n"
 msgstr "Auto-cambiador error: ERR=%s\n"
 
 #: src/stored/stored.c:87
-#, c-format
+#, fuzzy, c-format
 msgid ""
 "\n"
 "Version: %s (%s)\n"
 "\n"
-"Usage: stored [options] [-c config_file] [config_file]\n"
+"Usage: bacula-sd [options] [-c config_file] [config_file]\n"
 "        -c <file>   use <file> as configuration file\n"
 "        -d <nn>     set debug level to <nn>\n"
 "        -dt         print timestamp in debug output\n"
@@ -9212,17 +9267,17 @@ msgstr ""
 "definidos para el Storage \"%s\" en %s. Por lo menos un almacén de "
 "Certificados CA es necesario cuando se utiliza \"Verificar TLS Peer\".\n"
 
-#: src/stored/stored.c:511
+#: src/stored/stored.c:568
 #, c-format
 msgid "Could not initialize %s\n"
 msgstr "No se puede iniciar %s\n"
 
-#: src/stored/stored.c:525
+#: src/stored/stored.c:582
 #, c-format
 msgid "Could not open device %s\n"
 msgstr "No se pudo abrir el dispositivo %s\n"
 
-#: src/stored/stored.c:539
+#: src/stored/stored.c:596
 #, c-format
 msgid "Could not mount device %s\n"
 msgstr "No se pudo montar el dispositivo %s\n"
@@ -9254,7 +9309,7 @@ msgstr ""
 "Error catastrófico. No se puede escribir bloque de desbordamiento al "
 "dispositivo %s. ERR=%s"
 
-#: src/stored/device.c:327 src/stored/dev.c:499
+#: src/stored/device.c:327 src/stored/dev.c:512
 #, c-format
 msgid "Unable to open device %s: ERR=%s\n"
 msgstr "No se puede abrir el dispositivo %s: ERR=%s\n"
@@ -9302,33 +9357,33 @@ msgstr "Intento de leer sesión no abierta.\n"
 msgid "Attempt to open read on non-open session.\n"
 msgstr "Intento de abrir leer sesión no abierta.\n"
 
-#: src/stored/mount.c:96
+#: src/stored/mount.c:98
 #, c-format
 msgid "Too many errors trying to mount device %s.\n"
 msgstr "Demasiados errores tratando de montar el dispositivo %s.\n"
 
-#: src/stored/mount.c:104
+#: src/stored/mount.c:106
 #, c-format
 msgid "Job %d canceled.\n"
 msgstr "Job %d cancelado.\n"
 
-#: src/stored/mount.c:280
+#: src/stored/mount.c:282
 #, c-format
 msgid "Volume \"%s\" previously written, moving to end of data.\n"
 msgstr "Volumen \"%s\" previamente escrito, moviendo a finales de los datos.\n"
 
-#: src/stored/mount.c:286
+#: src/stored/mount.c:288
 #, c-format
 msgid "Unable to position to end of data on device %s: ERR=%s\n"
 msgstr ""
 "No se puede posicionar al final los datos en el dispositivo %s: ERR=%s\n"
 
-#: src/stored/mount.c:408 src/stored/mount.c:730
+#: src/stored/mount.c:411 src/stored/mount.c:737
 #, c-format
 msgid "Volume \"%s\" not on device %s.\n"
 msgstr "Volumen \"%s\" no en dispositivo %s.\n"
 
-#: src/stored/mount.c:441
+#: src/stored/mount.c:444
 #, c-format
 msgid ""
 "Director wanted Volume \"%s\".\n"
@@ -9339,12 +9394,12 @@ msgstr ""
 " Volumen actual \"%s\" no es aceptable porque:\n"
 " %s"
 
-#: src/stored/mount.c:596
+#: src/stored/mount.c:603
 #, c-format
 msgid "Ready to append to end of Volume \"%s\" part=%d size=%s\n"
 msgstr "Listo para anexar al final del Volumen \"%s\" parte=%d tamaño=%s\n"
 
-#: src/stored/mount.c:600
+#: src/stored/mount.c:607
 #, c-format
 msgid ""
 "Bacula cannot write on DVD Volume \"%s\" because: The sizes do not match! "
@@ -9353,12 +9408,12 @@ msgstr ""
 "Bacula no puedo escribir en el volumen DVD \"%s\" porque: Los tamaños no "
 "coinciden! Volumen=%s Catálogo=%s\n"
 
-#: src/stored/mount.c:614
+#: src/stored/mount.c:621
 #, c-format
 msgid "Ready to append to end of Volume \"%s\" at file=%d.\n"
 msgstr "Listo para anexar al final del volumen \"%s\" en el archivo=%d\n"
 
-#: src/stored/mount.c:617
+#: src/stored/mount.c:624
 #, fuzzy, c-format
 msgid ""
 "For Volume \"%s\":\n"
@@ -9368,12 +9423,12 @@ msgstr ""
 "Bacula no puede escribir en el Volumen de cinta \"%s\" porque:\n"
 "El número de archivos de desfasa! Volumen=%u Catalogo=%u\n"
 
-#: src/stored/mount.c:624 src/stored/mount.c:652
+#: src/stored/mount.c:631 src/stored/mount.c:659
 #, fuzzy
 msgid "Error updating Catalog\n"
 msgstr "Error abriendo archivo de datos %s\n"
 
-#: src/stored/mount.c:629
+#: src/stored/mount.c:636
 #, c-format
 msgid ""
 "Bacula cannot write on tape Volume \"%s\" because:\n"
@@ -9382,12 +9437,12 @@ msgstr ""
 "Bacula no puede escribir en el Volumen de cinta \"%s\" porque:\n"
 "El número de archivos de desfasa! Volumen=%u Catalogo=%u\n"
 
-#: src/stored/mount.c:640
+#: src/stored/mount.c:647
 #, c-format
 msgid "Ready to append to end of Volume \"%s\" size=%s\n"
 msgstr "Listo para anexar al final del volumen \"%s\" tamaño=%s\n"
 
-#: src/stored/mount.c:644
+#: src/stored/mount.c:651
 #, fuzzy, c-format
 msgid ""
 "For Volume \"%s\":\n"
@@ -9397,7 +9452,7 @@ msgstr ""
 "Bacula no puedo escribir en el volumen DVD \"%s\" porque: Los tamaños no "
 "coinciden! Volumen=%s Catálogo=%s\n"
 
-#: src/stored/mount.c:657
+#: src/stored/mount.c:664
 #, c-format
 msgid ""
 "Bacula cannot write on disk Volume \"%s\" because: The sizes do not match! "
@@ -9406,22 +9461,22 @@ msgstr ""
 "Bacula no puede escribir en el Volumen de cinta \"%s\" porque:Los tamaños no "
 "coinciden! Volumen=%s Catalogo=%s\n"
 
-#: src/stored/mount.c:720
+#: src/stored/mount.c:727
 #, c-format
 msgid "Labeled new Volume \"%s\" on device %s.\n"
 msgstr "Etiquetada nuevo Volumen \"%s\" en el dispositivo %s.\n"
 
-#: src/stored/mount.c:725
+#: src/stored/mount.c:732
 #, c-format
 msgid "Device %s not configured to autolabel Volumes.\n"
 msgstr "Dispositivo %s no configurado para volúmenes autolabel.\n"
 
-#: src/stored/mount.c:744
+#: src/stored/mount.c:751
 #, c-format
 msgid "Marking Volume \"%s\" in Error in Catalog.\n"
 msgstr "Marcado volumen \"%s\" en Error en el Catálogo.\n"
 
-#: src/stored/mount.c:761
+#: src/stored/mount.c:768
 #, c-format
 msgid ""
 "Autochanger Volume \"%s\" not found in slot %d.\n"
@@ -9430,11 +9485,11 @@ msgstr ""
 "Volumen auto-cambiador \"%s\" no se encuentra en la ranura %d\n"
 "Estableciendo InChanger a cero en el catálogo.\n"
 
-#: src/stored/mount.c:780
+#: src/stored/mount.c:787
 msgid "Hey!!!!! WroteVol non-zero !!!!!\n"
 msgstr "Hey !!!!! No WroteVol cero !!!!!\n"
 
-#: src/stored/mount.c:827
+#: src/stored/mount.c:834
 #, c-format
 msgid ""
 "Invalid tape position on volume \"%s\" on device %s. Expected %d, got %d\n"
@@ -9442,7 +9497,7 @@ msgstr ""
 "Posición de la cinta no válida en el volumen \"%s\" en el dispositivo %s. "
 "Esperaba %d, obtuvo %d\n"
 
-#: src/stored/mount.c:864 src/stored/btape.c:3120
+#: src/stored/mount.c:875 src/stored/btape.c:3122
 #, c-format
 msgid "Cannot open Dev=%s, Vol=%s\n"
 msgstr "No se puede abrir Dev=%s, Vol=%s\n"
@@ -9536,7 +9591,7 @@ msgstr ""
 "Tiempo transcurrido desencolando = %02d:%02d:%02d, Tasa de transferencia = "
 "%s Bytes/segundo\n"
 
-#: src/stored/spool.c:348 src/stored/spool.c:546 src/stored/spool.c:592
+#: src/stored/spool.c:348 src/stored/spool.c:549 src/stored/spool.c:595
 #, c-format
 msgid "Ftruncate spool file failed: ERR=%s\n"
 msgstr "Fallo ftruncate archivo de cola: ERR=%s\n"
@@ -9567,24 +9622,33 @@ msgstr "Bloque de la cola demasiado grande. Máximo %u bytes, obtuvo %u\n"
 msgid "Spool data read error. Wanted %u bytes, got %d\n"
 msgstr "Error de lectura de datos de la cola. Esperaba %u bytes, obtuvo %d\n"
 
-#: src/stored/spool.c:487
-msgid "User specified spool size reached.\n"
+#: src/stored/spool.c:480
+#, fuzzy, c-format
+msgid ""
+"User specified Job spool size reached: JobSpoolSize=%s MaxJobSpoolSize=%s\n"
 msgstr "Tamaño de cola especificada por el usuario alcanzado.\n"
 
-#: src/stored/spool.c:489
+#: src/stored/spool.c:485
+#, fuzzy, c-format
+msgid ""
+"User specified Device spool size reached: DevSpoolSize=%s MaxDevSpoolSize="
+"%s\n"
+msgstr "Tamaño de cola especificada por el usuario alcanzado.\n"
+
+#: src/stored/spool.c:492
 msgid "Bad return from despool in write_block.\n"
 msgstr "Malo retorno desde despool en write_block.\n"
 
-#: src/stored/spool.c:497
+#: src/stored/spool.c:500
 msgid "Spooling data again ...\n"
 msgstr "Encolando datos de nuevo ...\n"
 
-#: src/stored/spool.c:529
+#: src/stored/spool.c:532
 #, c-format
 msgid "Error writing header to spool file. ERR=%s\n"
 msgstr "Error escribiendo encabezado para archivo de cola. ERR=%s\n"
 
-#: src/stored/spool.c:534
+#: src/stored/spool.c:537
 #, c-format
 msgid ""
 "Error writing header to spool file. Disk probably full. Attempting recovery. "
@@ -9593,53 +9657,53 @@ msgstr ""
 "Error al escribir encabezado al archivo de cola. Probablemente disco lleno. "
 "Intentando recuperación. Esperaba escribir=%d tiene=%d\n"
 
-#: src/stored/spool.c:552 src/stored/spool.c:598
+#: src/stored/spool.c:555 src/stored/spool.c:601
 msgid "Fatal despooling error."
 msgstr "Error fatal desencolando."
 
-#: src/stored/spool.c:560
+#: src/stored/spool.c:563
 msgid "Retrying after header spooling error failed.\n"
 msgstr "Fallido reintento después de error encolando encabezado.\n"
 
-#: src/stored/spool.c:576
+#: src/stored/spool.c:579
 #, c-format
 msgid "Error writing data to spool file. ERR=%s\n"
 msgstr "Error escribiendo datos en archivo de cola. ERR=%s\n"
 
-#: src/stored/spool.c:609
+#: src/stored/spool.c:612
 msgid "Retrying after data spooling error failed.\n"
 msgstr "Fallido reintento después de error encolando dato.\n"
 
-#: src/stored/spool.c:679
+#: src/stored/spool.c:682
 msgid "Network error on BlastAttributes.\n"
 msgstr "Error de red en BlastAttributes.\n"
 
-#: src/stored/spool.c:703 src/stored/spool.c:727
+#: src/stored/spool.c:706 src/stored/spool.c:730
 #, c-format
 msgid "Fseek on attributes file failed: ERR=%s\n"
 msgstr "Fallo fseek en los atributos de archivo: ERR=%s\n"
 
-#: src/stored/spool.c:715
+#: src/stored/spool.c:718
 #, fuzzy, c-format
 msgid "Truncate on attributes file failed: ERR=%s\n"
 msgstr "Fallo fseek en los atributos de archivo: ERR=%s\n"
 
-#: src/stored/spool.c:739
+#: src/stored/spool.c:742
 #, c-format
 msgid "Sending spooled attrs to the Director. Despooling %s bytes ...\n"
 msgstr "Enviando attrs encolados al Director. Desencolando %s bytes ...\n"
 
-#: src/stored/spool.c:765
+#: src/stored/spool.c:768
 #, c-format
 msgid "fopen attr spool file %s failed: ERR=%s\n"
 msgstr "Fallo fopen en archivo %s de atributo de cola: ERR=%s\n"
 
-#: src/stored/lock.c:235
+#: src/stored/lock.c:405
 #, c-format
 msgid "pthread_cond_wait failure. ERR=%s\n"
 msgstr "pthread_cond_wait fallido. ERR=%s\n"
 
-#: src/stored/lock.c:335
+#: src/stored/lock.c:504
 msgid "unknown blocked code"
 msgstr "Código desconocido bloqueado"
 
@@ -9712,12 +9776,12 @@ msgstr ""
 "Intento para definir secundo recurso \"%s\" denominado \"%s\" no está "
 "permitido.\n"
 
-#: src/stored/dev.c:119
+#: src/stored/dev.c:127
 #, c-format
 msgid "Unable to stat device %s: ERR=%s\n"
 msgstr "No se puede stat dispositivo %s: ERR=%s\n"
 
-#: src/stored/dev.c:137
+#: src/stored/dev.c:145
 #, c-format
 msgid ""
 "%s is an unknown device type. Must be tape or directory\n"
@@ -9726,249 +9790,264 @@ msgstr ""
 "%s es un tipo de dispositivo desconocido. Debe ser cinta o directorio\n"
 " o tener RequiresMount=yes para DVD. st_mode=%x\n"
 
-#: src/stored/dev.c:147
+#: src/stored/dev.c:155
 msgid "DVD support is now deprecated\n"
 msgstr ""
 
-#: src/stored/dev.c:224
+#: src/stored/dev.c:231
 #, c-format
 msgid "Unable to stat mount point %s: ERR=%s\n"
 msgstr "No se puede stat punto de montaje %s: ERR=%s\n"
 
-#: src/stored/dev.c:229
+#: src/stored/dev.c:236
 msgid ""
 "Mount and unmount commands must defined for a device which requires mount.\n"
 msgstr ""
 "Comandos mount y unmount deben ser definidos para un dispositivo que "
 "requiere montaje.\n"
 
-#: src/stored/dev.c:240
+#: src/stored/dev.c:247
 #, c-format
 msgid "Min block size > max on device %s\n"
 msgstr "Mínimo tamaño de bloque > máximo en el dispositivo %s\n"
 
-#: src/stored/dev.c:244
+#: src/stored/dev.c:251
 #, c-format
 msgid "Block size %u on device %s is too large, using default %u\n"
 msgstr ""
 "Tamaño de bloque %u en el dispositivo %s es demasiado grande, usando %u "
 "omisión\n"
 
-#: src/stored/dev.c:249
+#: src/stored/dev.c:256
 #, fuzzy, c-format
 msgid "Max block size %u not multiple of device %s block size=%d.\n"
 msgstr ""
 "Tamaño máximo de bloque %u no es múltiplo de tamaño de bloque en dispositivo "
 "%s.\n"
 
-#: src/stored/dev.c:253
+#: src/stored/dev.c:260
 #, fuzzy, c-format
 msgid "Max Vol Size < 8 * Max Block Size for device %s\n"
 msgstr ""
 "Máximo Tamaño de Volumen < 8 * Máximo Tamaño de Bloque en dispositivo %s\n"
 
-#: src/stored/dev.c:269 src/stored/dev.c:275
+#: src/stored/dev.c:276 src/stored/dev.c:282
 #, c-format
 msgid "Unable to init cond variable: ERR=%s\n"
 msgstr "No se puede iniciar variable cond: ERR=%s\n"
 
-#: src/stored/dev.c:403
+#: src/stored/dev.c:288
+#, fuzzy, c-format
+msgid "Unable to init spool mutex: ERR=%s\n"
+msgstr "No se puede iniciar mutex: ERR=%s\n"
+
+#: src/stored/dev.c:294
+#, fuzzy, c-format
+msgid "Unable to init acquire mutex: ERR=%s\n"
+msgstr "No se puede iniciar mutex: ERR=%s\n"
+
+#: src/stored/dev.c:300
+#, fuzzy, c-format
+msgid "Unable to init read acquire mutex: ERR=%s\n"
+msgstr "No se puede iniciar mutex: ERR=%s\n"
+
+#: src/stored/dev.c:416
 msgid "Illegal mode given to open dev.\n"
 msgstr "Modo ilegal dado para abrir dev.\n"
 
-#: src/stored/dev.c:538
+#: src/stored/dev.c:551
 #, c-format
 msgid "Could not open file device %s. No Volume name given.\n"
 msgstr ""
 "No se pudo abrir dispositivo de archivo %s. No hay nombre volumen "
 "determinado.\n"
 
-#: src/stored/dev.c:561
+#: src/stored/dev.c:574
 #, c-format
 msgid "Could not open: %s, ERR=%s\n"
 msgstr "No se pudo abrir: %s, ERR=%s\n"
 
-#: src/stored/dev.c:626
+#: src/stored/dev.c:639
 #, c-format
 msgid "No tape loaded or drive offline on %s.\n"
 msgstr "Ninguna cinta cargada o unidad offline en %s.\n"
 
-#: src/stored/dev.c:636
+#: src/stored/dev.c:649
 #, c-format
 msgid "Rewind error on %s. ERR=%s.\n"
 msgstr "Rebobinar error en %s. ERR=%s.\n"
 
-#: src/stored/dev.c:646 src/stored/dev.c:724 src/stored/dev.c:865
-#: src/stored/dev.c:1454
+#: src/stored/dev.c:659 src/stored/dev.c:737 src/stored/dev.c:878
+#: src/stored/dev.c:1469
 #, c-format
 msgid "lseek error on %s. ERR=%s.\n"
 msgstr "Iseek error en %s. ERR=%s.\n"
 
-#: src/stored/dev.c:695
+#: src/stored/dev.c:708
 #, c-format
 msgid "Bad call to eod. Device %s not open\n"
 msgstr "Mala llamada para eod. Dispositivo %s no abierto\n"
 
-#: src/stored/dev.c:762
+#: src/stored/dev.c:775
 #, c-format
 msgid "ioctl MTEOM error on %s. ERR=%s.\n"
 msgstr "ioctl MTEOM error en %s. ERR=%s.\n"
 
-#: src/stored/dev.c:772 src/stored/dev.c:906
+#: src/stored/dev.c:785 src/stored/dev.c:919
 #, c-format
 msgid "ioctl MTIOCGET error on %s. ERR=%s.\n"
 msgstr "ioctl MTIOCGET error en %s. ERR=%s.\n"
 
-#: src/stored/dev.c:852
+#: src/stored/dev.c:865
 msgid "Bad device call. Device not open\n"
 msgstr "Mala llamada de dispositivo. Dispositivo no abierto\n"
 
-#: src/stored/dev.c:864
+#: src/stored/dev.c:877
 #, c-format
 msgid "Seek error: ERR=%s\n"
 msgstr "Seek error: ERR=%s\n"
 
-#: src/stored/dev.c:901
+#: src/stored/dev.c:914
 msgid " Bacula status:"
 msgstr "Estado del Bacula:"
 
-#: src/stored/dev.c:902 src/stored/dev.c:985 src/stored/dev.c:987
+#: src/stored/dev.c:915 src/stored/dev.c:998 src/stored/dev.c:1000
 #, c-format
 msgid " file=%d block=%d\n"
 msgstr "archivo=%d bloque=%d\n"
 
-#: src/stored/dev.c:910
+#: src/stored/dev.c:923
 msgid " Device status:"
 msgstr "Estado del Dispositivo:"
 
-#: src/stored/dev.c:1009
+#: src/stored/dev.c:1022
 msgid "Bad call to load_dev. Device not open\n"
 msgstr "Mala llamada a load_dev. Dispositivo no abierto\n"
 
-#: src/stored/dev.c:1020 src/stored/dev.c:1033
+#: src/stored/dev.c:1033 src/stored/dev.c:1046
 #, c-format
 msgid "ioctl MTLOAD error on %s. ERR=%s.\n"
 msgstr "ioctl MTLOAD error en %s. ERR=%s.\n"
 
-#: src/stored/dev.c:1064
+#: src/stored/dev.c:1077
 #, c-format
 msgid "ioctl MTOFFL error on %s. ERR=%s.\n"
 msgstr "ioctl MTOFFL error en %s. ERR=%s.\n"
 
-#: src/stored/dev.c:1105
+#: src/stored/dev.c:1118
 msgid "Bad call to fsf. Device not open\n"
 msgstr "Mala llamada a fsf. Dispositivo no abierto\n"
 
-#: src/stored/dev.c:1116 src/stored/dev.c:1243
+#: src/stored/dev.c:1129 src/stored/dev.c:1256
 #, c-format
 msgid "Device %s at End of Tape.\n"
 msgstr "Dispositivo %s en el final de la cinta.\n"
 
-#: src/stored/dev.c:1147 src/stored/dev.c:1223
+#: src/stored/dev.c:1160 src/stored/dev.c:1236
 #, c-format
 msgid "ioctl MTFSF error on %s. ERR=%s.\n"
 msgstr "ioctl MTFSF error en %s. ERR=%s.\n"
 
-#: src/stored/dev.c:1194 src/stored/btape.c:1975
+#: src/stored/dev.c:1207 src/stored/btape.c:1977
 #, c-format
 msgid "read error on %s. ERR=%s.\n"
 msgstr "error de lectura en %s. ERR=%s.\n"
 
-#: src/stored/dev.c:1272
+#: src/stored/dev.c:1285
 msgid "Bad call to bsf. Device not open\n"
 msgstr "Mala llamada a bsf. Dispositivo no abierto\n"
 
-#: src/stored/dev.c:1278
+#: src/stored/dev.c:1291
 #, c-format
 msgid "Device %s cannot BSF because it is not a tape.\n"
 msgstr "Dispositivo %s no puede BSF, porque no es una cinta.\n"
 
-#: src/stored/dev.c:1295
+#: src/stored/dev.c:1308
 #, c-format
 msgid "ioctl MTBSF error on %s. ERR=%s.\n"
 msgstr "ioctl MTBSF error en %s. ERR=%s.\n"
 
-#: src/stored/dev.c:1314
+#: src/stored/dev.c:1327
 msgid "Bad call to fsr. Device not open\n"
 msgstr "Mala llamada a FSR. El dispositivo no abre\n"
 
-#: src/stored/dev.c:1324
+#: src/stored/dev.c:1337
 #, c-format
 msgid "ioctl MTFSR not permitted on %s.\n"
 msgstr "ioctl MTFSR no permitido en %s.\n"
 
-#: src/stored/dev.c:1352
+#: src/stored/dev.c:1365
 #, c-format
 msgid "ioctl MTFSR %d error on %s. ERR=%s.\n"
 msgstr "ioctl MTFSR %d error en %s. ERR=%s.\n"
 
-#: src/stored/dev.c:1370
+#: src/stored/dev.c:1383
 msgid "Bad call to bsr_dev. Device not open\n"
 msgstr "Mala llamada a bsr_dev. El dispositivo no abre\n"
 
-#: src/stored/dev.c:1380
+#: src/stored/dev.c:1393
 #, c-format
 msgid "ioctl MTBSR not permitted on %s.\n"
 msgstr "ioctl MTBSR no permitido en %s.\n"
 
-#: src/stored/dev.c:1394
+#: src/stored/dev.c:1407
 #, c-format
 msgid "ioctl MTBSR error on %s. ERR=%s.\n"
 msgstr "ioctl MTBSR error en %s. ERR=%s.\n"
 
-#: src/stored/dev.c:1443
+#: src/stored/dev.c:1458
 msgid "Bad call to reposition. Device not open\n"
 msgstr "Mala llamada a reposición. El dispositivo no abre\n"
 
-#: src/stored/dev.c:1522
+#: src/stored/dev.c:1537
 msgid "Bad call to weof_dev. Device not open\n"
 msgstr "Mala llamada a weof_dev. El dispositivo no abre\n"
 
-#: src/stored/dev.c:1532
+#: src/stored/dev.c:1547
 msgid "Attempt to WEOF on non-appendable Volume\n"
 msgstr "Intento de WEOF en Volumen no-appendable\n"
 
-#: src/stored/dev.c:1550
+#: src/stored/dev.c:1565
 #, c-format
 msgid "ioctl MTWEOF error on %s. ERR=%s.\n"
 msgstr "ioctl MTWEOF error en %s. ERR=%s.\n"
 
-#: src/stored/dev.c:1649
+#: src/stored/dev.c:1664
 #, c-format
 msgid "unknown func code %d"
 msgstr "código de función %d desconocido"
 
-#: src/stored/dev.c:1655
+#: src/stored/dev.c:1670
 #, c-format
 msgid "I/O function \"%s\" not supported on this device.\n"
 msgstr "I/O función \"%s\" no es compatible con este dispositivo. \n"
 
-#: src/stored/dev.c:1824
+#: src/stored/dev.c:1844
 #, c-format
 msgid "Unable to truncate device %s. ERR=%s\n"
 msgstr "No se puede truncar el dispositivo %s. ERR=%s\n"
 
-#: src/stored/dev.c:1841
+#: src/stored/dev.c:1861
 #, c-format
 msgid "Unable to stat device %s. ERR=%s\n"
 msgstr "No se pudo stat dispositivo %s. ERR=%s\n"
 
-#: src/stored/dev.c:1855
+#: src/stored/dev.c:1875
 #, c-format
 msgid "Device %s doesn't support ftruncate(). Recreating file %s.\n"
 msgstr "Dispositivo %s no admite ftruncate(). Recreando el archivo %s.\n"
 
-#: src/stored/dev.c:1867
+#: src/stored/dev.c:1887
 #, c-format
 msgid "Could not reopen: %s, ERR=%s\n"
 msgstr "No se pudo reabrir: %s, ERR=%s\n"
 
-#: src/stored/dev.c:1989 src/stored/dev.c:2060
+#: src/stored/dev.c:2010 src/stored/dev.c:2081
 #, c-format
 msgid "Device %s cannot be %smounted. ERR=%s\n"
 msgstr "Dispositivo %s no puede ser %smounted. ERR=%s\n"
 
-#: src/stored/dev.c:2456
+#: src/stored/dev.c:2481
 #, c-format
 msgid "Unable to set eotmodel on device %s: ERR=%s\n"
 msgstr "No se puede establecer eotmodel en el dispositivo %s: ERR=%s\n"
@@ -10144,7 +10223,7 @@ msgstr "SOS_LABEL: VolSessTime desajustado para JobId=%u. BD=%d Vol=%d\n"
 msgid "SOS_LABEL: PoolId mismatch for JobId=%u. DB=%d Vol=%d\n"
 msgstr "SOS_LABEL: PoolId diferente para JobId=%u. BD=%d Vol=%d\n"
 
-#: src/stored/bscan.c:601 src/stored/bscan.c:1157
+#: src/stored/bscan.c:601 src/stored/bscan.c:1161
 #, c-format
 msgid "Could not find SessId=%d SessTime=%d for EOS record.\n"
 msgstr "No se pudo encontrar SessId=%d SessTime=%d para registro EOS.\n"
@@ -10202,109 +10281,109 @@ msgstr "Obtuvo Stream Nombres de Programas: %s\n"
 msgid "Got Prog Data Stream record.\n"
 msgstr "Obtuvo Registro Stream Datos de Programas: %s\n"
 
-#: src/stored/bscan.c:858
+#: src/stored/bscan.c:862
 #, c-format
 msgid "Unknown stream type!!! stream=%d len=%i\n"
 msgstr "Tipo de flujo desconocido!!! stream=%d len=%i\n"
 
-#: src/stored/bscan.c:926
+#: src/stored/bscan.c:930
 #, c-format
 msgid "Could not create File Attributes record. ERR=%s\n"
 msgstr "No se pudo crear el registro de Archivos de Atributos. ERR=%s\n"
 
-#: src/stored/bscan.c:932
+#: src/stored/bscan.c:936
 #, c-format
 msgid "Created File record: %s\n"
 msgstr "Registro Archivo creado: %s\n"
 
-#: src/stored/bscan.c:977
+#: src/stored/bscan.c:981
 #, c-format
 msgid "Could not create media record. ERR=%s\n"
 msgstr "No es posible crear registro media. ERR=%s\n"
 
-#: src/stored/bscan.c:981 src/stored/bscan.c:1002
+#: src/stored/bscan.c:985 src/stored/bscan.c:1006
 #, c-format
 msgid "Could not update media record. ERR=%s\n"
 msgstr "No es posible actualizar registro media. ERR=%s\n"
 
-#: src/stored/bscan.c:985
+#: src/stored/bscan.c:989
 #, c-format
 msgid "Created Media record for Volume: %s\n"
 msgstr "Creado Registro Media para Volumen: %s\n"
 
-#: src/stored/bscan.c:1006
+#: src/stored/bscan.c:1010
 #, c-format
 msgid "Updated Media record at end of Volume: %s\n"
 msgstr "Actualizado el registro Media al final del Volumen: %s\n"
 
-#: src/stored/bscan.c:1023
+#: src/stored/bscan.c:1027
 #, c-format
 msgid "Could not create pool record. ERR=%s\n"
 msgstr "No es posible crear el registro Pool. ERR=%s\n"
 
-#: src/stored/bscan.c:1027
+#: src/stored/bscan.c:1031
 #, c-format
 msgid "Created Pool record for Pool: %s\n"
 msgstr "Creado el registro Pool para Pool: %s\n"
 
-#: src/stored/bscan.c:1046
+#: src/stored/bscan.c:1050
 #, c-format
 msgid "Could not get Client record. ERR=%s\n"
 msgstr "No se ha podido obtener el registro del cliente. ERR=%s\n"
 
-#: src/stored/bscan.c:1056
+#: src/stored/bscan.c:1060
 #, c-format
 msgid "Created Client record for Client: %s\n"
 msgstr "Creado registro Cliente para Cliente: %s\n"
 
-#: src/stored/bscan.c:1073
+#: src/stored/bscan.c:1077
 #, c-format
 msgid "Fileset \"%s\" already exists.\n"
 msgstr "Fileset \"%s\" ya existe.\n"
 
-#: src/stored/bscan.c:1077
+#: src/stored/bscan.c:1081
 #, c-format
 msgid "Could not create FileSet record \"%s\". ERR=%s\n"
 msgstr "No es posible crear registro FileSet \"%s\". ERR=%s\n"
 
-#: src/stored/bscan.c:1082
+#: src/stored/bscan.c:1086
 #, c-format
 msgid "Created FileSet record \"%s\"\n"
 msgstr "Creado registro FileSet \"%s\"\n"
 
-#: src/stored/bscan.c:1129
+#: src/stored/bscan.c:1133
 #, c-format
 msgid "Could not create JobId record. ERR=%s\n"
 msgstr "No es posible crear registro JobId. ERR=%s\n"
 
-#: src/stored/bscan.c:1135
+#: src/stored/bscan.c:1139
 #, c-format
 msgid "Could not update job start record. ERR=%s\n"
 msgstr "No se pudo actualizar el registro job de inicio. ERR=%s\n"
 
-#: src/stored/bscan.c:1138
+#: src/stored/bscan.c:1142
 #, c-format
 msgid "Created new JobId=%u record for original JobId=%u\n"
 msgstr "Creado nuevo registro JobId=%u para JobId=%u original\n"
 
-#: src/stored/bscan.c:1191
+#: src/stored/bscan.c:1195
 #, c-format
 msgid "Could not update JobId=%u record. ERR=%s\n"
 msgstr "No se puede actualizar registro JobId=%u. ERR=%s\n"
 
-#: src/stored/bscan.c:1196
+#: src/stored/bscan.c:1200
 #, c-format
 msgid "Updated Job termination record for JobId=%u Level=%s TermStat=%c\n"
 msgstr ""
 "Actualizado el registro de terminación de Job para JobId=%u Nivel=%s "
 "TermStat=%c\n"
 
-#: src/stored/bscan.c:1221
+#: src/stored/bscan.c:1225
 #, c-format
 msgid "Job Termination code: %d"
 msgstr "Código de Terminación del Job: %d"
 
-#: src/stored/bscan.c:1226
+#: src/stored/bscan.c:1230
 #, c-format
 msgid ""
 "%s\n"
@@ -10339,45 +10418,45 @@ msgstr ""
 "Terminación: %s\n"
 "\n"
 
-#: src/stored/bscan.c:1284
+#: src/stored/bscan.c:1288
 #, c-format
 msgid "Could not create JobMedia record. ERR=%s\n"
 msgstr "No es posible crear registro JobMedia. ERR=%s\n"
 
-#: src/stored/bscan.c:1288
+#: src/stored/bscan.c:1292
 #, c-format
 msgid "Created JobMedia record JobId %d, MediaId %d\n"
 msgstr "Creado registro JobMedia JobID %d, MediaID %d\n"
 
-#: src/stored/bscan.c:1304
+#: src/stored/bscan.c:1308
 #, c-format
 msgid "Could not find SessId=%d SessTime=%d for MD5/SHA1 record.\n"
 msgstr "No se pudo encontrar SessId=%d SessTime=%d para registro MD5/SHA1.\n"
 
-#: src/stored/bscan.c:1318
+#: src/stored/bscan.c:1322
 #, c-format
 msgid "Could not add MD5/SHA1 to File record. ERR=%s\n"
 msgstr "No se pudo agregar MD5/SHA1 al registro File. ERR=%s\n"
 
-#: src/stored/bscan.c:1323
+#: src/stored/bscan.c:1327
 msgid "Updated MD5/SHA1 record\n"
 msgstr "Actualizado registro MD5/SHA1\n"
 
-#: src/stored/job.c:231
+#: src/stored/job.c:234
 #, c-format
 msgid "FD connect failed: Job name not found: %s\n"
 msgstr "Fallo al conectar a FD: Nombre del Job no encontrado: %s\n"
 
-#: src/stored/job.c:241
+#: src/stored/job.c:244
 #, c-format
 msgid "Hey!!!! JobId %u Job %s already authenticated.\n"
 msgstr "Hey!!!! JobId %u Job %s ya autenticada.\n"
 
-#: src/stored/job.c:258
+#: src/stored/job.c:261
 msgid "Unable to authenticate File daemon\n"
 msgstr "No se puede autenticar demonio File\n"
 
-#: src/stored/job.c:387
+#: src/stored/job.c:390
 msgid "In free_jcr(), but still attached to device!!!!\n"
 msgstr "En free_jcr(), pero todavía conectado al dispositivo!!!!\n"
 
@@ -10501,18 +10580,18 @@ msgstr "Malo estado de carga. ERR=%s\n"
 msgid "Loaded %s\n"
 msgstr "Cargado %s\n"
 
-#: src/stored/btape.c:576 src/stored/btape.c:1137 src/stored/btape.c:1210
-#: src/stored/btape.c:1290 src/stored/btape.c:1561
+#: src/stored/btape.c:576 src/stored/btape.c:1139 src/stored/btape.c:1212
+#: src/stored/btape.c:1292 src/stored/btape.c:1563
 #, c-format
 msgid "Bad status from rewind. ERR=%s\n"
 msgstr "Malo estado de rebobinado. ERR=%s\n"
 
-#: src/stored/btape.c:579 src/stored/btape.c:1569
+#: src/stored/btape.c:579 src/stored/btape.c:1571
 #, c-format
 msgid "Rewound %s\n"
 msgstr "Rebobinado %s\n"
 
-#: src/stored/btape.c:605 src/stored/btape.c:1573
+#: src/stored/btape.c:605 src/stored/btape.c:1575
 #, c-format
 msgid "Bad status from weof. ERR=%s\n"
 msgstr "Malo estado de weof. ERR=%s\n"
@@ -10579,20 +10658,20 @@ msgstr ""
 msgid "Do you want to continue? (y/n): "
 msgstr "Desea continuar? (y/n)"
 
-#: src/stored/btape.c:748 src/stored/btape.c:2198
+#: src/stored/btape.c:748 src/stored/btape.c:2200
 msgid "Command aborted.\n"
 msgstr "Comando Abortado.\n"
 
-#: src/stored/btape.c:764
+#: src/stored/btape.c:765
 #, c-format
 msgid "Block %d i=%d\n"
 msgstr "Bloque %d i=%d\n"
 
-#: src/stored/btape.c:790
+#: src/stored/btape.c:792
 msgid "Skipping read backwards test because BSR turned off.\n"
 msgstr "Saltar prueba de lectura hacia atrás, porque BSR esta desactivado.\n"
 
-#: src/stored/btape.c:794
+#: src/stored/btape.c:796
 msgid ""
 "\n"
 "=== Write, backup, and re-read test ===\n"
@@ -10616,61 +10695,61 @@ msgstr ""
 "Esta es una característica *esencial* ...\n"
 "\n"
 
-#: src/stored/btape.c:807 src/stored/btape.c:818 src/stored/btape.c:829
-#: src/stored/btape.c:1147 src/stored/btape.c:1163 src/stored/btape.c:1905
-#: src/stored/btape.c:2821
+#: src/stored/btape.c:809 src/stored/btape.c:820 src/stored/btape.c:831
+#: src/stored/btape.c:1149 src/stored/btape.c:1165 src/stored/btape.c:1907
+#: src/stored/btape.c:2823
 msgid "Error writing record to block.\n"
 msgstr "Error al escribir registro al bloque.\n"
 
-#: src/stored/btape.c:811 src/stored/btape.c:822 src/stored/btape.c:833
-#: src/stored/btape.c:1151 src/stored/btape.c:1167 src/stored/btape.c:1909
-#: src/stored/btape.c:2825
+#: src/stored/btape.c:813 src/stored/btape.c:824 src/stored/btape.c:835
+#: src/stored/btape.c:1153 src/stored/btape.c:1169 src/stored/btape.c:1911
+#: src/stored/btape.c:2827
 msgid "Error writing block to device.\n"
 msgstr "Error al escribir bloque al dispositivo.\n"
 
-#: src/stored/btape.c:814
+#: src/stored/btape.c:816
 #, c-format
 msgid "Wrote first record of %d bytes.\n"
 msgstr "Escribió primer registro de %d bytes.\n"
 
-#: src/stored/btape.c:825
+#: src/stored/btape.c:827
 #, c-format
 msgid "Wrote second record of %d bytes.\n"
 msgstr "Escribió segundo registro de %d bytes.\n"
 
-#: src/stored/btape.c:836
+#: src/stored/btape.c:838
 #, c-format
 msgid "Wrote third record of %d bytes.\n"
 msgstr "Escribió tercer registro de %d bytes.\n"
 
-#: src/stored/btape.c:843 src/stored/btape.c:848
+#: src/stored/btape.c:845 src/stored/btape.c:850
 #, c-format
 msgid "Backspace file failed! ERR=%s\n"
 msgstr "Fallo en retroceso de archivo! ERR=%s\n"
 
-#: src/stored/btape.c:852
+#: src/stored/btape.c:854
 msgid "Backspaced over EOF OK.\n"
 msgstr "Retroceso sobre EOF OK.\n"
 
-#: src/stored/btape.c:854
+#: src/stored/btape.c:856
 #, c-format
 msgid "Backspace record failed! ERR=%s\n"
 msgstr "Fallo en retroceso de registro! ERR=%s\n"
 
-#: src/stored/btape.c:857
+#: src/stored/btape.c:859
 msgid "Backspace record OK.\n"
 msgstr "Retroceso de registro OK.\n"
 
-#: src/stored/btape.c:860 src/stored/btape.c:866
+#: src/stored/btape.c:862 src/stored/btape.c:868
 #, c-format
 msgid "Read block failed! ERR=%s\n"
 msgstr "Lectura de bloque fallida! ERR=%s\n"
 
-#: src/stored/btape.c:871
+#: src/stored/btape.c:873
 msgid "Bad data in record. Test failed!\n"
 msgstr "Datos erróneos en el registro. Prueba fallida!\n"
 
-#: src/stored/btape.c:875
+#: src/stored/btape.c:877
 msgid ""
 "\n"
 "Block re-read correct. Test succeeded!\n"
@@ -10678,7 +10757,7 @@ msgstr ""
 "\n"
 "Re-lectura de bloque correcta. Prueba Satisfactoria!\n"
 
-#: src/stored/btape.c:876
+#: src/stored/btape.c:878
 msgid ""
 "=== End Write, backup, and re-read test ===\n"
 "\n"
@@ -10686,7 +10765,7 @@ msgstr ""
 "=== Fin prueba de escritura, copia de seguridad, y re-lectura ===\n"
 "\n"
 
-#: src/stored/btape.c:883
+#: src/stored/btape.c:885
 msgid ""
 "This is not terribly serious since Bacula only uses\n"
 "this function to verify the last block written to the\n"
@@ -10706,22 +10785,22 @@ msgstr ""
 "\n"
 " en la definición de los recursos de Dispositivos de su demonio Storage.\n"
 
-#: src/stored/btape.c:905
+#: src/stored/btape.c:907
 #, c-format
 msgid "Begin writing %i files of %sB with raw blocks of %u bytes.\n"
 msgstr "Inicia escribiendo %i archivos de %sB con raw bloques de %u bytes.\n"
 
-#: src/stored/btape.c:926 src/stored/btape.c:2877
+#: src/stored/btape.c:928 src/stored/btape.c:2879
 #, c-format
 msgid "Write failed at block %u. stat=%d ERR=%s\n"
 msgstr "Error al escritura en el bloque %u. stat=%d ERR=%s\n"
 
-#: src/stored/btape.c:960
+#: src/stored/btape.c:962
 #, c-format
 msgid "Begin writing %i files of %sB with blocks of %u bytes.\n"
 msgstr "Inicia escribiendo %i archivos de %sB con bloques de %u bytes.\n"
 
-#: src/stored/btape.c:969
+#: src/stored/btape.c:971
 msgid ""
 "\n"
 "Error writing record to block.\n"
@@ -10729,7 +10808,7 @@ msgstr ""
 "\n"
 "Error escribiendo registro al bloque.\n"
 
-#: src/stored/btape.c:973
+#: src/stored/btape.c:975
 msgid ""
 "\n"
 "Error writing block to device.\n"
@@ -10737,24 +10816,24 @@ msgstr ""
 "\n"
 "Error escribiendo bloque al dispositivo.\n"
 
-#: src/stored/btape.c:1028
+#: src/stored/btape.c:1030
 msgid "The file_size is too big, stop this test with Ctrl-c.\n"
 msgstr ""
 "El tamaño_archivo es demasiado grande, detenga esta prueba con Ctrl-c.\n"
 
-#: src/stored/btape.c:1056
+#: src/stored/btape.c:1058
 msgid "Test with zero data, should give the maximum throughput.\n"
 msgstr "Prueba con cero de datos, debe dar el máximo rendimiento.\n"
 
-#: src/stored/btape.c:1068 src/stored/btape.c:1094
+#: src/stored/btape.c:1070 src/stored/btape.c:1096
 msgid "Test with random data, should give the minimum throughput.\n"
 msgstr "Prueba con datos aleatorios, deben dar el rendimiento mínimo.\n"
 
-#: src/stored/btape.c:1083
+#: src/stored/btape.c:1085
 msgid "Test with zero data and bacula block structure.\n"
 msgstr "Prueba con cero de datos y estructura del bloque de Bacula.\n"
 
-#: src/stored/btape.c:1123
+#: src/stored/btape.c:1125
 #, c-format
 msgid ""
 "\n"
@@ -10777,42 +10856,42 @@ msgstr ""
 "Este es una característica *esencial*...\n"
 "\n"
 
-#: src/stored/btape.c:1155 src/stored/btape.c:1171
+#: src/stored/btape.c:1157 src/stored/btape.c:1173
 #, c-format
 msgid "Wrote %d blocks of %d bytes.\n"
 msgstr "Escribió %d bloques de %d bytes.\n"
 
-#: src/stored/btape.c:1213 src/stored/btape.c:1293
+#: src/stored/btape.c:1215 src/stored/btape.c:1295
 msgid "Rewind OK.\n"
 msgstr "Rebobinar OK.\n"
 
-#: src/stored/btape.c:1226 src/stored/btape.c:1345
+#: src/stored/btape.c:1228 src/stored/btape.c:1347
 msgid "Got EOF on tape.\n"
 msgstr "Obtuvo EOF en la cinta.\n"
 
-#: src/stored/btape.c:1231
+#: src/stored/btape.c:1233
 #, c-format
 msgid "Read block %d failed! ERR=%s\n"
 msgstr "Fallo al leer bloque %d! ERR=%s\n"
 
-#: src/stored/btape.c:1237
+#: src/stored/btape.c:1239
 #, c-format
 msgid "Read record failed. Block %d! ERR=%s\n"
 msgstr "Fallo al leer registro. Bloque %d! ERR =%s\n"
 
-#: src/stored/btape.c:1243 src/stored/btape.c:1375
+#: src/stored/btape.c:1245 src/stored/btape.c:1377
 #, c-format
 msgid "Bad data in record. Expected %d, got %d at byte %d. Test failed!\n"
 msgstr ""
 "Datos incorrectos en el registro. Esperaba %d, obtuvo %d en byte %d. Prueba "
 "Fallida!\n"
 
-#: src/stored/btape.c:1250
+#: src/stored/btape.c:1252
 #, c-format
 msgid "%d blocks re-read correctly.\n"
 msgstr "%d bloques releídos correctamente.\n"
 
-#: src/stored/btape.c:1253 src/stored/btape.c:1382
+#: src/stored/btape.c:1255 src/stored/btape.c:1384
 msgid ""
 "=== Test Succeeded. End Write, rewind, and re-read test ===\n"
 "\n"
@@ -10821,20 +10900,20 @@ msgstr ""
 "===\n"
 "\n"
 
-#: src/stored/btape.c:1281
+#: src/stored/btape.c:1283
 msgid "Block position test\n"
 msgstr "Prueba de posición del bloque\n"
 
-#: src/stored/btape.c:1336
+#: src/stored/btape.c:1338
 #, c-format
 msgid "Reposition to file:block %d:%d\n"
 msgstr "Reposición para archivo:bloque %d:%d\n"
 
-#: src/stored/btape.c:1338
+#: src/stored/btape.c:1340
 msgid "Reposition error.\n"
 msgstr "Error de reposición.\n"
 
-#: src/stored/btape.c:1351
+#: src/stored/btape.c:1353
 #, c-format
 msgid ""
 "Read block %d failed! file=%d blk=%d. ERR=%s\n"
@@ -10843,7 +10922,7 @@ msgstr ""
 "Fallo al leer bloque %d! archivo=%d blk=%d. ERR=%s\n"
 "\n"
 
-#: src/stored/btape.c:1353
+#: src/stored/btape.c:1355
 msgid ""
 "This may be because the tape drive block size is not\n"
 " set to variable blocking as normally used by Bacula.\n"
@@ -10868,17 +10947,17 @@ msgstr ""
 " Fast Forward Space File = no\n"
 "en su recurso de Dispositivos.\n"
 
-#: src/stored/btape.c:1369
+#: src/stored/btape.c:1371
 #, c-format
 msgid "Read record failed! ERR=%s\n"
 msgstr "Fallo al leer registro! ERR=%s\n"
 
-#: src/stored/btape.c:1380
+#: src/stored/btape.c:1382
 #, c-format
 msgid "Block %d re-read correctly.\n"
 msgstr "Bloque %d re-leído correctamente.\n"
 
-#: src/stored/btape.c:1401
+#: src/stored/btape.c:1403
 msgid ""
 "\n"
 "\n"
@@ -10902,26 +10981,26 @@ msgstr ""
 " y tres registros en el archivo de 2\n"
 "\n"
 
-#: src/stored/btape.c:1425
+#: src/stored/btape.c:1427
 msgid "Now moving to end of medium.\n"
 msgstr "Moviendo ahora a final de medio.\n"
 
-#: src/stored/btape.c:1427 src/stored/btape.c:1656
+#: src/stored/btape.c:1429 src/stored/btape.c:1658
 #, c-format
 msgid "We should be in file 3. I am at file %d. %s\n"
 msgstr "Deberíamos estar en el archivo 3. Estoy en el archivo %d. %s\n"
 
-#: src/stored/btape.c:1428 src/stored/btape.c:1446 src/stored/btape.c:1645
-#: src/stored/btape.c:1657 src/stored/btape.c:1670 src/stored/btape.c:1687
+#: src/stored/btape.c:1430 src/stored/btape.c:1448 src/stored/btape.c:1647
+#: src/stored/btape.c:1659 src/stored/btape.c:1672 src/stored/btape.c:1689
 msgid "This is correct!"
 msgstr "Esto es correcto!"
 
-#: src/stored/btape.c:1428 src/stored/btape.c:1446 src/stored/btape.c:1645
-#: src/stored/btape.c:1657 src/stored/btape.c:1670 src/stored/btape.c:1687
+#: src/stored/btape.c:1430 src/stored/btape.c:1448 src/stored/btape.c:1647
+#: src/stored/btape.c:1659 src/stored/btape.c:1672 src/stored/btape.c:1689
 msgid "This is NOT correct!!!!"
 msgstr "Esto NO es correcto!"
 
-#: src/stored/btape.c:1434
+#: src/stored/btape.c:1436
 msgid ""
 "\n"
 "Now the important part, I am going to attempt to append to the tape.\n"
@@ -10931,7 +11010,7 @@ msgstr ""
 "Ahora la parte importante, voy a tratar de anexar a la cinta.\n"
 "\n"
 
-#: src/stored/btape.c:1441
+#: src/stored/btape.c:1443
 msgid ""
 "Done appending, there should be no I/O errors\n"
 "\n"
@@ -10939,20 +11018,20 @@ msgstr ""
 "Añadiendo hecho, no debería haber ningún error de E/S\n"
 "\n"
 
-#: src/stored/btape.c:1442
+#: src/stored/btape.c:1444
 msgid "Doing Bacula scan of blocks:\n"
 msgstr "Hacer Bacula exploración de los bloques:\n"
 
-#: src/stored/btape.c:1444
+#: src/stored/btape.c:1446
 msgid "End scanning the tape.\n"
 msgstr "Fin del escaneo de la cinta.\n"
 
-#: src/stored/btape.c:1445 src/stored/btape.c:1669
+#: src/stored/btape.c:1447 src/stored/btape.c:1671
 #, c-format
 msgid "We should be in file 4. I am at file %d. %s\n"
 msgstr "Deberíamos estar en el archivo 4. Estoy en el archivo %d. %s\n"
 
-#: src/stored/btape.c:1470
+#: src/stored/btape.c:1472
 msgid ""
 "\n"
 "Autochanger enabled, but no name or no command device specified.\n"
@@ -10961,7 +11040,7 @@ msgstr ""
 "Auto-cambiador habilitado, pero ningún nombre o comando de dispositivo "
 "especificado.\n"
 
-#: src/stored/btape.c:1474
+#: src/stored/btape.c:1476
 msgid ""
 "\n"
 "Ah, I see you have an autochanger configured.\n"
@@ -10973,7 +11052,7 @@ msgstr ""
 "Para probar el auto-cargador debe tener una cinta en blanco\n"
 " que yo pueda escribir en la Ranura 1.\n"
 
-#: src/stored/btape.c:1477
+#: src/stored/btape.c:1479
 msgid ""
 "\n"
 "Do you wish to continue with the Autochanger test? (y/n): "
@@ -10981,7 +11060,7 @@ msgstr ""
 "\n"
 "¿Desea continuar con la prueba del auto-cambiador? (y/n):"
 
-#: src/stored/btape.c:1484
+#: src/stored/btape.c:1486
 msgid ""
 "\n"
 "\n"
@@ -10993,74 +11072,74 @@ msgstr ""
 "=== Prueba Auto-cambiador ===\n"
 "\n"
 
-#: src/stored/btape.c:1493
+#: src/stored/btape.c:1495
 msgid "3301 Issuing autochanger \"loaded\" command.\n"
 msgstr "3301 Emitiendo comando auto-cambiador \"cargado\".\n"
 
-#: src/stored/btape.c:1502
+#: src/stored/btape.c:1504
 #, c-format
 msgid "3991 Bad autochanger command: %s\n"
 msgstr "3991 Malo comando cargador: %s\n"
 
-#: src/stored/btape.c:1503
+#: src/stored/btape.c:1505
 #, c-format
 msgid "3991 result=\"%s\": ERR=%s\n"
 msgstr "3991 resultado=\"%s\": ERR=%s\n"
 
-#: src/stored/btape.c:1507
+#: src/stored/btape.c:1509
 #, c-format
 msgid "Slot %d loaded. I am going to unload it.\n"
 msgstr "Ranura %d cargada. Voy a descargarla.\n"
 
-#: src/stored/btape.c:1509
+#: src/stored/btape.c:1511
 msgid "Nothing loaded in the drive. OK.\n"
 msgstr "Nada cargado en la unidad. OK.\n"
 
-#: src/stored/btape.c:1516
+#: src/stored/btape.c:1518
 #, c-format
 msgid "3302 Issuing autochanger \"unload %d %d\" command.\n"
 msgstr "3302 Emitiendo comando auto-cambiador \"descargar %d %d\".\n"
 
-#: src/stored/btape.c:1521
+#: src/stored/btape.c:1523
 #, c-format
 msgid "unload status=%s %d\n"
 msgstr "estado descargar=%s %d\n"
 
-#: src/stored/btape.c:1521
+#: src/stored/btape.c:1523
 msgid "Bad"
 msgstr "Malo"
 
-#: src/stored/btape.c:1524
+#: src/stored/btape.c:1526
 #, c-format
 msgid "3992 Bad autochanger command: %s\n"
 msgstr "3992 Malo comando cargador: %s\n"
 
-#: src/stored/btape.c:1525
+#: src/stored/btape.c:1527
 #, c-format
 msgid "3992 result=\"%s\": ERR=%s\n"
 msgstr "3992 resultado=\"%s\": ERR=%s\n"
 
-#: src/stored/btape.c:1535
+#: src/stored/btape.c:1537
 #, c-format
 msgid "3303 Issuing autochanger \"load %d %d\" command.\n"
 msgstr "3303 Emitiendo comando auto-cambiador \"cargar %d %d\".\n"
 
-#: src/stored/btape.c:1543
+#: src/stored/btape.c:1545
 #, c-format
 msgid "3303 Autochanger \"load %d %d\" status is OK.\n"
 msgstr "3303 Estado auto-cambiador \"carga %d %d\" está OK.\n"
 
-#: src/stored/btape.c:1547
+#: src/stored/btape.c:1549
 #, c-format
 msgid "3993 Bad autochanger command: %s\n"
 msgstr "3993 Malo comando cargador: %s\n"
 
-#: src/stored/btape.c:1548
+#: src/stored/btape.c:1550
 #, c-format
 msgid "3993 result=\"%s\": ERR=%s\n"
 msgstr "3993 resultado=\"%s\": ERR=%s\n"
 
-#: src/stored/btape.c:1563
+#: src/stored/btape.c:1565
 msgid ""
 "\n"
 "The test failed, probably because you need to put\n"
@@ -11072,12 +11151,12 @@ msgstr ""
 "un mayor tiempo de espera en su mtx-script en la clausula load).\n"
 "Añadiendo 30 segundos de espera y volviendo a intentarlo...\n"
 
-#: src/stored/btape.c:1576
+#: src/stored/btape.c:1578
 #, c-format
 msgid "Wrote EOF to %s\n"
 msgstr "Escribió EOF para %s\n"
 
-#: src/stored/btape.c:1580
+#: src/stored/btape.c:1582
 #, c-format
 msgid ""
 "\n"
@@ -11096,7 +11175,7 @@ msgstr ""
 "en su script mtx-cambiador dentro de de la clausula load).\n"
 "\n"
 
-#: src/stored/btape.c:1585
+#: src/stored/btape.c:1587
 msgid ""
 "\n"
 "The test autochanger worked!!\n"
@@ -11106,11 +11185,11 @@ msgstr ""
 "La prueba del auto-cargador funcionó!!\n"
 "\n"
 
-#: src/stored/btape.c:1596
+#: src/stored/btape.c:1598
 msgid "You must correct this error or the Autochanger will not work.\n"
 msgstr "Usted debe corregir este error o la Auto-cambiador no funcionará.\n"
 
-#: src/stored/btape.c:1614
+#: src/stored/btape.c:1616
 msgid ""
 "\n"
 "\n"
@@ -11131,30 +11210,30 @@ msgstr ""
 "adelante\n"
 "\n"
 
-#: src/stored/btape.c:1639
+#: src/stored/btape.c:1641
 msgid "Now forward spacing 1 file.\n"
 msgstr "Ahora espaciando 1 archivo hacia adelante.\n"
 
-#: src/stored/btape.c:1641 src/stored/btape.c:1653 src/stored/btape.c:1666
-#: src/stored/btape.c:1684 src/stored/btape.c:1860
+#: src/stored/btape.c:1643 src/stored/btape.c:1655 src/stored/btape.c:1668
+#: src/stored/btape.c:1686 src/stored/btape.c:1862
 #, c-format
 msgid "Bad status from fsr. ERR=%s\n"
 msgstr "Malo estado desde FSR. ERR=%s\n"
 
-#: src/stored/btape.c:1644
+#: src/stored/btape.c:1646
 #, c-format
 msgid "We should be in file 1. I am at file %d. %s\n"
 msgstr "Debemos estar en el archivo 1. Estoy en el archivo %d. %s\n"
 
-#: src/stored/btape.c:1651
+#: src/stored/btape.c:1653
 msgid "Now forward spacing 2 files.\n"
 msgstr "Ahora espaciando 2 archivo hacia adelante.\n"
 
-#: src/stored/btape.c:1664
+#: src/stored/btape.c:1666
 msgid "Now forward spacing 4 files.\n"
 msgstr "Ahora espaciando 4 archivo hacia adelante.\n"
 
-#: src/stored/btape.c:1676
+#: src/stored/btape.c:1678
 msgid ""
 "The test worked this time. Please add:\n"
 "\n"
@@ -11168,16 +11247,16 @@ msgstr ""
 "\n"
 "a su recurso Device para esta unidad.\n"
 
-#: src/stored/btape.c:1682
+#: src/stored/btape.c:1684
 msgid "Now forward spacing 1 more file.\n"
 msgstr "Ahora espaciando un archivo mas hacia adelante.\n"
 
-#: src/stored/btape.c:1686
+#: src/stored/btape.c:1688
 #, c-format
 msgid "We should be in file 5. I am at file %d. %s\n"
 msgstr "Debemos estar en el archivo 5. Estoy en el archivo %d. %s\n"
 
-#: src/stored/btape.c:1691
+#: src/stored/btape.c:1693
 msgid ""
 "\n"
 "=== End Forward space files test ===\n"
@@ -11187,7 +11266,7 @@ msgstr ""
 "=== Finalizo prueba de Espaciar archivos hacia adelante ===\n"
 "\n"
 
-#: src/stored/btape.c:1695
+#: src/stored/btape.c:1697
 msgid ""
 "\n"
 "The forward space file test failed.\n"
@@ -11195,7 +11274,7 @@ msgstr ""
 "\n"
 "Fallida la prueba de espaciar archivos hacia adelante.\n"
 
-#: src/stored/btape.c:1697
+#: src/stored/btape.c:1699
 msgid ""
 "You have Fast Forward Space File enabled.\n"
 "I am turning it off then retrying the test.\n"
@@ -11203,7 +11282,7 @@ msgstr ""
 "usted tiene habilitado Espaciar Archivos Hacia Adelante Rápido.\n"
 "Voy deshabilitarlo y luego volver a intentar la prueba.\n"
 
-#: src/stored/btape.c:1703
+#: src/stored/btape.c:1705
 msgid ""
 "You must correct this error or Bacula will not work.\n"
 "Some systems, e.g. OpenBSD, require you to set\n"
@@ -11215,7 +11294,7 @@ msgstr ""
 "Use MTIOCGET = no\n"
 "en su recurso de dispositivo. Utilizar con precaución.\n"
 
-#: src/stored/btape.c:1737
+#: src/stored/btape.c:1739
 msgid ""
 "\n"
 "Append test failed. Attempting again.\n"
@@ -11231,7 +11310,7 @@ msgstr ""
 "y volviendo a intentar la prueba de añadir.\n"
 "\n"
 
-#: src/stored/btape.c:1745
+#: src/stored/btape.c:1747
 msgid ""
 "\n"
 "\n"
@@ -11251,7 +11330,7 @@ msgstr ""
 " Fast Forward Space File = No\n"
 "a su recurso de Device en el archivo configuración del Storage.\n"
 
-#: src/stored/btape.c:1752
+#: src/stored/btape.c:1754
 msgid ""
 "\n"
 "\n"
@@ -11261,7 +11340,7 @@ msgstr ""
 "\n"
 "Parece que *NO* se ha corregido el problema.\n"
 
-#: src/stored/btape.c:1757
+#: src/stored/btape.c:1759
 msgid ""
 "\n"
 "\n"
@@ -11273,7 +11352,7 @@ msgstr ""
 "Parece que ha fallado el añadir.Intentando de nuevo.\n"
 "Configurando  \"BSF en EOM = yes\" y reintentando probar añadir.\n"
 
-#: src/stored/btape.c:1762
+#: src/stored/btape.c:1764
 msgid ""
 "\n"
 "\n"
@@ -11295,7 +11374,7 @@ msgstr ""
 "\n"
 "en su recurso Device en el archivo de configuración del Storage.\n"
 
-#: src/stored/btape.c:1773
+#: src/stored/btape.c:1775
 msgid ""
 "\n"
 "Append test failed.\n"
@@ -11346,7 +11425,7 @@ msgstr ""
 "Use MTIOCGET= no\n"
 "en su recurso de dispositivo. Utilice con precaución.\n"
 
-#: src/stored/btape.c:1795
+#: src/stored/btape.c:1797
 msgid ""
 "\n"
 "The above Bacula scan should have output identical to what follows.\n"
@@ -11390,99 +11469,99 @@ msgstr ""
 "la cinta.\n"
 "\n"
 
-#: src/stored/btape.c:1838
+#: src/stored/btape.c:1840
 #, c-format
 msgid "Bad status from fsf. ERR=%s\n"
 msgstr "Malo estado desde FSF. ERR=%s\n"
 
-#: src/stored/btape.c:1842
+#: src/stored/btape.c:1844
 msgid "Forward spaced 1 file.\n"
 msgstr "Espaciado 1 archivo hacia adelante.\n"
 
-#: src/stored/btape.c:1845
+#: src/stored/btape.c:1847
 #, c-format
 msgid "Forward spaced %d files.\n"
 msgstr "Espaciados %d archivos hacia adelante.\n"
 
-#: src/stored/btape.c:1864
+#: src/stored/btape.c:1866
 msgid "Forward spaced 1 record.\n"
 msgstr "Espaciado 1 registro hacia adelante.\n"
 
-#: src/stored/btape.c:1867
+#: src/stored/btape.c:1869
 #, c-format
 msgid "Forward spaced %d records.\n"
 msgstr "Espaciados %d registros hacia adelante.\n"
 
-#: src/stored/btape.c:1912
+#: src/stored/btape.c:1914
 #, c-format
 msgid "Wrote one record of %d bytes.\n"
 msgstr "Escribió un registro de %d bytes.\n"
 
-#: src/stored/btape.c:1914
+#: src/stored/btape.c:1916
 msgid "Wrote block to device.\n"
 msgstr "Escribió bloques al dispositivo.\n"
 
-#: src/stored/btape.c:1928
+#: src/stored/btape.c:1930
 msgid "Enter length to read: "
 msgstr "Introduzca la longitud para leer:"
 
-#: src/stored/btape.c:1933
+#: src/stored/btape.c:1935
 msgid "Bad length entered, using default of 1024 bytes.\n"
 msgstr "Mala longitud introducida, utilizando 1024 bytes por defecto.\n"
 
-#: src/stored/btape.c:1942
+#: src/stored/btape.c:1944
 #, c-format
 msgid "Read of %d bytes gives stat=%d. ERR=%s\n"
 msgstr "Lectura de %d bytes obtuvo stat=%d. ERR=%s\n"
 
-#: src/stored/btape.c:1965 src/stored/btape.c:2014
+#: src/stored/btape.c:1967 src/stored/btape.c:2016
 #, c-format
 msgid "End of tape\n"
 msgstr "Fin de la cinta\n"
 
-#: src/stored/btape.c:1970
+#: src/stored/btape.c:1972
 #, c-format
 msgid "Starting scan at file %u\n"
 msgstr "Iniciando escaneo en el archivo %u\n"
 
-#: src/stored/btape.c:1977
+#: src/stored/btape.c:1979
 #, c-format
 msgid "Bad status from read %d. ERR=%s\n"
 msgstr "Malo estado desde lectura %d. ERR=%s\n"
 
-#: src/stored/btape.c:1980 src/stored/btape.c:1994 src/stored/btape.c:2058
-#: src/stored/btape.c:2070 src/stored/btape.c:2083 src/stored/btape.c:2099
+#: src/stored/btape.c:1982 src/stored/btape.c:1996 src/stored/btape.c:2060
+#: src/stored/btape.c:2072 src/stored/btape.c:2085 src/stored/btape.c:2101
 #, c-format
 msgid "1 block of %d bytes in file %d\n"
 msgstr "1 bloque de %d bytes en el archivo %d\n"
 
-#: src/stored/btape.c:1983 src/stored/btape.c:1997 src/stored/btape.c:2061
-#: src/stored/btape.c:2073 src/stored/btape.c:2086 src/stored/btape.c:2102
+#: src/stored/btape.c:1985 src/stored/btape.c:1999 src/stored/btape.c:2063
+#: src/stored/btape.c:2075 src/stored/btape.c:2088 src/stored/btape.c:2104
 #, c-format
 msgid "%d blocks of %d bytes in file %d\n"
 msgstr "%d bloques de %d bytes en archivo %d\n"
 
-#: src/stored/btape.c:2005 src/stored/btape.c:2077
+#: src/stored/btape.c:2007 src/stored/btape.c:2079
 #, c-format
 msgid "End of File mark.\n"
 msgstr "Fin de la marca de archivo.\n"
 
-#: src/stored/btape.c:2026 src/stored/btape.c:2130
+#: src/stored/btape.c:2028 src/stored/btape.c:2132
 #, c-format
 msgid "Total files=%d, blocks=%d, bytes = %s\n"
 msgstr "Total de archivos=%d, bloques=%d, bytes = %s\n"
 
-#: src/stored/btape.c:2090
+#: src/stored/btape.c:2092
 #, c-format
 msgid "Short block read.\n"
 msgstr "Leer bloque corto.\n"
 
-#: src/stored/btape.c:2093
+#: src/stored/btape.c:2095
 #, c-format
 msgid "Error reading block. ERR=%s\n"
 msgstr "Error leyendo el bloque. ERR=%s\n"
 
-#: src/stored/btape.c:2117
+#: src/stored/btape.c:2119
 #, c-format
 msgid ""
 "Block=%u file,blk=%u,%u blen=%u First rec FI=%s SessId=%u SessTim=%u Strm=%s "
@@ -11491,12 +11570,12 @@ msgstr ""
 "Bloque=%u archivo,blk=%u,%u blen=%u Primero rec FI=%s SessId=%u SessTim=%u "
 "Strm=%s rlen=%d\n"
 
-#: src/stored/btape.c:2139
+#: src/stored/btape.c:2141
 #, c-format
 msgid "Device status: %u. ERR=%s\n"
 msgstr "Estado del dispositivo: %u. ERR=%s\n"
 
-#: src/stored/btape.c:2171
+#: src/stored/btape.c:2173
 #, c-format
 msgid ""
 "\n"
@@ -11543,7 +11622,7 @@ msgstr ""
 "\n"
 "Esto puede tomar mucho tiempo - horas! ...\n"
 
-#: src/stored/btape.c:2189
+#: src/stored/btape.c:2191
 msgid ""
 "Do you want to run the simplified test (s) with one tape\n"
 "or the complete multiple tape (m) test: (s/m) "
@@ -11551,73 +11630,73 @@ msgstr ""
 "¿Desea ejecutar la prueba simplificada (s) con una cinta\n"
 "o la prueba completa con múltiples (m) cintas?: (s/m)"
 
-#: src/stored/btape.c:2192
+#: src/stored/btape.c:2194
 msgid "Simple test (single tape) selected.\n"
 msgstr "Prueba simple (una sola cinta) seleccionada.\n"
 
-#: src/stored/btape.c:2195
+#: src/stored/btape.c:2197
 msgid "Multiple tape test selected.\n"
 msgstr "Múltiples cintas de prueba seleccionados.\n"
 
-#: src/stored/btape.c:2237
+#: src/stored/btape.c:2239
 msgid "Wrote Start of Session label.\n"
 msgstr "Escribe la etiqueta de Inicio de Sesión.\n"
 
-#: src/stored/btape.c:2256
+#: src/stored/btape.c:2258
 #, c-format
 msgid "%s Begin writing Bacula records to tape ...\n"
 msgstr "%s Empezar a escribir registros Bacula en cinta ...\n"
 
-#: src/stored/btape.c:2258
+#: src/stored/btape.c:2260
 #, c-format
 msgid "%s Begin writing Bacula records to first tape ...\n"
 msgstr "%s Empezar a escribir registros Bacula en la primera cinta ...\n"
 
-#: src/stored/btape.c:2284
+#: src/stored/btape.c:2286
 msgid "Flush block failed.\n"
 msgstr "Fallo Flush bloque.\n"
 
-#: src/stored/btape.c:2298
+#: src/stored/btape.c:2300
 #, c-format
 msgid "Wrote block=%u, file,blk=%u,%u VolBytes=%s rate=%sB/s\n"
 msgstr "Escribió bloque=%u, archivo,blk=%u,%u VolBytes=%s tasa=%sB/s\n"
 
-#: src/stored/btape.c:2309
+#: src/stored/btape.c:2311
 #, c-format
 msgid "%s Flush block, write EOF\n"
 msgstr "%s Flush bloque, escribir EOF\n"
 
-#: src/stored/btape.c:2318
+#: src/stored/btape.c:2320
 msgid "Wrote 1000 blocks on second tape. Done.\n"
 msgstr "Escribió 1000 bloques en segunda cinta. Hecho.\n"
 
-#: src/stored/btape.c:2323
+#: src/stored/btape.c:2325
 msgid "Not OK\n"
 msgstr "No OK\n"
 
-#: src/stored/btape.c:2347
+#: src/stored/btape.c:2349
 msgid "Job canceled.\n"
 msgstr "Job cancelado.\n"
 
-#: src/stored/btape.c:2358
+#: src/stored/btape.c:2360
 msgid "Set ok=false after write_block_to_device.\n"
 msgstr "Establecer ok=false después de write_block_to_device.\n"
 
-#: src/stored/btape.c:2362
+#: src/stored/btape.c:2364
 msgid "Wrote End of Session label.\n"
 msgstr "Escribió etiqueta de Fin de Sesión.\n"
 
-#: src/stored/btape.c:2386
+#: src/stored/btape.c:2388
 #, c-format
 msgid "Wrote state file last_block_num1=%d last_block_num2=%d\n"
 msgstr "Escribió archivo de estado last_block_num1=%d last_block_num2=%d\n"
 
-#: src/stored/btape.c:2390
+#: src/stored/btape.c:2392
 #, c-format
 msgid "Could not create state file: %s ERR=%s\n"
 msgstr "No se puede crear archivo de estado: %s ERR=%s\n"
 
-#: src/stored/btape.c:2401
+#: src/stored/btape.c:2403
 #, c-format
 msgid ""
 "\n"
@@ -11628,7 +11707,7 @@ msgstr ""
 "\n"
 "%s Hecho llenado de cinta en %d:%d. Ahora empezando a releer la cinta ...\n"
 
-#: src/stored/btape.c:2404
+#: src/stored/btape.c:2406
 #, c-format
 msgid ""
 "\n"
@@ -11640,16 +11719,16 @@ msgstr ""
 "%s Hecho llenado de cintas en %d:%d. Ahora empezando a releer la primera "
 "cinta ...\n"
 
-#: src/stored/btape.c:2410
+#: src/stored/btape.c:2412
 msgid "do_unfill failed.\n"
 msgstr "do_unfill fallido.\n"
 
-#: src/stored/btape.c:2415
+#: src/stored/btape.c:2417
 #, c-format
 msgid "%s: Error during test.\n"
 msgstr "%s: Error durante la prueba.\n"
 
-#: src/stored/btape.c:2450
+#: src/stored/btape.c:2452
 msgid ""
 "\n"
 "The state file level has changed. You must redo\n"
@@ -11659,7 +11738,7 @@ msgstr ""
 "El estado del archivo de nivel de ha cambiado. Usted debe rehacer\n"
 "el comando llenar.\n"
 
-#: src/stored/btape.c:2457
+#: src/stored/btape.c:2459
 #, c-format
 msgid ""
 "\n"
@@ -11670,40 +11749,40 @@ msgstr ""
 "No se pudo encontrar el archivo de estado: %s ERR=%s\n"
 "Usted debe rehacer el comando llenar.\n"
 
-#: src/stored/btape.c:2523
+#: src/stored/btape.c:2525
 msgid "Mount first tape. Press enter when ready: "
 msgstr "Monte primera cinta. Cuando esté listo, presione ENTER:"
 
-#: src/stored/btape.c:2539
+#: src/stored/btape.c:2541
 msgid "Rewinding.\n"
 msgstr "Rebobinado.\n"
 
-#: src/stored/btape.c:2544
+#: src/stored/btape.c:2546
 #, c-format
 msgid "Reading the first 10000 records from %u:%u.\n"
 msgstr "Leyendo los primeros 10.000 registros desde %u:%u.\n"
 
-#: src/stored/btape.c:2548 src/stored/btape.c:2616
+#: src/stored/btape.c:2550 src/stored/btape.c:2618
 #, c-format
 msgid "Reposition from %u:%u to %u:%u\n"
 msgstr "Reposición desde %u:%u para %u:%u\n"
 
-#: src/stored/btape.c:2551 src/stored/btape.c:2603 src/stored/btape.c:2619
+#: src/stored/btape.c:2553 src/stored/btape.c:2605 src/stored/btape.c:2621
 #, c-format
 msgid "Reposition error. ERR=%s\n"
 msgstr "Error de reposición. ERR=%s\n"
 
-#: src/stored/btape.c:2554
+#: src/stored/btape.c:2556
 #, c-format
 msgid "Reading block %u.\n"
 msgstr "Leyendo bloque %u.\n"
 
-#: src/stored/btape.c:2556 src/stored/btape.c:2608 src/stored/btape.c:2624
+#: src/stored/btape.c:2558 src/stored/btape.c:2610 src/stored/btape.c:2626
 #, c-format
 msgid "Error reading block: ERR=%s\n"
 msgstr "Error leyendo bloque: ERR=%s.\n"
 
-#: src/stored/btape.c:2561
+#: src/stored/btape.c:2563
 msgid ""
 "\n"
 "The last block on the tape matches. Test succeeded.\n"
@@ -11713,7 +11792,7 @@ msgstr ""
 "El último bloque de la cinta concuerdan. Prueba Satisfactoria.\n"
 "\n"
 
-#: src/stored/btape.c:2564
+#: src/stored/btape.c:2566
 msgid ""
 "\n"
 "The last block of the first tape matches.\n"
@@ -11723,21 +11802,21 @@ msgstr ""
 "El último bloque de la primera cinta concuerdan.\n"
 "\n"
 
-#: src/stored/btape.c:2588
+#: src/stored/btape.c:2590
 msgid "Mount second tape. Press enter when ready: "
 msgstr "Monte la segunda cinta. Cuando esté listo, presione ENTER:"
 
-#: src/stored/btape.c:2601
+#: src/stored/btape.c:2603
 #, c-format
 msgid "Reposition from %u:%u to 0:1\n"
 msgstr "Reposición desde %u:%u para 0:1\n"
 
-#: src/stored/btape.c:2606 src/stored/btape.c:2622
+#: src/stored/btape.c:2608 src/stored/btape.c:2624
 #, c-format
 msgid "Reading block %d.\n"
 msgstr "Leyendo bloque %d.\n"
 
-#: src/stored/btape.c:2612
+#: src/stored/btape.c:2614
 msgid ""
 "\n"
 "The first block on the second tape matches.\n"
@@ -11747,7 +11826,7 @@ msgstr ""
 "El primer bloque de la segunda cinta concuerdan.\n"
 "\n"
 
-#: src/stored/btape.c:2628
+#: src/stored/btape.c:2630
 msgid ""
 "\n"
 "The last block on the second tape matches. Test succeeded.\n"
@@ -11757,20 +11836,20 @@ msgstr ""
 "El último bloque de la segunda cinta concuerdan. Prueba Satisfactoria.\n"
 "\n"
 
-#: src/stored/btape.c:2645
+#: src/stored/btape.c:2647
 #, c-format
 msgid "10000 records read now at %d:%d\n"
 msgstr "Leer 10000 registros ahora desde %d:%d\n"
 
-#: src/stored/btape.c:2671 src/stored/btape.c:2682 src/stored/btape.c:2727
+#: src/stored/btape.c:2673 src/stored/btape.c:2684 src/stored/btape.c:2729
 msgid "Last block written"
 msgstr "Ultimo bloque escrito"
 
-#: src/stored/btape.c:2673 src/stored/btape.c:2683
+#: src/stored/btape.c:2675 src/stored/btape.c:2685
 msgid "Block read back"
 msgstr "Bloque que leer"
 
-#: src/stored/btape.c:2674
+#: src/stored/btape.c:2676
 #, c-format
 msgid ""
 "\n"
@@ -11781,7 +11860,7 @@ msgstr ""
 "\n"
 "Los bloques difieren en %u byte\n"
 
-#: src/stored/btape.c:2675
+#: src/stored/btape.c:2677
 msgid ""
 "\n"
 "\n"
@@ -11797,129 +11876,129 @@ msgstr ""
 "Esto debe ser corregido antes de utilizar Bacula\n"
 "para escribir volúmenes multi-cinta !!!!\n"
 
-#: src/stored/btape.c:2711
+#: src/stored/btape.c:2713
 #, c-format
 msgid "Last block at: %u:%u this_dev_block_num=%d\n"
 msgstr "Último bloque en: %u:%u this_dev_block_num=%d\n"
 
-#: src/stored/btape.c:2725
+#: src/stored/btape.c:2727
 #, c-format
 msgid "Block not written: FileIndex=%u blk_block=%u Size=%u\n"
 msgstr "Bloque no está escrito: FileIndex=%u blk_block=%u Tamaño=%u\n"
 
-#: src/stored/btape.c:2729
+#: src/stored/btape.c:2731
 msgid "Block not written"
 msgstr "Bloque no escrito"
 
-#: src/stored/btape.c:2744
+#: src/stored/btape.c:2746
 #, c-format
 msgid "End of tape %d:%d. Volume Bytes=%s. Write rate = %sB/s\n"
 msgstr ""
 "Fin de la cinta %d:%d. Volumen Bytes=%s. Velocidad de Escritura = %sB/s\n"
 
-#: src/stored/btape.c:2795
+#: src/stored/btape.c:2797
 msgid "Test writing blocks of 64512 bytes to tape.\n"
 msgstr "Prueba de escritura de bloques de 64512 bytes a cinta.\n"
 
-#: src/stored/btape.c:2797
+#: src/stored/btape.c:2799
 msgid "How many blocks do you want to write? (1000): "
 msgstr "¿Cuántos bloques usted quiere escribir? (1000):"
 
-#: src/stored/btape.c:2814
+#: src/stored/btape.c:2816
 #, c-format
 msgid "Begin writing %d Bacula blocks to tape ...\n"
 msgstr "Empezando a escribir %d bloques Bacula en la cinta ...\n"
 
-#: src/stored/btape.c:2857
+#: src/stored/btape.c:2859
 #, c-format
 msgid "Begin writing raw blocks of %u bytes.\n"
 msgstr "Empezando a escribir bloques raw de %u bytes.\n"
 
-#: src/stored/btape.c:2888
+#: src/stored/btape.c:2890
 msgid "test autochanger"
 msgstr "prueba Autochanger"
 
-#: src/stored/btape.c:2889
+#: src/stored/btape.c:2891
 msgid "backspace file"
 msgstr "archivo de retroceso"
 
-#: src/stored/btape.c:2890
+#: src/stored/btape.c:2892
 msgid "backspace record"
 msgstr "registro de retroceso"
 
-#: src/stored/btape.c:2891
+#: src/stored/btape.c:2893
 msgid "list device capabilities"
 msgstr "lista de las capacidades del dispositivo"
 
-#: src/stored/btape.c:2892
+#: src/stored/btape.c:2894
 msgid "clear tape errors"
 msgstr "Errores Cinta de Limpieza"
 
-#: src/stored/btape.c:2893
+#: src/stored/btape.c:2895
 msgid "go to end of Bacula data for append"
 msgstr "ir al final de los datos de Bacula para añadir"
 
-#: src/stored/btape.c:2894
+#: src/stored/btape.c:2896
 msgid "go to the physical end of medium"
 msgstr "ir al final del medio físico"
 
-#: src/stored/btape.c:2895
+#: src/stored/btape.c:2897
 msgid "fill tape, write onto second volume"
 msgstr "llenar cinta, escribir en segundo volumen"
 
-#: src/stored/btape.c:2896
+#: src/stored/btape.c:2898
 msgid "read filled tape"
 msgstr "leer cinta llena"
 
-#: src/stored/btape.c:2897
+#: src/stored/btape.c:2899
 msgid "forward space a file"
 msgstr "espaciar un archivo hacia adelante"
 
-#: src/stored/btape.c:2898
+#: src/stored/btape.c:2900
 msgid "forward space a record"
 msgstr "espaciar un registro hacia adelante"
 
-#: src/stored/btape.c:2899
+#: src/stored/btape.c:2901
 msgid "print this command"
 msgstr "imprimir este comando"
 
-#: src/stored/btape.c:2900
+#: src/stored/btape.c:2902
 msgid "write a Bacula label to the tape"
 msgstr "escribir una etiqueta Bacula en la cinta"
 
-#: src/stored/btape.c:2901
+#: src/stored/btape.c:2903
 msgid "load a tape"
 msgstr "cargar una cinta"
 
-#: src/stored/btape.c:2902
+#: src/stored/btape.c:2904
 msgid "quit btape"
 msgstr "salir btape"
 
-#: src/stored/btape.c:2903
+#: src/stored/btape.c:2905
 msgid "use write() to fill tape"
 msgstr "usar write() para llenar la cinta"
 
-#: src/stored/btape.c:2904
+#: src/stored/btape.c:2906
 msgid "read and print the Bacula tape label"
 msgstr "leer e imprimir la etiqueta Bacula de la cinta"
 
-#: src/stored/btape.c:2905
+#: src/stored/btape.c:2907
 msgid "test record handling functions"
 msgstr "prueba de manejo de registro de funciones"
 
-#: src/stored/btape.c:2906
+#: src/stored/btape.c:2908
 msgid "rewind the tape"
 msgstr "rebobinar la cinta"
 
-#: src/stored/btape.c:2907
+#: src/stored/btape.c:2909
 msgid "read() tape block by block to EOT and report"
 msgstr "leer() cinta bloque por bloque para EOT y reportar"
 
-#: src/stored/btape.c:2908
+#: src/stored/btape.c:2910
 msgid "Bacula read block by block to EOT and report"
 msgstr "Bacula leer bloque por bloque para EOT y reportar"
 
-#: src/stored/btape.c:2909
+#: src/stored/btape.c:2911
 msgid ""
 "[file_size=n(GB)|nb_file=3|skip_zero|skip_random|skip_raw|skip_block] report "
 "drive speed"
@@ -11927,45 +12006,45 @@ msgstr ""
 "[file_size=n(GB)|nb_file=3|skip_zero|skip_random|skip_raw|skip_block] "
 "informe de velocidad de la unidad"
 
-#: src/stored/btape.c:2910
+#: src/stored/btape.c:2912
 msgid "print tape status"
 msgstr "imprimir estado de la cinta"
 
-#: src/stored/btape.c:2911
+#: src/stored/btape.c:2913
 msgid "General test Bacula tape functions"
 msgstr "Prueba general de las funciones de cinta Bacula"
 
-#: src/stored/btape.c:2912
+#: src/stored/btape.c:2914
 msgid "write an EOF on the tape"
 msgstr "escribir un EOF en la cinta"
 
-#: src/stored/btape.c:2913
+#: src/stored/btape.c:2915
 msgid "write a single Bacula block"
 msgstr "escribir un único bloque de Bacula"
 
-#: src/stored/btape.c:2914
+#: src/stored/btape.c:2916
 msgid "read a single record"
 msgstr "leer un solo registro"
 
-#: src/stored/btape.c:2915
+#: src/stored/btape.c:2917
 msgid "read a single Bacula block"
 msgstr "leer un único bloque de Bacula"
 
-#: src/stored/btape.c:2916
+#: src/stored/btape.c:2918
 msgid "quick fill command"
 msgstr "comando de llenado rápido"
 
-#: src/stored/btape.c:2937
+#: src/stored/btape.c:2939
 #, c-format
 msgid "\"%s\" is an invalid command\n"
 msgstr "\"%s\" es un comando inválido\n"
 
-#: src/stored/btape.c:2946
+#: src/stored/btape.c:2948
 #, c-format
 msgid "Interactive commands:\n"
 msgstr "Comandos interactivos:\n"
 
-#: src/stored/btape.c:2957
+#: src/stored/btape.c:2959
 #, c-format
 msgid ""
 "\n"
@@ -11996,26 +12075,26 @@ msgstr ""
 " -? imprime esta mensaje.\n"
 "\n"
 
-#: src/stored/btape.c:3045
+#: src/stored/btape.c:3047
 #, c-format
 msgid "Mount second Volume on device %s and press return when ready: "
 msgstr ""
 "Monte el segundo volumen en el dispositivo %s y pulse ENTER cuando esté "
 "listo:"
 
-#: src/stored/btape.c:3073
+#: src/stored/btape.c:3075
 #, c-format
 msgid "Mount blank Volume on device %s and press return when ready: "
 msgstr ""
 "Monte un volumen en blanco en el dispositivo %s y pulse ENTER cuando esté "
 "listo:"
 
-#: src/stored/btape.c:3093
+#: src/stored/btape.c:3095
 #, c-format
 msgid "End of Volume \"%s\" %d records.\n"
 msgstr "Fin del Volumen \"%s\" %d registros.\n"
 
-#: src/stored/btape.c:3107
+#: src/stored/btape.c:3109
 #, c-format
 msgid "Read block=%u, VolBytes=%s rate=%sB/s\n"
 msgstr "Leer bloque=%u, VolBytes=%s velocidad=%sB/s\n"
@@ -12090,7 +12169,7 @@ msgstr "error timedwait pthread. ERR=%s\n"
 msgid "JobId=%s, Job %s waiting to reserve a device.\n"
 msgstr "JobId=%s, Job %s esperando para reservar un dispositivo.\n"
 
-#: src/stored/block.c:89
+#: src/stored/block.c:102
 #, c-format
 msgid ""
 "Dump block %s %x: size=%d BlkNum=%d\n"
@@ -12099,17 +12178,17 @@ msgstr ""
 "Volcado de bloque %s %x: tamaño=%d BlkNum=%d\n"
 " Hdrcksum=%x cksum=%x\n"
 
-#: src/stored/block.c:102
+#: src/stored/block.c:115
 #, c-format
 msgid "   Rec: VId=%u VT=%u FI=%s Strm=%s len=%d p=%x\n"
 msgstr "Rec: VId=%u VT=%u FI=%s Strm=%s len=%d p=%x\n"
 
-#: src/stored/block.c:158
+#: src/stored/block.c:171
 #, c-format
 msgid "%d block read errors not printed.\n"
 msgstr "%d errores de lectura de bloques no impresos.\n"
 
-#: src/stored/block.c:248 src/stored/block.c:264 src/stored/block.c:274
+#: src/stored/block.c:264 src/stored/block.c:280 src/stored/block.c:290
 #, c-format
 msgid ""
 "Volume data error at %u:%u! Wanted ID: \"%s\", got \"%s\". Buffer "
@@ -12118,7 +12197,7 @@ msgstr ""
 "Error de volumen de datos en %u:%u! Se busca ID: \"%s\",se obtiene \"%s\". "
 "Buffer descartado.\n"
 
-#: src/stored/block.c:289
+#: src/stored/block.c:305
 #, c-format
 msgid ""
 "Volume data error at %u:%u! Block length %u is insane (too large), probably "
@@ -12127,7 +12206,7 @@ msgstr ""
 "Error de datos de volumen en %u:%u! Longitud de bloque %u es demente "
 "(demasiado grande), probablemente debido a un archivo malo.\n"
 
-#: src/stored/block.c:315
+#: src/stored/block.c:331
 #, c-format
 msgid ""
 "Volume data error at %u:%u!\n"
@@ -12136,65 +12215,70 @@ msgstr ""
 "Error de datos de Volumen en %u:%u!\n"
 "Bloque checksum desajustado en bloque=%u len=%d: calc=%x blk=%x\n"
 
-#: src/stored/block.c:434
+#: src/stored/block.c:452
 #, fuzzy, c-format
 msgid "Cannot write block. Device at EOM. dev=%s\n"
 msgstr "No se pudo escribir bloque. Dispositivo en EOM.\n"
 
-#: src/stored/block.c:439
+#: src/stored/block.c:458
 #, fuzzy, c-format
 msgid "Attempt to write on read-only Volume. dev=%s\n"
 msgstr "Intento de escritura en volumen de sólo lectura.\n"
 
-#: src/stored/block.c:444
+#: src/stored/block.c:464
 #, fuzzy, c-format
 msgid "Attempt to write on closed device=%s\n"
 msgstr "Intento de escritura en volumen de sólo lectura.\n"
 
-#: src/stored/block.c:491
+#: src/stored/block.c:513
 #, c-format
 msgid "User defined maximum volume capacity %s exceeded on device %s.\n"
 msgstr ""
 "Capacidad máxima %s de volumen definido por el usuario superado en el "
 "dispositivo %s.\n"
 
-#: src/stored/block.c:506
+#: src/stored/block.c:528
 #, c-format
 msgid "Unable to write EOF. ERR=%s\n"
 msgstr "No se pudo escribir EOF. ERR=%s\n"
 
-#: src/stored/block.c:532 src/stored/block.c:557
+#: src/stored/block.c:554 src/stored/block.c:588
 msgid "Write block header zeroed.\n"
 msgstr "Escribir cabecera de bloque cero.\n"
 
-#: src/stored/block.c:576
+#: src/stored/block.c:580
+#, c-format
+msgid "Block checksum changed during write: before=%ud after=%ud\n"
+msgstr ""
+
+#: src/stored/block.c:607
 #, c-format
 msgid "Write error at %u:%u on device %s. ERR=%s.\n"
 msgstr "Error de escritura en %u:%u en el dispositivo %s. ERR=%s.\n"
 
-#: src/stored/block.c:583
+#: src/stored/block.c:614
 #, c-format
 msgid "End of Volume \"%s\" at %u:%u on device %s. Write of %u bytes got %d.\n"
 msgstr ""
 "Fin de Volumen \"%s\" en %u:%u en el dispositivo %s. Escribió %u bytes "
 "obtuvo %d.\n"
 
-#: src/stored/block.c:664 src/stored/block.c:670
+#: src/stored/block.c:695 src/stored/block.c:701
 #, c-format
 msgid "Backspace file at EOT failed. ERR=%s\n"
 msgstr "Fallo en retroceso de archivo desde EOT. ERR=%s\n"
 
-#: src/stored/block.c:677
+#: src/stored/block.c:708
 #, c-format
 msgid "Backspace record at EOT failed. ERR=%s\n"
 msgstr "Fallo en retroceso de registro desde EOT. ERR=%s\n"
 
-#: src/stored/block.c:694
+#: src/stored/block.c:725
 #, c-format
 msgid "Re-read last block at EOT failed. ERR=%s"
 msgstr "Fallo en re-lectura del último bloque en EOT. ERR=%s"
 
-#: src/stored/block.c:704
+#: src/stored/block.c:735
 #, c-format
 msgid ""
 "Re-read of last block: block numbers differ by more than one.\n"
@@ -12204,7 +12288,7 @@ msgstr ""
 "Probable mala configuración de la cinta y pérdida de datos. Leer bloque=%u "
 "Espera bloque=%u.\n"
 
-#: src/stored/block.c:709
+#: src/stored/block.c:740
 #, c-format
 msgid ""
 "Re-read of last block OK, but block numbers differ. Read block=%u Want block="
@@ -12213,11 +12297,11 @@ msgstr ""
 "Re-lectura del último bloque OK, pero número de bloque difieren. Leer bloque="
 "%u Espera bloque=%u.\n"
 
-#: src/stored/block.c:713
+#: src/stored/block.c:744
 msgid "Re-read of last block succeeded.\n"
 msgstr "Éxito en re-lectura del último bloque.\n"
 
-#: src/stored/block.c:745
+#: src/stored/block.c:777
 #, c-format
 msgid ""
 "Error writing final EOF to tape. This Volume may not be readable.\n"
@@ -12226,7 +12310,7 @@ msgstr ""
 "Error al escribir EOF final a la cinta. Este volumen puede no ser legible.\n"
 "%s"
 
-#: src/stored/block.c:759
+#: src/stored/block.c:791
 #, c-format
 msgid ""
 "Error writing final part to DVD. This Volume may not be readable.\n"
@@ -12235,7 +12319,12 @@ msgstr ""
 "Error al escribir la parte final a DVD. Este volumen puede no ser legible.\n"
 "%s"
 
-#: src/stored/block.c:861
+#: src/stored/block.c:801
+#, fuzzy
+msgid "Error sending Volume info to Director.\n"
+msgstr "Error al obtener Volumen información: %s"
+
+#: src/stored/block.c:896
 #, c-format
 msgid ""
 "Error while writing, current part number is less than the total number of "
@@ -12244,12 +12333,12 @@ msgstr ""
 "Error al escribir, número de parte actual es menor que el número total de "
 "partes (%d/%d, dispositivo=%s)\n"
 
-#: src/stored/block.c:869
+#: src/stored/block.c:904
 #, c-format
 msgid "Unable to open device next part %s: ERR=%s\n"
 msgstr "No se puede abrir próxima parte %s del dispositivo: ERR=%s\n"
 
-#: src/stored/block.c:889
+#: src/stored/block.c:924
 #, c-format
 msgid ""
 "End of Volume \"%s\" at %u:%u on device %s (part_size=%s, free_space=%s, "
@@ -12258,7 +12347,7 @@ msgstr ""
 "Fin de Volumen \"%s\" en %u:%u en el dispositivo %s (part_size=%s, "
 "free_space=%s, free_space_errno=%d, errmsg=%s).\n"
 
-#: src/stored/block.c:902
+#: src/stored/block.c:937
 #, c-format
 msgid ""
 "End of Volume \"%s\" at %u:%u on device %s (part_size=%s, free_space=%s, "
@@ -12267,29 +12356,46 @@ msgstr ""
 "Fin de Volumen \"%s\" en %u:%u en el dispositivo %s (part_size=%s, "
 "free_space=%s, free_space_errno=%d).\n"
 
-#: src/stored/block.c:962
+#: src/stored/block.c:980
+#, fuzzy
+msgid "Job failed or canceled.\n"
+msgstr "Job %d cancelado.\n"
+
+#: src/stored/block.c:986
+#, fuzzy
+msgid "Attempt to read past end of tape or file.\n"
+msgstr "Intento de leer sesión no abierta.\n"
+
+#: src/stored/block.c:995
+#, fuzzy, c-format
+msgid "Attempt to read closed device: fd=%d at file:blk %u:%u on device %s\n"
+msgstr ""
+"Error de lectura en fd=%d desde archivo:blk %u:%u en el dispositivo %s. ERR="
+"%s.\n"
+
+#: src/stored/block.c:1005
 #, c-format
 msgid "Block buffer size looping problem on device %s\n"
 msgstr "Problema de tamaño de búfer del bloque en el dispositivo %s\n"
 
-#: src/stored/block.c:974
+#: src/stored/block.c:1017
 #, c-format
 msgid "Unable to open device part=%d %s: ERR=%s\n"
 msgstr "No se puede abrir el dispositivo parte =%d %s: ERR=%s\n"
 
-#: src/stored/block.c:1000
+#: src/stored/block.c:1044
 #, c-format
 msgid "Read error on fd=%d at file:blk %u:%u on device %s. ERR=%s.\n"
 msgstr ""
 "Error de lectura en fd=%d desde archivo:blk %u:%u en el dispositivo %s. ERR="
 "%s.\n"
 
-#: src/stored/block.c:1013
+#: src/stored/block.c:1057
 #, c-format
 msgid "Read zero bytes at %u:%u on device %s.\n"
 msgstr "Leer cero bytes en %u:%u en el dispositivo %s.\n"
 
-#: src/stored/block.c:1037
+#: src/stored/block.c:1081
 #, c-format
 msgid ""
 "Volume data error at %u:%u! Very short block of %d bytes on device %s "
@@ -12298,18 +12404,18 @@ msgstr ""
 "Error datos de volumen en  %u:%u! Bloque muy corto de %d bytes en "
 "dispositivo %s descartado.\n"
 
-#: src/stored/block.c:1062
+#: src/stored/block.c:1107
 #, c-format
 msgid "Block length %u is greater than buffer %u. Attempting recovery.\n"
 msgstr ""
 "Longitud del bloque %u es mayor que el buffer %u. Intentando recuperación.\n"
 
-#: src/stored/block.c:1081
+#: src/stored/block.c:1127
 #, c-format
 msgid "Setting block buffer size to %u bytes.\n"
 msgstr "Configurando tamaño del bufer del bloque para %u bytes.\n"
 
-#: src/stored/block.c:1096
+#: src/stored/block.c:1142
 #, c-format
 msgid ""
 "Volume data error at %u:%u! Short block of %d bytes on device %s discarded.\n"
@@ -12317,27 +12423,27 @@ msgstr ""
 "Error datos de volumen en  %u:%u! Bloque corto de %d bytes en dispositivo %s "
 "descartado.\n"
 
-#: src/lib/plugins.c:112
+#: src/lib/plugins.c:117
 #, c-format
 msgid "Failed to open Plugin directory %s: ERR=%s\n"
 msgstr "No se pudo abrir el directorio de Plugin %s: ERR=%s\n"
 
-#: src/lib/plugins.c:129
+#: src/lib/plugins.c:134
 #, c-format
 msgid "Failed to find any plugins in %s\n"
 msgstr "No se pudo encontrar ningún plugin en %s\n"
 
-#: src/lib/plugins.c:163
+#: src/lib/plugins.c:168
 #, fuzzy, c-format
 msgid "dlopen plugin %s failed: ERR=%s\n"
 msgstr "fopen %s ha fallado: ERR=%s\n"
 
-#: src/lib/plugins.c:174
+#: src/lib/plugins.c:179
 #, c-format
 msgid "Lookup of loadPlugin in plugin %s failed: ERR=%s\n"
 msgstr "Fallo buscando por loadPlugin en plugin %s: ERR=%s\n"
 
-#: src/lib/plugins.c:183
+#: src/lib/plugins.c:188
 #, c-format
 msgid "Lookup of unloadPlugin in plugin %s failed: ERR=%s\n"
 msgstr "Fallo buscando por unloadPlugin en plugin %s: ERR=%s\n"
@@ -12513,57 +12619,77 @@ msgstr "Dirección de buffer : %p\n"
 msgid "Damaged buffer:  %6u bytes allocated at line %d of %s %s\n"
 msgstr "Búfer dañados: %6u bytes asignados en la línea %d de %s %s\n"
 
-#: src/lib/rwlock.c:302
+#: src/lib/sellist.c:69
+#, fuzzy
+msgid "Negative numbers not permitted.\n"
+msgstr "Números negativos no permitidos.\n"
+
+#: src/lib/sellist.c:106
+#, fuzzy
+msgid "Selection items must be be greater than zero.\n"
+msgstr "Los valores deben ser ser mayor que cero.\n"
+
+#: src/lib/sellist.c:110
+#, fuzzy
+msgid "Selection item too large.\n"
+msgstr "Ranura demasiado grande.\n"
+
+#: src/lib/sellist.c:167
+#, fuzzy
+msgid "No input string given.\n"
+msgstr "Especificación de archivo no dado.\n"
+
+#: src/lib/rwlock.c:307
 msgid "rwl_writeunlock called too many times.\n"
 msgstr "rwl_writeunlock llamado muchas veces.\n"
 
-#: src/lib/rwlock.c:307
+#: src/lib/rwlock.c:312
 msgid "rwl_writeunlock by non-owner.\n"
 msgstr "rwl_writeunlock por no-propietario.\n"
 
-#: src/lib/rwlock.c:432 src/lib/save/devlock.c:501 src/lib/devlock.c:501
+#: src/lib/rwlock.c:437 src/lib/save/devlock.c:501 src/lib/devlock.c:501
 #, c-format
 msgid "Thread %d found unchanged elements %d times\n"
 msgstr "Hilo %d encontró elementos sin cambios %d veces\n"
 
-#: src/lib/rwlock.c:502 src/lib/save/devlock.c:571 src/lib/devlock.c:571
+#: src/lib/rwlock.c:507 src/lib/save/devlock.c:571 src/lib/devlock.c:571
 #, c-format
 msgid "%02d: interval %d, writes %d, reads %d\n"
 msgstr "%02d: intervalo %d, escritos %d, leídos %d\n"
 
-#: src/lib/rwlock.c:512 src/lib/save/devlock.c:581 src/lib/devlock.c:581
+#: src/lib/rwlock.c:517 src/lib/save/devlock.c:581 src/lib/devlock.c:581
 #, c-format
 msgid "data %02d: value %d, %d writes\n"
 msgstr "datos %02d: valor %d, %d escritos\n"
 
-#: src/lib/rwlock.c:517 src/lib/save/devlock.c:586 src/lib/devlock.c:586
+#: src/lib/rwlock.c:522 src/lib/save/devlock.c:586 src/lib/devlock.c:586
 #, c-format
 msgid "Total: %d thread writes, %d data writes\n"
 msgstr "Total: %d hilos escritos, %d datos escritos\n"
 
-#: src/lib/rwlock.c:589 src/lib/save/devlock.c:658 src/lib/devlock.c:658
+#: src/lib/rwlock.c:594 src/lib/save/devlock.c:658 src/lib/devlock.c:658
 msgid "Try write lock"
 msgstr "Intente escribir bloqueo"
 
-#: src/lib/rwlock.c:595 src/lib/save/devlock.c:664 src/lib/devlock.c:664
+#: src/lib/rwlock.c:600 src/lib/save/devlock.c:664 src/lib/devlock.c:664
 msgid "Try read lock"
 msgstr "Intente leer bloqueo"
 
-#: src/lib/rwlock.c:651 src/lib/save/devlock.c:720 src/lib/devlock.c:720
+#: src/lib/rwlock.c:656 src/lib/save/devlock.c:720 src/lib/devlock.c:720
 msgid "Create thread"
 msgstr "Crear hilo"
 
-#: src/lib/rwlock.c:661 src/lib/save/devlock.c:730 src/lib/devlock.c:730
+#: src/lib/rwlock.c:666 src/lib/save/devlock.c:730 src/lib/devlock.c:730
 msgid "Join thread"
 msgstr "Unir hilo"
 
-#: src/lib/rwlock.c:663 src/lib/save/devlock.c:732 src/lib/devlock.c:732
+#: src/lib/rwlock.c:668 src/lib/save/devlock.c:732 src/lib/devlock.c:732
 #, c-format
 msgid "%02d: interval %d, updates %d, r_collisions %d, w_collisions %d\n"
 msgstr ""
 "%02d: intervalo %d, actualizados %d, r_collisions %d, w_collisions %d\n"
 
-#: src/lib/rwlock.c:675 src/lib/save/devlock.c:744 src/lib/devlock.c:744
+#: src/lib/rwlock.c:680 src/lib/save/devlock.c:744 src/lib/devlock.c:744
 #, c-format
 msgid "data %02d: value %d, %d updates\n"
 msgstr "datos %02d: valor %d, %d actualizados\n"
@@ -12577,7 +12703,7 @@ msgstr "Estado OK\n"
 msgid "bget_msg: unknown signal %d\n"
 msgstr "bget_msg: señal desconocida %d\n"
 
-#: src/lib/bsock.c:126
+#: src/lib/bsock.c:131
 #, c-format
 msgid ""
 "Could not connect to %s on %s:%d. ERR=%s\n"
@@ -12586,121 +12712,115 @@ msgstr ""
 "No se pudo conectar a %s en %s:%d. ERR=%s\n"
 "Reintentando ...\n"
 
-#: src/lib/bsock.c:132
+#: src/lib/bsock.c:137
 #, c-format
 msgid "Unable to connect to %s on %s:%d. ERR=%s\n"
 msgstr "No se puede conectar a %s en %s:%d. ERR=%s\n"
 
-#: src/lib/bsock.c:202
-#, c-format
-msgid "gethostbyname() for host \"%s\" failed: ERR=%s\n"
+#: src/lib/bsock.c:207
+#, fuzzy, c-format
+msgid "bnet_host2ipaddrs() for host \"%s\" failed: ERR=%s\n"
 msgstr "fallo gethostbyname() para la maquina \"%s\": ERR=%s\n"
 
-#: src/lib/bsock.c:222
+#: src/lib/bsock.c:260
 #, c-format
 msgid "Socket open error. proto=%d port=%d. ERR=%s\n"
 msgstr "Error al abrir socket. proto=%d puerto=%d. ERR=%s\n"
 
-#: src/lib/bsock.c:233
+#: src/lib/bsock.c:273
 #, c-format
 msgid "Source address bind error. proto=%d. ERR=%s\n"
 msgstr "Error al enlazar dirección de origen. proto=%d. ERR=%s\n"
 
-#: src/lib/bsock.c:244 src/lib/bsock.c:280 src/lib/bnet_server.c:201
+#: src/lib/bsock.c:284 src/lib/bsock.c:320 src/lib/bnet_server.c:218
 #, c-format
 msgid "Cannot set SO_KEEPALIVE on socket: %s\n"
 msgstr "No se puede establecer SO_KEEPALIVE en el socket: %s\n"
 
-#: src/lib/bsock.c:252
-#, c-format
-msgid "Cannot set SO_KEEPIDLE on socket: %s\n"
+#: src/lib/bsock.c:292
+#, fuzzy, c-format
+msgid "Cannot set TCP_KEEPIDLE on socket: %s\n"
 msgstr "No se puede establecer SO_KEEPIDLE en el socket: %s\n"
 
-#: src/lib/bsock.c:299
+#: src/lib/bsock.c:339
 #, c-format
 msgid "Could not init bsock mutex. ERR=%s\n"
 msgstr "No se pudo iniciar bsock mutex. ERR=%s\n"
 
-#: src/lib/bsock.c:334
+#: src/lib/bsock.c:374
 #, c-format
 msgid "Socket has errors=%d on call to %s:%s:%d\n"
 msgstr ""
 
-#: src/lib/bsock.c:341
+#: src/lib/bsock.c:381
 #, c-format
 msgid "Socket is terminated=%d on call to %s:%s:%d\n"
 msgstr ""
 
-#: src/lib/bsock.c:349
+#: src/lib/bsock.c:389
 #, c-format
 msgid "Socket has insane msglen=%d on call to %s:%s:%d\n"
 msgstr ""
 
-#: src/lib/bsock.c:387
+#: src/lib/bsock.c:427
 #, c-format
 msgid "Write error sending %d bytes to %s:%s:%d: ERR=%s\n"
 msgstr "Error de escritura enviando %d bytes para %s:%s:%d: ERR=%s\n"
 
-#: src/lib/bsock.c:393
+#: src/lib/bsock.c:433
 #, c-format
 msgid "Wrote %d bytes to %s:%s:%d, but only %d accepted.\n"
 msgstr "Escribió %d bytes para %s:%s:%d, pero solo %d aceptado.\n"
 
-#: src/lib/bsock.c:482 src/lib/bsock.c:543
+#: src/lib/bsock.c:522 src/lib/bsock.c:583
 #, c-format
 msgid "Read expected %d got %d from %s:%s:%d\n"
 msgstr "Esperaba leer %d obtuvo %d desde %s:%s:%d\n"
 
-#: src/lib/bsock.c:502
+#: src/lib/bsock.c:542
 #, c-format
 msgid "Packet size too big from \"%s:%s:%d. Terminating connection.\n"
 msgstr "Tamaño de paquete muy grande de \"%s:%s:%d. Conexión de terminación.\n"
 
-#: src/lib/bsock.c:532
+#: src/lib/bsock.c:572
 #, c-format
 msgid "Read error from %s:%s:%d: ERR=%s\n"
 msgstr "Error de lectura desde %s:%s:%d: ERR=%s\n"
 
-#: src/lib/bsock.c:623
+#: src/lib/bsock.c:663
 msgid "fread attr spool I/O error.\n"
 msgstr "Error fread attr spool I/O.\n"
 
-#: src/lib/bsock.c:684
+#: src/lib/bsock.c:724
 msgid "Could not malloc BSOCK data buffer\n"
 msgstr "No se pudo malloc datos BSOCK buffer.\n"
 
-#: src/lib/bsock.c:702 src/lib/bsock.c:726
+#: src/lib/bsock.c:742 src/lib/bsock.c:761
 #, c-format
 msgid "sockopt error: %s\n"
 msgstr "error de sockopt: %s\n"
 
-#: src/lib/bsock.c:708 src/lib/bsock.c:732
+#: src/lib/bsock.c:748 src/lib/bsock.c:767
 #, c-format
 msgid "Warning network buffer = %d bytes not max size.\n"
 msgstr "Alerta, búfer de red=%d bytes no tamaño máximo.\n"
 
-#: src/lib/bsock.c:712 src/lib/bsock.c:736
-#, c-format
-msgid "Network buffer size %d not multiple of tape block size.\n"
-msgstr ""
-"Tamaño del buffer de red %d no múltiplo del tamaño de bloque de cinta.\n"
-
-#: src/lib/bsock.c:757 src/lib/bsock.c:791
+#: src/lib/bsock.c:787 src/lib/bsock.c:821
 #, c-format
 msgid "fcntl F_GETFL error. ERR=%s\n"
 msgstr "error F_GETFL fcntl. ERR=%s\n"
 
-#: src/lib/bsock.c:763 src/lib/bsock.c:797 src/lib/bsock.c:829
+#: src/lib/bsock.c:793 src/lib/bsock.c:827 src/lib/bsock.c:859
 #, c-format
 msgid "fcntl F_SETFL error. ERR=%s\n"
 msgstr "error F_SETFL fcntl. ERR=%s\n"
 
-#: src/lib/bsock.c:1002 src/qt-console/bcomm/dircomm_auth.cpp:112
+#: src/lib/bsock.c:1032 src/qt-console/bcomm/dircomm_auth.cpp:112
 #, c-format
 msgid "Director authorization problem at \"%s:%d\"\n"
 msgstr "Problema de autorización de Director en \"%s:%d\"\n"
 
-#: src/lib/bsock.c:1009 src/qt-console/bcomm/dircomm_auth.cpp:119
+#: src/lib/bsock.c:1039 src/qt-console/bcomm/dircomm_auth.cpp:119
 #, c-format
 msgid ""
 "Authorization problem: Remote server at \"%s:%d\" did not advertise required "
@@ -12709,7 +12829,7 @@ msgstr ""
 "Problema de autorización: El servidor remoto en \"%s:%d\" no anuncio soporte "
 "TLS  requiere.\n"
 
-#: src/lib/bsock.c:1017 src/qt-console/bcomm/dircomm_auth.cpp:127
+#: src/lib/bsock.c:1047 src/qt-console/bcomm/dircomm_auth.cpp:127
 #, c-format
 msgid ""
 "Authorization problem with Director at \"%s:%d\": Remote server requires "
@@ -12718,12 +12838,12 @@ msgstr ""
 "Problema de autorización con el Director en \"%s:%d\": El servidor remoto "
 "requiere TLS.\n"
 
-#: src/lib/bsock.c:1029 src/qt-console/bcomm/dircomm_auth.cpp:138
+#: src/lib/bsock.c:1059 src/qt-console/bcomm/dircomm_auth.cpp:138
 #, c-format
 msgid "TLS negotiation failed with Director at \"%s:%d\"\n"
 msgstr "Fallo negociación TLS no con el Director en \"%s:%d\"\n"
 
-#: src/lib/bsock.c:1039 src/qt-console/bcomm/dircomm_auth.cpp:150
+#: src/lib/bsock.c:1069 src/qt-console/bcomm/dircomm_auth.cpp:150
 #, c-format
 msgid ""
 "Bad response to Hello command: ERR=%s\n"
@@ -12732,12 +12852,12 @@ msgstr ""
 "Mala respuesta al comando Hello: ERR=%s\n"
 "El director en \"%s:%d\" probablemente no esta corriendo.\n"
 
-#: src/lib/bsock.c:1048 src/qt-console/bcomm/dircomm_auth.cpp:159
+#: src/lib/bsock.c:1078 src/qt-console/bcomm/dircomm_auth.cpp:159
 #, c-format
 msgid "Director at \"%s:%d\" rejected Hello command\n"
 msgstr "Director en \"%s:%d\" rechazó comando Hello\n"
 
-#: src/lib/bsock.c:1058 src/qt-console/bcomm/dircomm_auth.cpp:171
+#: src/lib/bsock.c:1088 src/qt-console/bcomm/dircomm_auth.cpp:171
 #, fuzzy, c-format
 msgid ""
 "Authorization problem with Director at \"%s:%d\"\n"
@@ -12753,40 +12873,40 @@ msgstr ""
 " Por favor vea http://www.bacula.org/en/rel-manual/"
 "Bacula_Freque_Asked_Questi.html#SECTION003760000000000000000 para ayuda.\n"
 
-#: src/lib/message.c:340 src/lib/message.c:350
+#: src/lib/message.c:362 src/lib/message.c:372
 #, c-format
 msgid "Could not open console message file %s: ERR=%s\n"
 msgstr "No puede abrir el archivo de mensajes de la consola %s: ERR=%s\n"
 
-#: src/lib/message.c:355
+#: src/lib/message.c:377
 #, c-format
 msgid "Could not get con mutex: ERR=%s\n"
 msgstr "No se pudo obtener con mutex: ERR=%s\n"
 
-#: src/lib/message.c:460
+#: src/lib/message.c:482
 msgid "Bacula Message"
 msgstr "Bacula Message"
 
-#: src/lib/message.c:464
+#: src/lib/message.c:486
 #, c-format
 msgid "open mail pipe %s failed: ERR=%s\n"
 msgstr "Fallo al abrir tubería de correo %s: ERR=%s\n"
 
-#: src/lib/message.c:532
+#: src/lib/message.c:577
 msgid "open mail pipe failed.\n"
 msgstr "Fallo al abrir tubería de correo .\n"
 
-#: src/lib/message.c:544
+#: src/lib/message.c:590
 #, c-format
 msgid "close error: ERR=%s\n"
 msgstr "Error al cerrar: ERR=%s\n"
 
-#: src/lib/message.c:555
+#: src/lib/message.c:601
 #, c-format
 msgid "Mail prog: %s"
 msgstr "Programa de Correo: %s"
 
-#: src/lib/message.c:564
+#: src/lib/message.c:610
 #, c-format
 msgid ""
 "Mail program terminated in error.\n"
@@ -12797,12 +12917,16 @@ msgstr ""
 "CMD=%s\n"
 "ERR=%s\n"
 
-#: src/lib/message.c:662
+#: src/lib/message.c:713
 #, c-format
 msgid "fopen %s failed: ERR=%s\n"
 msgstr "fopen %s ha fallado: ERR=%s\n"
 
-#: src/lib/message.c:835
+#: src/lib/message.c:835 src/lib/message.c:838
+msgid "Msg delivery error: Unable to store data in database.\n"
+msgstr ""
+
+#: src/lib/message.c:890
 #, fuzzy, c-format
 msgid ""
 "Msg delivery error: Operator mail program terminated in error.\n"
@@ -12813,126 +12937,126 @@ msgstr ""
 "CMD=%s\n"
 "ERR=%s\n"
 
-#: src/lib/message.c:856
+#: src/lib/message.c:911
 #, fuzzy, c-format
 msgid "Msg delivery error: fopen %s failed: ERR=%s\n"
 msgstr "fopen %s ha fallado: ERR=%s\n"
 
-#: src/lib/message.c:1175
+#: src/lib/message.c:1230
 #, c-format
 msgid "%s: ABORTING due to ERROR in %s:%d\n"
 msgstr "%s: ABORTADO debido a un ERROR en %s:%d\n"
 
-#: src/lib/message.c:1179
+#: src/lib/message.c:1234
 #, c-format
 msgid "%s: ERROR TERMINATION at %s:%d\n"
 msgstr "%s: ERROR DE TERMINACIÓN en %s:%d\n"
 
-#: src/lib/message.c:1184
+#: src/lib/message.c:1239
 #, c-format
 msgid "%s: Fatal Error because: "
 msgstr "%s: Error Fatal porque: "
 
-#: src/lib/message.c:1186
+#: src/lib/message.c:1241
 #, c-format
 msgid "%s: Fatal Error at %s:%d because:\n"
 msgstr "%s: Error Fatal en %s:%d porque:\n"
 
-#: src/lib/message.c:1190
+#: src/lib/message.c:1245
 #, c-format
 msgid "%s: ERROR: "
 msgstr "%s: ERROR: "
 
-#: src/lib/message.c:1192
+#: src/lib/message.c:1247
 #, c-format
 msgid "%s: ERROR in %s:%d "
 msgstr "%s: ERROR en %s:%d "
 
-#: src/lib/message.c:1195
+#: src/lib/message.c:1250
 #, c-format
 msgid "%s: Warning: "
 msgstr "%s: Advertencia: "
 
-#: src/lib/message.c:1198
+#: src/lib/message.c:1253
 #, c-format
 msgid "%s: Security violation: "
 msgstr "%s: Violación de seguridad: "
 
-#: src/lib/message.c:1286
+#: src/lib/message.c:1341
 #, c-format
 msgid "%s ABORTING due to ERROR\n"
 msgstr "%s: ABORTADO debido a un ERROR\n"
 
-#: src/lib/message.c:1289
+#: src/lib/message.c:1344
 #, c-format
 msgid "%s ERROR TERMINATION\n"
 msgstr "%s: ERROR DE TERMINACIÓN\n"
 
-#: src/lib/message.c:1292
+#: src/lib/message.c:1347
 #, c-format
 msgid "%s JobId %u: Fatal error: "
 msgstr "%s JobId %u: Error Fatal: "
 
-#: src/lib/message.c:1301
+#: src/lib/message.c:1356
 #, c-format
 msgid "%s JobId %u: Error: "
 msgstr "%s JobId %u: Error: "
 
-#: src/lib/message.c:1307
+#: src/lib/message.c:1362
 #, c-format
 msgid "%s JobId %u: Warning: "
 msgstr "%s JobId %u: Advertencia: "
 
-#: src/lib/message.c:1313
+#: src/lib/message.c:1368
 #, c-format
 msgid "%s JobId %u: Security violation: "
 msgstr "%s JobId %u: Violación de seguridad: "
 
-#: src/lib/bnet_server.c:108
+#: src/lib/bnet_server.c:125
 #, c-format
 msgid "Cannot open stream socket. ERR=%s. Current %s All %s\n"
 msgstr "No se puede abrir el socket de flujo. ERR=%s. Actual %s Todos %s\n"
 
-#: src/lib/bnet_server.c:121
+#: src/lib/bnet_server.c:138
 #, c-format
 msgid "Cannot set SO_REUSEADDR on socket: %s\n"
 msgstr "No se puede establecer SO_REUSEADDR en el socket: %s\n"
 
-#: src/lib/bnet_server.c:130
+#: src/lib/bnet_server.c:147
 #, c-format
 msgid "Cannot bind port %d: ERR=%s: Retrying ...\n"
 msgstr "No se puede enlazar a puerto %d: ERR=%s: Reintentando ...\n"
 
-#: src/lib/bnet_server.c:135
+#: src/lib/bnet_server.c:152
 #, c-format
 msgid "Cannot bind port %d: ERR=%s.\n"
 msgstr "No se puede enlazar a puerto %d: ERR=%s.\n"
 
-#: src/lib/bnet_server.c:146
+#: src/lib/bnet_server.c:163
 #, c-format
 msgid "Could not init client queue: ERR=%s\n"
 msgstr "No se pudo iniciar cola cliente: ERR=%s\n"
 
-#: src/lib/bnet_server.c:165
+#: src/lib/bnet_server.c:182
 #, c-format
 msgid "Error in select: %s\n"
 msgstr "Error al seleccionar: %s\n"
 
-#: src/lib/bnet_server.c:186
+#: src/lib/bnet_server.c:203
 #, c-format
 msgid "Connection from %s:%d refused by hosts.access\n"
 msgstr "Conexión desde %s:%d rechazada por hosts.access\n"
 
-#: src/lib/bnet_server.c:212
+#: src/lib/bnet_server.c:229
 msgid "Could not create client BSOCK.\n"
 msgstr "No es posible crear cliente BSOCK. \n"
 
-#: src/lib/bnet_server.c:219
+#: src/lib/bnet_server.c:236
 #, c-format
 msgid "Could not add job to client queue: ERR=%s\n"
 msgstr "No se pudo agregar job a la cola de cliente: ERR=%s\n"
 
-#: src/lib/bnet_server.c:236
+#: src/lib/bnet_server.c:253
 #, c-format
 msgid "Could not destroy client queue: ERR=%s\n"
 msgstr "No es posible destruir la cola de cliente: ERR=%s\n"
@@ -13388,7 +13512,7 @@ msgstr "Tipo Desconocido"
 msgid "Truncate"
 msgstr "Truncar"
 
-#: src/lib/util.c:409 src/filed/restore.c:1158
+#: src/lib/util.c:409 src/filed/restore.c:1164
 msgid "None"
 msgstr "Ninguno"
 
@@ -13438,7 +13562,7 @@ msgstr "Invalido estado de volumen"
 
 #: src/lib/util.c:753 src/lib/util.c:763 src/lib/util.c:771 src/lib/util.c:778
 #: src/lib/util.c:785 src/lib/util.c:799 src/lib/util.c:809 src/lib/util.c:822
-#: src/lib/util.c:833 src/filed/restore.c:1174
+#: src/lib/util.c:833 src/filed/restore.c:1180
 msgid "*none*"
 msgstr "*ninguno*"
 
@@ -13467,7 +13591,7 @@ msgstr "rwl_writeunlock llamado muchas veces.\n"
 msgid "writeunlock by non-owner.\n"
 msgstr "rwl_writeunlock por no-propietario.\n"
 
-#: src/lib/daemon.c:64
+#: src/lib/daemon.c:65
 #, c-format
 msgid "Cannot fork to become daemon: ERR=%s\n"
 msgstr "No se puede fork para convertirse en demonio: ERR =%s\n"
@@ -13659,7 +13783,7 @@ msgstr "JCR use_count=%d JobId=%d\n"
 msgid "pthread_setspecific failed: ERR=%s\n"
 msgstr "fallo pthread_setspecific: ERR=%s\n"
 
-#: src/lib/jcr.c:1097
+#: src/lib/jcr.c:1103
 #, c-format
 msgid ""
 "Watchdog sending kill after %d secs to thread stalled reading Storage "
@@ -13668,7 +13792,7 @@ msgstr ""
 "Watchdog envío kill después de %d segundos para hilo estancado leyendo "
 "demonio Storage.\n"
 
-#: src/lib/jcr.c:1109
+#: src/lib/jcr.c:1115
 #, c-format
 msgid ""
 "Watchdog sending kill after %d secs to thread stalled reading File daemon.\n"
@@ -13676,7 +13800,7 @@ msgstr ""
 "Watchdog envío kill después de %d segundos para hilo estancado leyendo "
 "demonio File.\n"
 
-#: src/lib/jcr.c:1121
+#: src/lib/jcr.c:1127
 #, c-format
 msgid ""
 "Watchdog sending kill after %d secs to thread stalled reading Director.\n"
@@ -13909,31 +14033,31 @@ msgstr "TLS activado, pero no configurado.\n"
 msgid "TLS enable but not configured.\n"
 msgstr "TLS permitido, pero no configurado.\n"
 
-#: src/lib/bnet.c:423
+#: src/lib/bnet.c:481
 msgid "No problem."
 msgstr "No hay problema."
 
-#: src/lib/bnet.c:426
+#: src/lib/bnet.c:484
 msgid "Authoritative answer for host not found."
 msgstr "Respuesta autoritativa para el host no encontrado."
 
-#: src/lib/bnet.c:429
+#: src/lib/bnet.c:487
 msgid "Non-authoritative for host not found, or ServerFail."
 msgstr "Non-autoritativa para la maquina no encontrada, o ServerFail."
 
-#: src/lib/bnet.c:432
+#: src/lib/bnet.c:490
 msgid "Non-recoverable errors, FORMERR, REFUSED, or NOTIMP."
 msgstr "Errores no recuperables, FORMERR, RECHAZADO o NOTIMP."
 
-#: src/lib/bnet.c:435
+#: src/lib/bnet.c:493
 msgid "Valid name, no data record of resquested type."
 msgstr "Nombre válido, ningún registro de datos del tipo solicitado."
 
-#: src/lib/bnet.c:438
+#: src/lib/bnet.c:496
 msgid "Unknown error."
 msgstr "Error desconocido."
 
-#: src/lib/bnet.c:697
+#: src/lib/bnet.c:755
 #, c-format
 msgid "Unknown sig %d"
 msgstr "Sig desconocido %d"
@@ -13942,230 +14066,257 @@ msgstr "Sig desconocido %d"
 msgid "Invalid signal number"
 msgstr "Número de la señal no válida"
 
-#: src/lib/signal.c:151 src/lib/signal.c:153
+#: src/lib/signal.c:152 src/lib/signal.c:154
 #, c-format
 msgid "Bacula interrupted by signal %d: %s\n"
 msgstr "Bacula interrumpido por señal %d: %s\n"
 
-#: src/lib/signal.c:166
+#: src/lib/signal.c:167
 #, c-format
 msgid "Kaboom! %s, %s got signal %d - %s. Attempting traceback.\n"
 msgstr "Kaboom! %s, %s obtuvo la señal %d - %s. Intentando rastreo.\n"
 
-#: src/lib/signal.c:168
+#: src/lib/signal.c:169
 #, c-format
 msgid "Kaboom! exepath=%s\n"
 msgstr "Kaboom! exepath=%s\n"
 
-#: src/lib/signal.c:202
+#: src/lib/signal.c:210
 #, c-format
 msgid "Fork error: ERR=%s\n"
 msgstr "Fork error: ERR=%s\n"
 
-#: src/lib/signal.c:210
+#: src/lib/signal.c:218
 #, c-format
 msgid "Calling: %s %s %s %s\n"
 msgstr "Llamando: %s %s %s %s\n"
 
-#: src/lib/signal.c:214
+#: src/lib/signal.c:222
 #, c-format
 msgid "execv: %s failed: ERR=%s\n"
 msgstr "execv: %s ha fallado: ERR=%s\n"
 
-#: src/lib/signal.c:235
-#, c-format
-msgid "It looks like the traceback worked ...\n"
+#: src/lib/signal.c:244
+#, fuzzy, c-format
+msgid "It looks like the traceback worked...\n"
 msgstr "Parece que el rastreo trabaja ...\n"
 
-#: src/lib/signal.c:289
+#: src/lib/signal.c:246
+#, c-format
+msgid "The btraceback call returned %d\n"
+msgstr ""
+
+#: src/lib/signal.c:306
 #, c-format
 msgid "BA_NSIG too small (%d) should be (%d)\n"
 msgstr "BA_NSIG demasiado pequeño (%d) debe ser (%d)\n"
 
-#: src/lib/signal.c:295
+#: src/lib/signal.c:312
 msgid "UNKNOWN SIGNAL"
 msgstr "SEÑAL DESCONOCIDA"
 
-#: src/lib/signal.c:296
+#: src/lib/signal.c:313
 msgid "Hangup"
 msgstr "Colgar"
 
-#: src/lib/signal.c:297
+#: src/lib/signal.c:314
 msgid "Interrupt"
 msgstr "Interrumpir"
 
-#: src/lib/signal.c:298
+#: src/lib/signal.c:315
 msgid "Quit"
 msgstr "Salir"
 
-#: src/lib/signal.c:299
+#: src/lib/signal.c:316
 msgid "Illegal instruction"
 msgstr "Instrucción ilegal"
 
-#: src/lib/signal.c:300
+#: src/lib/signal.c:317
 msgid "Trace/Breakpoint trap"
 msgstr "Trace/Trampa de Punto de Interrupción"
 
-#: src/lib/signal.c:301
+#: src/lib/signal.c:318
 msgid "Abort"
 msgstr "Anular"
 
-#: src/lib/signal.c:303
+#: src/lib/signal.c:320
 msgid "EMT instruction (Emulation Trap)"
 msgstr "Instrucción EMT (Emulación de Trampa)"
 
-#: src/lib/signal.c:306
+#: src/lib/signal.c:323
 msgid "IOT trap"
 msgstr "trampa IOT"
 
-#: src/lib/signal.c:308
+#: src/lib/signal.c:325
 msgid "BUS error"
 msgstr "BUS error"
 
-#: src/lib/signal.c:309
+#: src/lib/signal.c:326
 msgid "Floating-point exception"
 msgstr "Excepción de punto flotante"
 
-#: src/lib/signal.c:310
+#: src/lib/signal.c:327
 msgid "Kill, unblockable"
 msgstr "Matar, imbloqueable"
 
-#: src/lib/signal.c:311
+#: src/lib/signal.c:328
 msgid "User-defined signal 1"
 msgstr "Señal 1 definida por el usuario"
 
-#: src/lib/signal.c:312
+#: src/lib/signal.c:329
 msgid "Segmentation violation"
 msgstr "Violación de segmento"
 
-#: src/lib/signal.c:313
+#: src/lib/signal.c:330
 msgid "User-defined signal 2"
 msgstr "Señal definida por el usuario 2"
 
-#: src/lib/signal.c:314
+#: src/lib/signal.c:331
 msgid "Broken pipe"
 msgstr "Tuberí­a rota"
 
-#: src/lib/signal.c:315
+#: src/lib/signal.c:332
 msgid "Alarm clock"
 msgstr "Alarma"
 
-#: src/lib/signal.c:316
+#: src/lib/signal.c:333
 msgid "Termination"
 msgstr "Terminación"
 
-#: src/lib/signal.c:318
+#: src/lib/signal.c:335
 msgid "Stack fault"
 msgstr "Error de pila"
 
-#: src/lib/signal.c:320
+#: src/lib/signal.c:337
 msgid "Child status has changed"
 msgstr "El estado de hijo ha cambiado"
 
-#: src/lib/signal.c:321
+#: src/lib/signal.c:338
 msgid "Continue"
 msgstr "Continue"
 
-#: src/lib/signal.c:322
+#: src/lib/signal.c:339
 msgid "Stop, unblockable"
 msgstr "Detener, imbloqueable"
 
-#: src/lib/signal.c:323
+#: src/lib/signal.c:340
 msgid "Keyboard stop"
 msgstr "Teclado detenido"
 
-#: src/lib/signal.c:324
+#: src/lib/signal.c:341
 msgid "Background read from tty"
 msgstr "Leer en segundo plan desde tty"
 
-#: src/lib/signal.c:325
+#: src/lib/signal.c:342
 msgid "Background write to tty"
 msgstr "Escribir en segundo plan al tty"
 
-#: src/lib/signal.c:326
+#: src/lib/signal.c:343
 msgid "Urgent condition on socket"
 msgstr "Condición de urgencia en el socket"
 
-#: src/lib/signal.c:327
+#: src/lib/signal.c:344
 msgid "CPU limit exceeded"
 msgstr "Limite de CPU superado"
 
-#: src/lib/signal.c:328
+#: src/lib/signal.c:345
 msgid "File size limit exceeded"
 msgstr "Superado el límite de tamaño de archivo"
 
-#: src/lib/signal.c:329
+#: src/lib/signal.c:346
 msgid "Virtual alarm clock"
 msgstr "Despertador virtual"
 
-#: src/lib/signal.c:330
+#: src/lib/signal.c:347
 msgid "Profiling alarm clock"
 msgstr "Perfiles de alarma"
 
-#: src/lib/signal.c:331
+#: src/lib/signal.c:348
 msgid "Window size change"
 msgstr "Cambiar el tamaño de la ventana"
 
-#: src/lib/signal.c:332
+#: src/lib/signal.c:349
 msgid "I/O now possible"
 msgstr "I/O posible ahora"
 
-#: src/lib/signal.c:334
+#: src/lib/signal.c:351
 msgid "Power failure restart"
 msgstr "Fallo reiniciar energía"
 
-#: src/lib/signal.c:337
+#: src/lib/signal.c:354
 msgid "No runnable lwp"
 msgstr "LWP no ejecutable"
 
-#: src/lib/signal.c:340
+#: src/lib/signal.c:357
 msgid "SIGLWP special signal used by thread library"
 msgstr "La señal especial SIGLWP utilizado por la biblioteca del hilo"
 
-#: src/lib/signal.c:343
+#: src/lib/signal.c:360
 msgid "Checkpoint Freeze"
 msgstr "Checkpoint de Congelación"
 
-#: src/lib/signal.c:346
+#: src/lib/signal.c:363
 msgid "Checkpoint Thaw"
 msgstr "Checkpoint de Thaw"
 
-#: src/lib/signal.c:349
+#: src/lib/signal.c:366
 msgid "Thread Cancellation"
 msgstr "Cancelación de Hilo"
 
-#: src/lib/signal.c:352
+#: src/lib/signal.c:369
 msgid "Resource Lost (e.g. record-lock lost)"
 msgstr "Recurso Perdido (por ejemplo, registro de bloqueo perdido)"
 
+#: src/lib/ini.c:106 src/lib/ini.c:118
+#, fuzzy, c-format
+msgid ""
+"Config file error: %s\n"
+"            : Line %d, col %d of file %s\n"
+"%s\n"
+msgstr ""
+"Error de configuración: %s\n"
+" : línea %d, columna %d en el archivo %s\n"
+"%s\n"
+"%s"
+
+#: src/lib/ini.c:308 src/lib/ini.c:383
+#, fuzzy, c-format
+msgid "Cannot open config file %s: %s\n"
+msgstr "No se pudo abrir archivo de configuración \"%s\": %s\n"
+
 #: src/lib/btimers.c:265
 msgid "stop_btimer called with NULL btimer_id\n"
 msgstr "stop_btimer llamado con NULL btimer_id\n"
 
-#: src/lib/bsys.c:215 src/lib/bsys.c:232 src/lib/bsys.c:256 src/lib/bsys.c:269
+#: src/lib/bsys.c:72
+#, fuzzy, c-format
+msgid "safe_unlink could not compile regex pattern \"%s\" ERR=%s\n"
+msgstr "No se ha podido compilar patrón regex  \"%s\" ERR=%s\n"
+
+#: src/lib/bsys.c:261 src/lib/bsys.c:278 src/lib/bsys.c:302 src/lib/bsys.c:315
 #, c-format
 msgid "Out of memory: ERR=%s\n"
 msgstr "Fuera de memoria: ERR=%s\n"
 
-#: src/lib/bsys.c:311
+#: src/lib/bsys.c:357
 msgid "Buffer overflow.\n"
 msgstr "Desbordamiento de búfer.\n"
 
-#: src/lib/bsys.c:377
+#: src/lib/bsys.c:423
 msgid "Bad errno"
 msgstr "Malo errno"
 
-#: src/lib/bsys.c:392
+#: src/lib/bsys.c:438
 #, c-format
 msgid "Memset for %d bytes at %s:%d\n"
 msgstr "Memset para %d bytes en %s:%d\n"
 
-#: src/lib/bsys.c:422
+#: src/lib/bsys.c:468
 #, c-format
 msgid "Cannot open pid file. %s ERR=%s\n"
 msgstr "No se puede abrir el archivo pid. %s ERR=%s\n"
 
-#: src/lib/bsys.c:437
+#: src/lib/bsys.c:483
 #, c-format
 msgid ""
 "%s is already running. pid=%d\n"
@@ -14174,17 +14325,17 @@ msgstr ""
 "%s ya está en ejecución. pid=%d\n"
 "Compruebe el archivo %s\n"
 
-#: src/lib/bsys.c:451
+#: src/lib/bsys.c:497
 #, c-format
 msgid "Could not open pid file. %s ERR=%s\n"
 msgstr "No se pudo abrir el archivo pid. %s ERR=%s\n"
 
-#: src/lib/bsys.c:562
+#: src/lib/bsys.c:608
 #, c-format
 msgid "Could not create state file. %s ERR=%s\n"
 msgstr "No es posible crear el archivo de estado. %s ERR=%s\n"
 
-#: src/lib/bsys.c:581
+#: src/lib/bsys.c:627
 #, c-format
 msgid "Write final hdr error: ERR=%s\n"
 msgstr "Error de escritura HDR final: ERR=%s\n"
@@ -14236,7 +14387,7 @@ msgstr "Error de configuración: %s\n"
 msgid "Close of NULL file\n"
 msgstr "Cierre de archivo NULL\n"
 
-#: src/lib/lex.c:224
+#: src/lib/lex.c:226
 msgid ""
 "get_char: called after EOF. You may have a open double quote without the "
 "closing double quote.\n"
@@ -14244,63 +14395,63 @@ msgstr ""
 "get_char: llamado después de EOF. Usted puede tener una comilla doble "
 "abierta sin el cierre de comillas dobles.\n"
 
-#: src/lib/lex.c:267
+#: src/lib/lex.c:268
 #, c-format
 msgid "Config token too long, file: %s, line %d, begins at line %d\n"
 msgstr ""
 "Configuración de señal demasiado largo, archivo: %s, línea %d, se inicia en "
 "la línea %d\n"
 
-#: src/lib/lex.c:291
+#: src/lib/lex.c:292
 msgid "none"
 msgstr "ninguno"
 
-#: src/lib/lex.c:292
+#: src/lib/lex.c:293
 msgid "comment"
 msgstr "comentario"
 
-#: src/lib/lex.c:293
+#: src/lib/lex.c:294
 msgid "number"
 msgstr "numero"
 
-#: src/lib/lex.c:294
+#: src/lib/lex.c:295
 msgid "ip_addr"
 msgstr "ip_addr"
 
-#: src/lib/lex.c:295
+#: src/lib/lex.c:296
 msgid "identifier"
 msgstr "identificar"
 
-#: src/lib/lex.c:296
+#: src/lib/lex.c:297
 msgid "string"
 msgstr "cadena"
 
-#: src/lib/lex.c:297
+#: src/lib/lex.c:298
 msgid "quoted_string"
 msgstr "quoted_string"
 
-#: src/lib/lex.c:298
+#: src/lib/lex.c:299
 msgid "include"
 msgstr "incluir"
 
-#: src/lib/lex.c:299
+#: src/lib/lex.c:300
 msgid "include_quoted_string"
 msgstr "include_quoted_string"
 
-#: src/lib/lex.c:300
+#: src/lib/lex.c:301
 msgid "UTF-8 Byte Order Mark"
 msgstr "Marca de Orden de UTF-8 Byte"
 
-#: src/lib/lex.c:301
+#: src/lib/lex.c:302
 msgid "UTF-16le Byte Order Mark"
 msgstr "Marca de Orden de UTF-16le Byte"
 
-#: src/lib/lex.c:339 src/lib/lex.c:345 src/lib/lex.c:356 src/lib/lex.c:362
+#: src/lib/lex.c:340 src/lib/lex.c:346 src/lib/lex.c:357 src/lib/lex.c:363
 #, c-format
 msgid "expected a positive integer number, got: %s"
 msgstr "esperaba un numero entero positivo, obtuvo: %s"
 
-#: src/lib/lex.c:478
+#: src/lib/lex.c:479
 msgid ""
 "This config file appears to be in an unsupported Unicode format (UTF-16be). "
 "Please resave as UTF-8\n"
@@ -14308,32 +14459,32 @@ msgstr ""
 "Este archivo de configuración parece estar en un formato no compatible con "
 "Unicode (UTF-16be). Por favor, vuelva a guardar como UTF-8\n"
 
-#: src/lib/lex.c:617 src/lib/lex.c:645
+#: src/lib/lex.c:625 src/lib/lex.c:653
 #, c-format
 msgid "Cannot open included config file %s: %s\n"
 msgstr "No se puede abrir el archivo de configuración incluido %s: %s\n"
 
-#: src/lib/lex.c:704 src/lib/lex.c:761
+#: src/lib/lex.c:712 src/lib/lex.c:769
 #, c-format
 msgid "expected an integer or a range, got %s: %s"
 msgstr "esperaba un numero entero o un rango, obtuvo %s: %s"
 
-#: src/lib/lex.c:718 src/lib/lex.c:726 src/lib/lex.c:737 src/lib/lex.c:745
+#: src/lib/lex.c:726 src/lib/lex.c:734 src/lib/lex.c:745 src/lib/lex.c:753
 #, c-format
 msgid "expected an integer number, got %s: %s"
 msgstr "esperaba un numero entero, obtuvo %s: %s"
 
-#: src/lib/lex.c:775
+#: src/lib/lex.c:783
 #, c-format
 msgid "expected a name, got %s: %s"
 msgstr "esperaba un nombre, obtuvo %s: %s"
 
-#: src/lib/lex.c:779
+#: src/lib/lex.c:787
 #, c-format
 msgid "name %s length %d too long, max is %d\n"
 msgstr "nombre %s longitud %d demasiado largo, el máximo es %d\n"
 
-#: src/lib/lex.c:787
+#: src/lib/lex.c:795
 #, c-format
 msgid "expected a string, got %s: %s"
 msgstr "esperaba una cadena, obtuvo %s: %s"
@@ -14768,7 +14919,7 @@ msgstr "El archivo %s ya existe y no puede ser reemplazado. ERR=%s.\n"
 msgid "bpkt already open fid=%d\n"
 msgstr "bpkt ya abierto fid=%d\n"
 
-#: src/findlib/create_file.c:226 src/filed/fd_plugins.c:890
+#: src/findlib/create_file.c:226 src/filed/fd_plugins.c:1009
 #, c-format
 msgid "Could not create %s: ERR=%s\n"
 msgstr "No se pudo crear %s: ERR=%s\n"
@@ -15028,90 +15179,105 @@ msgstr "Atributos ACL de acceso específicos de FreeBSD"
 
 #: src/findlib/bfile.c:191
 #, fuzzy
+msgid "GNU Hurd Specific Default ACL attribs"
+msgstr "Atributos ACL por defecto específicos de Irix"
+
+#: src/findlib/bfile.c:193
+#, fuzzy
+msgid "GNU Hurd Specific Access ACL attribs"
+msgstr "Atributos ACL de acceso específicos de Irix"
+
+#: src/findlib/bfile.c:195
+#, fuzzy
+msgid "GNU Hurd Specific Extended attribs"
+msgstr "Atributos Extendidos Específicos de Linux"
+
+#: src/findlib/bfile.c:197
+#, fuzzy
 msgid "IRIX Specific Extended attribs"
 msgstr "Atributos Extendidos Específicos de Linux"
 
-#: src/findlib/bfile.c:193
+#: src/findlib/bfile.c:199
 #, fuzzy
 msgid "TRU64 Specific Extended attribs"
 msgstr "Atributos Extendidos Específicos de Linux"
 
-#: src/findlib/bfile.c:195
+#: src/findlib/bfile.c:201
 #, fuzzy
 msgid "AIX Specific Extended attribs"
 msgstr "Atributos Extendidos Específicos de Linux"
 
-#: src/findlib/bfile.c:197
+#: src/findlib/bfile.c:203
 msgid "OpenBSD Specific Extended attribs"
 msgstr "Atributos Extendidos específicos de OpenBSD"
 
-#: src/findlib/bfile.c:199
+#: src/findlib/bfile.c:205
 msgid "Solaris Specific Extensible attribs or System Extended attribs"
 msgstr ""
 "Atributos extensible específicos de Solaris o atributos de Sistema de "
 "Extensión"
 
-#: src/findlib/bfile.c:201
+#: src/findlib/bfile.c:207
 msgid "Solaris Specific Extended attribs"
 msgstr "Atributos Extendidos Específicos de Solaris"
 
-#: src/findlib/bfile.c:203
+#: src/findlib/bfile.c:209
 msgid "Darwin Specific Extended attribs"
 msgstr "Atributos Extendidos Específicos de Darwin"
 
-#: src/findlib/bfile.c:205
+#: src/findlib/bfile.c:211
 msgid "FreeBSD Specific Extended attribs"
 msgstr "Atributos Extendidos Específicos de FreeBSD"
 
-#: src/findlib/bfile.c:207
+#: src/findlib/bfile.c:213
 msgid "Linux Specific Extended attribs"
 msgstr "Atributos Extendidos Específicos de Linux"
 
-#: src/findlib/bfile.c:209
+#: src/findlib/bfile.c:215
 msgid "NetBSD Specific Extended attribs"
 msgstr "Atributos Extendidos Específicos de NetBSD"
 
-#: src/findlib/find.c:226
+#: src/findlib/find.c:237
 #, fuzzy, c-format
 msgid "Plugin: \"%s\" not found.\n"
 msgstr "Plugin=%s no encontrado.\n"
 
-#: src/findlib/match.c:210 src/tools/testfind.c:654 src/filed/job.c:1456
+#: src/findlib/match.c:210 src/tools/testfind.c:654 src/filed/job.c:1460
 #, c-format
 msgid "Unknown include/exclude option: %c\n"
 msgstr "Opción incluir/excluir desconocida: %c\n"
 
-#: src/findlib/find_one.c:223
+#: src/findlib/find_one.c:227
 #, c-format
 msgid "     NODUMP flag set - will not process %s\n"
 msgstr "Indicador NODUMP establecido - no procesará %s\n"
 
-#: src/findlib/find_one.c:244
+#: src/findlib/find_one.c:248
 #, c-format
 msgid "Cannot stat file %s: ERR=%s\n"
 msgstr "No puede stat archivo %s: ERR=%s\n"
 
-#: src/findlib/find_one.c:250
+#: src/findlib/find_one.c:253
 #, c-format
 msgid "%s mtime changed during backup.\n"
 msgstr "%s mtime cambiado durante la copia de seguridad.\n"
 
-#: src/findlib/find_one.c:256
+#: src/findlib/find_one.c:260
 #, c-format
 msgid "%s ctime changed during backup.\n"
 msgstr "%s ctime cambiado durante la copia de seguridad.\n"
 
-#: src/findlib/find_one.c:262 src/findlib/find_one.c:269
+#: src/findlib/find_one.c:268 src/findlib/find_one.c:276
 #, c-format
 msgid "%s size changed during backup.\n"
 msgstr "%s tamaño cambiado durante la copia de seguridad.\n"
 
-#: src/findlib/find_one.c:398
+#: src/findlib/find_one.c:403
 #, c-format
 msgid "Top level directory \"%s\" has unlisted fstype \"%s\"\n"
 msgstr "Directorio de nivel superior \"%s\" tiene fstype \"%s\" no listado\n"
 
-#: src/findlib/find_one.c:413
+#: src/findlib/find_one.c:418
 #, c-format
 msgid "Top level directory \"%s\" has an unlisted drive type \"%s\"\n"
 msgstr ""
@@ -15203,24 +15369,24 @@ msgstr "error al obtener la fila Cliente:%s\n"
 msgid "Create DB Client record %s failed. ERR=%s\n"
 msgstr "Creación del registro BD Cliente %s fallido. ERR=%s\n"
 
-#: src/cats/sql_create.c:588 src/cats/sql_get.c:251
+#: src/cats/sql_create.c:589 src/cats/sql_get.c:251
 #, c-format
 msgid "More than one Path!: %s for path: %s\n"
 msgstr "Mas de un Path!: %s para path: %s\n"
 
-#: src/cats/sql_create.c:595 src/cats/sql_get.c:205 src/cats/sql_get.c:258
-#: src/cats/sql_get.c:640 src/cats/sql_get.c:722 src/cats/sql_get.c:1041
-#: src/cats/sql.c:340 src/cats/sql.c:347 src/cats/postgresql.c:158
+#: src/cats/sql_create.c:596 src/cats/sql_get.c:205 src/cats/sql_get.c:258
+#: src/cats/sql_get.c:640 src/cats/sql_get.c:722 src/cats/sql_get.c:1039
+#: src/cats/sql.c:340 src/cats/sql.c:347 src/cats/postgresql.c:165
 #, c-format
 msgid "error fetching row: %s\n"
 msgstr "error al obtener la fila:%s\n"
 
-#: src/cats/sql_create.c:620
+#: src/cats/sql_create.c:621
 #, c-format
 msgid "Create db Path record %s failed. ERR=%s\n"
 msgstr "Creación del registro Path db %s fallido. ERR=%s\n"
 
-#: src/cats/sql_create.c:665
+#: src/cats/sql_create.c:666
 #, c-format
 msgid "Create DB Counters record %s failed. ERR=%s\n"
 msgstr "Creación del registro BD Contadores %s fallido. ERR=%s\n"
@@ -15240,40 +15406,40 @@ msgstr "error al obtener la fila FileSet: ERR=%s\n"
 msgid "Create DB FileSet record %s failed. ERR=%s\n"
 msgstr "Creación del registro BD FileSet %s fallido. ERR=%s\n"
 
-#: src/cats/sql_create.c:994
+#: src/cats/sql_create.c:989
 #, c-format
 msgid "Create db File record %s failed. ERR=%s"
 msgstr "Creación del registro File db %s fallido. ERR=%s"
 
-#: src/cats/sql_create.c:1019
+#: src/cats/sql_create.c:1015
 #, c-format
 msgid "More than one Filename! %s for file: %s\n"
 msgstr "Mas de un nombre de Archivo! %s para el archivo: %s\n"
 
-#: src/cats/sql_create.c:1025
+#: src/cats/sql_create.c:1021
 #, c-format
 msgid "Error fetching row for file=%s: ERR=%s\n"
 msgstr "Error al obtener fila para el archivo=%s: ERR=%s\n"
 
-#: src/cats/sql_create.c:1042
+#: src/cats/sql_create.c:1038
 #, c-format
 msgid "Create db Filename record %s failed. ERR=%s\n"
 msgstr "Creación del registro Filename db %s fallido. ERR=%s\n"
 
-#: src/cats/sql_create.c:1061
+#: src/cats/sql_create.c:1058
 #, c-format
 msgid "Attempt to put non-attributes into catalog. Stream=%d\n"
 msgstr "Intento de poner non-atributos en el catálogo. Stream=%d\n"
 
 #: src/cats/sql_create.c:1074
-msgid "Cannot Copy/Migrate job using BaseJob"
+msgid "Cannot Copy/Migrate job using BaseJob.\n"
 msgstr ""
 
-#: src/cats/sql_create.c:1165 src/cats/sql_get.c:1138
+#: src/cats/sql_create.c:1166 src/cats/sql_get.c:1136
 msgid "ERR=JobIds are empty\n"
 msgstr "ERR=JobIds están vacíos\n"
 
-#: src/cats/sql_create.c:1218
+#: src/cats/sql_create.c:1219
 #, fuzzy, c-format
 msgid "Create db Object record %s failed. ERR=%s"
 msgstr "Creación del registro File db %s fallido. ERR=%s"
@@ -15380,66 +15546,66 @@ msgstr "Mas de un Cliente!: %s\n"
 msgid "Client record not found in Catalog.\n"
 msgstr "Registro de cliente no encontrado en catalogo.\n"
 
-#: src/cats/sql_get.c:767
+#: src/cats/sql_get.c:765
 #, c-format
 msgid "More than one Counter!: %d\n"
 msgstr "Mas de un Contador!: %d\n"
 
-#: src/cats/sql_get.c:772
+#: src/cats/sql_get.c:770
 #, c-format
 msgid "error fetching Counter row: %s\n"
 msgstr "error al obtener fila Contador: %s\n"
 
-#: src/cats/sql_get.c:792
+#: src/cats/sql_get.c:790
 #, c-format
 msgid "Counter record: %s not found in Catalog.\n"
 msgstr "registro Contador: %s no encontrado en Catalogo.\n"
 
-#: src/cats/sql_get.c:832
+#: src/cats/sql_get.c:830
 #, c-format
 msgid "Error got %s FileSets but expected only one!\n"
 msgstr "Error al obtener %s FileSets pero se esperaba sólo uno!\n"
 
-#: src/cats/sql_get.c:837
+#: src/cats/sql_get.c:835
 #, c-format
 msgid "FileSet record \"%s\" not found.\n"
 msgstr "Registro FileSet \"%s\" no encontrado.\n"
 
-#: src/cats/sql_get.c:847
+#: src/cats/sql_get.c:845
 msgid "FileSet record not found in Catalog.\n"
 msgstr "Registro FileSet no encontrado en Catalogo.\n"
 
-#: src/cats/sql_get.c:943
+#: src/cats/sql_get.c:941
 #, c-format
 msgid "Media id select failed: ERR=%s\n"
 msgstr "Fallo al seleccionar ID del Medio: ERR=%s\n"
 
-#: src/cats/sql_get.c:981
+#: src/cats/sql_get.c:979
 #, c-format
 msgid "query dbids failed: ERR=%s\n"
 msgstr "Consulta fallida a dbids: ERR=%s\n"
 
-#: src/cats/sql_get.c:1036
+#: src/cats/sql_get.c:1034
 #, c-format
 msgid "More than one Volume!: %s\n"
 msgstr "Mas de un Volumen!: %s\n"
 
-#: src/cats/sql_get.c:1092
+#: src/cats/sql_get.c:1090
 #, c-format
 msgid "Media record MediaId=%s not found.\n"
 msgstr "Registro Media MediaID=%s no encontrado.\n"
 
-#: src/cats/sql_get.c:1095
+#: src/cats/sql_get.c:1093
 #, c-format
 msgid "Media record for Volume \"%s\" not found.\n"
 msgstr "Registro Media para Volumen \"%s\" no encontrado.\n"
 
-#: src/cats/sql_get.c:1102
+#: src/cats/sql_get.c:1100
 #, c-format
 msgid "Media record for MediaId=%u not found in Catalog.\n"
 msgstr "Registro Media para MediaId=%u no encontrado en el Catalogo.\n"
 
-#: src/cats/sql_get.c:1105
+#: src/cats/sql_get.c:1103
 #, c-format
 msgid "Media record for Vol=%s not found in Catalog.\n"
 msgstr "Registro Media para Volumen=%s no encontrado en el Catalogo.\n"
@@ -15496,29 +15662,29 @@ msgstr "Solicitud de ítem Volumen %d mayor que el máximo %d o menor que 1\n"
 msgid "No Volume record found for item %d.\n"
 msgstr "Registro de ítem Volumen no encontrado %d.\n"
 
-#: src/cats/sqlite.c:159 src/cats/ingres.c:248 src/cats/postgresql.c:203
-#: src/cats/dbi.c:221 src/cats/mysql.c:157
+#: src/cats/sqlite.c:166 src/cats/ingres.c:255 src/cats/postgresql.c:210
+#: src/cats/dbi.c:228 src/cats/mysql.c:164
 #, c-format
 msgid "Unable to initialize DB lock. ERR=%s\n"
 msgstr "No se puede inicializar el bloqueo de la BD. ERR=%s\n"
 
-#: src/cats/sqlite.c:174
+#: src/cats/sqlite.c:181
 #, c-format
 msgid "Database %s does not exist, please create it.\n"
 msgstr "No existe base de datos %s, por favor crearla.\n"
 
-#: src/cats/sqlite.c:196
+#: src/cats/sqlite.c:203
 #, c-format
 msgid "Unable to open Database=%s. ERR=%s\n"
 msgstr "No se puede abrir la base de datos=%s. ERR=%s\n"
 
-#: src/cats/sqlite.c:197
+#: src/cats/sqlite.c:204
 msgid "unknown"
 msgstr "desconocido"
 
-#: src/cats/sqlite.c:449 src/cats/ingres.c:483 src/cats/postgresql.c:493
-#: src/cats/postgresql.c:540 src/cats/dbi.c:618 src/cats/cats.c:147
-#: src/cats/mysql.c:380
+#: src/cats/sqlite.c:462 src/cats/ingres.c:496 src/cats/postgresql.c:506
+#: src/cats/postgresql.c:553 src/cats/dbi.c:631 src/cats/cats.c:149
+#: src/cats/mysql.c:393
 #, c-format
 msgid "Query failed: %s: ERR=%s\n"
 msgstr "Consulta fallida: %s: ERR=%s\n"
@@ -15533,7 +15699,7 @@ msgstr "No se pudo asignar memoria para la firma de cifrado.\n"
 msgid "Failed to allocate space for query filters.\n"
 msgstr "No se pudo asignar memoria para la firma de cifrado.\n"
 
-#: src/cats/ingres.c:260
+#: src/cats/ingres.c:267
 #, fuzzy, c-format
 msgid ""
 "Unable to connect to Ingres server.\n"
@@ -15543,7 +15709,7 @@ msgstr ""
 "No se puede conectar al servidor MySQL.\n"
 "Base de Datos=%s Usuario=%s\n"
 
-#: src/cats/ingres.c:1074
+#: src/cats/ingres.c:1087
 #, fuzzy
 msgid "A user name for Ingres must be supplied.\n"
 msgstr "Un nombre de usuario para DBI debe ser suministrado.\n"
@@ -15611,24 +15777,24 @@ msgstr "La longitud de la ruta es nula. Archivo=%s\n"
 msgid "No results to list.\n"
 msgstr "No hay resultados para listar.\n"
 
-#: src/cats/sql.c:724
+#: src/cats/sql.c:721
 #, fuzzy
-msgid "Could not init database batch connection"
+msgid "Could not init database batch connection\n"
 msgstr "No se pudo iniciar base de datos de Bacula\n"
 
-#: src/cats/sql.c:730
+#: src/cats/sql.c:727
 #, c-format
 msgid "Could not open database \"%s\": ERR=%s\n"
 msgstr "No se pudo abrir la base de datos \"%s\": ERR=%s\n"
 
-#: src/cats/postgresql.c:174
+#: src/cats/postgresql.c:181
 #, c-format
 msgid "Encoding error for database \"%s\". Wanted SQL_ASCII, got %s\n"
 msgstr ""
 "Error de codificación de la base de datos \"%s\". Busco SQL_ASCII, obtuvo "
 "%s\n"
 
-#: src/cats/postgresql.c:239
+#: src/cats/postgresql.c:246
 #, fuzzy, c-format
 msgid ""
 "Unable to connect to PostgreSQL server. Database=%s User=%s\n"
@@ -15639,41 +15805,41 @@ msgstr ""
 "Base de datos=%s Usuario=%s\n"
 ", probablemente no funciona o tu contraseña es incorrecta.\n"
 
-#: src/cats/postgresql.c:337
+#: src/cats/postgresql.c:350
 msgid "PQescapeStringConn returned non-zero.\n"
 msgstr "PQescapeStringConn devuelto no-cero.\n"
 
-#: src/cats/postgresql.c:355
+#: src/cats/postgresql.c:368
 #, fuzzy
 msgid "PQescapeByteaConn returned NULL.\n"
 msgstr "PQescapeStringConn devuelto no-cero.\n"
 
-#: src/cats/postgresql.c:386
+#: src/cats/postgresql.c:399
 #, fuzzy
 msgid "PQunescapeByteaConn returned NULL.\n"
 msgstr "PQescapeStringConn devuelto no-cero.\n"
 
-#: src/cats/postgresql.c:800
+#: src/cats/postgresql.c:813
 #, c-format
 msgid "error fetching currval: %s\n"
 msgstr "error al obtener el valor: %s\n"
 
-#: src/cats/postgresql.c:991 src/cats/dbi.c:1264
+#: src/cats/postgresql.c:1004 src/cats/dbi.c:1277
 #, c-format
 msgid "error starting batch mode: %s"
 msgstr "Error iniciando modo batch: %s"
 
-#: src/cats/postgresql.c:1021 src/cats/postgresql.c:1028
+#: src/cats/postgresql.c:1034 src/cats/postgresql.c:1041
 #, c-format
 msgid "error ending batch mode: %s"
 msgstr "Error finalizando modo batch: %s"
 
-#: src/cats/postgresql.c:1075
+#: src/cats/postgresql.c:1088
 #, c-format
 msgid "error copying in batch mode: %s"
 msgstr "Error copiando en modo batch: %s"
 
-#: src/cats/postgresql.c:1097
+#: src/cats/postgresql.c:1110
 msgid "A user name for PostgreSQL must be supplied.\n"
 msgstr "Un nombre de usuario para PostgreSQL debe de ser suministrado.\n"
 
@@ -15695,7 +15861,7 @@ msgstr "El catálogo contiene copias de la siguiente manera:\n"
 msgid "Unknown database type: %s\n"
 msgstr "Tipo de base de datos desconocido: %s\n"
 
-#: src/cats/dbi.c:235
+#: src/cats/dbi.c:242
 #, c-format
 msgid ""
 "Unable to locate the DBD drivers to DBI interface in: \n"
@@ -15704,7 +15870,7 @@ msgstr ""
 "Incapaz de localizar los controladores de la interfaz DBD para DBI en: \n"
 "db_driverdir=%s. Es probable que no se encuentra ningún controlador\n"
 
-#: src/cats/dbi.c:292
+#: src/cats/dbi.c:299
 #, fuzzy, c-format
 msgid ""
 "Unable to connect to DBI interface. Type=%s Database=%s User=%s\n"
@@ -15715,20 +15881,20 @@ msgstr ""
 "Tipo=%s Base de Datos=%s Usuario=%s\n"
 "Probablemente no este ejecutando o su contraseña es incorrecta.\n"
 
-#: src/cats/dbi.c:1426
+#: src/cats/dbi.c:1439
 #, c-format
 msgid "error inserting batch mode: %s"
 msgstr "Error insertando en modo batch: %s"
 
-#: src/cats/dbi.c:1443
+#: src/cats/dbi.c:1456
 msgid "Driver type not specified in Catalog resource.\n"
 msgstr "Tipo de controlador no especificado en los recursos de Catálogo.\n"
 
-#: src/cats/dbi.c:1447
+#: src/cats/dbi.c:1460
 msgid "Invalid driver type, must be \"dbi:<type>\"\n"
 msgstr "Tipo de controlador no válido, debe ser \"dbi:<tipo>\"\n"
 
-#: src/cats/dbi.c:1451
+#: src/cats/dbi.c:1464
 msgid "A user name for DBI must be supplied.\n"
 msgstr "Un nombre de usuario para DBI debe ser suministrado.\n"
 
@@ -15751,7 +15917,7 @@ msgstr "Esperando un registro pool, tiene %d\n"
 msgid "Error fetching row %s\n"
 msgstr "Error obteniendo fila %s\n"
 
-#: src/cats/mysql.c:200
+#: src/cats/mysql.c:207
 #, c-format
 msgid ""
 "Unable to connect to MySQL server.\n"
@@ -15762,7 +15928,7 @@ msgstr ""
 "No se puede conectar al servidor MySQL.\n"
 "Base de Datos=%s Usuario=%s\n"
 
-#: src/cats/mysql.c:639
+#: src/cats/mysql.c:692
 msgid "A user name for MySQL must be supplied.\n"
 msgstr "Un nombre de usuario para MySQL debe de ser suministrado.\n"
 
@@ -15909,13 +16075,13 @@ msgid "You must enter a number between 1 and %d\n"
 msgstr "Debe de introducir un numero entre 1 y %d\n"
 
 #: src/console/console.c:1160 src/wx-console/console_thread.cpp:399
-#: src/qt-console/bcomm/dircomm.cpp:129
+#: src/qt-console/bcomm/dircomm.cpp:131
 #, c-format
 msgid "Failed to initialize TLS context for Console \"%s\".\n"
 msgstr "Fallo al inicializar el contexto TLS para la consola \"%s\".\n"
 
 #: src/console/console.c:1180 src/wx-console/console_thread.cpp:420
-#: src/qt-console/bcomm/dircomm.cpp:152
+#: src/qt-console/bcomm/dircomm.cpp:154
 #, c-format
 msgid "Failed to initialize TLS context for Director \"%s\".\n"
 msgstr "Fallo al inicializar el contexto TLS para el Director \"%s\".\n"
@@ -16391,22 +16557,25 @@ msgstr ""
 msgid "Could not open, database \"%s\".\n"
 msgstr "No se puede abrir la base de datos \"%s\".\n"
 
-#: src/tools/bsmtp.c:145
+#: src/tools/bsmtp.c:151
 #, c-format
 msgid "Fatal malformed reply from %s: %s\n"
 msgstr "Fatal malformación de respuesta desde %s: %s\n"
 
-#: src/tools/bsmtp.c:153
+#: src/tools/bsmtp.c:159
 #, c-format
 msgid "Fatal fgets error: ERR=%s\n"
 msgstr "fgets fatal error: ERR=%s\n"
 
-#: src/tools/bsmtp.c:186
-#, c-format
+#: src/tools/bsmtp.c:192
+#, fuzzy, c-format
 msgid ""
 "\n"
 "Usage: %s [-f from] [-h mailhost] [-s subject] [-c copy] [recipient ...]\n"
+"       -4          forces bsmtp to use IPv4 addresses only.\n"
+"       -6          forces bsmtp to use IPv6 addresses only.\n"
 "       -8          set charset to UTF-8\n"
+"       -a          use any ip protocol for address resolution\n"
 "       -c          set the Cc: field\n"
 "       -d <nn>     set debug level to <nn>\n"
 "       -dt         print a timestamp in debug output\n"
@@ -16434,57 +16603,67 @@ msgstr ""
 " -? imprimir este mensaje.\n"
 "\n"
 
-#: src/tools/bsmtp.c:343
+#: src/tools/bsmtp.c:379
 msgid "Fatal error: no recipient given.\n"
 msgstr "Fatal error: destinatario no determinado.\n"
 
-#: src/tools/bsmtp.c:372
+#: src/tools/bsmtp.c:407
 #, c-format
 msgid "Fatal gethostname error: ERR=%s\n"
 msgstr "gethostname fatal error: ERR=%s\n"
 
-#: src/tools/bsmtp.c:376
+#: src/tools/bsmtp.c:418
+#, fuzzy, c-format
+msgid "Fatal getaddrinfo for myself failed \"%s\": ERR=%s\n"
+msgstr "Fallo fatal gethostbyname para mi mismo \"%s\": ERR=%s\n"
+
+#: src/tools/bsmtp.c:426
 #, c-format
 msgid "Fatal gethostbyname for myself failed \"%s\": ERR=%s\n"
 msgstr "Fallo fatal gethostbyname para mi mismo \"%s\": ERR=%s\n"
 
-#: src/tools/bsmtp.c:412
+#: src/tools/bsmtp.c:486 src/tools/bsmtp.c:521
 #, c-format
 msgid "Error unknown mail host \"%s\": ERR=%s\n"
 msgstr "Error servidor de correo \"%s\" desconocido: ERR=%s\n"
 
-#: src/tools/bsmtp.c:415
+#: src/tools/bsmtp.c:489 src/tools/bsmtp.c:524
 msgid "Retrying connection using \"localhost\".\n"
 msgstr "Reintentando la conexión usando \"localhost\".\n"
 
-#: src/tools/bsmtp.c:423
+#: src/tools/bsmtp.c:514
+#, fuzzy, c-format
+msgid "Failed to connect to mailhost %s\n"
+msgstr "Fallo al conectar con el cliente.\n"
+
+#: src/tools/bsmtp.c:532
 #, c-format
 msgid "Fatal error: Unknown address family for smtp host: %d\n"
 msgstr ""
 "Fatal error: Desconocida familia de direcciones para servidor smtp: %d\n"
 
-#: src/tools/bsmtp.c:432 src/tools/bsmtp.c:437
+#: src/tools/bsmtp.c:541 src/tools/bsmtp.c:546
 #, c-format
 msgid "Fatal socket error: ERR=%s\n"
 msgstr "Fatal error de socket: ERR=%s\n"
 
-#: src/tools/bsmtp.c:442
+#: src/tools/bsmtp.c:551
 #, c-format
 msgid "Fatal connect error to %s: ERR=%s\n"
 msgstr "Fatal error de conexión para %s: ERR=%s\n"
 
-#: src/tools/bsmtp.c:450
+#: src/tools/bsmtp.c:560
 #, c-format
 msgid "Fatal _open_osfhandle error: ERR=%s\n"
 msgstr "Fatal error _open_osfhandle: ERR=%s\n"
 
-#: src/tools/bsmtp.c:457 src/tools/bsmtp.c:461 src/tools/bsmtp.c:470
-#: src/tools/bsmtp.c:474
+#: src/tools/bsmtp.c:567 src/tools/bsmtp.c:571 src/tools/bsmtp.c:580
+#: src/tools/bsmtp.c:584
 #, c-format
 msgid "Fatal fdopen error: ERR=%s\n"
 msgstr "Fatal error fdopen: ERR=%s\n"
 
-#: src/tools/bsmtp.c:466
+#: src/tools/bsmtp.c:576
 #, c-format
 msgid "Fatal dup error: ERR=%s\n"
 msgstr "Fatal error dup: ERR=%s\n"
@@ -17001,7 +17180,7 @@ msgstr "Tipo de archivo desconocido %d: %s\n"
 msgid "Network error in send to Director: ERR=%s\n"
 msgstr "Error de red en enviar al Director: ERR=%s\n"
 
-#: src/filed/verify.c:247 src/filed/accurate.c:428 src/filed/backup.c:503
+#: src/filed/verify.c:247 src/filed/accurate.c:429 src/filed/backup.c:506
 #, c-format
 msgid "%s digest initialization failed\n"
 msgstr "Inicialización de %s Digest ha fallado\n"
@@ -17026,12 +17205,12 @@ msgstr "Error leyendo archivo %s: ERR=%s\n"
 msgid "Space saved with Base jobs: %lld MB\n"
 msgstr ""
 
-#: src/filed/accurate.c:399
+#: src/filed/accurate.c:400
 #, fuzzy, c-format
 msgid "Cannot verify checksum for %s\n"
 msgstr "No se puede encontrar el recurso Schedule %s\n"
 
-#: src/filed/accurate.c:507
+#: src/filed/accurate.c:508
 msgid "2991 Bad accurate command\n"
 msgstr "2991 Malo comando accurate\n"
 
@@ -17088,6 +17267,11 @@ msgstr "====\n"
 msgid " SDSocket=closed\n"
 msgstr "SDSocket cerrado.\n"
 
+#: src/filed/status.c:463 src/filed/status.c:496
+#, c-format
+msgid "Bad .status command: %s\n"
+msgstr "Comando .status malo: %s\n"
+
 #: src/filed/status.c:464
 msgid "2900 Bad .status command, missing argument.\n"
 msgstr "2900 Malo comando .status, falta argumento.\n"
@@ -17116,232 +17300,233 @@ msgstr "Bacula Cliente: Ultimo Job Fallido"
 msgid "Bacula Client: Last Job had Warnings"
 msgstr "Bacula Cliente: Ultimo Job con Advertencias"
 
-#: src/filed/xattr.c:96 src/filed/xattr.c:111 src/filed/xattr.c:119
-#: src/filed/fd_plugins.c:696 src/filed/fd_plugins.c:710 src/filed/acl.c:105
-#: src/filed/acl.c:120 src/filed/acl.c:128 src/filed/backup.c:993
-#: src/filed/backup.c:1189 src/filed/backup.c:1226 src/filed/backup.c:1239
-#: src/filed/backup.c:1315 src/filed/backup.c:1413
+#: src/filed/xattr.c:97 src/filed/xattr.c:112 src/filed/xattr.c:120
+#: src/filed/fd_plugins.c:789 src/filed/fd_plugins.c:805 src/filed/acl.c:108
+#: src/filed/acl.c:123 src/filed/acl.c:131 src/filed/backup.c:999
+#: src/filed/backup.c:1199 src/filed/backup.c:1236 src/filed/backup.c:1249
+#: src/filed/backup.c:1325 src/filed/backup.c:1424
 #, c-format
 msgid "Network send error to SD. ERR=%s\n"
 msgstr "Error de red al enviar para SD. ERR=%s\n"
 
-#: src/filed/xattr.c:244
+#: src/filed/xattr.c:245
 #, c-format
 msgid "Illegal xattr stream, no XATTR_MAGIC on file \"%s\"\n"
 msgstr "Flujo xattr ilegal, no hay XATTR_MAGIC en el archivo \"%s\"\n"
 
-#: src/filed/xattr.c:258
+#: src/filed/xattr.c:259
 #, fuzzy, c-format
 msgid "Illegal xattr stream, xattr name length <= 0 on file \"%s\"\n"
 msgstr ""
 "Ilegal flujo xattr, fallo al analizar flujo xattr en el archivo \"%s\"\n"
 
-#: src/filed/xattr.c:376 src/filed/xattr.c:408
+#: src/filed/xattr.c:381 src/filed/xattr.c:417
 #, fuzzy, c-format
 msgid "llistea error on file \"%s\": ERR=%s\n"
 msgstr "error de llistxattr en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:472 src/filed/xattr.c:500
+#: src/filed/xattr.c:467 src/filed/xattr.c:520
 #, fuzzy, c-format
 msgid "lgetea error on file \"%s\": ERR=%s\n"
 msgstr "error de getacl en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:519 src/filed/xattr.c:807 src/filed/xattr.c:1249
-#: src/filed/xattr.c:1702 src/filed/xattr.c:2064 src/filed/xattr.c:2843
+#: src/filed/xattr.c:556 src/filed/xattr.c:877 src/filed/xattr.c:1352
+#: src/filed/xattr.c:1820 src/filed/xattr.c:2176 src/filed/xattr.c:2968
 #, c-format
 msgid "Xattr stream on file \"%s\" exceeds maximum size of %d bytes\n"
 msgstr "Flujo Xattr en el archivo \"%s\" excede el máximo tamaño de %d bytes\n"
 
-#: src/filed/xattr.c:550 src/filed/xattr.c:841 src/filed/xattr.c:1280
-#: src/filed/xattr.c:1743 src/filed/xattr.c:2089
+#: src/filed/xattr.c:576 src/filed/xattr.c:903 src/filed/xattr.c:1372
+#: src/filed/xattr.c:1850 src/filed/xattr.c:2193
 #, c-format
 msgid "Failed to serialize extended attributes on file \"%s\"\n"
 msgstr "No se pudo serializar los atributos extendidos en el archivo \"%s\"\n"
 
-#: src/filed/xattr.c:624
+#: src/filed/xattr.c:643
 #, fuzzy, c-format
 msgid "lsetea error on file \"%s\": ERR=%s\n"
 msgstr "setacl error en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:710 src/filed/xattr.c:777 src/filed/xattr.c:789
+#: src/filed/xattr.c:731 src/filed/xattr.c:769 src/filed/xattr.c:832
+#: src/filed/xattr.c:844
 #, fuzzy, c-format
 msgid "attr_list error on file \"%s\": ERR=%s\n"
 msgstr "error de extattr_list_link en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:916
+#: src/filed/xattr.c:968
 #, fuzzy, c-format
 msgid "Received illegal xattr named %s on file \"%s\"\n"
 msgstr "Flujo xattr ilegal, no hay XATTR_MAGIC en el archivo \"%s\"\n"
 
-#: src/filed/xattr.c:947 src/filed/xattr.c:957
+#: src/filed/xattr.c:1001 src/filed/xattr.c:1011
 #, fuzzy, c-format
 msgid "attr_set error on file \"%s\": ERR=%s\n"
 msgstr "error de acl_set en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:1092 src/filed/xattr.c:1123
+#: src/filed/xattr.c:1161 src/filed/xattr.c:1196
 #, c-format
 msgid "llistxattr error on file \"%s\": ERR=%s\n"
 msgstr "error de llistxattr en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:1204 src/filed/xattr.c:1231
+#: src/filed/xattr.c:1264 src/filed/xattr.c:1316
 #, c-format
 msgid "lgetxattr error on file \"%s\": ERR=%s\n"
 msgstr "error de lgetxattr en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:1350
+#: src/filed/xattr.c:1435
 #, c-format
 msgid "lsetxattr error on file \"%s\": ERR=%s\n"
 msgstr "error de lsetxattr en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:1507 src/filed/xattr.c:1539
+#: src/filed/xattr.c:1593 src/filed/xattr.c:1628
 #, c-format
 msgid "extattr_list_link error on file \"%s\": ERR=%s\n"
 msgstr "error de extattr_list_link en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:1558
+#: src/filed/xattr.c:1648
 #, c-format
 msgid "Failed to convert %d into namespace on file \"%s\"\n"
 msgstr "No se pudo convertir %d al namespace en el archivo \"%s\"\n"
 
-#: src/filed/xattr.c:1653 src/filed/xattr.c:1682
+#: src/filed/xattr.c:1728 src/filed/xattr.c:1783
 #, c-format
 msgid "extattr_get_link error on file \"%s\": ERR=%s\n"
 msgstr "error de extattr_get_link en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:1809
+#: src/filed/xattr.c:1907
 #, c-format
 msgid "Failed to split %s into namespace and name part on file \"%s\"\n"
 msgstr ""
 "No se ha podido separar %s en el namespace y parte del nombre en el archivo "
 "\"%s\"\n"
 
-#: src/filed/xattr.c:1822
+#: src/filed/xattr.c:1920
 #, c-format
 msgid "Failed to convert %s into namespace on file \"%s\"\n"
 msgstr "No se pudo convertir %s al namespace en el archivo \"%s\"\n"
 
-#: src/filed/xattr.c:1841
+#: src/filed/xattr.c:1941
 #, c-format
 msgid "extattr_set_link error on file \"%s\": ERR=%s\n"
 msgstr "error de extattr_set_link en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:1943 src/filed/xattr.c:1965
+#: src/filed/xattr.c:2044 src/filed/xattr.c:2069
 #, fuzzy, c-format
 msgid "getproplist error on file \"%s\": ERR=%s\n"
 msgstr "error de getacl en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:2169
+#: src/filed/xattr.c:2262
 #, fuzzy, c-format
 msgid "Unable create proper proplist to restore xattrs on file \"%s\"\n"
 msgstr "No es posible leer el contenido de xattr %s en el archivo \"%s\"\n"
 
-#: src/filed/xattr.c:2196
+#: src/filed/xattr.c:2291
 #, fuzzy, c-format
 msgid "setproplist error on file \"%s\": ERR=%s\n"
 msgstr "strtoacl error en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:2496 src/filed/xattr.c:2547
+#: src/filed/xattr.c:2609 src/filed/xattr.c:2662
 #, c-format
 msgid "Unable to get acl on xattr %s on file \"%s\": ERR=%s\n"
 msgstr "No se puede obtener acl en xattr %s en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:2562
+#: src/filed/xattr.c:2679
 #, c-format
 msgid "Unable to get acl text on xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 "No se puede obtener acl texto en xattr %s en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:2632
+#: src/filed/xattr.c:2753
 #, c-format
 msgid "Unable to get status on xattr %s on file \"%s\": ERR=%s\n"
 msgstr "No se puede obtener estado en xattr %s en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:2763
+#: src/filed/xattr.c:2886
 #, c-format
 msgid "Unable to open xattr %s on \"%s\": ERR=%s\n"
 msgstr "No se puede abrir xattr %s en \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:2784
+#: src/filed/xattr.c:2909
 #, c-format
 msgid "Unable to read symlin %s on \"%s\": ERR=%s\n"
 msgstr "No se puede leer symlin %s en \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:2859
+#: src/filed/xattr.c:2984
 #, c-format
 msgid "Unable to read content of xattr %s on file \"%s\"\n"
 msgstr "No es posible leer el contenido de xattr %s en el archivo \"%s\"\n"
 
-#: src/filed/xattr.c:2897
+#: src/filed/xattr.c:3024
 #, c-format
 msgid "Unable to chdir to xattr space of file \"%s\": ERR=%s\n"
 msgstr "No se puede chdir a xattr espacio de archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:2953 src/filed/xattr.c:3193
+#: src/filed/xattr.c:3081 src/filed/xattr.c:3330
 #, c-format
 msgid "Unable to open file \"%s\": ERR=%s\n"
 msgstr "No se puede abrir el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:2979 src/filed/xattr.c:3246
+#: src/filed/xattr.c:3109 src/filed/xattr.c:3391
 #, c-format
 msgid "Unable to open xattr space %s on file \"%s\": ERR=%s\n"
 msgstr "No se puede abrir espacio xattr %s en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:2993 src/filed/xattr.c:3214
+#: src/filed/xattr.c:3125 src/filed/xattr.c:3355
 #, c-format
 msgid "Unable to chdir to xattr space on file \"%s\": ERR=%s\n"
 msgstr "No se puede chdir a xattr espacio en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:3012
+#: src/filed/xattr.c:3146
 #, c-format
 msgid "Unable to list the xattr space on file \"%s\": ERR=%s\n"
 msgstr "No se puede listar el xattr espacio en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:3105
+#: src/filed/xattr.c:3238
 #, c-format
 msgid "Unable to convert acl from text on file \"%s\"\n"
 msgstr "No se puede convertir acl de texto en el archivo \"%s\"\n"
 
-#: src/filed/xattr.c:3113 src/filed/xattr.c:3135
+#: src/filed/xattr.c:3248 src/filed/xattr.c:3271
 #, c-format
 msgid "Unable to restore acl of xattr %s on file \"%s\": ERR=%s\n"
 msgstr "No se puede restablecer acl de xattr %s en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:3205
+#: src/filed/xattr.c:3344
 #, c-format
 msgid "Unable to open xattr space on file \"%s\": ERR=%s\n"
 msgstr "No se puede abrir xattr espacio en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:3231 src/filed/xattr.c:3379
+#: src/filed/xattr.c:3374 src/filed/xattr.c:3536
 #, c-format
 msgid "Unable to open xattr %s on file \"%s\": ERR=%s\n"
 msgstr "No se puede abrir xattr %s en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:3261
+#: src/filed/xattr.c:3408
 #, c-format
 msgid "Unable to chdir to xattr space %s on file \"%s\": ERR=%s\n"
 msgstr "No se puede chdir a xattr espacio de %s en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:3299
+#: src/filed/xattr.c:3448
 #, c-format
 msgid "Unable to mkfifo xattr %s on file \"%s\": ERR=%s\n"
 msgstr "No se puede mkfifo xattr %s en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:3315
+#: src/filed/xattr.c:3466
 #, c-format
 msgid "Unable to mknod xattr %s on file \"%s\": ERR=%s\n"
 msgstr "No se puede mknode xattr %s en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:3331
+#: src/filed/xattr.c:3484
 #, c-format
 msgid "Unable to mkdir xattr %s on file \"%s\": ERR=%s\n"
 msgstr "No se puede mkdir xattr %s en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:3349
+#: src/filed/xattr.c:3504
 #, c-format
 msgid "Unable to link xattr %s to %s on file \"%s\": ERR=%s\n"
 msgstr "No se puede link xattr %s para %s en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:3400
+#: src/filed/xattr.c:3557
 #, c-format
 msgid ""
 "Unable to restore data of xattr %s on file \"%s\": Not all data available in "
@@ -17350,53 +17535,53 @@ msgstr ""
 "No se puede restaurar los datos de xattr %s en el archivo \"%s\": No todos "
 "los datos disponibles en flujo xattr\n"
 
-#: src/filed/xattr.c:3411
+#: src/filed/xattr.c:3570
 #, c-format
 msgid "Unable to restore data of xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 "No se puede restaurar los datos de xattr %s en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:3432
+#: src/filed/xattr.c:3593
 #, c-format
 msgid "Unable to symlink xattr %s to %s on file \"%s\": ERR=%s\n"
 msgstr "No se puede symlink xattr %s para %s en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:3466
+#: src/filed/xattr.c:3629
 #, c-format
 msgid "Unable to restore owner of xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 "No es posible restablecer el propietario de xattr %s en el archivo \"%s\": "
 "ERR=%s\n"
 
-#: src/filed/xattr.c:3492
+#: src/filed/xattr.c:3657
 #, c-format
 msgid "Unable to restore filetimes of xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 "No es posible restablecer filetimes de xattr %s en el archivo \"%s\": ERR="
 "%s\n"
 
-#: src/filed/xattr.c:3508
+#: src/filed/xattr.c:3673
 #, c-format
 msgid "Illegal xattr stream, failed to parse xattr stream on file \"%s\"\n"
 msgstr ""
 "Ilegal flujo xattr, fallo al analizar flujo xattr en el archivo \"%s\"\n"
 
-#: src/filed/xattr.c:3570
+#: src/filed/xattr.c:3734
 #, c-format
 msgid "Failed to restore extensible attributes on file \"%s\"\n"
 msgstr "Fallo al restablecer atributos extensible en el archivo \"%s\"\n"
 
-#: src/filed/xattr.c:3583
+#: src/filed/xattr.c:3747
 #, c-format
 msgid "Failed to restore extended attributes on file \"%s\"\n"
 msgstr "Fallo al restablecer atributos extendidos en el archivo \"%s\"\n"
 
-#: src/filed/xattr.c:3672 src/filed/acl.c:2109
+#: src/filed/xattr.c:3841 src/filed/acl.c:2265
 #, fuzzy, c-format
 msgid "Unable to stat file \"%s\": ERR=%s\n"
 msgstr "No se puede abrir el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/xattr.c:3719
+#: src/filed/xattr.c:3891
 #, c-format
 msgid ""
 "Can't restore Extended Attributes of %s - incompatible xattr stream "
@@ -17405,41 +17590,41 @@ msgstr ""
 "No se puede restaurar los atributos extendidos de %s - incompatible flujo "
 "xattr encontrado - %d\n"
 
-#: src/filed/fd_plugins.c:480 src/filed/fd_plugins.c:619
+#: src/filed/fd_plugins.c:550 src/filed/fd_plugins.c:694
 #, fuzzy, c-format
 msgid "Command plugin \"%s\": no type in startBackupFile packet.\n"
 msgstr "Comando plugin \"%s\" regresó malo paquete startBackupFile.\n"
 
-#: src/filed/fd_plugins.c:493
+#: src/filed/fd_plugins.c:563
 #, fuzzy, c-format
 msgid "Command plugin \"%s\": no object_name in startBackupFile packet.\n"
 msgstr "Comando plugin \"%s\" regresó malo paquete startBackupFile.\n"
 
-#: src/filed/fd_plugins.c:505 src/filed/fd_plugins.c:626
+#: src/filed/fd_plugins.c:576 src/filed/fd_plugins.c:701
 #, fuzzy, c-format
 msgid "Command plugin \"%s\": no fname in startBackupFile packet.\n"
 msgstr "Comando plugin \"%s\" regresó malo paquete startBackupFile.\n"
 
-#: src/filed/fd_plugins.c:683
+#: src/filed/fd_plugins.c:775
 msgid "Plugin save packet not found.\n"
 msgstr "Plugin guardar paquetes no encontrado.\n"
 
-#: src/filed/fd_plugins.c:806
+#: src/filed/fd_plugins.c:910
 #, c-format
 msgid "Plugin=%s not found.\n"
 msgstr "Plugin=%s no encontrado.\n"
 
-#: src/filed/fd_plugins.c:863
+#: src/filed/fd_plugins.c:977
 #, c-format
 msgid "Plugin createFile call failed. Stat=%d file=%s\n"
 msgstr "Fallo llamada plugin createFile. Stat=%d archivo=%s\n"
 
-#: src/filed/fd_plugins.c:874
+#: src/filed/fd_plugins.c:982
 #, c-format
 msgid "Plugin createFile call failed. Returned CF_ERROR file=%s\n"
 msgstr "Fallo llamada plugin createFile. Retorno CF_ERROR archivo=%s\n"
 
-#: src/filed/fd_plugins.c:1621
+#: src/filed/fd_plugins.c:1859
 #, fuzzy
 msgid "Command plugin: no fname in baculaCheckChanges packet.\n"
 msgstr "Comando plugin \"%s\" regresó malo paquete startBackupFile.\n"
@@ -17568,24 +17753,24 @@ msgstr ""
 msgid "No Director resource defined in %s\n"
 msgstr "Recurso Director no definido en %s\n"
 
-#: src/filed/acl.c:225 src/filed/acl.c:248
+#: src/filed/acl.c:229 src/filed/acl.c:254
 #, fuzzy, c-format
 msgid "aclx_get error on file \"%s\": ERR=%s\n"
 msgstr "error de acl_get en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/acl.c:274
+#: src/filed/acl.c:280
 #, fuzzy, c-format
 msgid "Unknown acl type encountered on file \"%s\": %ld\n"
 msgstr ""
 "codificación errónea del tipo de ACL en el flujo de ACL en el archivo \"%s"
 "\" \n"
 
-#: src/filed/acl.c:298 src/filed/acl.c:307
+#: src/filed/acl.c:304 src/filed/acl.c:313
 #, fuzzy, c-format
 msgid "Failed to convert acl into text on file \"%s\"\n"
 msgstr "No se puede convertir acl de texto en el archivo \"%s\"\n"
 
-#: src/filed/acl.c:381
+#: src/filed/acl.c:386
 #, fuzzy, c-format
 msgid ""
 "Trying to restore POSIX acl on file \"%s\" on filesystem without AIXC acl "
@@ -17594,7 +17779,7 @@ msgstr ""
 "Tratando de restaurar acl en el archivo \"%s\" en sistema de ficheros sin "
 "soporte a acl\n"
 
-#: src/filed/acl.c:389
+#: src/filed/acl.c:394
 #, fuzzy, c-format
 msgid ""
 "Trying to restore NFSv4 acl on file \"%s\" on filesystem without NFS4 acl "
@@ -17603,64 +17788,64 @@ msgstr ""
 "Tratando de restaurar acl en el archivo \"%s\" en sistema de ficheros sin "
 "soporte a acl\n"
 
-#: src/filed/acl.c:433 src/filed/acl.c:443
+#: src/filed/acl.c:442 src/filed/acl.c:452
 #, fuzzy, c-format
 msgid "aclx_scanStr error on file \"%s\": ERR=%s\n"
 msgstr "error de acl_set en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/acl.c:467
+#: src/filed/acl.c:478
 #, fuzzy, c-format
 msgid "aclx_put error on file \"%s\": ERR=%s\n"
 msgstr "error de acl_get en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/acl.c:809
+#: src/filed/acl.c:823
 #, c-format
 msgid "acl_to_text error on file \"%s\": ERR=%s\n"
 msgstr "acl_to_text error en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/acl.c:837
+#: src/filed/acl.c:853
 #, c-format
 msgid "acl_get_file error on file \"%s\": ERR=%s\n"
 msgstr "error de acl_get_file en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/acl.c:889
+#: src/filed/acl.c:906
 #, fuzzy, c-format
 msgid ""
 "acl_delete_def_file error on file \"%s\": filesystem doesn't support ACLs\n"
 msgstr "acl_delete_def_file error en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/acl.c:895
+#: src/filed/acl.c:912
 #, c-format
 msgid "acl_delete_def_file error on file \"%s\": ERR=%s\n"
 msgstr "acl_delete_def_file error en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/acl.c:904
+#: src/filed/acl.c:923
 #, c-format
 msgid "acl_from_text error on file \"%s\": ERR=%s\n"
 msgstr "acl_from_text error en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/acl.c:918
+#: src/filed/acl.c:939
 #, c-format
 msgid "acl_valid error on file \"%s\": ERR=%s\n"
 msgstr "error de acl_valid en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/acl.c:948
+#: src/filed/acl.c:971
 #, fuzzy, c-format
 msgid "acl_set_file error on file \"%s\": filesystem doesn't support ACLs\n"
 msgstr "acl_set_file error en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/acl.c:957
+#: src/filed/acl.c:980
 #, c-format
 msgid "acl_set_file error on file \"%s\": ERR=%s\n"
 msgstr "acl_set_file error en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/acl.c:1063 src/filed/acl.c:1089 src/filed/acl.c:1201
-#: src/filed/acl.c:1692 src/filed/acl.c:1795
+#: src/filed/acl.c:1087 src/filed/acl.c:1116 src/filed/acl.c:1230
+#: src/filed/acl.c:1738 src/filed/acl.c:1845
 #, c-format
 msgid "pathconf error on file \"%s\": ERR=%s\n"
 msgstr "error de pathconf en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/acl.c:1216
+#: src/filed/acl.c:1246
 #, fuzzy, c-format
 msgid ""
 "Trying to restore acl on file \"%s\" on filesystem without %s acl support\n"
@@ -17668,39 +17853,39 @@ msgstr ""
 "Tratando de restaurar acl en el archivo \"%s\" en sistema de ficheros sin "
 "soporte a acl\n"
 
-#: src/filed/acl.c:1492
+#: src/filed/acl.c:1531
 #, c-format
 msgid "getacl error on file \"%s\": ERR=%s\n"
 msgstr "error de getacl en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/acl.c:1525
+#: src/filed/acl.c:1566
 #, c-format
 msgid "acltostr error on file \"%s\": ERR=%s\n"
 msgstr "altostr error en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/acl.c:1546 src/filed/acl.c:1554
+#: src/filed/acl.c:1588 src/filed/acl.c:1598
 #, c-format
 msgid "strtoacl error on file \"%s\": ERR=%s\n"
 msgstr "strtoacl error en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/acl.c:1582
+#: src/filed/acl.c:1627
 #, fuzzy, c-format
 msgid "setacl error on file \"%s\": filesystem doesn't support ACLs\n"
 msgstr ""
 "Tratando de restaurar acl en el archivo \"%s\" en sistema de ficheros sin "
 "soporte a acl\n"
 
-#: src/filed/acl.c:1590
+#: src/filed/acl.c:1635
 #, c-format
 msgid "setacl error on file \"%s\": ERR=%s\n"
 msgstr "setacl error en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/acl.c:1711
+#: src/filed/acl.c:1760
 #, c-format
 msgid "acl_get error on file \"%s\": ERR=%s\n"
 msgstr "error de acl_get en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/acl.c:1786
+#: src/filed/acl.c:1834
 #, c-format
 msgid ""
 "Trying to restore acl on file \"%s\" on filesystem without acl support\n"
@@ -17708,7 +17893,7 @@ msgstr ""
 "Tratando de restaurar acl en el archivo \"%s\" en sistema de ficheros sin "
 "soporte a acl\n"
 
-#: src/filed/acl.c:1812
+#: src/filed/acl.c:1863
 #, fuzzy, c-format
 msgid ""
 "Trying to restore POSIX acl on file \"%s\" on filesystem without aclent acl "
@@ -17717,7 +17902,7 @@ msgstr ""
 "Tratando de restaurar acl en el archivo \"%s\" en sistema de ficheros sin "
 "soporte a acl aclent\n"
 
-#: src/filed/acl.c:1823
+#: src/filed/acl.c:1874
 #, fuzzy, c-format
 msgid ""
 "Trying to restore NFSv4 acl on file \"%s\" on filesystem without ace acl "
@@ -17726,39 +17911,49 @@ msgstr ""
 "Tratando de restaurar acl en el archivo \"%s\" en sistema de ficheros sin "
 "soporte a acl ace\n"
 
-#: src/filed/acl.c:1839
+#: src/filed/acl.c:1890
 #, c-format
 msgid "acl_fromtext error on file \"%s\": ERR=%s\n"
 msgstr "error de acl_fromtext en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/acl.c:1853 src/filed/acl.c:1861
+#: src/filed/acl.c:1904 src/filed/acl.c:1912
 #, c-format
 msgid "wrong encoding of acl type in acl stream on file \"%s\"\n"
 msgstr ""
 "codificación errónea del tipo de ACL en el flujo de ACL en el archivo \"%s"
 "\" \n"
 
-#: src/filed/acl.c:1886
+#: src/filed/acl.c:1937
 #, c-format
 msgid "acl_set error on file \"%s\": ERR=%s\n"
 msgstr "error de acl_set en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/acl.c:1971
+#: src/filed/acl.c:2023
 #, c-format
 msgid "acltotext error on file \"%s\": ERR=%s\n"
 msgstr "acltotext error en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/acl.c:1993
+#: src/filed/acl.c:2046
 #, c-format
 msgid "aclfromtext error on file \"%s\": ERR=%s\n"
 msgstr "aclfromtext error en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/acl.c:2011
+#: src/filed/acl.c:2066
 #, c-format
 msgid "acl(SETACL) error on file \"%s\": ERR=%s\n"
 msgstr "acl(SETACL) error en el archivo \"%s\": ERR=%s\n"
 
-#: src/filed/acl.c:2181
+#: src/filed/acl.c:2132
+#, fuzzy, c-format
+msgid "pioctl VIOCGETAL error on file \"%s\": ERR=%s\n"
+msgstr "acl(SETACL) error en el archivo \"%s\": ERR=%s\n"
+
+#: src/filed/acl.c:2160
+#, fuzzy, c-format
+msgid "pioctl VIOCSETAL error on file \"%s\": ERR=%s\n"
+msgstr "acl(SETACL) error en el archivo \"%s\": ERR=%s\n"
+
+#: src/filed/acl.c:2363
 #, c-format
 msgid "Can't restore ACLs of %s - incompatible acl stream encountered - %d\n"
 msgstr ""
@@ -17768,17 +17963,17 @@ msgstr ""
 msgid "Storage command not issued before Verify.\n"
 msgstr "Comando Storage no publicado antes de Verificar.\n"
 
-#: src/filed/verify_vol.c:97 src/filed/restore.c:483
+#: src/filed/verify_vol.c:97 src/filed/restore.c:486
 #, c-format
 msgid "Record header scan error: %s\n"
 msgstr "Error analizando registro de cabecera: %s\n"
 
-#: src/filed/verify_vol.c:106 src/filed/restore.c:495
+#: src/filed/verify_vol.c:106 src/filed/restore.c:498
 #, c-format
 msgid "Data record error. ERR=%s\n"
 msgstr "Error de registro de datos. ERR=%s\n"
 
-#: src/filed/verify_vol.c:110 src/filed/restore.c:499
+#: src/filed/verify_vol.c:110 src/filed/restore.c:502
 #, c-format
 msgid "Actual data size %d not same as header %d\n"
 msgstr "Tamaño actual de los datos %d no igual a cabecera %d\n"
@@ -17857,90 +18052,90 @@ msgstr "Archivo no guardado: %s\n"
 msgid "     Could not open directory \"%s\": ERR=%s\n"
 msgstr "No se puede abrir directorio \"%s\": ERR=%s.\n"
 
-#: src/filed/backup.c:463
+#: src/filed/backup.c:466
 #, c-format
 msgid "     Unknown file type %d; not saved: %s\n"
 msgstr "     Tipo de archivo %d desconocido; no ha sido guardado: %s\n"
 
-#: src/filed/backup.c:519
+#: src/filed/backup.c:522
 #, c-format
 msgid "%s signature digest initialization failed\n"
 msgstr "Fallo la inicialización de la firma digest %s\n"
 
-#: src/filed/backup.c:624
+#: src/filed/backup.c:630
 #, c-format
 msgid "     Cannot open \"%s\": ERR=%s.\n"
 msgstr "No se puede abrir \"%s\": ERR=%s.\n"
 
-#: src/filed/backup.c:661
+#: src/filed/backup.c:667
 #, c-format
 msgid "     Cannot open resource fork for \"%s\": ERR=%s.\n"
 msgstr "No se puede abrir recurso fork para \"%s\": ERR=%s.\n"
 
-#: src/filed/backup.c:757
+#: src/filed/backup.c:763
 msgid "Failed to allocate memory for crypto signature.\n"
 msgstr "No se pudo asignar memoria para la firma de cifrado.\n"
 
-#: src/filed/backup.c:762 src/filed/backup.c:768 src/filed/backup.c:783
+#: src/filed/backup.c:768 src/filed/backup.c:774 src/filed/backup.c:789
 msgid "An error occurred while signing the stream.\n"
 msgstr "Se produjo un error al firmar el stream.\n"
 
-#: src/filed/backup.c:807
+#: src/filed/backup.c:813
 msgid "An error occurred finalizing signing the stream.\n"
 msgstr "Se produjo un error concluir la firma del stream.\n"
 
-#: src/filed/backup.c:925
+#: src/filed/backup.c:931
 #, c-format
 msgid "Compression deflateParams error: %d\n"
 msgstr "Error de compresión DeflateParams: %d\n"
 
-#: src/filed/backup.c:962
+#: src/filed/backup.c:968
 #, fuzzy
 msgid "Encrypting sparse or offset data not supported.\n"
 msgstr "Cifrado de datos dispersos no soportado.\n"
 
-#: src/filed/backup.c:969
+#: src/filed/backup.c:975
 msgid "Failed to initialize encryption context.\n"
 msgstr "Fallo al inicializar el contexto de cifrado.\n"
 
-#: src/filed/backup.c:1079
+#: src/filed/backup.c:1085
 #, c-format
 msgid "Compression deflate error: %d\n"
 msgstr "Error de compresión Deflate: %d\n"
 
-#: src/filed/backup.c:1086
+#: src/filed/backup.c:1092
 #, c-format
 msgid "Compression deflateReset error: %d\n"
 msgstr "Error de compresión DeflateReset: %d\n"
 
-#: src/filed/backup.c:1116
+#: src/filed/backup.c:1126
 #, fuzzy, c-format
 msgid "Compression LZO error: %d\n"
 msgstr "Error de compresión Deflate: %d\n"
 
-#: src/filed/backup.c:1161 src/filed/backup.c:1177
+#: src/filed/backup.c:1171 src/filed/backup.c:1187
 msgid "Encryption error\n"
 msgstr "Error de cifrado\n"
 
-#: src/filed/backup.c:1203
+#: src/filed/backup.c:1213
 #, c-format
 msgid "Read error on file %s. ERR=%s\n"
 msgstr "Error de lectura en el archivo %s. ERR=%s\n"
 
-#: src/filed/backup.c:1206
+#: src/filed/backup.c:1216
 #, fuzzy, c-format
 msgid "Too many errors. JobErrors=%d.\n"
 msgstr "Demasiados errores.\n"
 
-#: src/filed/backup.c:1216
+#: src/filed/backup.c:1226
 msgid "Encryption padding error\n"
 msgstr "Error de relleno de cifrado\n"
 
-#: src/filed/backup.c:1280
+#: src/filed/backup.c:1290
 msgid "Invalid file flags, no supported data stream type.\n"
 msgstr "Invalidas banderas de archivo, tipo de flujo de datos no soportado.\n"
 
-#: src/filed/backup.c:1536
+#: src/filed/backup.c:1549
 #, c-format
 msgid "VSS Writer (BackupComplete): %s\n"
 msgstr "VSS Writer (BackupComplete): %s\n"
@@ -17961,16 +18156,16 @@ msgstr "Longitud no válida de Buscador de Información (obtuvo %d, no 32)\n"
 msgid "Could not set Finder Info on %s\n"
 msgstr "No se pudo establecer Finder Info en %s\n"
 
-#: src/filed/restore.c:415
+#: src/filed/restore.c:418
 #, fuzzy
 msgid "LZO init failed\n"
 msgstr "Negociación TLS fallida\n"
 
-#: src/filed/restore.c:657
+#: src/filed/restore.c:660
 msgid "Unexpected cryptographic session data stream.\n"
 msgstr "Inesperado flujo de datos de sesión criptográfica.\n"
 
-#: src/filed/restore.c:667
+#: src/filed/restore.c:670
 msgid ""
 "No private decryption keys have been defined to decrypt encrypted backup "
 "data.\n"
@@ -17978,62 +18173,62 @@ msgstr ""
 "Ninguna claves privadas de descifrado se ha definido para descifrar los "
 "datos cifrados de las copia de seguridad.\n"
 
-#: src/filed/restore.c:678
+#: src/filed/restore.c:681
 msgid "Could not create digest.\n"
 msgstr "No es posible crear sumario.\n"
 
-#: src/filed/restore.c:696
+#: src/filed/restore.c:699
 msgid "Missing private key required to decrypt encrypted backup data.\n"
 msgstr ""
 "Falta la clave privada requerida para descifrar los datos del respaldo "
 "cifrado.\n"
 
-#: src/filed/restore.c:699
+#: src/filed/restore.c:702
 msgid "Decrypt of the session key failed.\n"
 msgstr "Fallo al descifrar la clave de sesión.\n"
 
-#: src/filed/restore.c:705
+#: src/filed/restore.c:708
 #, c-format
 msgid "An error occurred while decoding encrypted session data stream: %s\n"
 msgstr ""
 "Se produjo un error al descodificar flujo de datos de sesión encriptados: "
 "%s\n"
 
-#: src/filed/restore.c:772 src/filed/restore.c:825
+#: src/filed/restore.c:775 src/filed/restore.c:828
 #, c-format
 msgid "Missing encryption session data stream for %s\n"
 msgstr "Falta cifrado de flujo de datos de sesión para %s\n"
 
-#: src/filed/restore.c:780 src/filed/restore.c:832
+#: src/filed/restore.c:783 src/filed/restore.c:835
 #, c-format
 msgid "Failed to initialize decryption context for %s\n"
 msgstr "Fallo al inicializar el contexto de descifrado para %s\n"
 
-#: src/filed/restore.c:844
+#: src/filed/restore.c:847
 #, c-format
 msgid "Cannot open resource fork for %s.\n"
 msgstr "No se puede abrir recursos fork para %s.\n"
 
-#: src/filed/restore.c:986
+#: src/filed/restore.c:992
 msgid "Unexpected cryptographic signature data stream.\n"
 msgstr "Inesperado signatura de datos de sesión criptográfica.\n"
 
-#: src/filed/restore.c:994
+#: src/filed/restore.c:1000
 #, c-format
 msgid "Failed to decode message signature for %s\n"
 msgstr "No se ha podido descifrar la firma del mensaje para %s\n"
 
-#: src/filed/restore.c:1058
+#: src/filed/restore.c:1064
 #, c-format
 msgid "Encountered %ld acl errors while doing restore\n"
 msgstr "Detectado %ld errores de acl mientras que hace restaurar\n"
 
-#: src/filed/restore.c:1062
+#: src/filed/restore.c:1068
 #, c-format
 msgid "Encountered %ld xattr errors while doing restore\n"
 msgstr "Detectado %ld errores de xattr al hacer restauración\n"
 
-#: src/filed/restore.c:1066
+#: src/filed/restore.c:1072
 #, c-format
 msgid ""
 "%d non-supported data streams and %d non-supported attrib streams ignored.\n"
@@ -18041,224 +18236,224 @@ msgstr ""
 "%d incompatible flujos de datos y %d incompatible atributos de flujos "
 "ignorados.\n"
 
-#: src/filed/restore.c:1070
+#: src/filed/restore.c:1076
 #, c-format
 msgid "%d non-supported resource fork streams ignored.\n"
 msgstr "%d incompatible flujo de recurso fork ignorado.\n"
 
-#: src/filed/restore.c:1073
+#: src/filed/restore.c:1079
 #, c-format
 msgid "%d non-supported Finder Info streams ignored.\n"
 msgstr "%d incompatible flujo Finder Info ignorado.\n"
 
-#: src/filed/restore.c:1076
+#: src/filed/restore.c:1082
 #, c-format
 msgid "%d non-supported acl streams ignored.\n"
 msgstr "%d incompatible flujo de acl ignorado.\n"
 
-#: src/filed/restore.c:1079
+#: src/filed/restore.c:1085
 #, c-format
 msgid "%d non-supported crypto streams ignored.\n"
 msgstr "%d incompatible flujo de cifrado ignorado.\n"
 
-#: src/filed/restore.c:1082
+#: src/filed/restore.c:1088
 #, c-format
 msgid "%d non-supported xattr streams ignored.\n"
 msgstr "ignorado %d no soportado flujo xattr.\n"
 
-#: src/filed/restore.c:1162
+#: src/filed/restore.c:1168
 msgid "Zlib errno"
 msgstr "Zlib error"
 
-#: src/filed/restore.c:1164
+#: src/filed/restore.c:1170
 msgid "Zlib stream error"
 msgstr "Zlib error de stream"
 
-#: src/filed/restore.c:1166
+#: src/filed/restore.c:1172
 msgid "Zlib data error"
 msgstr "Zlib error de datos"
 
-#: src/filed/restore.c:1168
+#: src/filed/restore.c:1174
 msgid "Zlib memory error"
 msgstr "Zlib error de memoria"
 
-#: src/filed/restore.c:1170
+#: src/filed/restore.c:1176
 msgid "Zlib buffer error"
 msgstr "Zlib error de buffer"
 
-#: src/filed/restore.c:1172
+#: src/filed/restore.c:1178
 msgid "Zlib version error"
 msgstr "Zlib error de version"
 
-#: src/filed/restore.c:1212
+#: src/filed/restore.c:1218
 #, c-format
 msgid "Missing cryptographic signature for %s\n"
 msgstr "Falta la firma criptográfica para %s\n"
 
-#: src/filed/restore.c:1245 src/filed/restore.c:1274
+#: src/filed/restore.c:1251 src/filed/restore.c:1280
 #, c-format
 msgid "Signature validation failed for file %s: ERR=%s\n"
 msgstr "Validación de la firma fallida para el archivo %s: ERR=%s\n"
 
-#: src/filed/restore.c:1262
+#: src/filed/restore.c:1268
 #, c-format
 msgid "Digest one file failed for file: %s\n"
 msgstr "Digest de un archivo fallido para el archivo: %s\n"
 
-#: src/filed/restore.c:1301
+#: src/filed/restore.c:1307
 #, c-format
 msgid "Signature validation failed for %s: %s\n"
 msgstr "Validación de la firma fallida para  %s: %s\n"
 
-#: src/filed/restore.c:1398
+#: src/filed/restore.c:1404
 #, fuzzy, c-format
 msgid "LZO uncompression error on file %s. ERR=%d\n"
 msgstr "Error de descompresión en el archivo %s. ERR=%s\n"
 
-#: src/filed/restore.c:1435
+#: src/filed/restore.c:1441
 #, c-format
 msgid "Uncompression error on file %s. ERR=%s\n"
 msgstr "Error de descompresión en el archivo %s. ERR=%s\n"
 
-#: src/filed/restore.c:1468
+#: src/filed/restore.c:1474
 #, c-format
 msgid "Write error in Win32 Block Decomposition on %s: %s\n"
 msgstr "Error de escritura en Bloque de Descomposición Win32 en %s: %s\n"
 
-#: src/filed/restore.c:1527
+#: src/filed/restore.c:1533
 msgid "Decryption error\n"
 msgstr "Error de descifrado\n"
 
-#: src/filed/restore.c:1620
+#: src/filed/restore.c:1626
 msgid "Logic error: output file should be open\n"
 msgstr "Error lógico: el archivo de salida debe estar abierto\n"
 
-#: src/filed/restore.c:1658
+#: src/filed/restore.c:1664
 msgid "Logic error: output file should not be open\n"
 msgstr "Error lógica: archivo de salida no debe estar abierto\n"
 
-#: src/filed/restore.c:1692
+#: src/filed/restore.c:1698
 #, c-format
 msgid "Decryption error. buf_len=%d decrypt_len=%d on file %s\n"
 msgstr "Error de descifrado. buf_len=%d decrypt_len=%d en el archivo %s\n"
 
-#: src/filed/restore.c:1813
+#: src/filed/restore.c:1819
 msgid "Open File Manager paused\n"
 msgstr "Administrador Open File pausado\n"
 
-#: src/filed/restore.c:1817
+#: src/filed/restore.c:1823
 msgid "FAILED to pause Open File Manager\n"
 msgstr "Fallo al pausar Administrador Open File\n"
 
-#: src/filed/restore.c:1825
+#: src/filed/restore.c:1831
 #, c-format
 msgid "Running as '%s'. Privmask=%#08x\n"
 msgstr "Ejecutando como '%s'. Privmask=%#08x\n"
 
-#: src/filed/restore.c:1827
+#: src/filed/restore.c:1833
 msgid "Failed to retrieve current UserName\n"
 msgstr "Fallo al recuperar UserName actual\n"
 
-#: src/filed/job.c:458
+#: src/filed/job.c:456
 #, c-format
 msgid "2901 Job %s not found.\n"
 msgstr "2901 Job %s no encontrado.\n"
 
-#: src/filed/job.c:468
+#: src/filed/job.c:466
 #, c-format
 msgid "2001 Job %s marked to be canceled.\n"
 msgstr "2001 Job %s marcado para ser cancelado.\n"
 
-#: src/filed/job.c:471
+#: src/filed/job.c:469
 msgid "2902 Error scanning cancel command.\n"
 msgstr "2902 Error escaneando comando cancelar.\n"
 
-#: src/filed/job.c:494
+#: src/filed/job.c:492
 #, c-format
 msgid "2991 Bad setdebug command: %s\n"
 msgstr "2991 Comando setdebug malo: %s\n"
 
-#: src/filed/job.c:517
+#: src/filed/job.c:515
 #, c-format
 msgid "Bad estimate command: %s"
 msgstr "Malo comando estimate: %s"
 
-#: src/filed/job.c:518
+#: src/filed/job.c:516
 msgid "2992 Bad estimate command.\n"
 msgstr "2992 Malo comando estimación.\n"
 
-#: src/filed/job.c:541
+#: src/filed/job.c:539
 #, c-format
 msgid "Bad Job Command: %s"
 msgstr "Malo Comando Job: %s"
 
-#: src/filed/job.c:580
+#: src/filed/job.c:578
 #, c-format
 msgid "Bad RunBeforeJob command: %s\n"
 msgstr "Malo comando RunBeforeJob: %s\n"
 
-#: src/filed/job.c:581 src/filed/job.c:600
+#: src/filed/job.c:579 src/filed/job.c:598
 msgid "2905 Bad RunBeforeJob command.\n"
 msgstr "2905 Malo comando RunBeforeJob.\n"
 
-#: src/filed/job.c:611
+#: src/filed/job.c:609
 msgid "2905 Bad RunBeforeNow command.\n"
 msgstr "2905 Malo comando RunBeforeNow.\n"
 
-#: src/filed/job.c:630
+#: src/filed/job.c:628
 #, c-format
 msgid "Bad RunAfter command: %s\n"
 msgstr "Malo comando RunAfter: %s\n"
 
-#: src/filed/job.c:631
+#: src/filed/job.c:629
 msgid "2905 Bad RunAfterJob command.\n"
 msgstr "2905 Malo comando RunAfterJob.\n"
 
-#: src/filed/job.c:667
+#: src/filed/job.c:665
 #, c-format
 msgid "Bad RunScript command: %s\n"
 msgstr "Malo comando RunScript: %s\n"
 
-#: src/filed/job.c:668
+#: src/filed/job.c:666
 msgid "2905 Bad RunScript command.\n"
 msgstr "2905 Malo comando RunScript.\n"
 
-#: src/filed/job.c:722
+#: src/filed/job.c:720
 #, fuzzy, c-format
 msgid "Bad RestoreObject command: %s\n"
 msgstr "Malo comando storage: %s"
 
-#: src/filed/job.c:789
+#: src/filed/job.c:785
 #, fuzzy
 msgid "2909 Bad RestoreObject command.\n"
 msgstr "2905 Malo comando RunBeforeJob.\n"
 
-#: src/filed/job.c:828
+#: src/filed/job.c:824
 #, fuzzy, c-format
 msgid "Plugin Directory not defined. Cannot use plugin: \"%s\"\n"
 msgstr "Directorio de Plugin no definido. No se puede usar plug-in: \"%\"\n"
 
-#: src/filed/job.c:870
+#: src/filed/job.c:866
 #, c-format
 msgid "Error running program: %s. stat=%d: ERR=%s\n"
 msgstr "Error al ejecutar el programa: %s. stat=%d: ERR=%s\n"
 
-#: src/filed/job.c:881
+#: src/filed/job.c:877
 #, c-format
 msgid "Cannot open FileSet input file: %s. ERR=%s\n"
 msgstr "No se puede abrir archivo de entrada FileSet: %s. ERR=%s\n"
 
-#: src/filed/job.c:1027
+#: src/filed/job.c:1031
 #, c-format
 msgid "REGEX %s compile error. ERR=%s\n"
 msgstr "Error de compilación REGEX %s. ERR=%s\n"
 
-#: src/filed/job.c:1178
+#: src/filed/job.c:1182
 #, c-format
 msgid "Invalid FileSet command: %s\n"
 msgstr "Comando FilseSet invalido: %s\n"
 
-#: src/filed/job.c:1651
+#: src/filed/job.c:1655
 #, c-format
 msgid ""
 "DIR and FD clocks differ by %lld seconds, FD automatically compensating.\n"
@@ -18266,147 +18461,147 @@ msgstr ""
 "Relojes de DIR y FD difieren por %lld segundos, FD compensando "
 "automáticamente.\n"
 
-#: src/filed/job.c:1660
+#: src/filed/job.c:1664
 #, c-format
 msgid "Unknown backup level: %s\n"
 msgstr "Nivel de copia de seguridad desconocido: %s\n"
 
-#: src/filed/job.c:1673
+#: src/filed/job.c:1677
 #, c-format
 msgid "Bad level command: %s\n"
 msgstr "Malo comando nivel: %s\n"
 
-#: src/filed/job.c:1695
+#: src/filed/job.c:1699
 #, c-format
 msgid "Bad session command: %s"
 msgstr "Malo comando sesión: %s"
 
-#: src/filed/job.c:1756
+#: src/filed/job.c:1760
 #, c-format
 msgid "Bad storage command: %s"
 msgstr "Malo comando storage: %s"
 
-#: src/filed/job.c:1777
+#: src/filed/job.c:1781
 #, c-format
 msgid "Failed to connect to Storage daemon: %s:%d\n"
 msgstr "Error al conectar con el demonio de Storage: %s:%d\n"
 
-#: src/filed/job.c:1789
+#: src/filed/job.c:1793
 msgid "Failed to authenticate Storage daemon.\n"
 msgstr "Fallo al autenticar demonio Storage.\n"
 
-#: src/filed/job.c:1836
+#: src/filed/job.c:1840
 msgid "ACL support not configured for your machine.\n"
 msgstr "Soporte ACL no configurado para su máquina. \n"
 
-#: src/filed/job.c:1840
+#: src/filed/job.c:1844
 msgid "XATTR support not configured for your machine.\n"
 msgstr "Soporte XATTR no está configurado para su máquina.\n"
 
-#: src/filed/job.c:1849
+#: src/filed/job.c:1853
 msgid "Cannot contact Storage daemon\n"
 msgstr "No puede contactar demonio Storage\n"
 
-#: src/filed/job.c:1868
+#: src/filed/job.c:1872
 #, c-format
 msgid "Bad response to append open: %s\n"
 msgstr "Mala respuesta para añadir abierto: %s\n"
 
-#: src/filed/job.c:1873
+#: src/filed/job.c:1877
 msgid "Bad response from stored to open command\n"
 msgstr "Mala respuesta desde almacén para comando abrir\n"
 
-#: src/filed/job.c:1904
+#: src/filed/job.c:1909
 #, c-format
 msgid "Generate VSS snapshots. Driver=\"%s\", Drive(s)=\"%s\"\n"
 msgstr "Generar instantáneas(snapshots) VSS. Driver=\"%s\", Drive(s)=\"%s\"\n"
 
-#: src/filed/job.c:1906
-#, fuzzy
-msgid "CreateSGenerate VSS snapshots failed.\n"
+#: src/filed/job.c:1912
+#, fuzzy, c-format
+msgid "CreateSGenerate VSS snapshots failed. ERR=%s\n"
 msgstr "Fallo al generar VSS snapshots.\n"
 
-#: src/filed/job.c:1912
+#: src/filed/job.c:1919
 #, fuzzy, c-format
 msgid "Generate VSS snapshot of drive \"%c:\\\" failed.\n"
 msgstr "Fallo al generar VSS snapshots.\n"
 
-#: src/filed/job.c:1918
+#: src/filed/job.c:1925
 #, c-format
 msgid "VSS Writer (PrepareForBackup): %s\n"
 msgstr "VSS Writer (PrepareForBackup): %s\n"
 
-#: src/filed/job.c:1923
+#: src/filed/job.c:1930
 msgid "No drive letters found for generating VSS snapshots.\n"
 msgstr ""
 "No encuentra las letras de unidad para la generación de instantáneas"
 "(snapshots) VSS.\n"
 
-#: src/filed/job.c:1926
-#, fuzzy
-msgid "VSS was not initialized properly.\n"
+#: src/filed/job.c:1934
+#, fuzzy, c-format
+msgid "VSS was not initialized properly. ERR=%s\n"
 msgstr ""
 "VSS no se inicializo correctamente. Suporte VSS está desactivado. ERR=%s\n"
 
-#: src/filed/job.c:1976
+#: src/filed/job.c:1985
 msgid "Append Close with SD failed.\n"
 msgstr "Añadir Cierre con SD fallido.\n"
 
-#: src/filed/job.c:1980
+#: src/filed/job.c:1989
 #, c-format
 msgid "Bad status %d returned from Storage Daemon.\n"
 msgstr "Mal estado %d regresado desde demonio Storage.\n"
 
-#: src/filed/job.c:2010
+#: src/filed/job.c:2019
 #, c-format
 msgid "2994 Bad verify command: %s\n"
 msgstr "2994 Malo comando verificar: %s\n"
 
-#: src/filed/job.c:2025 src/filed/job.c:2066
+#: src/filed/job.c:2034 src/filed/job.c:2075
 #, c-format
 msgid "2994 Bad verify level: %s\n"
 msgstr "2994 Malo nivel de verificar: %s\n"
 
-#: src/filed/job.c:2138
+#: src/filed/job.c:2146
 #, c-format
 msgid "Bad replace command. CMD=%s\n"
 msgstr "Comando replace malo. CMD=%s\n"
 
-#: src/filed/job.c:2161
+#: src/filed/job.c:2169
 #, c-format
 msgid "Bad where regexp. where=%s\n"
 msgstr "Mala regexp where. where=%s\n"
 
-#: src/filed/job.c:2199
+#: src/filed/job.c:2207
 #, c-format
 msgid "VSS was not initialized properly. VSS support is disabled. ERR=%s\n"
 msgstr ""
 "VSS no se inicializo correctamente. Suporte VSS está desactivado. ERR=%s\n"
 
-#: src/filed/job.c:2244
+#: src/filed/job.c:2252
 #, fuzzy, c-format
 msgid "VSS Writer (RestoreComplete): %s\n"
 msgstr "VSS Writer (BackupComplete): %s\n"
 
-#: src/filed/job.c:2292
+#: src/filed/job.c:2302
 msgid "Improper calling sequence.\n"
 msgstr "Secuencia de llamada impropia.\n"
 
-#: src/filed/job.c:2312
+#: src/filed/job.c:2322
 #, c-format
 msgid "Bad response to SD read open: %s\n"
 msgstr "Mala respuesta para SD leer abrir: %s\n"
 
-#: src/filed/job.c:2317
+#: src/filed/job.c:2327
 msgid "Bad response from stored to read open command\n"
 msgstr "Mala respuesta desde storage para comando leer abir\n"
 
-#: src/filed/job.c:2385
+#: src/filed/job.c:2391
 #, c-format
 msgid "Comm error with SD. bad response to %s. ERR=%s\n"
 msgstr "Error de comunicación con SD. Mala respuesta a %s. ERR=%s\n"
 
-#: src/filed/job.c:2388
+#: src/filed/job.c:2394
 #, c-format
 msgid "Bad response to %s command. Wanted %s, got %s\n"
 msgstr "Mala respuesta al comando %s. Esperaba %s, obtuvo %s\n"
@@ -18441,7 +18636,7 @@ msgid ""
 "Version: "
 msgstr ""
 
-#: src/baconfig.h:72 src/baconfig.h:73
+#: src/baconfig.h:72 src/baconfig.h:73 src/baconfig.h:78 src/baconfig.h:79
 #, c-format
 msgid "Failed ASSERT: %s\n"
 msgstr "Fallo ASSERT: %s\n"
@@ -19449,12 +19644,12 @@ msgstr ""
 " -? imprimir este mensaje.\n"
 "\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:90
+#: src/qt-console/bcomm/dircomm.cpp:92
 #, c-format
 msgid "Already connected\"%s\".\n"
 msgstr "Ya conectado\"%s\".\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:103
+#: src/qt-console/bcomm/dircomm.cpp:105
 #, c-format
 msgid ""
 "Connecting to Director %s:%d\n"
@@ -19463,35 +19658,35 @@ msgstr ""
 "Conectando con Director %s:%d\n"
 "\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:206
+#: src/qt-console/bcomm/dircomm.cpp:208
 msgid "Initializing ..."
 msgstr "Inicializando ..."
 
-#: src/qt-console/bcomm/dircomm.cpp:221 src/qt-console/console/console.cpp:142
+#: src/qt-console/bcomm/dircomm.cpp:224 src/qt-console/console/console.cpp:142
 msgid "Connected"
 msgstr "Conectado"
 
-#: src/qt-console/bcomm/dircomm.cpp:345
+#: src/qt-console/bcomm/dircomm.cpp:348
 msgid "Command completed ..."
 msgstr "Comando completado ..."
 
-#: src/qt-console/bcomm/dircomm.cpp:352 src/qt-console/console/console.cpp:373
+#: src/qt-console/bcomm/dircomm.cpp:355 src/qt-console/console/console.cpp:379
 msgid "Processing command ..."
 msgstr "Procesando comando ..."
 
-#: src/qt-console/bcomm/dircomm.cpp:359
+#: src/qt-console/bcomm/dircomm.cpp:362
 msgid "At main prompt waiting for input ..."
 msgstr "En prompt principal esperando por una entrada..."
 
-#: src/qt-console/bcomm/dircomm.cpp:366 src/qt-console/bcomm/dircomm.cpp:378
+#: src/qt-console/bcomm/dircomm.cpp:369 src/qt-console/bcomm/dircomm.cpp:382
 msgid "At prompt waiting for input ..."
 msgstr "En prompt esperando por una entrada..."
 
-#: src/qt-console/bcomm/dircomm.cpp:386
+#: src/qt-console/bcomm/dircomm.cpp:390
 msgid "Command failed."
 msgstr "Comando fallido."
 
-#: src/qt-console/bcomm/dircomm.cpp:458
+#: src/qt-console/bcomm/dircomm.cpp:463
 msgid "Director disconnected."
 msgstr "Director desconectado."
 
@@ -19526,6 +19721,48 @@ msgstr ""
 " -? imprimir este mensaje.\n"
 "\n"
 
+#~ msgid "Using Device \"%s\"\n"
+#~ msgstr "Usando Dispositivo \"%s\"\n"
+
+#~ msgid ""
+#~ "====\n"
+#~ "\n"
+#~ msgstr ""
+#~ "====\n"
+#~ "\n"
+
+#~ msgid "    Drive %d status unknown.\n"
+#~ msgstr "Unidad %d estado desconocido.\n"
+
+#~ msgid "    Files=%s Bytes=%s Bytes/sec=%s\n"
+#~ msgstr "Archivos=%s Bytes=%s Bytes/sec=%s\n"
+
+#~ msgid "3900 Bad .status command, missing argument.\n"
+#~ msgstr "3900 Malo comando .status, falta argumentos.\n"
+
+#~ msgid "3900 Bad .status command, wrong argument.\n"
+#~ msgstr "3900 Malo comando .status, argumentos incorrectos.\n"
+
+#~ msgid "Device switch. New device %s chosen.\n"
+#~ msgstr "Cambiar Dispositivo. Seleccione nuevo dispositivo %s.\n"
+
+#~ msgid ""
+#~ "Media Type not the same for all devices in changer %s. Cannot continue.\n"
+#~ msgstr ""
+#~ "Tipo de Media no es el mismo para todos los dispositivos en el cambiador "
+#~ "%s. No se puede continuar.\n"
+
+#~ msgid "Network buffer size %d not multiple of tape block size.\n"
+#~ msgstr ""
+#~ "Tamaño del buffer de red %d no múltiplo del tamaño de bloque de cinta.\n"
+
+#, fuzzy
+#~ msgid "Attempt to set StorageId to zero.\n"
+#~ msgstr "Intento de abrir sesión ya abierta.\n"
+
+#~ msgid "open_next_part can't unlink existing part %s, ERR=%s\n"
+#~ msgstr "open_next_part no se puede desvincular parte %s existente, ERR=%s\n"
+
 #~ msgid "Plugin load %s failed: ERR=%s\n"
 #~ msgstr "Fallo carga de Plugin %s: ERR=%s\n"
 
diff --git a/po/fr.po b/po/fr.po
index ce3e930..b295d5f 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Bacula 1.38\n"
 "Report-Msgid-Bugs-To: bacula-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2012-01-17 20:45+0100\n"
+"POT-Creation-Date: 2013-02-19 18:26+0100\n"
 "PO-Revision-Date: 2009-10-18 14:04+0000\n"
 "Last-Translator: Eric Bollengier <eric at eb.homelinux.org>\n"
 "Language-Team: French <bacula-devel-fr at lists.sourceforge.net>\n"
@@ -47,8 +47,8 @@ msgstr ""
 msgid "Job %s waiting %d seconds for scheduled start time.\n"
 msgstr ""
 
-#: src/dird/jobq.c:220 src/dird/job.c:113 src/stored/dircmd.c:198
-#: src/stored/stored.c:503
+#: src/dird/jobq.c:220 src/dird/job.c:113 src/stored/dircmd.c:200
+#: src/stored/stored.c:560
 #, c-format
 msgid "Unable to init job cond variable: ERR=%s\n"
 msgstr ""
@@ -93,7 +93,7 @@ msgstr "La période de rétention courante %s est : %s\n"
 msgid "Continue? (yes/mod/no): "
 msgstr "Continuer ? (oui/mod/non) : "
 
-#: src/dird/ua_select.c:62 src/dird/ua_run.c:232
+#: src/dird/ua_select.c:62 src/dird/ua_run.c:219
 msgid "mod"
 msgstr "mod"
 
@@ -113,8 +113,8 @@ msgstr "Vous avez les choix suivants :\n"
 msgid "The defined Storage resources are:\n"
 msgstr "Les ressources de Stockage définies sont :\n"
 
-#: src/dird/ua_select.c:167 src/dird/ua_dotcmds.c:715 src/dird/ua_cmds.c:996
-#: src/dird/ua_run.c:237 src/wx-console/wxbrestorepanel.cpp:339
+#: src/dird/ua_select.c:167 src/dird/ua_dotcmds.c:734 src/dird/ua_cmds.c:995
+#: src/dird/ua_run.c:224 src/wx-console/wxbrestorepanel.cpp:339
 #: src/wx-console/wxbrestorepanel.cpp:355
 #: src/wx-console/wxbrestorepanel.cpp:479
 #: src/wx-console/wxbrestorepanel.cpp:480
@@ -135,7 +135,7 @@ msgstr "Sélectionnez la ressource de Stockage"
 msgid "The defined FileSet resources are:\n"
 msgstr "Les FileSet définis sont :\n"
 
-#: src/dird/ua_select.c:190 src/dird/ua_restore.c:1300 src/dird/ua_run.c:239
+#: src/dird/ua_select.c:190 src/dird/ua_restore.c:1300 src/dird/ua_run.c:226
 msgid "FileSet"
 msgstr "FileSet"
 
@@ -143,7 +143,7 @@ msgstr "FileSet"
 msgid "Select FileSet resource"
 msgstr "Sélectionnez le FileSet"
 
-#: src/dird/ua_select.c:220 src/dird/ua_cmds.c:1983
+#: src/dird/ua_select.c:220 src/dird/ua_cmds.c:2029
 msgid "Could not find a Catalog resource\n"
 msgstr "Impossible de trouver un Catalogue\n"
 
@@ -168,8 +168,8 @@ msgid "The defined Job resources are:\n"
 msgstr "Les Job définis sont :\n"
 
 #: src/dird/ua_select.c:266 src/dird/ua_select.c:289 src/dird/ua_select.c:330
-#: src/dird/ua_select.c:1187 src/dird/dird_conf.c:650 src/dird/ua_prune.c:593
-#: src/dird/ua_run.c:238
+#: src/dird/ua_select.c:1186 src/dird/dird_conf.c:670 src/dird/ua_prune.c:601
+#: src/dird/ua_run.c:225
 msgid "Job"
 msgstr "Job"
 
@@ -194,8 +194,8 @@ msgstr "Sélectionnez le Job de restauration"
 msgid "The defined Client resources are:\n"
 msgstr "Les clients définis sont :\n"
 
-#: src/dird/ua_select.c:355 src/dird/ua_select.c:464 src/dird/ua_dotcmds.c:716
-#: src/dird/ua_cmds.c:997 src/dird/ua_run.c:243
+#: src/dird/ua_select.c:355 src/dird/ua_select.c:464 src/dird/ua_dotcmds.c:735
+#: src/dird/ua_cmds.c:996 src/dird/ua_run.c:230
 #: src/wx-console/wxbrestorepanel.cpp:336
 #: src/wx-console/wxbrestorepanel.cpp:354
 #: src/wx-console/wxbrestorepanel.cpp:431
@@ -256,7 +256,7 @@ msgstr "Sélectionnez le client"
 msgid "Could not find Pool \"%s\": ERR=%s"
 msgstr "Impossible de trouver le Pool \"%s\" : ERR=%s"
 
-#: src/dird/ua_select.c:532 src/dird/ua_output.c:474 src/dird/ua_update.c:437
+#: src/dird/ua_select.c:532 src/dird/ua_output.c:476 src/dird/ua_update.c:436
 #, c-format
 msgid "Error obtaining pool ids. ERR=%s\n"
 msgstr "Erreur pendant lors de la récupération du pool. ERR=%s\n"
@@ -270,13 +270,13 @@ msgstr ""
 msgid "Defined Pools:\n"
 msgstr "Pools définis :\n"
 
-#: src/dird/ua_select.c:542 src/dird/ua_select.c:562 src/dird/ua_update.c:364
-#: src/baconfig.h:80
+#: src/dird/ua_select.c:542 src/dird/ua_select.c:562 src/dird/ua_update.c:365
+#: src/baconfig.h:88
 msgid "*None*"
 msgstr ""
 
-#: src/dird/ua_select.c:553 src/dird/ua_select.c:667 src/dird/ua_update.c:615
-#: src/dird/ua_run.c:251 src/wx-console/wxbrestorepanel.cpp:338
+#: src/dird/ua_select.c:553 src/dird/ua_select.c:666 src/dird/ua_update.c:616
+#: src/dird/ua_run.c:238 src/wx-console/wxbrestorepanel.cpp:338
 #: src/wx-console/wxbrestorepanel.cpp:527
 #: src/wx-console/wxbrestorepanel.cpp:537
 #: src/wx-console/wxbrestorepanel.cpp:1834
@@ -292,157 +292,157 @@ msgstr "Sélectionnez le Pool"
 msgid "No access to Pool \"%s\"\n"
 msgstr "Pas d'accès au Pool \"%s\"\n"
 
-#: src/dird/ua_select.c:624
+#: src/dird/ua_select.c:623
 #, fuzzy
 msgid "Enter *MediaId or Volume name: "
 msgstr "Saisissez le MediaId ou le nom du Volume : "
 
-#: src/dird/ua_select.c:659
+#: src/dird/ua_select.c:658
 msgid "The defined Pool resources are:\n"
 msgstr "Les Pools définis sont :\n"
 
-#: src/dird/ua_select.c:667
+#: src/dird/ua_select.c:666
 msgid "Select Pool resource"
 msgstr "Sélectionnez le Pool"
 
-#: src/dird/ua_select.c:691 src/dird/ua_restore.c:555
+#: src/dird/ua_select.c:690 src/dird/ua_restore.c:555
 #, c-format
 msgid "Error: Pool resource \"%s\" does not exist.\n"
 msgstr "Erreur : le Pool \"%s\" n'existe pas.\n"
 
-#: src/dird/ua_select.c:702
+#: src/dird/ua_select.c:701
 msgid "Enter the JobId to select: "
 msgstr "Entrez le JobId à sélectionner : "
 
-#: src/dird/ua_select.c:740
+#: src/dird/ua_select.c:739
 #, c-format
 msgid "Could not find Job \"%s\": ERR=%s"
 msgstr "Impossible de trouver le Job \"%s\" : ERR=%s"
 
-#: src/dird/ua_select.c:820
+#: src/dird/ua_select.c:819
 #, c-format
 msgid "Automatically selected %s: %s\n"
 msgstr "Sélection automatique %s : %s\n"
 
-#: src/dird/ua_select.c:831
+#: src/dird/ua_select.c:830
 #, c-format
 msgid ""
 "Your request has multiple choices for \"%s\". Selection is not possible in "
 "batch mode.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:849
+#: src/dird/ua_select.c:848
 #, c-format
 msgid "Selection list for \"%s\" is empty!\n"
 msgstr "La sélection pour \"%s\" est vide !\n"
 
-#: src/dird/ua_select.c:855
+#: src/dird/ua_select.c:854
 #, c-format
 msgid "Automatically selected: %s\n"
 msgstr "Sélection automatique : %s\n"
 
-#: src/dird/ua_select.c:867
+#: src/dird/ua_select.c:866
 msgid "Selection aborted, nothing done.\n"
 msgstr "Sélection annulée, rien de fait.\n"
 
-#: src/dird/ua_select.c:872
+#: src/dird/ua_select.c:871
 #, c-format
 msgid "Please enter a number between 1 and %d\n"
 msgstr "Merci de saisir un nombre entre 1 et %d\n"
 
-#: src/dird/ua_select.c:921
+#: src/dird/ua_select.c:920
 msgid "Storage name given twice.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:938
+#: src/dird/ua_select.c:937
 #, c-format
 msgid "Expecting jobid=nn command, got: %s\n"
 msgstr "Attendait l'option jobid=nn, pas : %s\n"
 
-#: src/dird/ua_select.c:942
+#: src/dird/ua_select.c:941
 #, c-format
 msgid "JobId %s is not running.\n"
 msgstr "JobId %s n'est pas en cours.\n"
 
-#: src/dird/ua_select.c:952
+#: src/dird/ua_select.c:951
 #, c-format
 msgid "Expecting job=xxx, got: %s.\n"
 msgstr "Attendait l'option job=xxx, pas : %s\n"
 
-#: src/dird/ua_select.c:956 src/dird/ua_select.c:968
+#: src/dird/ua_select.c:955 src/dird/ua_select.c:967
 #, c-format
 msgid "Job \"%s\" is not running.\n"
 msgstr "Job \"%s\" n'est pas en cours.\n"
 
-#: src/dird/ua_select.c:964
+#: src/dird/ua_select.c:963
 #, c-format
 msgid "Expecting ujobid=xxx, got: %s.\n"
 msgstr "Attendait l'option ujobid=xxx, pas : %s\n"
 
-#: src/dird/ua_select.c:984
+#: src/dird/ua_select.c:983
 #, c-format
 msgid "Storage resource \"%s\": not found\n"
 msgstr "Storage resource \"%s\" : non trouvé\n"
 
-#: src/dird/ua_select.c:1016
+#: src/dird/ua_select.c:1015
 msgid "Enter autochanger drive[0]: "
 msgstr "Saisissez le numéro du lecteur de l'autochanger [0] : "
 
-#: src/dird/ua_select.c:1037
+#: src/dird/ua_select.c:1036
 msgid "Enter autochanger slot: "
 msgstr "Saisissez le slot de l'autochanger [0] : "
 
-#: src/dird/ua_select.c:1067
+#: src/dird/ua_select.c:1066
 msgid "Media Types defined in conf file:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1073
+#: src/dird/ua_select.c:1072
 msgid "Media Type"
 msgstr ""
 
-#: src/dird/ua_select.c:1073
+#: src/dird/ua_select.c:1072
 msgid "Select the Media Type"
 msgstr "Choisissez le type de Media"
 
-#: src/dird/ua_select.c:1112
+#: src/dird/ua_select.c:1111
 #, fuzzy, c-format
 msgid "JobId %s is not running. Use Job name to %s inactive jobs.\n"
 msgstr ""
 "JobId %s n'est pas en cours. Utilisez le nom du Job pour annuler un job "
 "inactif.\n"
 
-#: src/dird/ua_select.c:1121 src/dird/ua_select.c:1131
+#: src/dird/ua_select.c:1120 src/dird/ua_select.c:1130
 #, c-format
 msgid "Warning Job %s is not running. Continuing anyway ...\n"
 msgstr "Attention le Job %s n'est pas en cours. Continuons quand même...\n"
 
-#: src/dird/ua_select.c:1141 src/dird/ua_cmds.c:693 src/dird/ua_cmds.c:739
+#: src/dird/ua_select.c:1140 src/dird/ua_cmds.c:692 src/dird/ua_cmds.c:738
 msgid "Unauthorized command from this console.\n"
 msgstr "Commande interdite depuis cette console.\n"
 
-#: src/dird/ua_select.c:1166 src/stored/status.c:473 src/filed/status.c:241
+#: src/dird/ua_select.c:1165 src/stored/status.c:538 src/filed/status.c:241
 msgid "No Jobs running.\n"
 msgstr "Pas de job en cours.\n"
 
-#: src/dird/ua_select.c:1168
+#: src/dird/ua_select.c:1167
 msgid "None of your jobs are running.\n"
 msgstr "Aucun de vos jobs ne sont en cours.\n"
 
-#: src/dird/ua_select.c:1173
+#: src/dird/ua_select.c:1172
 msgid "Select Job:\n"
 msgstr "Sélectionnez le Job :\n"
 
-#: src/dird/ua_select.c:1182
+#: src/dird/ua_select.c:1181
 #, c-format
 msgid "JobId=%s Job=%s"
 msgstr "JobId=%s Job=%s"
 
-#: src/dird/ua_select.c:1186
+#: src/dird/ua_select.c:1185
 #, fuzzy, c-format
 msgid "Choose Job to %s"
 msgstr "Sélectionnez le Job à annuler"
 
-#: src/dird/ua_select.c:1193
+#: src/dird/ua_select.c:1192
 #, fuzzy, c-format
 msgid ""
 "Cancel: %s\n"
@@ -453,15 +453,15 @@ msgstr ""
 "\n"
 "%s"
 
-#: src/dird/ua_select.c:1194
+#: src/dird/ua_select.c:1193
 msgid "Confirm cancel?"
 msgstr "Confirmez l'annulation : "
 
-#: src/dird/ua_select.c:1200
+#: src/dird/ua_select.c:1199
 msgid "Confirm cancel (yes/no): "
 msgstr "Confirmez l'annulation (oui/non) : "
 
-#: src/dird/ua_select.c:1209 src/dird/ua_cmds.c:734 src/dird/ua_cmds.c:1101
+#: src/dird/ua_select.c:1208 src/dird/ua_cmds.c:733 src/dird/ua_cmds.c:1100
 #, c-format
 msgid "Job \"%s\" not found.\n"
 msgstr "Job \"%s\" non trouvé.\n"
@@ -765,31 +765,31 @@ msgstr ""
 msgid "File: %s\n"
 msgstr "Fichier : %s\n"
 
-#: src/dird/admin.c:66
+#: src/dird/admin.c:65
 #, c-format
 msgid "Start Admin JobId %d, Job=%s\n"
 msgstr ""
 
-#: src/dird/admin.c:92 src/dird/vbackup.c:304 src/dird/migrate.c:1226
-#: src/dird/backup.c:618
+#: src/dird/admin.c:90 src/dird/vbackup.c:306 src/dird/migrate.c:1227
+#: src/dird/backup.c:628
 #, fuzzy, c-format
 msgid "Error getting Job record for Job report: ERR=%s"
 msgstr "Impossible de récupérer le Job du JobId=%s : ERR=%s\n"
 
-#: src/dird/admin.c:100
+#: src/dird/admin.c:98
 msgid "Admin OK"
 msgstr "Admin OK"
 
-#: src/dird/admin.c:104
+#: src/dird/admin.c:102
 msgid "*** Admin Error ***"
 msgstr "*** Admin en Erreur ***"
 
-#: src/dird/admin.c:108
+#: src/dird/admin.c:106
 msgid "Admin Canceled"
 msgstr "Admin Annulé"
 
-#: src/dird/admin.c:112 src/dird/vbackup.c:354 src/dird/backup.c:674
-#: src/dird/restore.c:591
+#: src/dird/admin.c:110 src/dird/vbackup.c:356 src/dird/backup.c:684
+#: src/dird/restore.c:594
 #, c-format
 msgid "Inappropriate term code: %c\n"
 msgstr ""
@@ -798,13 +798,13 @@ msgstr ""
 msgid "Bacula "
 msgstr "Bacula "
 
-#: src/dird/dird.c:112
+#: src/dird/dird.c:150
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Version: %s (%s)\n"
 "\n"
-"Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
+"Usage: bacula-dir [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
 "       -c <file>   set configuration file to file\n"
 "       -d <nn>     set debug level to <nn>\n"
 "       -dt         print timestamp in debug output\n"
@@ -836,66 +836,66 @@ msgstr ""
 "      -?             affiche ce message.\n"
 "\n"
 
-#: src/dird/dird.c:258 src/stored/stored.c:227 src/console/console.c:1109
+#: src/dird/dird.c:296 src/stored/stored.c:227 src/console/console.c:1109
 #: src/filed/filed.c:218 src/qt-console/main.cpp:165
 msgid "Cryptography library initialization failed.\n"
 msgstr ""
 
-#: src/dird/dird.c:262 src/dird/dird.c:292 src/dird/dird.c:538
-#: src/dird/dird.c:541 src/stored/stored.c:231 src/console/console.c:1113
+#: src/dird/dird.c:300 src/dird/dird.c:328 src/dird/dird.c:560
+#: src/dird/dird.c:563 src/stored/stored.c:231 src/console/console.c:1113
 #: src/filed/filed.c:223 src/qt-console/main.cpp:169
 #, c-format
 msgid "Please correct configuration file: %s\n"
 msgstr "Merci de corriger le fichier de configuration : %s\n"
 
-#: src/dird/dird.c:524
+#: src/dird/dird.c:546
 msgid "Too many open reload requests. Request ignored.\n"
 msgstr ""
 
-#: src/dird/dird.c:539
+#: src/dird/dird.c:561
 msgid "Out of reload table entries. Giving up.\n"
 msgstr ""
 
-#: src/dird/dird.c:542
+#: src/dird/dird.c:564
 msgid "Resetting previous configuration.\n"
 msgstr "Retour à la dernière configuration.\n"
 
-#: src/dird/dird.c:606
+#: src/dird/dird.c:628
 #, c-format
 msgid ""
 "No Director resource defined in %s\n"
 "Without that I don't know who I am :-(\n"
 msgstr ""
 
-#: src/dird/dird.c:614 src/filed/filed.c:350
+#: src/dird/dird.c:636 src/filed/filed.c:350
 #, c-format
 msgid "No Messages resource defined in %s\n"
 msgstr ""
 
-#: src/dird/dird.c:619
+#: src/dird/dird.c:641
 #, c-format
 msgid "Only one Director resource permitted in %s\n"
 msgstr ""
 
-#: src/dird/dird.c:628 src/dird/dird.c:834 src/dird/dird.c:889
-#: src/dird/dird.c:1056 src/stored/stored.c:354 src/console/console.c:1296
+#: src/dird/dird.c:650 src/dird/dird.c:856 src/dird/dird.c:911
+#: src/dird/dird.c:950 src/stored/stored.c:354 src/console/console.c:1296
 #: src/console/console.c:1326 src/filed/filed.c:357 src/filed/filed.c:516
 #: src/wx-console/console_thread.cpp:118 src/wx-console/console_thread.cpp:144
 #: src/qt-console/main.cpp:224 src/qt-console/main.cpp:254
 msgid "TLS required but not configured in Bacula.\n"
 msgstr ""
 
-#: src/dird/dird.c:636 src/stored/stored.c:410 src/filed/filed.c:526
+#: src/dird/dird.c:658 src/stored/stored.c:410 src/filed/filed.c:526
 #, c-format
 msgid "\"TLS Certificate\" file not defined for Director \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:642 src/stored/stored.c:416 src/filed/filed.c:532
+#: src/dird/dird.c:664 src/stored/stored.c:416 src/filed/filed.c:532
 #, c-format
 msgid "\"TLS Key\" file not defined for Director \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:649 src/stored/stored.c:422 src/filed/filed.c:538
+#: src/dird/dird.c:671 src/stored/stored.c:422 src/filed/filed.c:538
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
@@ -903,46 +903,46 @@ msgid ""
 "using \"TLS Verify Peer\".\n"
 msgstr ""
 
-#: src/dird/dird.c:668 src/stored/stored.c:441 src/filed/filed.c:557
+#: src/dird/dird.c:690 src/stored/stored.c:441 src/filed/filed.c:557
 #, c-format
 msgid "Failed to initialize TLS context for Director \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:676
+#: src/dird/dird.c:698
 #, c-format
 msgid "No Job records defined in %s\n"
 msgstr ""
 
-#: src/dird/dird.c:734 src/dird/dird.c:747
+#: src/dird/dird.c:756 src/dird/dird.c:769
 #, c-format
 msgid "Hey something is wrong. p=0x%lu\n"
 msgstr ""
 
-#: src/dird/dird.c:808
+#: src/dird/dird.c:830
 #, c-format
 msgid "\"%s\" directive in Job \"%s\" resource is required, but not found.\n"
 msgstr ""
 
-#: src/dird/dird.c:815
+#: src/dird/dird.c:837
 msgid "Too many items in Job resource\n"
 msgstr ""
 
-#: src/dird/dird.c:819
+#: src/dird/dird.c:841
 #, c-format
 msgid "No storage specified in Job \"%s\" nor in Pool.\n"
 msgstr "Pas de Storage spécifié dans le job \"%s\" ni dans le Pool.\n"
 
-#: src/dird/dird.c:843
+#: src/dird/dird.c:865
 #, c-format
 msgid "\"TLS Certificate\" file not defined for Console \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:849
+#: src/dird/dird.c:871
 #, c-format
 msgid "\"TLS Key\" file not defined for Console \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:856
+#: src/dird/dird.c:878
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
@@ -950,50 +950,55 @@ msgid ""
 "using \"TLS Verify Peer\".\n"
 msgstr ""
 
-#: src/dird/dird.c:873 src/dird/dird.c:913 src/filed/filed.c:382
+#: src/dird/dird.c:895 src/dird/dird.c:935 src/filed/filed.c:382
 #, c-format
 msgid "Failed to initialize TLS context for File daemon \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:896
+#: src/dird/dird.c:918
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
 "File daemon \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:953 src/dird/dird.c:955
+#: src/dird/dird.c:959
+#, c-format
+msgid ""
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Storage \"%s\" in %s.\n"
+msgstr ""
+
+#: src/dird/dird.c:975 src/stored/stored.c:394
+#, c-format
+msgid "Failed to initialize TLS context for Storage \"%s\" in %s.\n"
+msgstr ""
+
+#: src/dird/dird.c:1014 src/dird/dird.c:1016
 #, c-format
 msgid "Could not open Catalog \"%s\", database \"%s\".\n"
 msgstr ""
 "Impossible d'ouvrir le catalogue \"%s\", sur la base de données \"%s\".\n"
 
-#: src/dird/dird.c:958 src/tools/cats_test.c:377
+#: src/dird/dird.c:1019 src/tools/cats_test.c:377
 #, c-format
 msgid "%s"
 msgstr "%s"
 
-#: src/dird/dird.c:1037
+#: src/dird/dird.c:1098
 #, fuzzy, c-format
 msgid "Could not create storage record for %s\n"
 msgstr "Impossible de trouver la ressource Storage \"%s\"\n"
 
-#: src/dird/dird.c:1045
+#: src/dird/dird.c:1106
 #, fuzzy, c-format
 msgid "Could not update storage record for %s\n"
 msgstr "Impossible de trouver la ressource Storage \"%s\"\n"
 
-#: src/dird/dird.c:1064
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Storage \"%s\" in %s.\n"
-msgstr ""
-
-#: src/dird/dird.c:1080 src/stored/stored.c:394
-#, c-format
-msgid "Failed to initialize TLS context for Storage \"%s\" in %s.\n"
-msgstr ""
+#: src/dird/dird.c:1181 src/dird/migrate.c:1072 src/stored/stored.c:491
+#, fuzzy, c-format
+msgid "Could not compile regex pattern \"%s\" ERR=%s\n"
+msgstr "Impossible d'ouvrir %s : ERR=%s\n"
 
 #: src/dird/inc_conf.c:312
 #, fuzzy, c-format
@@ -1009,18 +1014,18 @@ msgstr "Attendait une option de FileSet, eu : %s:"
 msgid "Old style Include/Exclude not supported\n"
 msgstr ""
 
-#: src/dird/inc_conf.c:393 src/dird/inc_conf.c:739 src/dird/dird_conf.c:1993
+#: src/dird/inc_conf.c:393 src/dird/inc_conf.c:739 src/dird/dird_conf.c:2022
 #, c-format
 msgid "Expecting keyword, got: %s\n"
 msgstr "Attendait un mot clef, eu : %s\n"
 
-#: src/dird/inc_conf.c:401 src/dird/inc_conf.c:745 src/dird/dird_conf.c:1999
+#: src/dird/inc_conf.c:401 src/dird/inc_conf.c:745 src/dird/dird_conf.c:2028
 #: src/lib/parse_conf.c:976
 #, c-format
 msgid "expected an equals, got: %s"
 msgstr "attendait un égale, eu : %s"
 
-#: src/dird/inc_conf.c:411 src/dird/inc_conf.c:754 src/dird/dird_conf.c:2010
+#: src/dird/inc_conf.c:411 src/dird/inc_conf.c:754 src/dird/dird_conf.c:2039
 #, c-format
 msgid "Keyword %s not permitted in this resource"
 msgstr ""
@@ -1072,7 +1077,7 @@ msgstr ""
 msgid "Options section not permitted in Exclude\n"
 msgstr ""
 
-#: src/dird/inc_conf.c:724 src/dird/dird_conf.c:1979
+#: src/dird/inc_conf.c:724 src/dird/dird_conf.c:2008
 #, c-format
 msgid "Expecting open brace. Got %s"
 msgstr "Attendait {, eu : %s"
@@ -1128,7 +1133,7 @@ msgstr ""
 msgid "End query mode.\n"
 msgstr ""
 
-#: src/dird/newvol.c:91
+#: src/dird/newvol.c:90
 #, c-format
 msgid "Illegal character in Volume name \"%s\"\n"
 msgstr "Caractère interdit dans le nom du Volume \"%s\"\n"
@@ -1143,12 +1148,12 @@ msgstr "Le Volume \"%s\" a été créé dans le catalogue.\n"
 msgid "SQL failed, but ignored. ERR=%s\n"
 msgstr "fopen %s en erreur : ERR=%s\n"
 
-#: src/dird/newvol.c:142
+#: src/dird/newvol.c:141
 #, c-format
 msgid "Wanted to create Volume \"%s\", but it already exists. Trying again.\n"
 msgstr "Impossible de créer le volume \"%s\" car il existe déjà.\n"
 
-#: src/dird/newvol.c:151
+#: src/dird/newvol.c:150
 msgid "Too many failures. Giving up creating Volume name.\n"
 msgstr "Trop d'erreurs. Abandon de la création du volume.\n"
 
@@ -1187,7 +1192,7 @@ msgstr ""
 msgid "Cannot destroy var context: ERR=%s\n"
 msgstr ""
 
-#: src/dird/recycle.c:65
+#: src/dird/recycle.c:69
 #, c-format
 msgid "Recycled volume \"%s\"\n"
 msgstr "Volume recyclé \"%s\"\n"
@@ -1266,27 +1271,27 @@ msgid ""
 msgstr ""
 "Il n'y a plus de job associé avec le volume \"%s\". Il est marqué purgé.\n"
 
-#: src/dird/ua_purge.c:556 src/dird/ua_label.c:759
+#: src/dird/ua_purge.c:556 src/dird/ua_label.c:774
 #, c-format
 msgid "Connecting to Storage daemon %s at %s:%d ...\n"
 msgstr "Connexion au Storage Daemon %s (%s:%d)...\n"
 
-#: src/dird/ua_purge.c:559 src/dird/ua_dotcmds.c:606 src/dird/ua_cmds.c:772
-#: src/dird/ua_cmds.c:1531 src/dird/ua_label.c:762 src/dird/job.c:448
+#: src/dird/ua_purge.c:559 src/dird/ua_dotcmds.c:625 src/dird/ua_cmds.c:771
+#: src/dird/ua_cmds.c:1577 src/dird/ua_label.c:777 src/dird/job.c:448
 msgid "Failed to connect to Storage daemon.\n"
 msgstr "Impossible de se connecter au Storage daemon.\n"
 
-#: src/dird/ua_purge.c:622
+#: src/dird/ua_purge.c:623
 #, fuzzy
 msgid "Can't update volume size in the catalog\n"
 msgstr "Le Volume \"%s\" a été créé dans le catalogue.\n"
 
-#: src/dird/ua_purge.c:624
+#: src/dird/ua_purge.c:625
 #, c-format
 msgid "The volume \"%s\" has been truncated\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:626
+#: src/dird/ua_purge.c:627
 #, fuzzy, c-format
 msgid "Unable to truncate volume \"%s\"\n"
 msgstr "Impossible d'écrire le marqueur EOF. ERR=%s\n"
@@ -1296,21 +1301,21 @@ msgstr "Impossible d'écrire le marqueur EOF. ERR=%s\n"
 msgid "No Volumes found to perform %s action.\n"
 msgstr "Pas de volume à labéliser ou pas de codebar.\n"
 
-#: src/dird/ua_purge.c:785
+#: src/dird/ua_purge.c:786
 #, c-format
 msgid "Unable move recycled Volume in full Pool \"%s\" MaxVols=%d\n"
 msgstr ""
 "Impossible de déplacer le volume recyclé, le Pool \"%s\" est plein. MaxVols="
 "%d\n"
 
-#: src/dird/ua_purge.c:799
+#: src/dird/ua_purge.c:800
 #, c-format
 msgid "All records pruned from Volume \"%s\"; marking it \"Purged\"\n"
 msgstr ""
 "Il n'y a pas de job associé avec le volume \"%s\". Il est marqué comme "
 "Purged.\n"
 
-#: src/dird/ua_purge.c:804
+#: src/dird/ua_purge.c:805
 #, c-format
 msgid "Cannot purge Volume with VolStatus=%s\n"
 msgstr "Impossible de purger un volume dans l'état (VolStatus) %s\n"
@@ -1320,8 +1325,8 @@ msgid "Could not get or create a Pool record.\n"
 msgstr "Impossible de récupérer ou de créer un Pool dans le catalogue.\n"
 
 #: src/dird/vbackup.c:89 src/dird/migrate.c:227 src/dird/migrate.c:228
-#: src/dird/backup.c:93 src/dird/job.c:185 src/dird/job.c:868
-#: src/dird/job.c:1123 src/dird/job.c:1169 src/dird/job.c:1183
+#: src/dird/backup.c:93 src/dird/job.c:185 src/dird/job.c:871
+#: src/dird/job.c:1126 src/dird/job.c:1172 src/dird/job.c:1186
 msgid "Pool resource"
 msgstr "Ressource Pool"
 
@@ -1355,34 +1360,34 @@ msgstr "Impossible de récupérer le Job du JobId=%s : ERR=%s\n"
 msgid "Could not get or create the FileSet record.\n"
 msgstr "Impossible de créer la structure BSOCK cliente.\n"
 
-#: src/dird/vbackup.c:311 src/dird/backup.c:625
+#: src/dird/vbackup.c:313 src/dird/backup.c:635
 #, fuzzy, c-format
 msgid "Error getting Client record for Job report: ERR=%s"
 msgstr "Impossible de mettre à jour les informations du Volume : ERR=%s"
 
-#: src/dird/vbackup.c:317 src/dird/migrate.c:1256 src/dird/backup.c:631
+#: src/dird/vbackup.c:319 src/dird/migrate.c:1257 src/dird/backup.c:641
 #, c-format
 msgid "Error getting Media record for Volume \"%s\": ERR=%s"
 msgstr ""
 
-#: src/dird/vbackup.c:327 src/dird/backup.c:641 src/dird/backup.c:650
-#: src/stored/bscan.c:1210
+#: src/dird/vbackup.c:329 src/dird/backup.c:651 src/dird/backup.c:660
+#: src/stored/bscan.c:1214
 msgid "Backup OK -- with warnings"
 msgstr "Backup OK -- avec des erreurs"
 
-#: src/dird/vbackup.c:329 src/dird/backup.c:643 src/stored/bscan.c:1207
+#: src/dird/vbackup.c:331 src/dird/backup.c:653 src/stored/bscan.c:1211
 msgid "Backup OK"
 msgstr "Backup OK"
 
-#: src/dird/vbackup.c:334 src/dird/backup.c:654 src/stored/bscan.c:1214
+#: src/dird/vbackup.c:336 src/dird/backup.c:664 src/stored/bscan.c:1218
 msgid "*** Backup Error ***"
 msgstr "*** Backup en erreur ***"
 
-#: src/dird/vbackup.c:344 src/dird/backup.c:664 src/stored/bscan.c:1217
+#: src/dird/vbackup.c:346 src/dird/backup.c:674 src/stored/bscan.c:1221
 msgid "Backup Canceled"
 msgstr "Backup annulé"
 
-#: src/dird/vbackup.c:391
+#: src/dird/vbackup.c:393
 #, fuzzy, c-format
 msgid ""
 "%s %s %s (%s):\n"
@@ -1461,93 +1466,93 @@ msgstr "Pas de job programmé.\n"
 msgid "disabled"
 msgstr "est bloqué"
 
-#: src/dird/ua_output.c:208
+#: src/dird/ua_output.c:211
 msgid "Keywords for the show command are:\n"
 msgstr ""
 
-#: src/dird/ua_output.c:214
+#: src/dird/ua_output.c:217
 #, c-format
 msgid "%s resource %s not found.\n"
 msgstr "%s ressource %s introuvable.\n"
 
-#: src/dird/ua_output.c:217
+#: src/dird/ua_output.c:220
 #, c-format
 msgid "Resource %s not found\n"
 msgstr "Ressource %s introuvable\n"
 
-#: src/dird/ua_output.c:288
+#: src/dird/ua_output.c:290
 msgid "Hey! DB is NULL\n"
 msgstr ""
 
-#: src/dird/ua_output.c:445
+#: src/dird/ua_output.c:447
 #, c-format
 msgid "Jobid %d used %d Volume(s): %s\n"
 msgstr "JobId %d a utilisé %d volume(s) : %s\n"
 
-#: src/dird/ua_output.c:463
+#: src/dird/ua_output.c:465
 msgid "No Pool specified.\n"
 msgstr "Pas de Pool spécifié.\n"
 
-#: src/dird/ua_output.c:484
+#: src/dird/ua_output.c:486
 #, c-format
 msgid "Pool: %s\n"
 msgstr "Pool : %s\n"
 
-#: src/dird/ua_output.c:500
+#: src/dird/ua_output.c:502
 msgid "Ignoring invalid value for days. Max is 50.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:522
+#: src/dird/ua_output.c:524
 #, c-format
 msgid "Unknown list keyword: %s\n"
 msgstr ""
 
-#: src/dird/ua_output.c:548
+#: src/dird/ua_output.c:549
 #, c-format
 msgid "%s is not a job name.\n"
 msgstr "%s n'est pas un nom de job.\n"
 
-#: src/dird/ua_output.c:562
+#: src/dird/ua_output.c:563
 #, fuzzy, c-format
 msgid "Could not find Pool for Job %s\n"
 msgstr "Impossible d'ouvrir le device %s\n"
 
-#: src/dird/ua_output.c:575
+#: src/dird/ua_output.c:576
 #, fuzzy, c-format
 msgid "Could not find next Volume for Job %s (Pool=%s, Level=%s).\n"
 msgstr "Impossible de trouver le prochain Volume pour le Job %s (%s, %s).\n"
 
-#: src/dird/ua_output.c:579
+#: src/dird/ua_output.c:580
 #, fuzzy, c-format
 msgid ""
 "The next Volume to be used by Job \"%s\" (Pool=%s, Level=%s) will be %s\n"
 msgstr "Le prochain Volume utilisé par le Job \"%s\" (%s, %s) sera %s\n"
 
-#: src/dird/ua_output.c:592
+#: src/dird/ua_output.c:593
 #, c-format
 msgid "Could not find next Volume for Job %s.\n"
 msgstr "Impossible de trouver le prochain volume pour le Job %s.\n"
 
-#: src/dird/ua_output.c:719 src/dird/job.c:133 src/tools/cats_test.c:375
+#: src/dird/ua_output.c:720 src/dird/job.c:133 src/tools/cats_test.c:375
 #, c-format
 msgid "Could not open database \"%s\".\n"
 msgstr "Impossible d'ouvrir la base de données \"%s\".\n"
 
-#: src/dird/ua_output.c:732
+#: src/dird/ua_output.c:733
 #, c-format
 msgid "Pool %s not in database. %s"
 msgstr "Pool %s introuvable en base. %s"
 
-#: src/dird/ua_output.c:740
+#: src/dird/ua_output.c:741
 #, c-format
 msgid "Pool %s created in database.\n"
 msgstr "Pool %s créé en base.\n"
 
-#: src/dird/ua_output.c:793
+#: src/dird/ua_output.c:794
 msgid "You have no messages.\n"
 msgstr "Vous n'avez pas de messages.\n"
 
-#: src/dird/ua_output.c:873
+#: src/dird/ua_output.c:874
 msgid "Message too long to display.\n"
 msgstr ""
 
@@ -1560,133 +1565,133 @@ msgstr ""
 msgid ": is an invalid command.\n"
 msgstr ": est une commande invalide.\n"
 
-#: src/dird/ua_dotcmds.c:540 src/dird/ua_restore.c:780
+#: src/dird/ua_dotcmds.c:553 src/dird/ua_restore.c:780
 #: src/dird/ua_restore.c:823
 #, c-format
 msgid "Unable to get Job record for JobId=%s: ERR=%s\n"
 msgstr "Impossible de récupérer le Job du JobId=%s : ERR=%s\n"
 
-#: src/dird/ua_dotcmds.c:600 src/dird/ua_cmds.c:766 src/dird/ua_cmds.c:1520
+#: src/dird/ua_dotcmds.c:619 src/dird/ua_cmds.c:765 src/dird/ua_cmds.c:1566
 #: src/dird/ua_status.c:352 src/dird/job.c:147 src/dird/job.c:153
-#: src/dird/job.c:1157 src/dird/job.c:1161
+#: src/dird/job.c:1160 src/dird/job.c:1164
 msgid "unknown source"
 msgstr "source inconnue"
 
-#: src/dird/ua_dotcmds.c:603 src/dird/ua_cmds.c:769 src/dird/ua_status.c:355
+#: src/dird/ua_dotcmds.c:622 src/dird/ua_cmds.c:768 src/dird/ua_status.c:355
 #, c-format
 msgid "Connecting to Storage daemon %s at %s:%d\n"
 msgstr "Connexion au Storage Daemon %s (%s:%d)\n"
 
-#: src/dird/ua_dotcmds.c:609 src/dird/ua_cmds.c:775 src/dird/ua_status.c:366
+#: src/dird/ua_dotcmds.c:628 src/dird/ua_cmds.c:774 src/dird/ua_status.c:366
 msgid "Connected to storage daemon\n"
 msgstr "Connecté au Storage Daemon\n"
 
-#: src/dird/ua_dotcmds.c:629 src/dird/ua_cmds.c:804 src/dird/ua_cmds.c:1202
+#: src/dird/ua_dotcmds.c:648 src/dird/ua_cmds.c:803 src/dird/ua_cmds.c:1208
 #: src/dird/ua_status.c:397
 #, c-format
 msgid "Connecting to Client %s at %s:%d\n"
 msgstr "Connexion au client %s (%s:%d)\n"
 
-#: src/dird/ua_dotcmds.c:632 src/dird/ua_cmds.c:807 src/dird/ua_cmds.c:1205
+#: src/dird/ua_dotcmds.c:651 src/dird/ua_cmds.c:806 src/dird/ua_cmds.c:1211
 msgid "Failed to connect to Client.\n"
 msgstr "Impossible de se connecter au Client.\n"
 
-#: src/dird/ua_dotcmds.c:675 src/dird/ua_dotcmds.c:769
+#: src/dird/ua_dotcmds.c:694 src/dird/ua_dotcmds.c:788
 #, fuzzy, c-format
 msgid "Unknown command: %s\n"
 msgstr "Erreur inconnue."
 
-#: src/dird/ua_dotcmds.c:713 src/dird/ua_cmds.c:994
+#: src/dird/ua_dotcmds.c:732 src/dird/ua_cmds.c:993
 msgid "Available daemons are: \n"
 msgstr "Les démons disponibles sont :\n"
 
-#: src/dird/ua_dotcmds.c:714 src/dird/ua_cmds.c:995
+#: src/dird/ua_dotcmds.c:733 src/dird/ua_cmds.c:994
 msgid "Director"
 msgstr "Director"
 
-#: src/dird/ua_dotcmds.c:717
+#: src/dird/ua_dotcmds.c:736
 msgid "Select daemon type to make die"
 msgstr "Sélectionnez le composant a tuer"
 
-#: src/dird/ua_dotcmds.c:743
+#: src/dird/ua_dotcmds.c:762
 msgid "The Director will generate a deadlock.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:747
+#: src/dird/ua_dotcmds.c:766
 msgid "The Director will segment fault.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:936
+#: src/dird/ua_dotcmds.c:955
 msgid "Access to specified Client or FileSet not allowed.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:941 src/dird/ua_dotcmds.c:985
+#: src/dird/ua_dotcmds.c:960 src/dird/ua_dotcmds.c:1004
 #: src/dird/ua_restore.c:941 src/dird/ua_restore.c:969
 #: src/dird/ua_restore.c:990
 #, c-format
 msgid "Query failed: %s. ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:980
+#: src/dird/ua_dotcmds.c:999
 #, fuzzy
 msgid "query keyword not found.\n"
 msgstr "%s ressource %s introuvable.\n"
 
-#: src/dird/ua_dotcmds.c:1007
+#: src/dird/ua_dotcmds.c:1026
 #, fuzzy, c-format
 msgid "List MediaType failed: ERR=%s\n"
 msgstr "fopen %s en erreur : ERR=%s\n"
 
-#: src/dird/ua_dotcmds.c:1021
+#: src/dird/ua_dotcmds.c:1040
 #, fuzzy, c-format
 msgid "List Media failed: ERR=%s\n"
 msgstr "fopen %s en erreur : ERR=%s\n"
 
-#: src/dird/ua_dotcmds.c:1035
+#: src/dird/ua_dotcmds.c:1054
 #, fuzzy, c-format
 msgid "List Location failed: ERR=%s\n"
 msgstr "Erreur sur l'ouverture du périphérique. ERR=%s\n"
 
-#: src/dird/next_vol.c:149
+#: src/dird/next_vol.c:166
 #, c-format
 msgid "Purging oldest volume \"%s\"\n"
 msgstr "Purge du plus ancien volume \"%s\"\n"
 
-#: src/dird/next_vol.c:155
+#: src/dird/next_vol.c:172
 #, c-format
 msgid "Pruning oldest volume \"%s\"\n"
 msgstr "Prunning du plus ancien volume \"%s\"\n"
 
-#: src/dird/next_vol.c:174
+#: src/dird/next_vol.c:191
 msgid "We seem to be looping trying to find the next volume. I give up.\n"
 msgstr ""
 
-#: src/dird/next_vol.c:201
+#: src/dird/next_vol.c:218
 #, fuzzy, c-format
 msgid "Max Volume bytes=%s exceeded. Marking Volume \"%s\" as Full.\n"
 msgstr ""
 "Nombre maximum de job sur le volume atteind. Marquage du volume \"%s\" comme "
 "Used.\n"
 
-#: src/dird/next_vol.c:209
+#: src/dird/next_vol.c:226
 #, c-format
 msgid "Volume used once. Marking Volume \"%s\" as Used.\n"
 msgstr "Volume utilisé une fois. Marquage du volume \"%s\" comme Used.\n"
 
-#: src/dird/next_vol.c:216
+#: src/dird/next_vol.c:233
 #, fuzzy, c-format
 msgid "Max Volume jobs=%s exceeded. Marking Volume \"%s\" as Used.\n"
 msgstr ""
 "Nombre maximum de job sur le volume atteind. Marquage du volume \"%s\" comme "
 "Used.\n"
 
-#: src/dird/next_vol.c:226
+#: src/dird/next_vol.c:243
 #, fuzzy, c-format
 msgid "Max Volume files=%s exceeded. Marking Volume \"%s\" as Used.\n"
 msgstr ""
 "Nombre de fichier maximum atteind. Marquage du volume \"%s\" comme Used.\n"
 
-#: src/dird/next_vol.c:237
+#: src/dird/next_vol.c:254
 #, fuzzy, c-format
 msgid ""
 "Max configured use duration=%s sec. exceeded. Marking Volume \"%s\" as "
@@ -1695,63 +1700,63 @@ msgstr ""
 "Nombre maximum de job sur le volume atteind. Marquage du volume \"%s\" comme "
 "Used.\n"
 
-#: src/dird/next_vol.c:249
+#: src/dird/next_vol.c:267
 #, c-format
 msgid "Catalog error updating volume \"%s\". ERR=%s"
 msgstr ""
 
-#: src/dird/next_vol.c:271
+#: src/dird/next_vol.c:289
 msgid "volume has expired"
 msgstr "le volume a expiré"
 
-#: src/dird/next_vol.c:289 src/dird/next_vol.c:333
+#: src/dird/next_vol.c:307 src/dird/next_vol.c:351
 #, c-format
 msgid "Recycled current volume \"%s\"\n"
 msgstr ""
 
-#: src/dird/next_vol.c:294
+#: src/dird/next_vol.c:312
 msgid "and recycling of current volume failed"
 msgstr ""
 
-#: src/dird/next_vol.c:300
+#: src/dird/next_vol.c:318
 msgid "but should be Append, Purged or Recycle"
 msgstr "mais doit être Append, Purged ou bien Recycle"
 
-#: src/dird/next_vol.c:309
+#: src/dird/next_vol.c:327
 msgid "volume has recycling disabled"
 msgstr "le recyclage du volume est désactivé"
 
-#: src/dird/next_vol.c:336
+#: src/dird/next_vol.c:354
 msgid ""
 "but should be Append, Purged or Recycle (recycling of the current volume "
 "failed)"
 msgstr ""
 
-#: src/dird/next_vol.c:340
+#: src/dird/next_vol.c:358
 msgid ""
 "but should be Append, Purged or Recycle (cannot automatically recycle "
 "current volume, as it still contains unpruned data or the Volume Retention "
 "time has not expired.)"
 msgstr ""
 
-#: src/dird/next_vol.c:402
+#: src/dird/next_vol.c:421
 #, c-format
 msgid "Unable to get Pool record: ERR=%s"
 msgstr "Impossible de récupérer le Pool depuis le catalogue : ERR=%s"
 
-#: src/dird/next_vol.c:409
+#: src/dird/next_vol.c:428
 #, c-format
 msgid "Unable add Scratch Volume, Pool \"%s\" full MaxVols=%d\n"
 msgstr ""
 "Impossible d'ajouter un volume du Scratch, le Pool \"%s\" est plein. MaxVols="
 "%d\n"
 
-#: src/dird/next_vol.c:428
+#: src/dird/next_vol.c:448
 #, c-format
 msgid "Failed to move Scratch Volume. ERR=%s\n"
 msgstr "Impossible de déplacer un Volume du Scratch. ERR=%s\n"
 
-#: src/dird/next_vol.c:433
+#: src/dird/next_vol.c:453
 #, c-format
 msgid "Using Volume \"%s\" from 'Scratch' pool.\n"
 msgstr "Utilisation du Volume \"%s\" du pool « Scratch ».\n"
@@ -1968,81 +1973,81 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:307
+#: src/dird/ua_cmds.c:306
 #, c-format
 msgid "Pool already has maximum volumes=%d\n"
 msgstr "Le pool a déjà atteint le nombre maximum de volume=%d\n"
 
-#: src/dird/ua_cmds.c:308
+#: src/dird/ua_cmds.c:307
 msgid "Enter new maximum (zero for unlimited): "
 msgstr "Entrez le nouveau maximum (zéro pour illimité) : "
 
-#: src/dird/ua_cmds.c:328
+#: src/dird/ua_cmds.c:327
 #, c-format
 msgid "Enter number of Volumes to create. 0=>fixed name. Max=%d: "
 msgstr "Entrez le nombre de Volume à créer. 0=>nom fixé. Max=%d : "
 
-#: src/dird/ua_cmds.c:334
+#: src/dird/ua_cmds.c:333
 #, c-format
 msgid "The number must be between 0 and %d\n"
 msgstr "Le nombre doit être entre 0 et %d\n"
 
-#: src/dird/ua_cmds.c:342
+#: src/dird/ua_cmds.c:341
 msgid "Enter Volume name: "
 msgstr "Entrez le nom du Volume : "
 
-#: src/dird/ua_cmds.c:346
+#: src/dird/ua_cmds.c:345
 msgid "Enter base volume name: "
 msgstr "Entrez le nom de base du volume : "
 
-#: src/dird/ua_cmds.c:355 src/dird/ua_label.c:648
+#: src/dird/ua_cmds.c:354 src/dird/ua_label.c:663
 msgid "Volume name too long.\n"
 msgstr "Nom de Volume trop long.\n"
 
-#: src/dird/ua_cmds.c:359 src/dird/ua_label.c:654 src/lib/edit.c:501
+#: src/dird/ua_cmds.c:358 src/dird/ua_label.c:669 src/lib/edit.c:501
 msgid "Volume name must be at least one character long.\n"
 msgstr "Le nom du volume doit comporter au moins un caractère\n"
 
-#: src/dird/ua_cmds.c:370
+#: src/dird/ua_cmds.c:369
 msgid "Enter the starting number: "
 msgstr "Entrez le nombre de départ : "
 
-#: src/dird/ua_cmds.c:375
+#: src/dird/ua_cmds.c:374
 msgid "Start number must be greater than zero.\n"
 msgstr "Le nombre de départ doit être supérieur à zéro.\n"
 
-#: src/dird/ua_cmds.c:386
+#: src/dird/ua_cmds.c:385
 msgid "Enter slot (0 for none): "
 msgstr "Saisissez le slot (0 pour aucun) : "
 
-#: src/dird/ua_cmds.c:390
+#: src/dird/ua_cmds.c:389
 msgid "InChanger? yes/no: "
 msgstr "InChanger ? oui/non : "
 
-#: src/dird/ua_cmds.c:415
+#: src/dird/ua_cmds.c:414
 #, c-format
 msgid "%d Volumes created in pool %s\n"
 msgstr "%d Volumes créés dans le pool %s\n"
 
-#: src/dird/ua_cmds.c:431 src/dird/ua_cmds.c:1033
+#: src/dird/ua_cmds.c:430 src/dird/ua_cmds.c:1032
 msgid "Turn on or off? "
 msgstr "Activer ou désactiver ? (on/off) "
 
-#: src/dird/ua_cmds.c:545
+#: src/dird/ua_cmds.c:544
 #, c-format
 msgid ""
 "Can't set %s RecyclePool to %s, %s is not in database.\n"
 "Try to update it with 'update pool=%s'\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:563
+#: src/dird/ua_cmds.c:562
 #, c-format
 msgid ""
 "Can't set %s ScratchPool to %s, %s is not in database.\n"
 "Try to update it with 'update pool=%s'\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:632
+#: src/dird/ua_cmds.c:631
 #, c-format
 msgid ""
 "Error: Pool %s already exists.\n"
@@ -2051,84 +2056,84 @@ msgstr ""
 "Erreur : Pool %s est déjà défini.\n"
 "Utilisez update pour le changer\n"
 
-#: src/dird/ua_cmds.c:643
+#: src/dird/ua_cmds.c:642
 #, c-format
 msgid "Pool %s created.\n"
 msgstr "Pool %s créé.\n"
 
-#: src/dird/ua_cmds.c:673
+#: src/dird/ua_cmds.c:672
 msgid "Python interpreter restarted.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:676 src/dird/ua_cmds.c:1331
+#: src/dird/ua_cmds.c:675 src/dird/ua_cmds.c:1337
 msgid "Nothing done.\n"
 msgstr "Rien de fait.\n"
 
-#: src/dird/ua_cmds.c:700 src/dird/ua_cmds.c:1084 src/dird/ua_run.c:1582
+#: src/dird/ua_cmds.c:699 src/dird/ua_cmds.c:1083 src/dird/ua_run.c:1588
 #, c-format
 msgid "Client \"%s\" not found.\n"
 msgstr "le client \"%s\" est introuvable.\n"
 
-#: src/dird/ua_cmds.c:709
+#: src/dird/ua_cmds.c:708
 #, c-format
 msgid "Client \"%s\" address set to %s\n"
 msgstr "Client \"%s\" adresse positionné à %s\n"
 
-#: src/dird/ua_cmds.c:743
+#: src/dird/ua_cmds.c:742
 #, c-format
 msgid "Job \"%s\" %sabled\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:921
+#: src/dird/ua_cmds.c:920
 msgid "Enter new debug level: "
 msgstr "Saisissez le nouveau niveau de debug : "
 
-#: src/dird/ua_cmds.c:998
+#: src/dird/ua_cmds.c:997
 msgid "All"
 msgstr ""
 
-#: src/dird/ua_cmds.c:999
+#: src/dird/ua_cmds.c:998
 msgid "Select daemon type to set debug level"
 msgstr "Sélectionnez le composant a mettre à jour"
 
-#: src/dird/ua_cmds.c:1088 src/dird/ua_cmds.c:1926
+#: src/dird/ua_cmds.c:1087 src/dird/ua_cmds.c:1972
 #, fuzzy, c-format
 msgid "No authorization for Client \"%s\"\n"
 msgstr "Pas d'enregistrement trouvé en base pour : %s\n"
 
-#: src/dird/ua_cmds.c:1093
+#: src/dird/ua_cmds.c:1092
 msgid "Client name missing.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1105 src/dird/ua_cmds.c:1166 src/dird/ua_cmds.c:1948
+#: src/dird/ua_cmds.c:1104 src/dird/ua_cmds.c:1171 src/dird/ua_cmds.c:1994
 #, c-format
 msgid "No authorization for Job \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1110
+#: src/dird/ua_cmds.c:1109
 msgid "Job name missing.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1119
+#: src/dird/ua_cmds.c:1118
 #, fuzzy, c-format
 msgid "Fileset \"%s\" not found.\n"
 msgstr "Le FileSet \"%s\" est introuvable.\n"
 
-#: src/dird/ua_cmds.c:1123
+#: src/dird/ua_cmds.c:1122
 #, fuzzy, c-format
 msgid "No authorization for FileSet \"%s\"\n"
 msgstr "Pas d'enregistrement trouvé en base pour : %s\n"
 
-#: src/dird/ua_cmds.c:1128
+#: src/dird/ua_cmds.c:1127
 msgid "Fileset name missing.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1139 src/dird/ua_run.c:563
+#: src/dird/ua_cmds.c:1138 src/dird/ua_run.c:550
 #, fuzzy, c-format
 msgid "Level \"%s\" not valid.\n"
 msgstr "Le type %s est invalide.\n"
 
-#: src/dird/ua_cmds.c:1143
+#: src/dird/ua_cmds.c:1142
 msgid "Level value missing.\n"
 msgstr ""
 
@@ -2137,19 +2142,24 @@ msgstr ""
 msgid "Invalid value for accurate. It must be yes or no.\n"
 msgstr "Saisie invalide. Veuillez répondre oui ou non.\n"
 
-#: src/dird/ua_cmds.c:1162
+#: src/dird/ua_cmds.c:1154
+#, fuzzy
+msgid "Accurate value missing.\n"
+msgstr "La valeur actuelle est : %s\n"
+
+#: src/dird/ua_cmds.c:1167
 msgid "No job specified.\n"
 msgstr "Pas de job sélectionné.\n"
 
-#: src/dird/ua_cmds.c:1210
+#: src/dird/ua_cmds.c:1227
 msgid "Error sending include list.\n"
 msgstr "Erreur pendant l'envoi de la liste d'inclusion.\n"
 
-#: src/dird/ua_cmds.c:1215
+#: src/dird/ua_cmds.c:1232
 msgid "Error sending exclude list.\n"
 msgstr "Erreur pendant l'envoi de la liste d'exclusion.\n"
 
-#: src/dird/ua_cmds.c:1317
+#: src/dird/ua_cmds.c:1323
 msgid ""
 "In general it is not a good idea to delete either a\n"
 "Pool or a Volume since they may contain data.\n"
@@ -2159,21 +2169,41 @@ msgstr ""
 "n'est pas une bonne idée car ils peuvent contenir des données.\n"
 "\n"
 
-#: src/dird/ua_cmds.c:1320
+#: src/dird/ua_cmds.c:1326
 msgid "Choose catalog item to delete"
 msgstr "Choisissez l'objet du catalogue à supprimer"
 
-#: src/dird/ua_cmds.c:1384
+#: src/dird/ua_cmds.c:1376 src/dird/ua_cmds.c:1391 src/dird/ua_cmds.c:1401
+#, c-format
+msgid "Illegal JobId %s ignored\n"
+msgstr ""
+
+#: src/dird/ua_cmds.c:1404
 msgid "Enter JobId to delete: "
 msgstr "Saisissez le JobId à supprimer : "
 
-#: src/dird/ua_cmds.c:1423
+#: src/dird/ua_cmds.c:1440
+#, fuzzy, c-format
+msgid "Are you sure you want to delete %d JobIds ? (yes/no): "
+msgstr "Êtes vous certain de vouloir supprimer ce Pool ? (oui/non) : "
+
+#: src/dird/ua_cmds.c:1450
 #, c-format
-msgid "Job %s and associated records deleted from the catalog.\n"
+msgid "Illegal JobId range %s - %s should define increasing JobIds, ignored\n"
+msgstr ""
+
+#: src/dird/ua_cmds.c:1454
+#, c-format
+msgid "Illegal JobId range %s - %s, ignored\n"
+msgstr ""
+
+#: src/dird/ua_cmds.c:1469
+#, fuzzy, c-format
+msgid "Jobid %s and associated records deleted from the catalog.\n"
 msgstr ""
 "Le Job %s et les enregistrements associés ont été supprimés du catalogue.\n"
 
-#: src/dird/ua_cmds.c:1438
+#: src/dird/ua_cmds.c:1484
 #, c-format
 msgid ""
 "\n"
@@ -2184,38 +2214,38 @@ msgstr ""
 "Cette commande va supprimer le Volume %s\n"
 "et tous les Jobs sauvegardés sur celui-ci du Catalogue\n"
 
-#: src/dird/ua_cmds.c:1445
+#: src/dird/ua_cmds.c:1491
 #, fuzzy, c-format
 msgid "Are you sure you want to delete Volume \"%s\"? (yes/no): "
 msgstr "Êtes vous certain de vouloir supprimer ce Volume ? (oui/non) : "
 
-#: src/dird/ua_cmds.c:1458
+#: src/dird/ua_cmds.c:1504
 msgid "Can't list jobs on this volume\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1483
+#: src/dird/ua_cmds.c:1529
 #, fuzzy, c-format
 msgid "Are you sure you want to delete Pool \"%s\"? (yes/no): "
 msgstr "Êtes vous certain de vouloir supprimer ce Pool ? (oui/non) : "
 
-#: src/dird/ua_cmds.c:1598
+#: src/dird/ua_cmds.c:1644
 #, c-format
 msgid "Using Catalog name=%s DB=%s\n"
 msgstr "Utilisation du Catalogue name=%s DB=%s\n"
 
-#: src/dird/ua_cmds.c:1666
+#: src/dird/ua_cmds.c:1712
 msgid "ERR: Can't open db\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1713
+#: src/dird/ua_cmds.c:1759
 msgid "Wait on mount timed out\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1723
+#: src/dird/ua_cmds.c:1769
 msgid "ERR: Job was not found\n"
 msgstr "ERR: Job %s non trouvé\n"
 
-#: src/dird/ua_cmds.c:1799
+#: src/dird/ua_cmds.c:1845
 #, fuzzy
 msgid ""
 "  Command       Description\n"
@@ -2224,7 +2254,7 @@ msgstr ""
 "  Commande   Description\n"
 "  ========   ===========\n"
 
-#: src/dird/ua_cmds.c:1803
+#: src/dird/ua_cmds.c:1849
 #, c-format
 msgid ""
 "  %-13s %s\n"
@@ -2233,12 +2263,12 @@ msgid ""
 "\t%s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1808
+#: src/dird/ua_cmds.c:1854
 #, fuzzy, c-format
 msgid "  %-13s %s\n"
 msgstr "  %-10s %s\n"
 
-#: src/dird/ua_cmds.c:1812
+#: src/dird/ua_cmds.c:1858
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -2246,7 +2276,7 @@ msgid ""
 "\n"
 msgstr ": est une commande invalide.\n"
 
-#: src/dird/ua_cmds.c:1814
+#: src/dird/ua_cmds.c:1860
 msgid ""
 "\n"
 "When at a prompt, entering a period cancels the command.\n"
@@ -2255,22 +2285,22 @@ msgstr ""
 "\n"
 "Sur une question, tapez un point (.) pour annuler la commande en cours.\n"
 
-#: src/dird/ua_cmds.c:1850 src/filed/status.c:85
+#: src/dird/ua_cmds.c:1896 src/filed/status.c:85
 #, c-format
 msgid "%s Version: %s (%s) %s %s %s %s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1909 src/dird/ua_cmds.c:1936 src/dird/ua_cmds.c:1958
+#: src/dird/ua_cmds.c:1955 src/dird/ua_cmds.c:1982 src/dird/ua_cmds.c:2004
 #, c-format
 msgid "No authorization for Catalog \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:2003
+#: src/dird/ua_cmds.c:2049
 #, c-format
 msgid "Could not open catalog database \"%s\".\n"
 msgstr "Impossible d'ouvrir le catalogue \"%s\".\n"
 
-#: src/dird/ua_cmds.c:2013
+#: src/dird/ua_cmds.c:2059
 #, c-format
 msgid "Using Catalog \"%s\"\n"
 msgstr "Utilisation du Catalogue \"%s\"\n"
@@ -2381,7 +2411,7 @@ msgstr ""
 "Terminez votre saisie par « done »\n"
 "\n"
 
-#: src/dird/ua_tree.c:129 src/dird/ua_tree.c:827
+#: src/dird/ua_tree.c:129 src/dird/ua_tree.c:831
 #, c-format
 msgid "cwd is: %s\n"
 msgstr "Le répertoire courant est : %s\n"
@@ -2391,53 +2421,60 @@ msgstr "Le répertoire courant est : %s\n"
 msgid "Invalid command \"%s\". Enter \"done\" to exit.\n"
 msgstr "Commande invalide. Tapez « done » pour quitter.\n"
 
-#: src/dird/ua_tree.c:370 src/dird/ua_tree.c:382 src/dird/ua_tree.c:399
+#: src/dird/ua_tree.c:227
+#, c-format
+msgid ""
+"Something is wrong with the Delta sequence of %s, skiping new parts. Current "
+"sequence is %d\n"
+msgstr ""
+
+#: src/dird/ua_tree.c:373 src/dird/ua_tree.c:385 src/dird/ua_tree.c:402
 msgid "No files marked.\n"
 msgstr "Aucun fichier sélectionné.\n"
 
-#: src/dird/ua_tree.c:384
+#: src/dird/ua_tree.c:387
 msgid "1 file marked.\n"
 msgstr "1 fichier sélectionné.\n"
 
-#: src/dird/ua_tree.c:386
+#: src/dird/ua_tree.c:389
 #, c-format
 msgid "%s files marked.\n"
 msgstr "%s fichiers sélectionnés.\n"
 
-#: src/dird/ua_tree.c:414
+#: src/dird/ua_tree.c:417
 msgid "No directories marked.\n"
 msgstr "Pas de répertoire sélectionné.\n"
 
-#: src/dird/ua_tree.c:416
+#: src/dird/ua_tree.c:419
 msgid "1 directory marked.\n"
 msgstr "1 répertoire sélectionné.\n"
 
-#: src/dird/ua_tree.c:418
+#: src/dird/ua_tree.c:421
 #, c-format
 msgid "%s directories marked.\n"
 msgstr "%s répertoires sélectionnés.\n"
 
-#: src/dird/ua_tree.c:439
+#: src/dird/ua_tree.c:442
 #, c-format
 msgid "%s total files/dirs. %s marked to be restored.\n"
 msgstr ""
 "%s fichiers/répertoires au total. %s sélectionné pour la restauration.\n"
 
-#: src/dird/ua_tree.c:450
+#: src/dird/ua_tree.c:453
 msgid "No file specification given.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:671
+#: src/dird/ua_tree.c:674
 #, c-format
 msgid "Node %s has no children.\n"
 msgstr "Le noeud %s n'a pas de fils.\n"
 
-#: src/dird/ua_tree.c:764
+#: src/dird/ua_tree.c:767
 #, c-format
 msgid "%d total files; %d marked to be restored; %s bytes.\n"
 msgstr "%d fichiers en tout ; %d marqués pour la restauration ; %s octets.\n"
 
-#: src/dird/ua_tree.c:775 src/stored/btape.c:2947
+#: src/dird/ua_tree.c:778 src/stored/btape.c:2949
 #, c-format
 msgid ""
 "  Command    Description\n"
@@ -2446,92 +2483,93 @@ msgstr ""
 "  Commande   Description\n"
 "  ========   ===========\n"
 
-#: src/dird/ua_tree.c:798
+#: src/dird/ua_tree.c:801
 msgid "Too few or too many arguments. Try using double quotes.\n"
 msgstr ""
 "Trop ou pas assez d'arguments sur la commande. Essayez d'utiliser des « \" "
 "»\n"
 
-#: src/dird/ua_tree.c:810
+#: src/dird/ua_tree.c:814
 msgid "Invalid path given.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:846 src/dird/ua_tree.c:858
+#: src/dird/ua_tree.c:850 src/dird/ua_tree.c:862
 msgid "No files unmarked.\n"
 msgstr "Pas de fichier dé-sélectionné.\n"
 
-#: src/dird/ua_tree.c:860
+#: src/dird/ua_tree.c:864
 msgid "1 file unmarked.\n"
 msgstr "1 fichier dé-sélectionné.\n"
 
-#: src/dird/ua_tree.c:863
+#: src/dird/ua_tree.c:867
 #, c-format
 msgid "%s files unmarked.\n"
 msgstr "%s fichiers dé-sélectionnés.\n"
 
-#: src/dird/ua_tree.c:874 src/dird/ua_tree.c:891
+#: src/dird/ua_tree.c:878 src/dird/ua_tree.c:895
 msgid "No directories unmarked.\n"
 msgstr "Pas de répertoire dé-sélectionné\n"
 
-#: src/dird/ua_tree.c:893
+#: src/dird/ua_tree.c:897
 msgid "1 directory unmarked.\n"
 msgstr "1 répertoire dé-sélectionné\n"
 
-#: src/dird/ua_tree.c:895
+#: src/dird/ua_tree.c:899
 #, c-format
 msgid "%d directories unmarked.\n"
 msgstr "%d répertoires dé-sélectionnés.\n"
 
-#: src/dird/dird_conf.c:559 src/tray-monitor/tray_conf.c:168
+#: src/dird/dird_conf.c:567 src/tray-monitor/tray_conf.c:168
 #: src/qt-console/tray-monitor/tray_conf.cpp:168
 #, c-format
 msgid "No %s resource defined\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:568
+#: src/dird/dird_conf.c:576
 #, c-format
 msgid "Director: name=%s MaxJobs=%d FDtimeout=%s SDtimeout=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:573
+#: src/dird/dird_conf.c:581
 #, c-format
 msgid "   query_file=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:576 src/dird/dird_conf.c:596 src/dird/dird_conf.c:610
-#: src/dird/dird_conf.c:669 src/dird/dird_conf.c:673 src/dird/dird_conf.c:677
-#: src/dird/dird_conf.c:710 src/dird/dird_conf.c:733 src/dird/dird_conf.c:737
-#: src/dird/dird_conf.c:741 src/dird/dird_conf.c:745 src/dird/dird_conf.c:749
-#: src/dird/dird_conf.c:762 src/dird/dird_conf.c:989 src/dird/dird_conf.c:996
+#: src/dird/dird_conf.c:584 src/dird/dird_conf.c:604 src/dird/dird_conf.c:621
+#: src/dird/dird_conf.c:689 src/dird/dird_conf.c:693 src/dird/dird_conf.c:697
+#: src/dird/dird_conf.c:730 src/dird/dird_conf.c:753 src/dird/dird_conf.c:757
+#: src/dird/dird_conf.c:761 src/dird/dird_conf.c:765 src/dird/dird_conf.c:769
+#: src/dird/dird_conf.c:782 src/dird/dird_conf.c:1018
+#: src/dird/dird_conf.c:1025
 msgid "  --> "
 msgstr ""
 
-#: src/dird/dird_conf.c:581
+#: src/dird/dird_conf.c:589
 #, c-format
 msgid "Console: name=%s SSL=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:586
+#: src/dird/dird_conf.c:594
 #, c-format
 msgid "Counter: name=%s min=%d max=%d cur=%d wrapcntr=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:591
+#: src/dird/dird_conf.c:599
 #, c-format
 msgid "Counter: name=%s min=%d max=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:602
+#: src/dird/dird_conf.c:613
 #, c-format
 msgid "Client: name=%s address=%s FDport=%d MaxJobs=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:605
+#: src/dird/dird_conf.c:616
 #, c-format
 msgid "      JobRetention=%s FileRetention=%s AutoPrune=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:618
+#: src/dird/dird_conf.c:629
 #, c-format
 msgid ""
 "Device: name=%s ok=%d num_writers=%d max_writers=%d\n"
@@ -2540,286 +2578,286 @@ msgid ""
 "      poolid=%s volname=%s MediaType=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:629
+#: src/dird/dird_conf.c:643
 #, c-format
 msgid ""
 "Storage: name=%s address=%s SDport=%d MaxJobs=%u\n"
 "      DeviceName=%s MediaType=%s StorageId=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:639
+#: src/dird/dird_conf.c:656
 #, c-format
 msgid ""
 "Catalog: name=%s address=%s DBport=%d db_name=%s\n"
 "      db_driver=%s db_user=%s MutliDBConn=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:649
+#: src/dird/dird_conf.c:669
 #, c-format
 msgid "%s: name=%s JobType=%d level=%s Priority=%d Enabled=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:650
+#: src/dird/dird_conf.c:670
 msgid "JobDefs"
 msgstr "JobDefs"
 
-#: src/dird/dird_conf.c:654
+#: src/dird/dird_conf.c:674
 #, c-format
 msgid ""
 "     MaxJobs=%u Resched=%d Times=%d Interval=%s Spool=%d WritePartAfterJob="
 "%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:660
+#: src/dird/dird_conf.c:680
 #, c-format
 msgid "     SpoolSize=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:663
+#: src/dird/dird_conf.c:683
 #, c-format
 msgid "     Accurate=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:666
+#: src/dird/dird_conf.c:686
 #, c-format
 msgid "     SelectionType=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:681
+#: src/dird/dird_conf.c:701
 #, c-format
 msgid "  --> Where=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:684
+#: src/dird/dird_conf.c:704
 #, c-format
 msgid "  --> RegexWhere=%s\n"
 msgstr "  --> RegexWhere=%s\n"
 
-#: src/dird/dird_conf.c:687
+#: src/dird/dird_conf.c:707
 #, c-format
 msgid "  --> Bootstrap=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:690
+#: src/dird/dird_conf.c:710
 #, c-format
 msgid "  --> WriteBootstrap=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:693
+#: src/dird/dird_conf.c:713
 #, fuzzy, c-format
 msgid "  --> PluginOptions=%s\n"
 msgstr "  --> RunOnSuccess=%u\n"
 
-#: src/dird/dird_conf.c:696
+#: src/dird/dird_conf.c:716
 #, c-format
 msgid "  --> MaxRunTime=%u\n"
 msgstr "  --> MaxRunTime=%u\n"
 
-#: src/dird/dird_conf.c:699
+#: src/dird/dird_conf.c:719
 #, c-format
 msgid "  --> MaxWaitTime=%u\n"
 msgstr "  --> MaxWaitTime=%u\n"
 
-#: src/dird/dird_conf.c:702
+#: src/dird/dird_conf.c:722
 #, c-format
 msgid "  --> MaxStartDelay=%u\n"
 msgstr "  --> MaxStartDelay=%u\n"
 
-#: src/dird/dird_conf.c:705
+#: src/dird/dird_conf.c:725
 #, fuzzy, c-format
 msgid "  --> MaxRunSchedTime=%u\n"
 msgstr "  --> MaxRunTime=%u\n"
 
-#: src/dird/dird_conf.c:717
+#: src/dird/dird_conf.c:737
 #, fuzzy, c-format
 msgid "  --> Base %s\n"
 msgstr "  --> Target=%s\n"
 
-#: src/dird/dird_conf.c:723 src/lib/runscript.c:297
+#: src/dird/dird_conf.c:743 src/lib/runscript.c:297
 msgid " --> RunScript\n"
 msgstr " --> RunScript\n"
 
-#: src/dird/dird_conf.c:724 src/lib/runscript.c:298
+#: src/dird/dird_conf.c:744 src/lib/runscript.c:298
 #, c-format
 msgid "  --> Command=%s\n"
 msgstr "  --> Command=%s\n"
 
-#: src/dird/dird_conf.c:725 src/lib/runscript.c:299
+#: src/dird/dird_conf.c:745 src/lib/runscript.c:299
 #, c-format
 msgid "  --> Target=%s\n"
 msgstr "  --> Target=%s\n"
 
-#: src/dird/dird_conf.c:726 src/lib/runscript.c:300
+#: src/dird/dird_conf.c:746 src/lib/runscript.c:300
 #, c-format
 msgid "  --> RunOnSuccess=%u\n"
 msgstr "  --> RunOnSuccess=%u\n"
 
-#: src/dird/dird_conf.c:727 src/lib/runscript.c:301
+#: src/dird/dird_conf.c:747 src/lib/runscript.c:301
 #, c-format
 msgid "  --> RunOnFailure=%u\n"
 msgstr "  --> RunOnFailure=%u\n"
 
-#: src/dird/dird_conf.c:728 src/lib/runscript.c:302
+#: src/dird/dird_conf.c:748 src/lib/runscript.c:302
 #, c-format
 msgid "  --> FailJobOnError=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:729 src/lib/runscript.c:303
+#: src/dird/dird_conf.c:749 src/lib/runscript.c:303
 #, c-format
 msgid "  --> RunWhen=%u\n"
 msgstr "  --> RunWhen=%u\n"
 
-#: src/dird/dird_conf.c:755
+#: src/dird/dird_conf.c:775
 #, c-format
 msgid "  --> Run=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:759
+#: src/dird/dird_conf.c:779
 #, c-format
 msgid "  --> SelectionPattern=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:770
+#: src/dird/dird_conf.c:793
 #, c-format
 msgid "FileSet: name=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:861 src/dird/dird_conf.c:940
+#: src/dird/dird_conf.c:887 src/dird/dird_conf.c:966
 #, c-format
 msgid "Schedule: name=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:866
+#: src/dird/dird_conf.c:892
 #, c-format
 msgid "  --> Run Level=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:867
+#: src/dird/dird_conf.c:893
 msgid "      hour="
 msgstr ""
 
-#: src/dird/dird_conf.c:876
+#: src/dird/dird_conf.c:902
 msgid "      mday="
 msgstr ""
 
-#: src/dird/dird_conf.c:885
+#: src/dird/dird_conf.c:911
 msgid "      month="
 msgstr ""
 
-#: src/dird/dird_conf.c:894
+#: src/dird/dird_conf.c:920
 msgid "      wday="
 msgstr ""
 
-#: src/dird/dird_conf.c:903
+#: src/dird/dird_conf.c:929
 msgid "      wom="
 msgstr ""
 
-#: src/dird/dird_conf.c:912
+#: src/dird/dird_conf.c:938
 msgid "      woy="
 msgstr ""
 
-#: src/dird/dird_conf.c:921
+#: src/dird/dird_conf.c:947
 #, c-format
 msgid "      mins=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:923 src/dird/dird_conf.c:927 src/dird/dird_conf.c:931
+#: src/dird/dird_conf.c:949 src/dird/dird_conf.c:953 src/dird/dird_conf.c:957
 msgid "     --> "
 msgstr ""
 
-#: src/dird/dird_conf.c:945
+#: src/dird/dird_conf.c:974
 #, c-format
 msgid "Pool: name=%s PoolType=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:947
+#: src/dird/dird_conf.c:976
 #, c-format
 msgid "      use_cat=%d use_once=%d cat_files=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:950
+#: src/dird/dird_conf.c:979
 #, c-format
 msgid "      max_vols=%d auto_prune=%d VolRetention=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:953
+#: src/dird/dird_conf.c:982
 #, c-format
 msgid "      VolUse=%s recycle=%d LabelFormat=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:957
+#: src/dird/dird_conf.c:986
 #, c-format
 msgid "      CleaningPrefix=%s LabelType=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:959
+#: src/dird/dird_conf.c:988
 #, c-format
 msgid "      RecyleOldest=%d PurgeOldest=%d ActionOnPurge=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:963
+#: src/dird/dird_conf.c:992
 #, c-format
 msgid "      MaxVolJobs=%d MaxVolFiles=%d MaxVolBytes=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:967
+#: src/dird/dird_conf.c:996
 #, c-format
 msgid "      MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:971
+#: src/dird/dird_conf.c:1000
 #, c-format
 msgid "      JobRetention=%s FileRetention=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:975
+#: src/dird/dird_conf.c:1004
 #, c-format
 msgid "      NextPool=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:978
+#: src/dird/dird_conf.c:1007
 #, c-format
 msgid "      RecyclePool=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:981
+#: src/dird/dird_conf.c:1010
 #, fuzzy, c-format
 msgid "      ScratchPool=%s\n"
 msgstr "Utilisation du Catalogue \"%s\"\n"
 
-#: src/dird/dird_conf.c:984
+#: src/dird/dird_conf.c:1013
 #, fuzzy, c-format
 msgid "      Catalog=%s\n"
 msgstr "Utilisation du Catalogue \"%s\"\n"
 
-#: src/dird/dird_conf.c:1004
+#: src/dird/dird_conf.c:1033
 #, c-format
 msgid "Messages: name=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1006
+#: src/dird/dird_conf.c:1035
 #, c-format
 msgid "      mailcmd=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1008
+#: src/dird/dird_conf.c:1037
 #, c-format
 msgid "      opcmd=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1012 src/tray-monitor/tray_conf.c:199
+#: src/dird/dird_conf.c:1041 src/tray-monitor/tray_conf.c:199
 #: src/qt-console/tray-monitor/tray_conf.cpp:199
 #, c-format
 msgid "Unknown resource type %d in dump_resource.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1343 src/tray-monitor/tray_conf.c:257
+#: src/dird/dird_conf.c:1372 src/tray-monitor/tray_conf.c:257
 #: src/qt-console/tray-monitor/tray_conf.cpp:257
 #, c-format
 msgid "Unknown resource type %d in free_resource.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1375 src/dird/dird_conf.c:1390
+#: src/dird/dird_conf.c:1404 src/dird/dird_conf.c:1419
 #: src/tray-monitor/tray_conf.c:288 src/wx-console/console_conf.c:265
 #: src/console/console_conf.c:259 src/filed/filed_conf.c:361
 #: src/qt-console/tray-monitor/tray_conf.cpp:288
@@ -2828,54 +2866,54 @@ msgstr ""
 msgid "%s item is required in %s resource, but not found.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1381 src/tray-monitor/tray_conf.c:294
+#: src/dird/dird_conf.c:1410 src/tray-monitor/tray_conf.c:294
 #: src/lib/parse_conf.c:225 src/qt-console/tray-monitor/tray_conf.cpp:294
 #, c-format
 msgid "Too many items in %s resource\n"
 msgstr "Trop d'élément dans la ressource %s\n"
 
-#: src/dird/dird_conf.c:1421
+#: src/dird/dird_conf.c:1450
 #, c-format
 msgid "Cannot find Pool resource %s\n"
 msgstr "Impossible de trouver la ressource Pool \"%s\"\n"
 
-#: src/dird/dird_conf.c:1432
+#: src/dird/dird_conf.c:1461
 #, c-format
 msgid "Cannot find Console resource %s\n"
 msgstr "Impossible de trouver la ressource Console \"%s\"\n"
 
-#: src/dird/dird_conf.c:1438 src/stored/stored_conf.c:611
+#: src/dird/dird_conf.c:1467 src/stored/stored_conf.c:611
 #: src/filed/filed_conf.c:381
 #, c-format
 msgid "Cannot find Director resource %s\n"
 msgstr "Impossible de trouver la ressource Director \"%s\"\n"
 
-#: src/dird/dird_conf.c:1445 src/stored/stored_conf.c:617
+#: src/dird/dird_conf.c:1474 src/stored/stored_conf.c:617
 #, c-format
 msgid "Cannot find Storage resource %s\n"
 msgstr "Impossible de trouver la ressource Storage \"%s\"\n"
 
-#: src/dird/dird_conf.c:1454
+#: src/dird/dird_conf.c:1483
 #, c-format
 msgid "Cannot find Job resource %s\n"
 msgstr "Impossible de trouver la ressource Job \"%s\"\n"
 
-#: src/dird/dird_conf.c:1504
+#: src/dird/dird_conf.c:1533
 #, c-format
 msgid "Cannot find Counter resource %s\n"
 msgstr "Impossible de trouver la ressource Counter \"%s\"\n"
 
-#: src/dird/dird_conf.c:1512 src/filed/filed_conf.c:387
+#: src/dird/dird_conf.c:1541 src/filed/filed_conf.c:387
 #, c-format
 msgid "Cannot find Client resource %s\n"
 msgstr "Impossible de trouver la ressource Client \"%s\"\n"
 
-#: src/dird/dird_conf.c:1525
+#: src/dird/dird_conf.c:1554
 #, c-format
 msgid "Cannot find Schedule resource %s\n"
 msgstr "Impossible de trouver la ressource Schedule \"%s\"\n"
 
-#: src/dird/dird_conf.c:1530 src/dird/dird_conf.c:1590
+#: src/dird/dird_conf.c:1559 src/dird/dird_conf.c:1619
 #: src/tray-monitor/tray_conf.c:314 src/tray-monitor/tray_conf.c:352
 #: src/qt-console/tray-monitor/tray_conf.cpp:314
 #: src/qt-console/tray-monitor/tray_conf.cpp:352
@@ -2883,12 +2921,12 @@ msgstr "Impossible de trouver la ressource Schedule \"%s\"\n"
 msgid "Unknown resource type %d in save_resource.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1605
+#: src/dird/dird_conf.c:1634
 #, c-format
 msgid "Name item is required in %s resource, but not found.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1613 src/tray-monitor/tray_conf.c:372
+#: src/dird/dird_conf.c:1642 src/tray-monitor/tray_conf.c:372
 #: src/wx-console/console_conf.c:328 src/console/console_conf.c:322
 #: src/filed/filed_conf.c:446 src/qt-console/tray-monitor/tray_conf.cpp:372
 #: src/qt-console/bat_conf.cpp:334
@@ -2896,43 +2934,43 @@ msgstr ""
 msgid "Attempt to define second %s resource named \"%s\" is not permitted.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1618
+#: src/dird/dird_conf.c:1647
 #, c-format
 msgid "Inserting %s res: %s index=%d pass=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1631
+#: src/dird/dird_conf.c:1660
 #, fuzzy, c-format
 msgid "Expected one of: %s, got: %s"
 msgstr "Attendait %s, a pas : %s"
 
-#: src/dird/dird_conf.c:1703
+#: src/dird/dird_conf.c:1732
 #, c-format
 msgid "Expected a Migration Job Type keyword, got: %s"
 msgstr "Attendait un type de Job de Migration, eu : %s"
 
-#: src/dird/dird_conf.c:1729
+#: src/dird/dird_conf.c:1758
 #, c-format
 msgid "Expected a Job Type keyword, got: %s"
 msgstr ""
 
-#: src/dird/dird_conf.c:1753
+#: src/dird/dird_conf.c:1782
 #, c-format
 msgid "Expected a Job Level keyword, got: %s"
 msgstr "Attendait un niveau de sauvegarde, eu : %s"
 
-#: src/dird/dird_conf.c:1773
+#: src/dird/dird_conf.c:1802
 #, c-format
 msgid "Expected a Restore replacement option, got: %s"
 msgstr "Attendait un niveau de remplacement, eu : %s"
 
-#: src/dird/dird_conf.c:1823 src/dird/dird_conf.c:1939
-#: src/lib/parse_conf.c:761 src/lib/parse_conf.c:777
+#: src/dird/dird_conf.c:1852 src/dird/dird_conf.c:1968
+#: src/lib/parse_conf.c:761 src/lib/parse_conf.c:777 src/lib/ini.c:593
 #, c-format
 msgid "Expect %s, got: %s"
 msgstr "Attendait %s, a pas : %s"
 
-#: src/dird/dird_conf.c:1845 src/lib/parse_conf.c:478
+#: src/dird/dird_conf.c:1874 src/lib/parse_conf.c:478
 #, c-format
 msgid "Could not find config Resource %s referenced on line %d : %s\n"
 msgstr ""
@@ -3070,7 +3108,7 @@ msgid "Select full restore to a specified Job date"
 msgstr ""
 "Sélectionner la dernière sauvegarde pour un client avant une certaine date"
 
-#: src/dird/ua_restore.c:446 src/dird/ua_status.c:863 src/stored/status.c:546
+#: src/dird/ua_restore.c:446 src/dird/ua_status.c:862 src/stored/status.c:611
 #: src/filed/status.c:373 src/wx-console/wxbconfigpanel.cpp:220
 msgid "Cancel"
 msgstr "Annulé"
@@ -3080,7 +3118,7 @@ msgstr "Annulé"
 msgid "Unknown keyword: %s\n"
 msgstr "Mot clef inconnu : %s\n"
 
-#: src/dird/ua_restore.c:520 src/dird/ua_update.c:955
+#: src/dird/ua_restore.c:520 src/dird/ua_update.c:957
 #, c-format
 msgid "Improper date format: %s\n"
 msgstr "Format de date invalide : %s\n"
@@ -3339,14 +3377,21 @@ msgstr ""
 "Attention, le storage par défaut est remplacé par  \"%s\" en ligne de "
 "commande.\n"
 
-#: src/dird/ua_restore.c:1533
+#: src/dird/ua_restore.c:1534
+#, fuzzy, c-format
+msgid "Using Storage \"%s\" from MediaType \"%s\".\n"
+msgstr ""
+"Le Storage \"%s\" est introuvable, utilisation du Storage \"%s\" du "
+"MediaType \"%s\".\n"
+
+#: src/dird/ua_restore.c:1537
 #, c-format
 msgid "Storage \"%s\" not found, using Storage \"%s\" from MediaType \"%s\".\n"
 msgstr ""
 "Le Storage \"%s\" est introuvable, utilisation du Storage \"%s\" du "
 "MediaType \"%s\".\n"
 
-#: src/dird/ua_restore.c:1541
+#: src/dird/ua_restore.c:1546
 #, c-format
 msgid ""
 "\n"
@@ -3410,7 +3455,7 @@ msgid ""
 "resource.\n"
 msgstr ""
 
-#: src/dird/fd_cmds.c:500 src/filed/job.c:858
+#: src/dird/fd_cmds.c:500 src/filed/job.c:854
 #, c-format
 msgid "Cannot run program: %s. ERR=%s\n"
 msgstr "Impossible de lancer la commande : %s. ERR=%s\n"
@@ -3453,9 +3498,9 @@ msgid ""
 "msglen=%d msg=%s\n"
 msgstr ""
 
-#: src/dird/fd_cmds.c:825 src/dird/fd_cmds.c:884 src/dird/catreq.c:443
-#: src/cats/sqlite.c:374 src/cats/ingres.c:451 src/cats/postgresql.c:441
-#: src/cats/dbi.c:552 src/cats/mysql.c:358
+#: src/dird/fd_cmds.c:825 src/dird/fd_cmds.c:884 src/cats/sqlite.c:387
+#: src/cats/ingres.c:464 src/cats/postgresql.c:454 src/cats/dbi.c:565
+#: src/cats/mysql.c:371
 #, c-format
 msgid "Attribute create error. %s"
 msgstr ""
@@ -3474,19 +3519,19 @@ msgstr ""
 msgid "Negative numbers not permitted\n"
 msgstr "Les nombres négatifs ne sont pas autorisés\n"
 
-#: src/dird/ua_label.c:110
+#: src/dird/ua_label.c:110 src/lib/sellist.c:76
 msgid "Range end is not integer.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:115
+#: src/dird/ua_label.c:115 src/lib/sellist.c:81
 msgid "Range start is not an integer.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:121
+#: src/dird/ua_label.c:121 src/lib/sellist.c:87
 msgid "Range end not bigger than start.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:127
+#: src/dird/ua_label.c:127 src/lib/sellist.c:94
 msgid "Input value is not an integer.\n"
 msgstr "La valeur saisie n'est pas un nombre.\n"
 
@@ -3498,48 +3543,48 @@ msgstr "Les valeurs doivent être supérieurs à zéro.\n"
 msgid "Slot too large.\n"
 msgstr "Slot trop grand.\n"
 
-#: src/dird/ua_label.c:187 src/dird/ua_label.c:352 src/dird/ua_label.c:1214
-#: src/dird/ua_run.c:1557
+#: src/dird/ua_label.c:189 src/dird/ua_label.c:366 src/dird/ua_label.c:1228
+#: src/dird/ua_run.c:1563
 msgid "command line"
 msgstr ""
 
-#: src/dird/ua_label.c:205 src/dird/ua_label.c:516 src/dird/ua_label.c:1221
+#: src/dird/ua_label.c:207 src/dird/ua_label.c:531 src/dird/ua_label.c:1235
 msgid "No slots in changer to scan.\n"
 msgstr "Pas de slot dans le magasin à scanner.\n"
 
-#: src/dird/ua_label.c:217 src/dird/ua_label.c:527
+#: src/dird/ua_label.c:219 src/dird/ua_label.c:542
 msgid "No Volumes found to label, or no barcodes.\n"
 msgstr "Pas de volume à labéliser ou pas de codebar.\n"
 
-#: src/dird/ua_label.c:227 src/dird/ua_label.c:1242
+#: src/dird/ua_label.c:229 src/dird/ua_label.c:1256
 #, c-format
 msgid "Slot %d greater than max %d ignored.\n"
 msgstr "Le slot %d est ignoré car il est supérieur au maximum %d.\n"
 
-#: src/dird/ua_label.c:256
+#: src/dird/ua_label.c:267
 #, c-format
 msgid "No VolName for Slot=%d InChanger set to zero.\n"
 msgstr "Pas de volume sur le Slot %d. Mise à zéro de InChanger.\n"
 
-#: src/dird/ua_label.c:274
+#: src/dird/ua_label.c:288
 #, c-format
 msgid "Catalog record for Volume \"%s\" updated to reference slot %d.\n"
 msgstr ""
 "Mise à jour des informations du volume \"%s\" dans le catalogue (Slot=%d).\n"
 
-#: src/dird/ua_label.c:278
+#: src/dird/ua_label.c:292
 #, c-format
 msgid "Catalog record for Volume \"%s\" is up to date.\n"
 msgstr "Le volume \"%s\" est à jour dans le catalogue.\n"
 
-#: src/dird/ua_label.c:284
+#: src/dird/ua_label.c:298
 #, c-format
 msgid "Volume \"%s\" not found in catalog. Slot=%d InChanger set to zero.\n"
 msgstr ""
 "Volume \"%s\" absent du catalogue. mise à zéro de InChanger pour le Slot="
 "%d.\n"
 
-#: src/dird/ua_label.c:381
+#: src/dird/ua_label.c:394
 #, c-format
 msgid ""
 "Volume \"%s\" has VolStatus %s. It must be Purged or Recycled before "
@@ -3548,39 +3593,39 @@ msgstr ""
 "Le volume \"%s\" (VolStatus) a le statut \"%s\". Il doit être purgé ou bien\n"
 "recyclé avant de pouvoir le re-labéliser.\n"
 
-#: src/dird/ua_label.c:397
+#: src/dird/ua_label.c:410
 msgid "Enter new Volume name: "
 msgstr "Saisissez le nouveau nom du Volume : "
 
-#: src/dird/ua_label.c:410
+#: src/dird/ua_label.c:425
 #, c-format
 msgid "Media record for new Volume \"%s\" already exists.\n"
 msgstr "Le nouveau volume \"%s\" existe déjà en base.\n"
 
-#: src/dird/ua_label.c:428
+#: src/dird/ua_label.c:443
 msgid "Enter slot (0 or Enter for none): "
 msgstr "Saisissez le slot (0 ou Entrée pour aucun) : "
 
-#: src/dird/ua_label.c:456
+#: src/dird/ua_label.c:471
 #, c-format
 msgid "Delete of Volume \"%s\" failed. ERR=%s"
 msgstr "Impossible de supprimer le volume \"%s\". ERR=%s"
 
-#: src/dird/ua_label.c:459
+#: src/dird/ua_label.c:474
 #, c-format
 msgid "Old volume \"%s\" deleted from catalog.\n"
 msgstr "L'ancien volume \"%s\" a été supprimé du catalogue.\n"
 
-#: src/dird/ua_label.c:470
+#: src/dird/ua_label.c:485
 #, c-format
 msgid "Requesting to mount %s ...\n"
 msgstr "Demande pour monter %s...\n"
 
-#: src/dird/ua_label.c:492
+#: src/dird/ua_label.c:507
 msgid "Do not forget to mount the drive!!!\n"
 msgstr "N'oubliez pas de monter le lecteur.\n"
 
-#: src/dird/ua_label.c:532
+#: src/dird/ua_label.c:547
 msgid ""
 "The following Volumes will be labeled:\n"
 "Slot  Volume\n"
@@ -3590,99 +3635,99 @@ msgstr ""
 "Slot  Volume\n"
 "==============\n"
 
-#: src/dird/ua_label.c:541
+#: src/dird/ua_label.c:556
 #, fuzzy
 msgid "Do you want to label these Volumes? (yes|no): "
 msgstr ""
 "\n"
 "Voulez vous restaurer tous les fichiers ? (oui|non) : "
 
-#: src/dird/ua_label.c:562
+#: src/dird/ua_label.c:576
 #, c-format
 msgid "Media record for Slot %d Volume \"%s\" already exists.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:568
+#: src/dird/ua_label.c:582
 #, c-format
 msgid "Error setting InChanger: ERR=%s"
 msgstr "Impossible de positionner le flag InChanger : ERR=%s"
 
-#: src/dird/ua_label.c:591
+#: src/dird/ua_label.c:605
 #, c-format
 msgid "Maximum pool Volumes=%d reached.\n"
 msgstr "Le nombre maximum de volume (%d) pour ce pool est atteint.\n"
 
-#: src/dird/ua_label.c:598
+#: src/dird/ua_label.c:613
 #, c-format
 msgid "Catalog record for cleaning tape \"%s\" successfully created.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:605
+#: src/dird/ua_label.c:620
 #, c-format
 msgid "Catalog error on cleaning tape: %s"
 msgstr ""
 
-#: src/dird/ua_label.c:641
+#: src/dird/ua_label.c:656
 #, c-format
 msgid "Illegal character \"%c\" in a volume name.\n"
 msgstr "Caractères « %c » interdits dans le nom d'un volume.\n"
 
-#: src/dird/ua_label.c:688
+#: src/dird/ua_label.c:703
 #, c-format
 msgid "Sending relabel command from \"%s\" to \"%s\" ...\n"
 msgstr "Envoie de la commande pour re-labéliser de \"%s\" à \"%s\"...\n"
 
-#: src/dird/ua_label.c:695
+#: src/dird/ua_label.c:710
 #, c-format
 msgid "Sending label command for Volume \"%s\" Slot %d ...\n"
 msgstr "Demande de labélisation du volume \"%s\" Slot %d...\n"
 
-#: src/dird/ua_label.c:736
+#: src/dird/ua_label.c:751
 #, c-format
 msgid "Catalog record for Volume \"%s\", Slot %d  successfully created.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:749
+#: src/dird/ua_label.c:764
 #, c-format
 msgid "Label command failed for Volume %s.\n"
 msgstr "Impossible de labéliser le volume %s.\n"
 
-#: src/dird/ua_label.c:787
+#: src/dird/ua_label.c:802
 msgid "Could not open SD socket.\n"
 msgstr "Impossible d'ouvrir la socket avec le SD.\n"
 
-#: src/dird/ua_label.c:859 src/dird/ua_label.c:869
+#: src/dird/ua_label.c:874 src/dird/ua_label.c:884
 #, c-format
 msgid "Invalid Slot number: %s\n"
 msgstr "Numéro de slot invalide : %s\n"
 
-#: src/dird/ua_label.c:878
+#: src/dird/ua_label.c:893
 #, c-format
 msgid "Invalid Volume name: %s\n"
 msgstr "Nom de Volume invalide : %s\n"
 
-#: src/dird/ua_label.c:972
+#: src/dird/ua_label.c:987
 #, c-format
 msgid "Device \"%s\" has %d slots.\n"
 msgstr "Le Device \"%s\" a %d slots.\n"
 
-#: src/dird/ua_label.c:1018
+#: src/dird/ua_label.c:1033
 #, c-format
 msgid "Pool \"%s\" resource not found for volume \"%s\"!\n"
 msgstr "La ressource Pool \"%s\" est introuvable pour le volume \"%s\"\n"
 
-#: src/dird/ua_label.c:1233
+#: src/dird/ua_label.c:1247
 #, fuzzy
 msgid "No Volumes found, or no barcodes.\n"
 msgstr "Pas de volume à labéliser ou pas de codebar.\n"
 
-#: src/dird/ua_label.c:1236
+#: src/dird/ua_label.c:1250
 msgid ""
 " Slot |   Volume Name    |   Status  |     Media Type       |      "
 "Pool          |\n"
 msgstr ""
 
-#: src/dird/ua_label.c:1237
+#: src/dird/ua_label.c:1251
 msgid ""
 "------+------------------+-----------+----------------------"
 "+--------------------|\n"
@@ -3903,16 +3948,16 @@ msgstr "Saisie invalide. Veuillez répondre oui ou non.\n"
 msgid "New Recycle flag is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:257 src/dird/ua_update.c:277 src/dird/ua_update.c:698
-#: src/dird/ua_run.c:180 src/dird/backup.c:778 src/dird/backup.c:779
-#: src/dird/backup.c:780 src/dird/ua_input.c:131 src/stored/parse_bsr.c:864
+#: src/dird/ua_update.c:257 src/dird/ua_update.c:277 src/dird/ua_update.c:699
+#: src/dird/ua_run.c:180 src/dird/backup.c:788 src/dird/backup.c:789
+#: src/dird/backup.c:790 src/dird/ua_input.c:131 src/stored/parse_bsr.c:863
 #: src/tools/dbcheck.c:1352
 msgid "yes"
 msgstr "oui"
 
-#: src/dird/ua_update.c:257 src/dird/ua_update.c:277 src/dird/ua_update.c:698
-#: src/dird/backup.c:778 src/dird/backup.c:779 src/dird/backup.c:780
-#: src/dird/ua_input.c:135 src/stored/parse_bsr.c:864
+#: src/dird/ua_update.c:257 src/dird/ua_update.c:277 src/dird/ua_update.c:699
+#: src/dird/ua_run.c:200 src/dird/backup.c:788 src/dird/backup.c:789
+#: src/dird/backup.c:790 src/dird/ua_input.c:135 src/stored/parse_bsr.c:863
 msgid "no"
 msgstr "non"
 
@@ -3926,47 +3971,47 @@ msgstr ""
 msgid "Invalid slot, it must be between 0 and MaxVols=%d\n"
 msgstr "Slot invalide, il doit être compris entre 0 et MaxVols=%d\n"
 
-#: src/dird/ua_update.c:303 src/dird/ua_update.c:726
+#: src/dird/ua_update.c:304 src/dird/ua_update.c:728
 #, c-format
 msgid "Error updating media record Slot: ERR=%s"
 msgstr ""
 
-#: src/dird/ua_update.c:305
+#: src/dird/ua_update.c:306
 #, c-format
 msgid "New Slot is: %d\n"
 msgstr "Le nouveau slot est : %d\n"
 
-#: src/dird/ua_update.c:330
+#: src/dird/ua_update.c:331
 #, c-format
 msgid "New Pool is: %s\n"
 msgstr "Le nouveau pool est : %s\n"
 
-#: src/dird/ua_update.c:373
+#: src/dird/ua_update.c:374
 #, c-format
 msgid "New RecyclePool is: %s\n"
 msgstr "Le nouveau RecyclePool est : %s\n"
 
-#: src/dird/ua_update.c:393
+#: src/dird/ua_update.c:394
 #, c-format
 msgid "Error updating Volume record: ERR=%s"
 msgstr ""
 
-#: src/dird/ua_update.c:395
+#: src/dird/ua_update.c:396
 #, c-format
 msgid "Volume defaults updated from \"%s\" Pool record.\n"
 msgstr ""
 
-#: src/dird/ua_update.c:419 src/dird/ua_update.c:452
+#: src/dird/ua_update.c:419 src/dird/ua_update.c:451
 #, c-format
 msgid "Error updating Volume records: ERR=%s"
 msgstr ""
 
-#: src/dird/ua_update.c:421 src/dird/ua_update.c:454
+#: src/dird/ua_update.c:421 src/dird/ua_update.c:453
 #, c-format
 msgid "All Volume defaults updated from \"%s\" Pool record.\n"
 msgstr ""
 
-#: src/dird/ua_update.c:444
+#: src/dird/ua_update.c:443
 #, c-format
 msgid "Updating all pools, but skipped PoolId=%d. ERR=%s\n"
 msgstr ""
@@ -3981,189 +4026,189 @@ msgstr "Impossible de mettre à jour les informations du Volume : ERR=%s"
 msgid "New Enabled is: %d\n"
 msgstr "Le nouveau flag Enabled est : %d\n"
 
-#: src/dird/ua_update.c:486
+#: src/dird/ua_update.c:487
 #, fuzzy, c-format
 msgid "Error updating media record ActionOnPurge: ERR=%s"
 msgstr "Impossible de mettre à jour les informations du Volume : ERR=%s"
 
-#: src/dird/ua_update.c:489
+#: src/dird/ua_update.c:490
 #, fuzzy, c-format
 msgid "New ActionOnPurge is: %s\n"
 msgstr "La nouvelle durée d'utilisation est : %s\n"
 
-#: src/dird/ua_update.c:604 src/dird/ua_run.c:235
+#: src/dird/ua_update.c:605 src/dird/ua_run.c:222
 msgid "Parameters to modify:\n"
 msgstr "Paramètre à modifier :\n"
 
-#: src/dird/ua_update.c:605
+#: src/dird/ua_update.c:606
 msgid "Volume Status"
 msgstr "Statut d'un volume"
 
-#: src/dird/ua_update.c:606
+#: src/dird/ua_update.c:607
 msgid "Volume Retention Period"
 msgstr "Période de rétention d'un volume"
 
-#: src/dird/ua_update.c:607
+#: src/dird/ua_update.c:608
 msgid "Volume Use Duration"
 msgstr "Durée d'utilisation d'un volume"
 
-#: src/dird/ua_update.c:608
+#: src/dird/ua_update.c:609
 msgid "Maximum Volume Jobs"
 msgstr "Nombre maximum de job sur un volume"
 
-#: src/dird/ua_update.c:609
+#: src/dird/ua_update.c:610
 msgid "Maximum Volume Files"
 msgstr "Nombre maximum de fichier sur un volume"
 
-#: src/dird/ua_update.c:610
+#: src/dird/ua_update.c:611
 msgid "Maximum Volume Bytes"
 msgstr "Taille maximum d'un volume"
 
-#: src/dird/ua_update.c:611
+#: src/dird/ua_update.c:612
 msgid "Recycle Flag"
 msgstr "Flag de recyclage"
 
-#: src/dird/ua_update.c:612
+#: src/dird/ua_update.c:613
 msgid "Slot"
 msgstr ""
 
-#: src/dird/ua_update.c:613
+#: src/dird/ua_update.c:614
 msgid "InChanger Flag"
 msgstr "Flag InChanger"
 
-#: src/dird/ua_update.c:614
+#: src/dird/ua_update.c:615
 msgid "Volume Files"
 msgstr "Fichiers du Volume"
 
-#: src/dird/ua_update.c:616
+#: src/dird/ua_update.c:617
 msgid "Volume from Pool"
 msgstr ""
 
-#: src/dird/ua_update.c:617
+#: src/dird/ua_update.c:618
 msgid "All Volumes from Pool"
 msgstr ""
 
-#: src/dird/ua_update.c:618
+#: src/dird/ua_update.c:619
 msgid "All Volumes from all Pools"
 msgstr ""
 
-#: src/dird/ua_update.c:619
+#: src/dird/ua_update.c:620
 msgid "Enabled"
 msgstr ""
 
-#: src/dird/ua_update.c:620
+#: src/dird/ua_update.c:621
 msgid "RecyclePool"
 msgstr "RecyclePool"
 
-#: src/dird/ua_update.c:621
+#: src/dird/ua_update.c:622
 msgid "Action On Purge"
 msgstr ""
 
-#: src/dird/ua_update.c:622
+#: src/dird/ua_update.c:623
 msgid "Done"
 msgstr "Fin"
 
-#: src/dird/ua_update.c:623 src/dird/ua_run.c:265 src/dird/ua_run.c:594
+#: src/dird/ua_update.c:624 src/dird/ua_run.c:252 src/dird/ua_run.c:600
 msgid "Select parameter to modify"
 msgstr "Sélectionnez le paramètre à modifier"
 
-#: src/dird/ua_update.c:631
+#: src/dird/ua_update.c:632
 #, c-format
 msgid "Updating Volume \"%s\"\n"
 msgstr "Mise à jour du Volume \"%s\"\n"
 
-#: src/dird/ua_update.c:636
+#: src/dird/ua_update.c:637
 #, c-format
 msgid "Current Volume status is: %s\n"
 msgstr "Le statut actuel du volume (Volume status) est : %s\n"
 
-#: src/dird/ua_update.c:637
+#: src/dird/ua_update.c:638
 msgid "Possible Values are:\n"
 msgstr "Les valeurs possibles sont :\n"
 
-#: src/dird/ua_update.c:648
+#: src/dird/ua_update.c:649
 msgid "Choose new Volume Status"
 msgstr "Saisissez le nouveau statut du volume (Volume Status)"
 
-#: src/dird/ua_update.c:654
+#: src/dird/ua_update.c:655
 #, c-format
 msgid "Current retention period is: %s\n"
 msgstr "La période de rétention actuelle est : %s\n"
 
-#: src/dird/ua_update.c:656
+#: src/dird/ua_update.c:657
 msgid "Enter Volume Retention period: "
 msgstr "Saisissez la période de rétention du volume : "
 
-#: src/dird/ua_update.c:663
+#: src/dird/ua_update.c:664
 #, c-format
 msgid "Current use duration is: %s\n"
 msgstr "La durée d'utilisation actuelle est : %s\n"
 
-#: src/dird/ua_update.c:665
+#: src/dird/ua_update.c:666
 msgid "Enter Volume Use Duration: "
 msgstr "Saisissez la durée d'utilisation du volume : "
 
-#: src/dird/ua_update.c:672
+#: src/dird/ua_update.c:673
 #, c-format
 msgid "Current max jobs is: %u\n"
 msgstr "Le nombre maximum de Job actuel est : %u\n"
 
-#: src/dird/ua_update.c:673
+#: src/dird/ua_update.c:674
 msgid "Enter new Maximum Jobs: "
 msgstr "Saisissez la valeur du nombre maximum de Job : "
 
-#: src/dird/ua_update.c:680
+#: src/dird/ua_update.c:681
 #, c-format
 msgid "Current max files is: %u\n"
 msgstr "Le nombre maximum de fichier actuel est : %u\n"
 
-#: src/dird/ua_update.c:681
+#: src/dird/ua_update.c:682
 msgid "Enter new Maximum Files: "
 msgstr "Saisissez la valeur du nombre maximum de fichier (Maximum Files) : "
 
-#: src/dird/ua_update.c:688
+#: src/dird/ua_update.c:689
 #, c-format
 msgid "Current value is: %s\n"
 msgstr "La valeur actuelle est : %s\n"
 
-#: src/dird/ua_update.c:689
+#: src/dird/ua_update.c:690
 msgid "Enter new Maximum Bytes: "
 msgstr "Saisissez la nouvelle taille maximum (octets) : "
 
-#: src/dird/ua_update.c:697
+#: src/dird/ua_update.c:698
 #, c-format
 msgid "Current recycle flag is: %s\n"
 msgstr "Le flag de recyclage courant est : %s\n"
 
-#: src/dird/ua_update.c:699
+#: src/dird/ua_update.c:700
 msgid "Enter new Recycle status: "
 msgstr ""
 
-#: src/dird/ua_update.c:706
+#: src/dird/ua_update.c:707
 #, c-format
 msgid "Current Slot is: %d\n"
 msgstr "Le slot courant est : %d\n"
 
-#: src/dird/ua_update.c:707
+#: src/dird/ua_update.c:708
 msgid "Enter new Slot: "
 msgstr "Saisissez le nouveau slot : "
 
-#: src/dird/ua_update.c:714
+#: src/dird/ua_update.c:715
 #, c-format
 msgid "Current InChanger flag is: %d\n"
 msgstr "Le flag InChanger courant est : %d\n"
 
-#: src/dird/ua_update.c:715
+#: src/dird/ua_update.c:716
 #, fuzzy, c-format
 msgid "Set InChanger flag for Volume \"%s\": yes/no: "
 msgstr "Positionner le flag InChanger ? oui/non : "
 
-#: src/dird/ua_update.c:728
+#: src/dird/ua_update.c:730
 #, c-format
 msgid "New InChanger flag is: %d\n"
 msgstr "Le nouveau flag InChanger est : %d\n"
 
-#: src/dird/ua_update.c:735
+#: src/dird/ua_update.c:737
 msgid ""
 "Warning changing Volume Files can result\n"
 "in loss of data on your Volume\n"
@@ -4173,91 +4218,91 @@ msgstr ""
 "vous faire perdre des données du Volume\n"
 "\n"
 
-#: src/dird/ua_update.c:737
+#: src/dird/ua_update.c:739
 #, c-format
 msgid "Current Volume Files is: %u\n"
 msgstr "Le nombre courant de fichier sur le Volume est : %u\n"
 
-#: src/dird/ua_update.c:738
+#: src/dird/ua_update.c:740
 msgid "Enter new number of Files for Volume: "
 msgstr "Saisissez le nouveau nombre de fichiers du Volume : "
 
-#: src/dird/ua_update.c:743
+#: src/dird/ua_update.c:745
 msgid "Normally, you should only increase Volume Files by one!\n"
 msgstr ""
 "Logiquement, vous devez augmenter le nombre de fichier du Volume d'un !\n"
 
-#: src/dird/ua_update.c:744
+#: src/dird/ua_update.c:746
 #, fuzzy
 msgid "Increase Volume Files? (yes/no): "
 msgstr "Le nouveau nombre de fichier du Volume est : %u\n"
 
-#: src/dird/ua_update.c:754
+#: src/dird/ua_update.c:756
 #, c-format
 msgid "New Volume Files is: %u\n"
 msgstr "Le nouveau nombre de fichier du Volume est : %u\n"
 
-#: src/dird/ua_update.c:766
+#: src/dird/ua_update.c:768
 #, c-format
 msgid "Current Pool is: %s\n"
 msgstr "Le pool courant est : %s\n"
 
-#: src/dird/ua_update.c:767
+#: src/dird/ua_update.c:769
 msgid "Enter new Pool name: "
 msgstr "Saisissez le nouveau nom pour ce pool : "
 
-#: src/dird/ua_update.c:788
+#: src/dird/ua_update.c:790
 #, c-format
 msgid "Current Enabled is: %d\n"
 msgstr "La valeur actuelle de Enabled est : %d\n"
 
-#: src/dird/ua_update.c:789
+#: src/dird/ua_update.c:791
 msgid "Enter new Enabled: "
 msgstr "Saisissez la nouvelle valeur pour Enabled : "
 
-#: src/dird/ua_update.c:808
+#: src/dird/ua_update.c:810
 #, c-format
 msgid "Current RecyclePool is: %s\n"
 msgstr "Le RecyclePool courant est : %s\n"
 
-#: src/dird/ua_update.c:810
+#: src/dird/ua_update.c:812
 msgid "No current RecyclePool\n"
 msgstr "Pas de RecyclePool courant\n"
 
-#: src/dird/ua_update.c:820
+#: src/dird/ua_update.c:822
 #, fuzzy, c-format
 msgid "Current ActionOnPurge is: %s\n"
 msgstr "La valeur actuelle est : %s\n"
 
-#: src/dird/ua_update.c:822
+#: src/dird/ua_update.c:824
 msgid "Enter new ActionOnPurge (one of: Truncate, None): "
 msgstr ""
 
-#: src/dird/ua_update.c:830
+#: src/dird/ua_update.c:832
 msgid "Selection terminated.\n"
 msgstr "Sélection terminée.\n"
 
-#: src/dird/ua_update.c:850
+#: src/dird/ua_update.c:852
 #, c-format
 msgid "Updating %i job(s).\n"
 msgstr ""
 
-#: src/dird/ua_update.c:882
+#: src/dird/ua_update.c:884
 #, c-format
 msgid "db_update_pool_record returned %d. ERR=%s\n"
 msgstr "db_update_pool_record a retourné %d. ERR=%s\n"
 
-#: src/dird/ua_update.c:889
+#: src/dird/ua_update.c:891
 msgid "Pool DB record updated from resource.\n"
 msgstr ""
 "Les paramètres du Pool en base ont été mis à jour depuis la configuration.\n"
 
-#: src/dird/ua_update.c:916
+#: src/dird/ua_update.c:918
 #, fuzzy
 msgid "Expect JobId keyword, not found.\n"
 msgstr "%s ressource %s introuvable.\n"
 
-#: src/dird/ua_update.c:941
+#: src/dird/ua_update.c:943
 #, fuzzy
 msgid "Neither Client nor StartTime specified.\n"
 msgstr "Pas de storage sélectionné.\n"
@@ -4302,7 +4347,7 @@ msgstr ""
 msgid "Pool resource \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/migrate.c:316 src/dird/migrate.c:896
+#: src/dird/migrate.c:316 src/dird/migrate.c:898
 #, fuzzy, c-format
 msgid "Could not get job record for JobId %s to %s. ERR=%s"
 msgstr "Impossible de récupérer le Job du JobId=%s : ERR=%s\n"
@@ -4317,146 +4362,141 @@ msgstr ""
 msgid "Start %s JobId %s, Job=%s\n"
 msgstr "Démarrage du backup JobId %s, Job=%s\n"
 
-#: src/dird/migrate.c:710
+#: src/dird/migrate.c:712
 #, fuzzy, c-format
 msgid "No %s SQL selection pattern specified.\n"
 msgstr "Pas de storage sélectionné.\n"
 
-#: src/dird/migrate.c:717 src/dird/migrate.c:736 src/dird/migrate.c:757
-#: src/dird/migrate.c:793 src/dird/migrate.c:820 src/dird/migrate.c:954
-#: src/dird/migrate.c:987 src/dird/migrate.c:1116
+#: src/dird/migrate.c:719 src/dird/migrate.c:738 src/dird/migrate.c:759
+#: src/dird/migrate.c:795 src/dird/migrate.c:822 src/dird/migrate.c:956
+#: src/dird/migrate.c:989 src/dird/migrate.c:1118
 #, fuzzy, c-format
 msgid "SQL failed. ERR=%s\n"
 msgstr "fopen %s en erreur : ERR=%s\n"
 
-#: src/dird/migrate.c:740 src/dird/migrate.c:747 src/dird/migrate.c:761
-#: src/dird/migrate.c:824
+#: src/dird/migrate.c:742 src/dird/migrate.c:749 src/dird/migrate.c:763
+#: src/dird/migrate.c:826
 #, fuzzy, c-format
 msgid "No Volumes found to %s.\n"
 msgstr "Aucun volume trouvé pour la restauration.\n"
 
-#: src/dird/migrate.c:775 src/dird/migrate.c:864 src/dird/migrate.c:884
+#: src/dird/migrate.c:777 src/dird/migrate.c:866 src/dird/migrate.c:886
 #, fuzzy
 msgid "Invalid JobId found.\n"
 msgstr "Période invalide.\n"
 
-#: src/dird/migrate.c:835
+#: src/dird/migrate.c:837
 #, fuzzy, c-format
 msgid "Unknown %s Selection Type.\n"
 msgstr "Job du Type=%d inconnu\n"
 
-#: src/dird/migrate.c:846 src/dird/migrate.c:867 src/dird/migrate.c:887
+#: src/dird/migrate.c:848 src/dird/migrate.c:869 src/dird/migrate.c:889
 #, fuzzy, c-format
 msgid "No JobIds found to %s.\n"
 msgstr "Pas de job trouvé pour : %s.\n"
 
-#: src/dird/migrate.c:850
+#: src/dird/migrate.c:852
 #, fuzzy, c-format
 msgid "The following %u JobId%s chosen to be %s: %s\n"
 msgstr "Les fichiers suivants sont absents :\n"
 
-#: src/dird/migrate.c:851
+#: src/dird/migrate.c:853
 msgid " was"
 msgstr ""
 
-#: src/dird/migrate.c:851
+#: src/dird/migrate.c:853
 msgid "s were"
 msgstr ""
 
-#: src/dird/migrate.c:903
+#: src/dird/migrate.c:905
 #, fuzzy, c-format
 msgid "%s using JobId=%s Job=%s\n"
 msgstr "Migration utilisant JobId=%s Job=%s\n"
 
-#: src/dird/migrate.c:937
+#: src/dird/migrate.c:939
 msgid "Could not start migration job.\n"
 msgstr ""
 
-#: src/dird/migrate.c:939
+#: src/dird/migrate.c:941
 #, fuzzy, c-format
 msgid "%s JobId %d started.\n"
 msgstr "Le job %d est annulé.\n"
 
-#: src/dird/migrate.c:958
+#: src/dird/migrate.c:960
 #, fuzzy, c-format
 msgid "No %s found to %s.\n"
 msgstr "Aucun volume trouvé pour la restauration.\n"
 
-#: src/dird/migrate.c:962
+#: src/dird/migrate.c:964
 #, c-format
 msgid "SQL error. Expected 1 MediaId got %d\n"
 msgstr ""
 
-#: src/dird/migrate.c:991 src/dird/migrate.c:1121
+#: src/dird/migrate.c:993 src/dird/migrate.c:1123
 #, fuzzy, c-format
 msgid "No %ss found to %s.\n"
 msgstr "Aucun volume trouvé pour la restauration.\n"
 
-#: src/dird/migrate.c:1013
+#: src/dird/migrate.c:1015
 msgid "Selection Type 'pooluncopiedjobs' only applies to Copy Jobs"
 msgstr ""
 
-#: src/dird/migrate.c:1022
+#: src/dird/migrate.c:1024
 #, fuzzy, c-format
 msgid "SQL to get uncopied jobs failed. ERR=%s\n"
 msgstr "fopen %s en erreur : ERR=%s\n"
 
-#: src/dird/migrate.c:1045
+#: src/dird/migrate.c:1047
 #, fuzzy, c-format
 msgid "No %s %s selection pattern specified.\n"
 msgstr "Pas de storage sélectionné.\n"
 
-#: src/dird/migrate.c:1056
+#: src/dird/migrate.c:1058
 #, fuzzy, c-format
 msgid "SQL to get %s failed. ERR=%s\n"
 msgstr "fopen %s en erreur : ERR=%s\n"
 
-#: src/dird/migrate.c:1061
+#: src/dird/migrate.c:1063
 #, c-format
 msgid "Query of Pool \"%s\" returned no Jobs to %s.\n"
 msgstr ""
 
-#: src/dird/migrate.c:1070
-#, fuzzy, c-format
-msgid "Could not compile regex pattern \"%s\" ERR=%s\n"
-msgstr "Impossible d'ouvrir %s : ERR=%s\n"
-
-#: src/dird/migrate.c:1099
+#: src/dird/migrate.c:1101
 #, c-format
 msgid "Regex pattern matched no Jobs to %s.\n"
 msgstr ""
 
-#: src/dird/migrate.c:1264
+#: src/dird/migrate.c:1265
 #, c-format
 msgid "%s OK -- with warnings"
 msgstr "%s OK -- avec des avertissements"
 
-#: src/dird/migrate.c:1266
+#: src/dird/migrate.c:1267
 #, c-format
 msgid "%s OK"
 msgstr ""
 
-#: src/dird/migrate.c:1271
+#: src/dird/migrate.c:1272
 #, c-format
 msgid "*** %s Error ***"
 msgstr "*** %s Erreur ***"
 
-#: src/dird/migrate.c:1281
+#: src/dird/migrate.c:1282
 #, c-format
 msgid "%s Canceled"
 msgstr "%s Annulé"
 
-#: src/dird/migrate.c:1290
+#: src/dird/migrate.c:1291
 #, c-format
 msgid "Inappropriate %s term code"
 msgstr ""
 
-#: src/dird/migrate.c:1300
+#: src/dird/migrate.c:1301
 #, fuzzy, c-format
 msgid "%s -- no files to %s"
 msgstr "Aucun volume trouvé pour la restauration.\n"
 
-#: src/dird/migrate.c:1315
+#: src/dird/migrate.c:1316
 #, fuzzy, c-format
 msgid ""
 "%s %s %s (%s):\n"
@@ -4520,17 +4560,17 @@ msgstr ""
 "  Statut de fin du SD :    %s\n"
 "  Statut de fin :          %s\n"
 
-#: src/dird/migrate.c:1426
+#: src/dird/migrate.c:1427
 #, c-format
 msgid "No Next Pool specification found in Pool \"%s\".\n"
 msgstr ""
 
-#: src/dird/migrate.c:1432
+#: src/dird/migrate.c:1433
 #, c-format
 msgid "No Storage specification found in Next Pool \"%s\".\n"
 msgstr ""
 
-#: src/dird/migrate.c:1438
+#: src/dird/migrate.c:1439
 #, fuzzy
 msgid "Storage from Pool's NextPool resource"
 msgstr "Sélectionnez le Pool"
@@ -4539,50 +4579,50 @@ msgstr "Sélectionnez le Pool"
 msgid "Choose item to prune"
 msgstr "Que voulez vous purger du catalogue (prune)"
 
-#: src/dird/ua_prune.c:171
+#: src/dird/ua_prune.c:175
 #, c-format
 msgid "Cannot prune Volume \"%s\" because it is archived.\n"
 msgstr "Impossible de pruner le Volume \"%s\" car il est archivé.\n"
 
-#: src/dird/ua_prune.c:213
+#: src/dird/ua_prune.c:217
 #, fuzzy
 msgid "Pruned Jobs from JobHisto catalog.\n"
 msgstr "Purge du catalogue (prune) de %d %s du client %s.\n"
 
-#: src/dird/ua_prune.c:301
+#: src/dird/ua_prune.c:305
 #, fuzzy
 msgid "Begin pruning Files.\n"
 msgstr "Début de purge des fichiers du catalogue (prune).\n"
 
-#: src/dird/ua_prune.c:316
+#: src/dird/ua_prune.c:320
 msgid "No Files found to prune.\n"
 msgstr "Pas de fichier trouvé pour la purge du catalogue (prune).\n"
 
-#: src/dird/ua_prune.c:339
+#: src/dird/ua_prune.c:343
 #, c-format
 msgid "Pruned Files from %s Jobs for client %s from catalog.\n"
 msgstr ""
 "Purge du catalogue des fichiers (prune) de %s Jobs pour le client %s.\n"
 
-#: src/dird/ua_prune.c:481
+#: src/dird/ua_prune.c:489
 #, fuzzy, c-format
 msgid "Begin pruning Jobs older than %s.\n"
 msgstr "Début de purge des Jobs du catalogue (prune).\n"
 
-#: src/dird/ua_prune.c:592
+#: src/dird/ua_prune.c:600
 #, c-format
 msgid "Pruned %d %s for client %s from catalog.\n"
 msgstr "Purge du catalogue (prune) de %d %s du client %s.\n"
 
-#: src/dird/ua_prune.c:593
+#: src/dird/ua_prune.c:601
 msgid "Jobs"
 msgstr "Jobs"
 
-#: src/dird/ua_prune.c:595
+#: src/dird/ua_prune.c:603
 msgid "No Jobs found to prune.\n"
 msgstr "Pas de job trouvé pour la purge du catalogue (prune).\n"
 
-#: src/dird/autoprune.c:76
+#: src/dird/autoprune.c:75
 msgid ""
 "End auto prune.\n"
 "\n"
@@ -4603,51 +4643,59 @@ msgstr "Job échoué.\n"
 msgid "Job queued. JobId=%s\n"
 msgstr "Job mis en queue. JobId=%s\n"
 
-#: src/dird/ua_run.c:202
+#: src/dird/ua_run.c:203
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Bad response: %s. You must answer yes, mod, or no.\n"
+"\n"
+msgstr "Réponse invalide. Vous devez répondre oui ou non.\n"
+
+#: src/dird/ua_run.c:207
 msgid "Job not run.\n"
 msgstr "Job non lancé.\n"
 
-#: src/dird/ua_run.c:236
+#: src/dird/ua_run.c:223
 msgid "Level"
 msgstr "Type"
 
-#: src/dird/ua_run.c:241
+#: src/dird/ua_run.c:228
 #, fuzzy
 msgid "Restore Client"
 msgstr "Restauration annulée"
 
-#: src/dird/ua_run.c:245 src/wx-console/wxbrestorepanel.cpp:356
+#: src/dird/ua_run.c:232 src/wx-console/wxbrestorepanel.cpp:356
 #: src/wx-console/wxbrestorepanel.cpp:854
 #: src/wx-console/wxbrestorepanel.cpp:1918
 msgid "When"
 msgstr "Quand"
 
-#: src/dird/ua_run.c:246 src/wx-console/wxbrestorepanel.cpp:357
+#: src/dird/ua_run.c:233 src/wx-console/wxbrestorepanel.cpp:357
 #: src/wx-console/wxbrestorepanel.cpp:1128
 #: src/wx-console/wxbrestorepanel.cpp:1921
 msgid "Priority"
 msgstr "Priorité"
 
-#: src/dird/ua_run.c:253
+#: src/dird/ua_run.c:240
 msgid "Verify Job"
 msgstr "Job de vérification"
 
-#: src/dird/ua_run.c:256 src/wx-console/wxbrestorepanel.cpp:349
+#: src/dird/ua_run.c:243 src/wx-console/wxbrestorepanel.cpp:349
 #: src/wx-console/wxbrestorepanel.cpp:1899
 msgid "Bootstrap"
 msgstr "Bootstrap"
 
-#: src/dird/ua_run.c:257 src/wx-console/wxbrestorepanel.cpp:350
+#: src/dird/ua_run.c:244 src/wx-console/wxbrestorepanel.cpp:350
 #: src/wx-console/wxbrestorepanel.cpp:1104
 #: src/wx-console/wxbrestorepanel.cpp:1901
 msgid "Where"
 msgstr "Destination"
 
-#: src/dird/ua_run.c:258
+#: src/dird/ua_run.c:245
 msgid "File Relocation"
 msgstr ""
 
-#: src/dird/ua_run.c:259 src/wx-console/wxbrestorepanel.cpp:352
+#: src/dird/ua_run.c:246 src/wx-console/wxbrestorepanel.cpp:352
 #: src/wx-console/wxbrestorepanel.cpp:1112
 #: src/wx-console/wxbrestorepanel.cpp:1905
 #: src/wx-console/wxbrestorepanel.cpp:1906
@@ -4657,217 +4705,221 @@ msgstr ""
 msgid "Replace"
 msgstr "Écrasement"
 
-#: src/dird/ua_run.c:260
+#: src/dird/ua_run.c:247
 msgid "JobId"
 msgstr "JobId"
 
-#: src/dird/ua_run.c:263
+#: src/dird/ua_run.c:250
 msgid "Plugin Options"
 msgstr ""
 
-#: src/dird/ua_run.c:274 src/dird/ua_run.c:1563
+#: src/dird/ua_run.c:261 src/dird/ua_run.c:1569
 msgid "user selection"
 msgstr ""
 
-#: src/dird/ua_run.c:306
+#: src/dird/ua_run.c:293
 msgid ""
 "Please enter desired start time as YYYY-MM-DD HH:MM:SS (return for now): "
 msgstr ""
 "Saisissez la date de lancement (YYYY-MM-DD HH:MM:SS) (ou maintenant) : "
 
-#: src/dird/ua_run.c:314 src/dird/ua_run.c:490
+#: src/dird/ua_run.c:301 src/dird/ua_run.c:477
 msgid "Invalid time, using current time.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:321
+#: src/dird/ua_run.c:308
 msgid "Enter new Priority: "
 msgstr "Saisissez la nouvelle priorité : "
 
-#: src/dird/ua_run.c:325
+#: src/dird/ua_run.c:312
 msgid "Priority must be a positive integer.\n"
 msgstr "La priorité doit être un entier positif.\n"
 
-#: src/dird/ua_run.c:346
+#: src/dird/ua_run.c:333
 msgid "Please enter the Bootstrap file name: "
 msgstr "Saisissez le nom du fichier Bootstrap : "
 
 # Impossible d'ouvrir %s : ERR=%s
-#: src/dird/ua_run.c:358
+#: src/dird/ua_run.c:345
 #, c-format
 msgid "Warning cannot open %s: ERR=%s\n"
 msgstr "Impossible d'ouvrir %s : ERR=%s\n"
 
-#: src/dird/ua_run.c:377
-msgid "Please enter path prefix for restore (/ for none): "
+#: src/dird/ua_run.c:364
+#, fuzzy
+msgid "Please enter the full path prefix for restore (/ for none): "
 msgstr "Saisissez le chemin (prefix) pour la restauration (/ pour aucun) : "
 
-#: src/dird/ua_run.c:399
+#: src/dird/ua_run.c:386
 msgid "Replace:\n"
 msgstr "Écrasement :\n"
 
-#: src/dird/ua_run.c:403
+#: src/dird/ua_run.c:390
 msgid "Select replace option"
 msgstr "Saisissez l'option d'écrasement"
 
-#: src/dird/ua_run.c:414
+#: src/dird/ua_run.c:401
 msgid ""
 "You must set the bootstrap file to NULL to be able to specify a JobId.\n"
 msgstr ""
 "Vous ne devez pas spécifié de fichier bootstrap pour pouvoir utiliser un "
 "JobId.\n"
 
-#: src/dird/ua_run.c:419
+#: src/dird/ua_run.c:406
 #, fuzzy
 msgid "Please Plugin Options string: "
 msgstr "Saisissez le début du chemin (prefix) à enlever : "
 
-#: src/dird/ua_run.c:457 src/dird/ua_run.c:466
+#: src/dird/ua_run.c:444 src/dird/ua_run.c:453
 msgid "User input"
 msgstr ""
 
-#: src/dird/ua_run.c:520
+#: src/dird/ua_run.c:507
 #, c-format
 msgid "Invalid replace option: %s\n"
 msgstr "Option d'écrasement (Replace) invalide : %s\n"
 
-#: src/dird/ua_run.c:583
+#: src/dird/ua_run.c:589
 #, c-format
 msgid "strip_prefix=%s add_prefix=%s add_suffix=%s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:586
+#: src/dird/ua_run.c:592
 msgid "This will replace your current Where value\n"
 msgstr ""
 
-#: src/dird/ua_run.c:587
+#: src/dird/ua_run.c:593
 msgid "Strip prefix"
 msgstr ""
 
-#: src/dird/ua_run.c:588
+#: src/dird/ua_run.c:594
 msgid "Add prefix"
 msgstr ""
 
-#: src/dird/ua_run.c:589
+#: src/dird/ua_run.c:595
 msgid "Add file suffix"
 msgstr ""
 
-#: src/dird/ua_run.c:590
+#: src/dird/ua_run.c:596
 msgid "Enter a regexp"
 msgstr ""
 
-#: src/dird/ua_run.c:591
+#: src/dird/ua_run.c:597
 msgid "Test filename manipulation"
 msgstr ""
 
-#: src/dird/ua_run.c:592
+#: src/dird/ua_run.c:598
 msgid "Use this ?"
 msgstr ""
 
-#: src/dird/ua_run.c:597
-msgid "Please enter path prefix to strip: "
+#: src/dird/ua_run.c:603
+#, fuzzy
+msgid "Please enter the path prefix to strip: "
 msgstr "Saisissez le début du chemin (prefix) à enlever : "
 
-#: src/dird/ua_run.c:605
-msgid "Please enter path prefix to add (/ for none): "
+#: src/dird/ua_run.c:611
+#, fuzzy
+msgid "Please enter the path prefix to add (/ for none): "
 msgstr "Saisissez le chemin (prefix) à ajouter (/ pour aucun) : "
 
-#: src/dird/ua_run.c:616
-msgid "Please enter file suffix to add: "
+#: src/dird/ua_run.c:622
+#, fuzzy
+msgid "Please enter the file suffix to add: "
 msgstr "Saisissez une extention à ajouter aux fichiers : "
 
-#: src/dird/ua_run.c:623
+#: src/dird/ua_run.c:629
 msgid "Please enter a valid regexp (!from!to!): "
 msgstr "Saisissez une regexp valide (!rechercher!remplacer!) : "
 
-#: src/dird/ua_run.c:636
+#: src/dird/ua_run.c:642
 #, c-format
 msgid "regexwhere=%s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:642
+#: src/dird/ua_run.c:648
 #, c-format
 msgid "strip_prefix=%s add_prefix=%s add_suffix=%s result=%s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:649
+#: src/dird/ua_run.c:655
 msgid "Cannot use your regexp\n"
 msgstr "Impossible d'utiliser votre regexp\n"
 
-#: src/dird/ua_run.c:652
+#: src/dird/ua_run.c:658
 msgid "Enter a period (.) to stop this test\n"
 msgstr ""
 
-#: src/dird/ua_run.c:653
+#: src/dird/ua_run.c:659
 msgid "Please enter filename to test: "
 msgstr "Saisissez un nom de fichier à tester : "
 
-#: src/dird/ua_run.c:655
+#: src/dird/ua_run.c:661
 #, c-format
 msgid "%s -> %s\n"
 msgstr "%s -> %s\n"
 
-#: src/dird/ua_run.c:699
+#: src/dird/ua_run.c:705
 msgid "Cannot use your regexp.\n"
 msgstr "Impossible d'utiliser votre regexp.\n"
 
-#: src/dird/ua_run.c:712 src/dird/ua_run.c:742
+#: src/dird/ua_run.c:718 src/dird/ua_run.c:748
 msgid "Levels:\n"
 msgstr "Types :\n"
 
-#: src/dird/ua_run.c:714 src/stored/status.c:600 src/lib/util.c:426
+#: src/dird/ua_run.c:720 src/stored/status.c:665 src/lib/util.c:426
 #: src/lib/util.c:472 src/filed/status.c:519
 msgid "Full"
 msgstr "Full"
 
-#: src/dird/ua_run.c:715 src/stored/status.c:603 src/lib/util.c:429
+#: src/dird/ua_run.c:721 src/stored/status.c:668 src/lib/util.c:429
 #: src/filed/status.c:522
 msgid "Incremental"
 msgstr "Incrémental"
 
-#: src/dird/ua_run.c:716 src/stored/status.c:606 src/lib/util.c:432
+#: src/dird/ua_run.c:722 src/stored/status.c:671 src/lib/util.c:432
 #: src/filed/status.c:525
 msgid "Differential"
 msgstr "Différentiel"
 
-#: src/dird/ua_run.c:717 src/stored/status.c:609 src/lib/util.c:435
+#: src/dird/ua_run.c:723 src/stored/status.c:674 src/lib/util.c:435
 #: src/filed/status.c:528
 msgid "Since"
 msgstr "Depuis"
 
-#: src/dird/ua_run.c:718
+#: src/dird/ua_run.c:724
 msgid "VirtualFull"
 msgstr ""
 
-#: src/dird/ua_run.c:719 src/dird/ua_run.c:748
+#: src/dird/ua_run.c:725 src/dird/ua_run.c:754
 msgid "Select level"
 msgstr "Saisissez le type"
 
-#: src/dird/ua_run.c:743
+#: src/dird/ua_run.c:749
 msgid "Initialize Catalog"
 msgstr "Initialisez le catalogue"
 
-#: src/dird/ua_run.c:744 src/stored/status.c:612 src/lib/util.c:438
+#: src/dird/ua_run.c:750 src/stored/status.c:677 src/lib/util.c:438
 #: src/filed/status.c:531
 msgid "Verify Catalog"
 msgstr ""
 
-#: src/dird/ua_run.c:745 src/lib/util.c:444
+#: src/dird/ua_run.c:751 src/lib/util.c:444
 msgid "Verify Volume to Catalog"
 msgstr ""
 
-#: src/dird/ua_run.c:746 src/lib/util.c:447
+#: src/dird/ua_run.c:752 src/lib/util.c:447
 msgid "Verify Disk to Catalog"
 msgstr ""
 
-#: src/dird/ua_run.c:747
+#: src/dird/ua_run.c:753
 msgid "Verify Volume Data (not yet implemented)"
 msgstr "Vérification des données sur le volume (pas encore implémenté)"
 
-#: src/dird/ua_run.c:768
+#: src/dird/ua_run.c:774
 msgid "Level not appropriate for this Job. Cannot be changed.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:799
+#: src/dird/ua_run.c:805
 #, fuzzy, c-format
 msgid ""
 "Run Admin Job\n"
@@ -4886,7 +4938,7 @@ msgstr ""
 "Quand    : %s\n"
 "Priorité : %d\n"
 
-#: src/dird/ua_run.c:843
+#: src/dird/ua_run.c:849
 #, fuzzy, c-format
 msgid ""
 "Run Backup job\n"
@@ -4910,12 +4962,12 @@ msgstr ""
 "Quand    : %s\n"
 "Priorité : %d\n"
 
-#: src/dird/ua_run.c:874
+#: src/dird/ua_run.c:880
 #, fuzzy, c-format
 msgid "Could not get job record for selected JobId. ERR=%s"
 msgstr "Impossible de récupérer le Job du JobId=%s : ERR=%s\n"
 
-#: src/dird/ua_run.c:913
+#: src/dird/ua_run.c:919
 #, fuzzy, c-format
 msgid ""
 "Run Verify Job\n"
@@ -4942,11 +4994,11 @@ msgstr ""
 "Quand      : %s\n"
 "Priorité   : %d\n"
 
-#: src/dird/ua_run.c:942
+#: src/dird/ua_run.c:948
 msgid "Please enter a JobId for restore: "
 msgstr "Saisissez le JobId pour la restauration : "
 
-#: src/dird/ua_run.c:982
+#: src/dird/ua_run.c:988
 #, fuzzy, c-format
 msgid ""
 "Run Restore job\n"
@@ -4976,7 +5028,7 @@ msgstr ""
 "Catalogue :       %s\n"
 "Priorité :        %d\n"
 
-#: src/dird/ua_run.c:1038
+#: src/dird/ua_run.c:1044
 #, c-format
 msgid ""
 "Run Restore job\n"
@@ -5007,7 +5059,7 @@ msgstr ""
 "Priorité :       %d\n"
 "Options Plugins: %s\n"
 
-#: src/dird/ua_run.c:1069
+#: src/dird/ua_run.c:1075
 #, c-format
 msgid ""
 "Run Restore job\n"
@@ -5018,17 +5070,17 @@ msgstr ""
 "JobName :    %s\n"
 "Bootstrap :  %s\n"
 
-#: src/dird/ua_run.c:1077
+#: src/dird/ua_run.c:1083
 #, c-format
 msgid "RegexWhere: %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1080
+#: src/dird/ua_run.c:1086
 #, c-format
 msgid "Where:      %s\n"
 msgstr "Where :     %s\n"
 
-#: src/dird/ua_run.c:1084
+#: src/dird/ua_run.c:1090
 #, c-format
 msgid ""
 "Replace:         %s\n"
@@ -5049,260 +5101,260 @@ msgstr ""
 "Priorité :        %d\n"
 "Options Plugins : %s\n"
 
-#: src/dird/ua_run.c:1139
+#: src/dird/ua_run.c:1145
 #, fuzzy
 msgid "Run Copy job\n"
 msgstr "Sélectionnez le Job de restauration"
 
-#: src/dird/ua_run.c:1141
+#: src/dird/ua_run.c:1147
 #, fuzzy
 msgid "Run Migration job\n"
 msgstr "Sélectionnez le Job de restauration"
 
-#: src/dird/ua_run.c:1170
+#: src/dird/ua_run.c:1176
 #, c-format
 msgid "Unknown Job Type=%d\n"
 msgstr "Job du Type=%d inconnu\n"
 
-#: src/dird/ua_run.c:1239
+#: src/dird/ua_run.c:1245
 #, c-format
 msgid "Value missing for keyword %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1246
+#: src/dird/ua_run.c:1252
 msgid "Job name specified twice.\n"
 msgstr "Le job est déjà spécifié.\n"
 
-#: src/dird/ua_run.c:1254
+#: src/dird/ua_run.c:1260
 msgid "JobId specified twice.\n"
 msgstr "Le JobId est déjà spécifié.\n"
 
-#: src/dird/ua_run.c:1263 src/dird/ua_run.c:1403
+#: src/dird/ua_run.c:1269 src/dird/ua_run.c:1409
 msgid "Client specified twice.\n"
 msgstr "Le client est déjà spécifié.\n"
 
-#: src/dird/ua_run.c:1271
+#: src/dird/ua_run.c:1277
 msgid "FileSet specified twice.\n"
 msgstr "Le FileSet est déjà spécifié.\n"
 
-#: src/dird/ua_run.c:1279
+#: src/dird/ua_run.c:1285
 msgid "Level specified twice.\n"
 msgstr "Le type (Level) est déjà spécifié.\n"
 
-#: src/dird/ua_run.c:1288
+#: src/dird/ua_run.c:1294
 msgid "Storage specified twice.\n"
 msgstr "Le Storage est déjà spécifié.\n"
 
-#: src/dird/ua_run.c:1296
+#: src/dird/ua_run.c:1302
 msgid "RegexWhere or Where specified twice.\n"
 msgstr "RegexWhere ou Where est déjà spécifiée.\n"
 
-#: src/dird/ua_run.c:1301
+#: src/dird/ua_run.c:1307
 #, fuzzy
 msgid "No authorization for \"regexwhere\" specification.\n"
 msgstr "La destination (Where) est déjà spécifiée.\n"
 
-#: src/dird/ua_run.c:1308
+#: src/dird/ua_run.c:1314
 msgid "Where or RegexWhere specified twice.\n"
 msgstr "RegexWhere ou Where est déjà spécifiée.\n"
 
-#: src/dird/ua_run.c:1313
+#: src/dird/ua_run.c:1319
 #, fuzzy
 msgid "No authoriztion for \"where\" specification.\n"
 msgstr "Pas d'enregistrement trouvé en base pour : %s\n"
 
-#: src/dird/ua_run.c:1320
+#: src/dird/ua_run.c:1326
 msgid "Bootstrap specified twice.\n"
 msgstr "Le bootstrap est déjà spécifié.\n"
 
-#: src/dird/ua_run.c:1328
+#: src/dird/ua_run.c:1334
 msgid "Replace specified twice.\n"
 msgstr "L'option d'écrasement (Replace) est déjà spécifié.\n"
 
-#: src/dird/ua_run.c:1336
+#: src/dird/ua_run.c:1342
 msgid "When specified twice.\n"
 msgstr "La planification (When) est déjà spécifiée.\n"
 
-#: src/dird/ua_run.c:1344
+#: src/dird/ua_run.c:1350
 msgid "Priority specified twice.\n"
 msgstr "La priorité (Priority) est déjà spécifiée.\n"
 
-#: src/dird/ua_run.c:1349
+#: src/dird/ua_run.c:1355
 msgid "Priority must be positive nonzero setting it to 10.\n"
 msgstr ""
 "La priorité doit être supérieure à zéro. Utilisation d'une priorité de 10.\n"
 
-#: src/dird/ua_run.c:1359
+#: src/dird/ua_run.c:1365
 msgid "Verify Job specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1387
+#: src/dird/ua_run.c:1393
 msgid "Migration Job specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1395
+#: src/dird/ua_run.c:1401
 msgid "Pool specified twice.\n"
 msgstr "Le pool est déjà spécifié.\n"
 
-#: src/dird/ua_run.c:1411
+#: src/dird/ua_run.c:1417
 #, fuzzy
 msgid "Restore Client specified twice.\n"
 msgstr "Le client est déjà spécifié.\n"
 
-#: src/dird/ua_run.c:1418
+#: src/dird/ua_run.c:1424
 #, fuzzy
 msgid "Plugin Options not yet implemented.\n"
 msgstr "Le client est déjà spécifié.\n"
 
-#: src/dird/ua_run.c:1421
+#: src/dird/ua_run.c:1427
 #, fuzzy
 msgid "Plugin Options specified twice.\n"
 msgstr "Le client est déjà spécifié.\n"
 
-#: src/dird/ua_run.c:1426
+#: src/dird/ua_run.c:1432
 #, fuzzy
 msgid "No authoriztion for \"PluginOptions\" specification.\n"
 msgstr "Pas d'enregistrement trouvé en base pour : %s\n"
 
-#: src/dird/ua_run.c:1433
+#: src/dird/ua_run.c:1439
 #, fuzzy
 msgid "Spool flag specified twice.\n"
 msgstr "Le pool est déjà spécifié.\n"
 
-#: src/dird/ua_run.c:1440
+#: src/dird/ua_run.c:1446
 #, fuzzy
 msgid "Invalid spooldata flag.\n"
 msgstr "Période invalide.\n"
 
-#: src/dird/ua_run.c:1449
+#: src/dird/ua_run.c:1455
 #, fuzzy
 msgid "IgnoreDuplicateCheck flag specified twice.\n"
 msgstr "Le pool est déjà spécifié.\n"
 
-#: src/dird/ua_run.c:1456
+#: src/dird/ua_run.c:1462
 #, fuzzy
 msgid "Invalid ignoreduplicatecheck flag.\n"
 msgstr "Période invalide.\n"
 
-#: src/dird/ua_run.c:1461
+#: src/dird/ua_run.c:1467
 #, fuzzy
 msgid "Accurate flag specified twice.\n"
 msgstr "Le pool est déjà spécifié.\n"
 
-#: src/dird/ua_run.c:1468
+#: src/dird/ua_run.c:1474
 #, fuzzy
 msgid "Invalid accurate flag.\n"
 msgstr "Période invalide.\n"
 
-#: src/dird/ua_run.c:1489
+#: src/dird/ua_run.c:1495
 #, c-format
 msgid "Invalid keyword: %s\n"
 msgstr "Argument invalide : %s\n"
 
-#: src/dird/ua_run.c:1504
+#: src/dird/ua_run.c:1510
 #, c-format
 msgid "Catalog \"%s\" not found\n"
 msgstr "Le catalogue \"%s\" est introuvable\n"
 
-#: src/dird/ua_run.c:1508
+#: src/dird/ua_run.c:1514
 #, c-format
 msgid "No authorization. Catalog \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1519
+#: src/dird/ua_run.c:1525
 #, c-format
 msgid "Job \"%s\" not found\n"
 msgstr "Le job \"%s\" est introuvable\n"
 
-#: src/dird/ua_run.c:1526
+#: src/dird/ua_run.c:1532
 msgid "A job name must be specified.\n"
 msgstr "Un nom de Job doit être spécifié.\n"
 
-#: src/dird/ua_run.c:1532
+#: src/dird/ua_run.c:1538
 #, c-format
 msgid "No authorization. Job \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1540
+#: src/dird/ua_run.c:1546
 #, c-format
 msgid "Pool \"%s\" not found.\n"
 msgstr "Le pool  \"%s\" est introuvable.\n"
 
-#: src/dird/ua_run.c:1550
+#: src/dird/ua_run.c:1556
 #, c-format
 msgid "No authorization. Pool \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1560
+#: src/dird/ua_run.c:1566
 #, c-format
 msgid "Storage \"%s\" not found.\n"
 msgstr "Le Storage \"%s\" est introuvable.\n"
 
-#: src/dird/ua_run.c:1569 src/dird/job.c:1242
+#: src/dird/ua_run.c:1575 src/dird/job.c:1245
 msgid "No storage specified.\n"
 msgstr "Pas de storage sélectionné.\n"
 
-#: src/dird/ua_run.c:1572
+#: src/dird/ua_run.c:1578
 #, c-format
 msgid "No authorization. Storage \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1592 src/dird/ua_run.c:1612
+#: src/dird/ua_run.c:1598 src/dird/ua_run.c:1618
 #, c-format
 msgid "No authorization. Client \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1602
+#: src/dird/ua_run.c:1608
 #, fuzzy, c-format
 msgid "Restore Client \"%s\" not found.\n"
 msgstr "le client \"%s\" est introuvable.\n"
 
-#: src/dird/ua_run.c:1621
+#: src/dird/ua_run.c:1627
 #, c-format
 msgid "FileSet \"%s\" not found.\n"
 msgstr "Le FileSet \"%s\" est introuvable.\n"
 
-#: src/dird/ua_run.c:1630
+#: src/dird/ua_run.c:1636
 #, c-format
 msgid "No authorization. FileSet \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1638
+#: src/dird/ua_run.c:1644
 #, c-format
 msgid "Verify Job \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1648
+#: src/dird/ua_run.c:1654
 #, c-format
 msgid "Migration Job \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:180 src/stored/sd_plugins.c:183
-#: src/filed/fd_plugins.c:973
+#: src/dird/dir_plugins.c:181 src/stored/sd_plugins.c:194
+#: src/filed/fd_plugins.c:1130
 #, c-format
 msgid "Loaded plugin: %s\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:200 src/stored/sd_plugins.c:203
-#: src/filed/fd_plugins.c:992
+#: src/dird/dir_plugins.c:201 src/stored/sd_plugins.c:214
+#: src/filed/fd_plugins.c:1151
 #, c-format
 msgid "Plugin magic wrong. Plugin=%s wanted=%s got=%s\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:208 src/stored/sd_plugins.c:211
-#: src/filed/fd_plugins.c:1000
+#: src/dird/dir_plugins.c:209 src/stored/sd_plugins.c:222
+#: src/filed/fd_plugins.c:1159
 #, c-format
 msgid "Plugin version incorrect. Plugin=%s wanted=%d got=%d\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:217 src/stored/sd_plugins.c:220
-#: src/filed/fd_plugins.c:1008
+#: src/dird/dir_plugins.c:218 src/stored/sd_plugins.c:231
+#: src/filed/fd_plugins.c:1167
 #, c-format
 msgid "Plugin license incompatible. Plugin=%s license=%s\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:225 src/stored/sd_plugins.c:228
-#: src/filed/fd_plugins.c:1016
+#: src/dird/dir_plugins.c:226 src/stored/sd_plugins.c:239
+#: src/filed/fd_plugins.c:1175
 #, c-format
 msgid "Plugin size incorrect. Plugin=%s wanted=%d got=%d\n"
 msgstr ""
@@ -5330,25 +5382,25 @@ msgstr ""
 msgid "Start Backup JobId %s, Job=%s\n"
 msgstr "Démarrage du backup JobId %s, Job=%s\n"
 
-#: src/dird/backup.c:517
+#: src/dird/backup.c:521
 #, c-format
 msgid "Unexpected Client Job message: %s\n"
 msgstr ""
 
-#: src/dird/backup.c:530
+#: src/dird/backup.c:534
 #, c-format
 msgid "Network error with FD during %s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/backup.c:565
+#: src/dird/backup.c:569
 msgid "No Job status returned from FD.\n"
 msgstr "Impossible de récupérer le statut du Job depuis le FD.\n"
 
-#: src/dird/backup.c:647
+#: src/dird/backup.c:657
 msgid "Backup failed -- incomplete"
 msgstr ""
 
-#: src/dird/backup.c:720
+#: src/dird/backup.c:730
 #, fuzzy, c-format
 msgid ""
 "%s %s %s (%s):\n"
@@ -5421,12 +5473,12 @@ msgstr ""
 "  Statut de fin :          %s\n"
 "\n"
 
-#: src/dird/backup.c:822
+#: src/dird/backup.c:832
 #, c-format
 msgid "Could not get Job Volume Parameters to update Bootstrap file. ERR=%s\n"
 msgstr ""
 
-#: src/dird/backup.c:858
+#: src/dird/backup.c:868
 #, c-format
 msgid ""
 "Could not open WriteBootstrap file:\n"
@@ -5435,7 +5487,7 @@ msgstr ""
 "Impossible d'ouvrir le fichier bootstrap (WriteBootstrap) :\n"
 "%s : ERR=%s\n"
 
-#: src/dird/restore.c:137 src/dird/msgchan.c:463 src/filed/job.c:2409
+#: src/dird/restore.c:137 src/dird/msgchan.c:476
 #, c-format
 msgid "Could not open bootstrap file %s: ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier bootstrap %s : ERR=%s\n"
@@ -5450,40 +5502,40 @@ msgstr "Impossible de trouver la ressource Storage \"%s\"\n"
 msgid "Could not acquire read storage lock for \"%s\""
 msgstr "Impossible de trouver la ressource Storage \"%s\"\n"
 
-#: src/dird/restore.c:502
+#: src/dird/restore.c:505
 msgid ""
 "Cannot restore without a bootstrap file.\n"
 "You probably ran a restore job directly. All restore jobs must\n"
 "be run using the restore command.\n"
 msgstr ""
 
-#: src/dird/restore.c:510
+#: src/dird/restore.c:513
 #, c-format
 msgid "Start Restore Job %s\n"
 msgstr "Démarrage du Job de restauration %s\n"
 
-#: src/dird/restore.c:561
+#: src/dird/restore.c:564
 msgid "Restore OK -- warning file count mismatch"
 msgstr "Restauration Ok -- attention le nombre de fichier ne correspond pas"
 
-#: src/dird/restore.c:563
+#: src/dird/restore.c:566
 msgid "Restore OK"
 msgstr "Restauration OK"
 
-#: src/dird/restore.c:567
+#: src/dird/restore.c:570
 #, fuzzy
 msgid "Restore OK -- with warnings"
 msgstr "Backup OK -- avec des erreurs"
 
-#: src/dird/restore.c:571
+#: src/dird/restore.c:574
 msgid "*** Restore Error ***"
 msgstr "*** Restauration en erreur ***"
 
-#: src/dird/restore.c:581
+#: src/dird/restore.c:584
 msgid "Restore Canceled"
 msgstr "Restauration annulée"
 
-#: src/dird/restore.c:608
+#: src/dird/restore.c:611
 #, fuzzy, c-format
 msgid ""
 "%s %s %s (%s):\n"
@@ -5527,7 +5579,7 @@ msgstr "Statut disponible pour :\n"
 msgid "Select daemon type for status"
 msgstr "Saisissez le composant à afficher"
 
-#: src/dird/ua_status.c:294 src/stored/status.c:218
+#: src/dird/ua_status.c:294 src/stored/status.c:248
 #, c-format
 msgid "%s Version: %s (%s) %s %s %s\n"
 msgstr "%s Version : %s (%s) %s %s %s\n"
@@ -5537,7 +5589,7 @@ msgstr "%s Version : %s (%s) %s %s %s\n"
 msgid "Daemon started %s. Jobs: run=%d, running=%d mode=%d,%d\n"
 msgstr "Démon démarré depuis %s, %d jobs lancés depuis cette date.\n"
 
-#: src/dird/ua_status.c:300 src/stored/status.c:228 src/filed/status.c:142
+#: src/dird/ua_status.c:300 src/stored/status.c:258 src/filed/status.c:142
 #, fuzzy, c-format
 msgid " Heap: heap=%s smbytes=%s max_bytes=%s bufs=%s max_bufs=%s\n"
 msgstr " Heap: bytes=%s smbytes=%s max_bytes=%s bufs=%s max_bufs=%s\n"
@@ -5584,25 +5636,25 @@ msgstr ""
 msgid "===================================================================================\n"
 msgstr ""
 
-#: src/dird/ua_status.c:487
+#: src/dird/ua_status.c:486
 #, fuzzy, c-format
 msgid "%-14s\t%-8s\t%3d\t%-18s\t%-18s\t%s\n"
 msgstr "%-14s %-8s %3d  %-18s %-18s %s\n"
 
-#: src/dird/ua_status.c:491
+#: src/dird/ua_status.c:490
 #, c-format
 msgid "%-14s %-8s %3d  %-18s %-18s %s\n"
 msgstr "%-14s %-8s %3d  %-18s %-18s %s\n"
 
-#: src/dird/ua_status.c:545
+#: src/dird/ua_status.c:544
 msgid "Ignoring invalid value for days. Max is 500.\n"
 msgstr ""
 
-#: src/dird/ua_status.c:588
+#: src/dird/ua_status.c:587
 msgid "No Scheduled Jobs.\n"
 msgstr "Pas de job programmé.\n"
 
-#: src/dird/ua_status.c:605 src/stored/status.c:396 src/filed/status.c:183
+#: src/dird/ua_status.c:604 src/stored/status.c:450 src/filed/status.c:183
 msgid ""
 "\n"
 "Running Jobs:\n"
@@ -5610,12 +5662,12 @@ msgstr ""
 "\n"
 "Job en cours :\n"
 
-#: src/dird/ua_status.c:613
+#: src/dird/ua_status.c:612
 #, c-format
 msgid "Console connected at %s\n"
 msgstr "Console connecté à %s\n"
 
-#: src/dird/ua_status.c:623
+#: src/dird/ua_status.c:622
 msgid ""
 "No Jobs running.\n"
 "====\n"
@@ -5623,160 +5675,160 @@ msgstr ""
 "Pas de job en cours.\n"
 "====\n"
 
-#: src/dird/ua_status.c:629
+#: src/dird/ua_status.c:628
 msgid " JobId Level   Name                       Status\n"
 msgstr " JobId Type    Nom                        Statut\n"
 
-#: src/dird/ua_status.c:630 src/filed/status.c:342
+#: src/dird/ua_status.c:629 src/filed/status.c:342
 msgid "======================================================================\n"
 msgstr "======================================================================\n"
 
-#: src/dird/ua_status.c:639
+#: src/dird/ua_status.c:638
 msgid "is waiting execution"
 msgstr "est en attente d'exécution"
 
-#: src/dird/ua_status.c:642
+#: src/dird/ua_status.c:641
 msgid "is running"
 msgstr "est en cours"
 
-#: src/dird/ua_status.c:645
+#: src/dird/ua_status.c:644
 msgid "is blocked"
 msgstr "est bloqué"
 
-#: src/dird/ua_status.c:648
+#: src/dird/ua_status.c:647
 msgid "has terminated"
 msgstr "est terminé"
 
-#: src/dird/ua_status.c:651
+#: src/dird/ua_status.c:650
 #, fuzzy
 msgid "has terminated with warnings"
 msgstr "Job terminés :\n"
 
-#: src/dird/ua_status.c:654
+#: src/dird/ua_status.c:653
 msgid "has erred"
 msgstr ""
 
-#: src/dird/ua_status.c:657
+#: src/dird/ua_status.c:656
 msgid "has errors"
 msgstr "est en erreur"
 
-#: src/dird/ua_status.c:660
+#: src/dird/ua_status.c:659
 msgid "has a fatal error"
 msgstr "est en erreur (fatale)"
 
-#: src/dird/ua_status.c:663
+#: src/dird/ua_status.c:662
 msgid "has verify differences"
 msgstr ""
 
-#: src/dird/ua_status.c:666
+#: src/dird/ua_status.c:665
 msgid "has been canceled"
 msgstr "a été annulé"
 
-#: src/dird/ua_status.c:671
+#: src/dird/ua_status.c:670
 #, fuzzy
 msgid "is waiting on Client"
 msgstr "est en attente du client %s"
 
-#: src/dird/ua_status.c:673
+#: src/dird/ua_status.c:672
 #, c-format
 msgid "is waiting on Client %s"
 msgstr "est en attente du client %s"
 
-#: src/dird/ua_status.c:681 src/dird/ua_status.c:683
+#: src/dird/ua_status.c:680 src/dird/ua_status.c:682
 #, fuzzy, c-format
 msgid "is waiting on Storage \"%s\""
 msgstr "est en attente du Storage %s"
 
-#: src/dird/ua_status.c:685
+#: src/dird/ua_status.c:684
 #, fuzzy
 msgid "is waiting on Storage"
 msgstr "est en attente du Storage %s"
 
-#: src/dird/ua_status.c:691
+#: src/dird/ua_status.c:690
 msgid "is waiting on max Storage jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:694
+#: src/dird/ua_status.c:693
 msgid "is waiting on max Client jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:697
+#: src/dird/ua_status.c:696
 msgid "is waiting on max Job jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:700
+#: src/dird/ua_status.c:699
 msgid "is waiting on max total jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:703
+#: src/dird/ua_status.c:702
 msgid "is waiting for its start time"
 msgstr "attend son heure de démarrage"
 
-#: src/dird/ua_status.c:706
+#: src/dird/ua_status.c:705
 msgid "is waiting for higher priority jobs to finish"
 msgstr "attend qu'un job plus prioritaire se termine"
 
-#: src/dird/ua_status.c:709 src/dird/ua_status.c:760 src/lib/util.c:241
+#: src/dird/ua_status.c:708 src/dird/ua_status.c:759 src/lib/util.c:241
 msgid "SD committing Data"
 msgstr ""
 
-#: src/dird/ua_status.c:712 src/dird/ua_status.c:763 src/lib/util.c:244
+#: src/dird/ua_status.c:711 src/dird/ua_status.c:762 src/lib/util.c:244
 #, fuzzy
 msgid "SD despooling Data"
 msgstr "Spooling des données...\n"
 
-#: src/dird/ua_status.c:715 src/dird/ua_status.c:766 src/lib/util.c:247
+#: src/dird/ua_status.c:714 src/dird/ua_status.c:765 src/lib/util.c:247
 #, fuzzy
 msgid "SD despooling Attributes"
 msgstr "Spooling des données...\n"
 
-#: src/dird/ua_status.c:718 src/dird/ua_status.c:769 src/lib/util.c:250
+#: src/dird/ua_status.c:717 src/dird/ua_status.c:768 src/lib/util.c:250
 msgid "Dir inserting Attributes"
 msgstr ""
 
-#: src/dird/ua_status.c:723
+#: src/dird/ua_status.c:722
 #, c-format
 msgid "is in unknown state %c"
 msgstr "est dans un état inconnu %c"
 
-#: src/dird/ua_status.c:737
+#: src/dird/ua_status.c:736
 msgid "is waiting for a mount request"
 msgstr "est en attente d'un montage"
 
-#: src/dird/ua_status.c:744
+#: src/dird/ua_status.c:743
 msgid "is waiting for an appendable Volume"
 msgstr "est en attente d'un volume libre"
 
-#: src/dird/ua_status.c:752
+#: src/dird/ua_status.c:751
 #, fuzzy
 msgid "is waiting for Client to connect to Storage daemon"
 msgstr "attend que le client %s se connecte au Storage %s"
 
-#: src/dird/ua_status.c:754
+#: src/dird/ua_status.c:753
 #, c-format
 msgid "is waiting for Client %s to connect to Storage %s"
 msgstr "attend que le client %s se connecte au Storage %s"
 
-#: src/dird/ua_status.c:785
+#: src/dird/ua_status.c:784
 #, fuzzy, c-format
 msgid "%6d\t%-6s\t%-20s\t%s\t%s\n"
 msgstr "%6d %-6s  %-20s %s\n"
 
-#: src/dird/ua_status.c:789
+#: src/dird/ua_status.c:788
 #, c-format
 msgid "%6d %-6s  %-20s %s\n"
 msgstr "%6d %-6s  %-20s %s\n"
 
-#: src/dird/ua_status.c:793
+#: src/dird/ua_status.c:792
 #, c-format
 msgid "               %-30s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:813
+#: src/dird/ua_status.c:812
 msgid "No Terminated Jobs.\n"
 msgstr "Pas de job terminé.\n"
 
-#: src/dird/ua_status.c:819 src/stored/status.c:507 src/filed/status.c:330
+#: src/dird/ua_status.c:818 src/stored/status.c:572 src/filed/status.c:330
 msgid ""
 "\n"
 "Terminated Jobs:\n"
@@ -5784,54 +5836,54 @@ msgstr ""
 "\n"
 "Job terminés :\n"
 
-#: src/dird/ua_status.c:820 src/stored/status.c:514 src/filed/status.c:340
+#: src/dird/ua_status.c:819 src/stored/status.c:579 src/filed/status.c:340
 msgid " JobId  Level    Files      Bytes   Status   Finished        Name \n"
 msgstr " JobId  Type     Fichiers   Octets   Statut  Terminé         Nom\n"
 
-#: src/dird/ua_status.c:821
+#: src/dird/ua_status.c:820
 msgid "====================================================================\n"
 msgstr "=====================================================================\n"
 
-#: src/dird/ua_status.c:853 src/stored/status.c:536 src/lib/util.c:180
+#: src/dird/ua_status.c:852 src/stored/status.c:601 src/lib/util.c:180
 #: src/filed/status.c:363
 msgid "Created"
 msgstr "Crée"
 
-#: src/dird/ua_status.c:857 src/stored/status.c:540 src/lib/util.c:196
+#: src/dird/ua_status.c:856 src/stored/status.c:605 src/lib/util.c:196
 #: src/lib/util.c:331 src/lib/util.c:478 src/filed/status.c:367
 msgid "Error"
 msgstr "Erreur"
 
-#: src/dird/ua_status.c:860 src/stored/status.c:543 src/filed/status.c:370
+#: src/dird/ua_status.c:859 src/stored/status.c:608 src/filed/status.c:370
 msgid "Diffs"
 msgstr ""
 
-#: src/dird/ua_status.c:866 src/stored/status.c:549 src/stored/btape.c:1521
+#: src/dird/ua_status.c:865 src/stored/status.c:614 src/stored/btape.c:1523
 #: src/lib/util.c:189 src/lib/util.c:324 src/filed/status.c:376
 #: src/wx-console/wxbconfigpanel.cpp:209
 msgid "OK"
 msgstr "OK"
 
-#: src/dird/ua_status.c:869 src/stored/status.c:552 src/lib/util.c:202
+#: src/dird/ua_status.c:868 src/stored/status.c:617 src/lib/util.c:202
 #: src/lib/util.c:327
 msgid "OK -- with warnings"
 msgstr "OK -- avec des avertissements"
 
-#: src/dird/ua_status.c:872 src/stored/status.c:555 src/filed/status.c:379
+#: src/dird/ua_status.c:871 src/stored/status.c:620 src/filed/status.c:379
 msgid "Other"
 msgstr "Autre"
 
-#: src/dird/ua_status.c:876 src/stored/status.c:567 src/filed/status.c:391
+#: src/dird/ua_status.c:875 src/stored/status.c:632 src/filed/status.c:391
 #, fuzzy, c-format
 msgid "%6d\t%-6s\t%8s\t%10s\t%-7s\t%-8s\t%s\n"
 msgstr "%6d  %-6s %8s %10s %-7s  %-8s %s\n"
 
-#: src/dird/ua_status.c:884 src/stored/status.c:575 src/filed/status.c:399
+#: src/dird/ua_status.c:883 src/stored/status.c:640 src/filed/status.c:399
 #, c-format
 msgid "%6d  %-6s %8s %10s  %-7s  %-8s %s\n"
 msgstr "%6d  %-6s %8s %10s %-7s  %-8s %s\n"
 
-#: src/dird/ua_status.c:893
+#: src/dird/ua_status.c:892
 msgid "\n"
 msgstr "\n"
 
@@ -5911,8 +5963,8 @@ msgid "Could not add job queue: ERR=%s\n"
 msgstr ""
 
 #: src/dird/job.c:183 src/dird/job.c:433 src/dird/job.c:435 src/dird/job.c:485
-#: src/dird/job.c:487 src/dird/job.c:1126 src/dird/job.c:1167
-#: src/dird/job.c:1176
+#: src/dird/job.c:487 src/dird/job.c:1129 src/dird/job.c:1170
+#: src/dird/job.c:1179
 #, fuzzy
 msgid "Job resource"
 msgstr "Pool à partir de sa définition"
@@ -5964,78 +6016,78 @@ msgstr "Pool %s introuvable en base. %s"
 msgid "Created database record for Pool \"%s\".\n"
 msgstr "Pas d'enregistrement trouvé en base pour : %s\n"
 
-#: src/dird/job.c:765 src/dird/job.c:806
+#: src/dird/job.c:766 src/dird/job.c:809
 #, c-format
 msgid "JobId %d already running. Duplicate job not allowed.\n"
 msgstr ""
 
-#: src/dird/job.c:796
+#: src/dird/job.c:797
 #, c-format
 msgid "Cancelling duplicate JobId=%d.\n"
 msgstr ""
 
-#: src/dird/job.c:825 src/dird/job.c:1113
+#: src/dird/job.c:828 src/dird/job.c:1116
 msgid "Run pool override"
 msgstr ""
 
-#: src/dird/job.c:836
+#: src/dird/job.c:839
 msgid "Run FullPool override"
 msgstr ""
 
-#: src/dird/job.c:838
+#: src/dird/job.c:841
 msgid "Job FullPool override"
 msgstr ""
 
-#: src/dird/job.c:847
+#: src/dird/job.c:850
 msgid "Run IncPool override"
 msgstr ""
 
-#: src/dird/job.c:849
+#: src/dird/job.c:852
 msgid "Job IncPool override"
 msgstr ""
 
-#: src/dird/job.c:858
+#: src/dird/job.c:861
 msgid "Run DiffPool override"
 msgstr ""
 
-#: src/dird/job.c:860
+#: src/dird/job.c:863
 msgid "Job DiffPool override"
 msgstr ""
 
-#: src/dird/job.c:890 src/stored/bscan.c:1052
+#: src/dird/job.c:893 src/stored/bscan.c:1056
 #, c-format
 msgid "Could not create Client record. ERR=%s\n"
 msgstr ""
 
-#: src/dird/job.c:926
+#: src/dird/job.c:929
 msgid "FileSet MD5 digest not found.\n"
 msgstr ""
 
-#: src/dird/job.c:931
+#: src/dird/job.c:934
 #, c-format
 msgid "Could not create FileSet \"%s\" record. ERR=%s\n"
 msgstr ""
 
-#: src/dird/job.c:973
+#: src/dird/job.c:976
 #, c-format
 msgid "Error updating job record. %s"
 msgstr ""
 
-#: src/dird/job.c:1118
+#: src/dird/job.c:1121
 msgid "Run storage override"
 msgstr ""
 
-#: src/dird/job.c:1186
+#: src/dird/job.c:1189
 #, fuzzy
 msgid "Client resource"
 msgstr "Pas de ressource « Restore Job » trouvée !\n"
 
-#: src/dird/job.c:1403
+#: src/dird/job.c:1406
 #, fuzzy, c-format
 msgid "Could not start clone job: \"%s\".\n"
 msgstr "Impossible d'ouvrir la base de données \"%s\".\n"
 
-#: src/dird/job.c:1406
+#: src/dird/job.c:1409
 #, c-format
 msgid "Clone JobId %d started.\n"
 msgstr ""
@@ -6205,93 +6257,94 @@ msgstr ""
 msgid "1000 OK: %s Version: %s (%s)\n"
 msgstr "1000 OK: %s Version: %s (%s)\n"
 
-#: src/dird/catreq.c:129 src/dird/catreq.c:356
+#: src/dird/catreq.c:128 src/dird/catreq.c:355
 #, c-format
 msgid "1990 Invalid Catalog Request: %s"
 msgstr "1990 Requête sur le Catalogue Invalide : %s"
 
-#: src/dird/catreq.c:130
+#: src/dird/catreq.c:129
 #, c-format
 msgid "Invalid Catalog request; DB not open: %s"
 msgstr "Requête sur le Catalogue invalide ; la base n'est pas ouverte : %s"
 
-#: src/dird/catreq.c:155
+#: src/dird/catreq.c:154
 msgid "1901 No Media.\n"
 msgstr "1901 Pas de Media.\n"
 
-#: src/dird/catreq.c:183
+#: src/dird/catreq.c:182
 msgid "not in Pool"
 msgstr "non présent dans le Pool"
 
-#: src/dird/catreq.c:185
+#: src/dird/catreq.c:184
 msgid "not correct MediaType"
 msgstr ""
 
-#: src/dird/catreq.c:195
+#: src/dird/catreq.c:194
 msgid "is not Enabled"
 msgstr "n'est pas activé (Enabled)"
 
-#: src/dird/catreq.c:204
+#: src/dird/catreq.c:203
 #, fuzzy, c-format
 msgid "1998 Volume \"%s\" catalog status is %s, %s.\n"
 msgstr "1998 Le statut du Volume \"%s\" est %s, %s.\n"
 
-#: src/dird/catreq.c:209
+#: src/dird/catreq.c:208
 #, c-format
 msgid "1997 Volume \"%s\" not in catalog.\n"
 msgstr "1997 le Volume \"%s\" n'est pas dans le catalogue.\n"
 
-#: src/dird/catreq.c:231
+#: src/dird/catreq.c:230
 #, c-format
 msgid "Unable to get Media record for Volume %s: ERR=%s\n"
 msgstr ""
 "Impossible de récupérer les informations du Media pour le Volume %s : ERR="
 "%s\n"
 
-#: src/dird/catreq.c:233
+#: src/dird/catreq.c:232
 #, c-format
 msgid "1991 Catalog Request for vol=%s failed: %s"
 msgstr ""
 
-#: src/dird/catreq.c:260
+#: src/dird/catreq.c:259
 #, c-format
 msgid ""
 "Volume Files at %u being set to %u for Volume \"%s\". This is incorrect.\n"
 msgstr ""
 
-#: src/dird/catreq.c:263
+#: src/dird/catreq.c:262
 #, c-format
 msgid "1992 Update Media error. VolFiles=%u, CatFiles=%u\n"
 msgstr ""
 
-#: src/dird/catreq.c:288
-msgid "Attempt to set StorageId to zero.\n"
-msgstr ""
-
-#: src/dird/catreq.c:319
+#: src/dird/catreq.c:318
 #, c-format
 msgid "Catalog error updating Media record. %s"
 msgstr ""
 
-#: src/dird/catreq.c:321
+#: src/dird/catreq.c:320
 msgid "1993 Update Media error\n"
 msgstr "1993 Erreur sur la mise à jour du Media\n"
 
-#: src/dird/catreq.c:345
+#: src/dird/catreq.c:344
 #, c-format
 msgid "Catalog error creating JobMedia record. %s"
 msgstr ""
 
-#: src/dird/catreq.c:347
+#: src/dird/catreq.c:346
 #, fuzzy
 msgid "1992 Create JobMedia error\n"
 msgstr "1991 Erreur sur la mise à jour du JobMedia\n"
 
-#: src/dird/catreq.c:357
+#: src/dird/catreq.c:356
 #, c-format
 msgid "Invalid Catalog request: %s"
 msgstr ""
 
+#: src/dird/catreq.c:443
+#, fuzzy, c-format
+msgid "Attribute create error: ERR=%s"
+msgstr "Erreur sur l'autochangeur : ERR=%s\n"
+
 #: src/dird/catreq.c:538
 #, fuzzy, c-format
 msgid "Restore object create error. %s"
@@ -6299,41 +6352,41 @@ msgstr "Restauration annulée"
 
 #: src/dird/catreq.c:544
 #, c-format
-msgid "Got %s but not same File as attributes\n"
+msgid "%s not same File=%d as attributes=%d\n"
 msgstr ""
 
-#: src/dird/catreq.c:570
+#: src/dird/catreq.c:571
 #, c-format
 msgid "Catalog error updating file digest. Unsupported digest stream type: %d"
 msgstr ""
 
-#: src/dird/catreq.c:585
+#: src/dird/catreq.c:586
 #, c-format
 msgid "attribute create error. %s"
 msgstr ""
 
-#: src/dird/catreq.c:591
+#: src/dird/catreq.c:592
 #, c-format
 msgid "Catalog error updating file digest. %s"
 msgstr ""
 
-#: src/dird/catreq.c:614
+#: src/dird/catreq.c:615
 #, fuzzy, c-format
 msgid "1994 Invalid Catalog Update: %s"
 msgstr "1990 Requête sur le Catalogue Invalide : %s"
 
-#: src/dird/catreq.c:615
+#: src/dird/catreq.c:616
 #, c-format
 msgid "Invalid Catalog Update; DB not open: %s"
 msgstr ""
 
-#: src/dird/catreq.c:670 src/dird/catreq.c:685 src/lib/bsock.c:605
+#: src/dird/catreq.c:671 src/dird/catreq.c:686 src/lib/bsock.c:645
 #, fuzzy, c-format
 msgid "fread attr spool error. ERR=%s\n"
 msgstr "Erreur pendant l'écriture des attributs dans le spool. ERR=%s\n"
 
 #: src/dird/msgchan.c:106 src/tray-monitor/tray-monitor.c:952
-#: src/filed/job.c:1771 src/qt-console/tray-monitor/tray-monitor.cpp:375
+#: src/filed/job.c:1775 src/qt-console/tray-monitor/tray-monitor.cpp:375
 msgid "Storage daemon"
 msgstr ""
 
@@ -6347,7 +6400,17 @@ msgstr ""
 msgid "<stored: bad response to Job command: %s\n"
 msgstr ""
 
-#: src/dird/msgchan.c:312
+#: src/dird/msgchan.c:273
+#, fuzzy, c-format
+msgid "Using Device \"%s\" to read.\n"
+msgstr "Using Device \"%s\"\n"
+
+#: src/dird/msgchan.c:311
+#, fuzzy, c-format
+msgid "Using Device \"%s\" to write.\n"
+msgstr "Using Device \"%s\"\n"
+
+#: src/dird/msgchan.c:318
 #, c-format
 msgid ""
 "\n"
@@ -6355,23 +6418,22 @@ msgid ""
 "     %s"
 msgstr ""
 
-#: src/dird/msgchan.c:316
+#: src/dird/msgchan.c:322
 #, c-format
 msgid ""
 "\n"
 "     Storage daemon didn't accept Device \"%s\" command.\n"
 msgstr ""
 
-#: src/dird/msgchan.c:321
-#, fuzzy, c-format
-msgid "Using Device \"%s\"\n"
-msgstr "Using Device \"%s\"\n"
-
-#: src/dird/msgchan.c:341 src/dird/msgchan.c:529
+#: src/dird/msgchan.c:345 src/dird/msgchan.c:542
 #, c-format
 msgid "Cannot create message thread: %s\n"
 msgstr ""
 
+#: src/dird/msgchan.c:417
+msgid "Director's comm line to SD dropped.\n"
+msgstr ""
+
 #: src/tray-monitor/tray_conf.c:177
 #: src/qt-console/tray-monitor/tray_conf.cpp:177
 #, c-format
@@ -6678,14 +6740,14 @@ msgstr "Connexion au Director %s:%d\n"
 
 #: src/tray-monitor/tray-monitor.c:937
 #: src/qt-console/tray-monitor/tray-monitor.cpp:359
-#: src/qt-console/bcomm/dircomm.cpp:101
+#: src/qt-console/bcomm/dircomm.cpp:103
 #, fuzzy, c-format
 msgid "Connecting to Director %s:%d"
 msgstr "Connexion au Director %s:%d\n"
 
 #: src/tray-monitor/tray-monitor.c:938 src/wx-console/console_thread.cpp:428
 #: src/qt-console/tray-monitor/tray-monitor.cpp:361
-#: src/qt-console/bcomm/dircomm.cpp:171
+#: src/qt-console/bcomm/dircomm.cpp:173
 #, fuzzy
 msgid "Director daemon"
 msgstr "Director"
@@ -6863,7 +6925,7 @@ msgid ""
 msgstr ""
 "Le mot de passe ou le nom du Director et du Client ne sont pas identiques.\n"
 
-#: src/stored/reserve.c:86
+#: src/stored/reserve.c:87
 #, fuzzy, c-format
 msgid "Unable to initialize reservation lock. ERR=%s\n"
 msgstr "Impossible d'initialiser le verrou sur la base. ERR=%s\n"
@@ -6873,22 +6935,22 @@ msgstr "Impossible d'initialiser le verrou sur la base. ERR=%s\n"
 msgid "Hey! num_writers=%d!!!!\n"
 msgstr ""
 
-#: src/stored/reserve.c:255
+#: src/stored/reserve.c:256
 #, fuzzy
 msgid "3939 Could not get dcr\n"
 msgstr "Impossible de créer la structure BSOCK cliente.\n"
 
-#: src/stored/reserve.c:357
+#: src/stored/reserve.c:364
 #, fuzzy, c-format
 msgid "Device reservation failed for JobId=%d: %s\n"
 msgstr "Impossible de créer le fichier bootstrap %s : ERR=%s\n"
 
-#: src/stored/reserve.c:366
+#: src/stored/reserve.c:373
 #, c-format
 msgid "Failed command: %s\n"
 msgstr "Erreur sur la commande : %s\n"
 
-#: src/stored/reserve.c:625 src/stored/dircmd.c:618
+#: src/stored/reserve.c:632 src/stored/dircmd.c:633
 #, c-format
 msgid ""
 "\n"
@@ -6896,42 +6958,42 @@ msgid ""
 "does not exist.\n"
 msgstr ""
 
-#: src/stored/reserve.c:629 src/stored/dircmd.c:596
+#: src/stored/reserve.c:636 src/stored/dircmd.c:611
 #, c-format
 msgid ""
 "\n"
 "     Device \"%s\" requested by DIR could not be opened or does not exist.\n"
 msgstr ""
 
-#: src/stored/reserve.c:645
+#: src/stored/reserve.c:652
 #, c-format
 msgid "3926 Could not get dcr for device: %s\n"
 msgstr ""
 
-#: src/stored/reserve.c:771
+#: src/stored/reserve.c:778
 #, c-format
 msgid "3601 JobId=%u device %s is BLOCKED due to user unmount.\n"
 msgstr ""
 "3601 JobId=%u device %s est BLOQUÉ car il a été demonté par l'utilisateur.\n"
 
-#: src/stored/reserve.c:781
+#: src/stored/reserve.c:788
 #, c-format
 msgid "3602 JobId=%u device %s is busy (already reading/writing).\n"
 msgstr "3602 JobId=%u device %s est occupé (à lire ou écrire).\n"
 
-#: src/stored/reserve.c:833
+#: src/stored/reserve.c:840
 #, c-format
 msgid "3603 JobId=%u device %s is busy reading.\n"
 msgstr "3603 JobId=%u device %s est occupé en lecture.\n"
 
-#: src/stored/reserve.c:842
+#: src/stored/reserve.c:849
 #, c-format
 msgid "3604 JobId=%u device %s is BLOCKED due to user unmount.\n"
 msgstr ""
 "3604 JobId=%u device %s est bloqué car il a été démonté par l'utilisateur "
 "(unmount).\n"
 
-#: src/stored/reserve.c:884
+#: src/stored/reserve.c:891
 #, fuzzy, c-format
 msgid ""
 "3608 JobId=%u wants Pool=\"%s\" but have Pool=\"%s\" nreserve=%d on drive "
@@ -6940,53 +7002,53 @@ msgstr ""
 "3608 JobId=%u voulait le Pool=\"%s\", mais c'est le Pool=\"%s\" qui est dans "
 "le drive %s.\n"
 
-#: src/stored/reserve.c:907
+#: src/stored/reserve.c:914
 #, fuzzy, c-format
 msgid "3609 JobId=%u Max concurrent jobs exceeded on drive %s.\n"
 msgstr ""
 "3607 JobId=%u voulait Vol=\"%s\", c'est le Vol=\"%s\" qui est dans le drive "
 "%s.\n"
 
-#: src/stored/reserve.c:919
+#: src/stored/reserve.c:926
 #, fuzzy, c-format
 msgid "3610 JobId=%u Volume max jobs exceeded on drive %s.\n"
 msgstr ""
 "3607 JobId=%u voulait Vol=\"%s\", c'est le Vol=\"%s\" qui est dans le drive "
 "%s.\n"
 
-#: src/stored/reserve.c:971
+#: src/stored/reserve.c:978
 #, c-format
 msgid "3605 JobId=%u wants free drive but device %s is busy.\n"
 msgstr ""
 "3605 JobId=%u voulait libérer le lecteur, mais le device %s est occupé.\n"
 
-#: src/stored/reserve.c:980
+#: src/stored/reserve.c:987
 #, c-format
 msgid "3606 JobId=%u prefers mounted drives, but drive %s has no Volume.\n"
 msgstr "3606 JobId=%u voulait un lecteur monté, mais le lecteur %s est vide.\n"
 
-#: src/stored/reserve.c:1002
+#: src/stored/reserve.c:1009
 #, c-format
 msgid "3607 JobId=%u wants Vol=\"%s\" drive has Vol=\"%s\" on drive %s.\n"
 msgstr ""
 "3607 JobId=%u voulait Vol=\"%s\", c'est le Vol=\"%s\" qui est dans le drive "
 "%s.\n"
 
-#: src/stored/reserve.c:1057
+#: src/stored/reserve.c:1064
 #, c-format
 msgid "Logic error!!!! JobId=%u Should not get here.\n"
 msgstr ""
 
-#: src/stored/reserve.c:1058
+#: src/stored/reserve.c:1065
 #, c-format
 msgid "3910 JobId=%u Logic error!!!! drive %s Should not get here.\n"
 msgstr ""
 
-#: src/stored/reserve.c:1061
+#: src/stored/reserve.c:1068
 msgid "Logic error!!!! Should not get here.\n"
 msgstr ""
 
-#: src/stored/reserve.c:1064
+#: src/stored/reserve.c:1071
 #, c-format
 msgid "3911 JobId=%u failed reserve drive %s.\n"
 msgstr ""
@@ -7092,23 +7154,23 @@ msgstr ""
 msgid "FileIndex=%d VolSessionId=%d VolSessionTime=%d Stream=%d DataLen=%d\n"
 msgstr ""
 
-#: src/stored/bls.c:425 src/stored/read_record.c:414 src/stored/bcopy.c:332
+#: src/stored/bls.c:425 src/stored/read_record.c:414 src/stored/bcopy.c:330
 msgid "Fresh Volume Label"
 msgstr ""
 
-#: src/stored/bls.c:428 src/stored/read_record.c:417 src/stored/bcopy.c:335
+#: src/stored/bls.c:428 src/stored/read_record.c:417 src/stored/bcopy.c:333
 msgid "Volume Label"
 msgstr ""
 
-#: src/stored/bls.c:432 src/stored/label.c:1033 src/stored/bcopy.c:339
+#: src/stored/bls.c:432 src/stored/label.c:1028 src/stored/bcopy.c:337
 msgid "Begin Job Session"
 msgstr ""
 
-#: src/stored/bls.c:437 src/stored/label.c:1036 src/stored/bcopy.c:343
+#: src/stored/bls.c:437 src/stored/label.c:1031 src/stored/bcopy.c:341
 msgid "End Job Session"
 msgstr ""
 
-#: src/stored/bls.c:441 src/stored/bcopy.c:348
+#: src/stored/bls.c:441 src/stored/bcopy.c:346
 msgid "End of Medium"
 msgstr ""
 
@@ -7124,17 +7186,17 @@ msgstr ""
 msgid "End of object"
 msgstr ""
 
-#: src/stored/bls.c:453 src/stored/label.c:1045 src/stored/bcopy.c:351
+#: src/stored/bls.c:453 src/stored/label.c:1040 src/stored/bcopy.c:349
 msgid "Unknown"
 msgstr ""
 
-#: src/stored/bls.c:460 src/stored/read_record.c:435 src/stored/bcopy.c:357
+#: src/stored/bls.c:460 src/stored/read_record.c:435 src/stored/bcopy.c:355
 #, c-format
 msgid "%s Record: VolSessionId=%d VolSessionTime=%d JobId=%d DataLen=%d\n"
 msgstr ""
 
-#: src/stored/bls.c:479 src/stored/bextract.c:612 src/stored/bcopy.c:375
-#: src/stored/bscan.c:1370 src/stored/btape.c:3048
+#: src/stored/bls.c:479 src/stored/bextract.c:612 src/stored/bcopy.c:373
+#: src/stored/bscan.c:1374 src/stored/btape.c:3050
 #, c-format
 msgid "Mount Volume \"%s\" on device %s and press return when ready: "
 msgstr ""
@@ -7144,86 +7206,86 @@ msgstr ""
 msgid "Connection request from %s failed.\n"
 msgstr "Demande de connexion échouée.\n"
 
-#: src/stored/dircmd.c:165
+#: src/stored/dircmd.c:166
 #, fuzzy, c-format
 msgid "Invalid connection from %s. Len=%d\n"
 msgstr "Connexion invalide. Len=%d\n"
 
-#: src/stored/dircmd.c:208 src/filed/authenticate.c:208
+#: src/stored/dircmd.c:210 src/filed/authenticate.c:208
 msgid "Unable to authenticate Director\n"
 msgstr ""
 
-#: src/stored/dircmd.c:294
+#: src/stored/dircmd.c:299
 #, c-format
 msgid "3991 Bad setdebug command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:317
+#: src/stored/dircmd.c:326
+msgid "3903 Error scanning cancel command.\n"
+msgstr ""
+
+#: src/stored/dircmd.c:330
 #, c-format
 msgid "3904 Job %s not found.\n"
 msgstr "3904 Job %s non trouvé.\n"
 
-#: src/stored/dircmd.c:345
+#: src/stored/dircmd.c:358
 #, fuzzy, c-format
-msgid "3000 JobId=%ld Job=\"%s\" marked to be canceled.\n"
+msgid "3000 JobId=%ld Job=\"%s\" marked to be %s.\n"
 msgstr "JobId %s, Job %s marqué pour être annulé.\n"
 
-#: src/stored/dircmd.c:349
-msgid "3903 Error scanning cancel command.\n"
-msgstr ""
-
-#: src/stored/dircmd.c:425 src/stored/dircmd.c:791 src/stored/dircmd.c:883
-#: src/stored/dircmd.c:994 src/stored/dircmd.c:1116 src/stored/dircmd.c:1159
+#: src/stored/dircmd.c:437 src/stored/dircmd.c:812 src/stored/dircmd.c:904
+#: src/stored/dircmd.c:1015 src/stored/dircmd.c:1137 src/stored/dircmd.c:1179
 #, c-format
 msgid "3999 Device \"%s\" not found or could not be opened.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:430
+#: src/stored/dircmd.c:442
 #, c-format
 msgid "3903 Error scanning label command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:480
+#: src/stored/dircmd.c:492
 #, fuzzy, c-format
 msgid "3910 Unable to open device \"%s\": ERR=%s\n"
 msgstr "3910 Impossible d'ouvrir le device %s : ERR=%s\n"
 
-#: src/stored/dircmd.c:497
+#: src/stored/dircmd.c:509
 #, c-format
 msgid "3920 Cannot label Volume because it is already labeled: \"%s\"\n"
 msgstr ""
 "3920 Impossible de labéliser le Volume car il possède déjà le label : \"%s"
 "\"\n"
 
-#: src/stored/dircmd.c:504
+#: src/stored/dircmd.c:516
 msgid "3921 Wrong volume mounted.\n"
 msgstr "3921 Mauvais volume monté.\n"
 
-#: src/stored/dircmd.c:508
+#: src/stored/dircmd.c:520
 msgid "3922 Cannot relabel an ANSI/IBM labeled Volume.\n"
 msgstr "3922 Impossible de re-labéliser un Volume ANSI/IBM.\n"
 
-#: src/stored/dircmd.c:516
+#: src/stored/dircmd.c:528
 #, c-format
 msgid "3912 Failed to label Volume: ERR=%s\n"
 msgstr "3912 Impossible de labéliser le Volume : ERR=%s\n"
 
-#: src/stored/dircmd.c:526
+#: src/stored/dircmd.c:538
 #, fuzzy, c-format
 msgid "3914 Failed to label Volume (no media): ERR=%s\n"
 msgstr "3912 Impossible de labéliser le Volume : ERR=%s\n"
 
-#: src/stored/dircmd.c:529
+#: src/stored/dircmd.c:541
 #, c-format
 msgid "3913 Cannot label Volume. Unknown status %d from read_volume_label()\n"
 msgstr ""
 
-#: src/stored/dircmd.c:563
+#: src/stored/dircmd.c:578
 #, c-format
 msgid "3001 Mounted Volume: %s\n"
 msgstr "3001 Volume monté : %s\n"
 
-#: src/stored/dircmd.c:567 src/stored/dircmd.c:1195
+#: src/stored/dircmd.c:582 src/stored/dircmd.c:1215
 #, fuzzy, c-format
 msgid ""
 "3902 Cannot mount Volume on Storage Device \"%s\" because:\n"
@@ -7232,22 +7294,22 @@ msgstr ""
 "3902 Impossible de monté le volume dans le storage device %s car :\n"
 "%s"
 
-#: src/stored/dircmd.c:680
+#: src/stored/dircmd.c:696
 #, fuzzy
 msgid "Specified slot ignored. "
 msgstr "fopen %s en erreur : ERR=%s\n"
 
-#: src/stored/dircmd.c:695 src/stored/dircmd.c:752
+#: src/stored/dircmd.c:712 src/stored/dircmd.c:770
 #, fuzzy, c-format
 msgid "3901 Unable to open device \"%s\": ERR=%s\n"
 msgstr "3910 Impossible d'ouvrir le device %s : ERR=%s\n"
 
-#: src/stored/dircmd.c:715 src/stored/dircmd.c:743
+#: src/stored/dircmd.c:732 src/stored/dircmd.c:761
 #, fuzzy, c-format
 msgid "3001 Device \"%s\" is mounted with Volume \"%s\"\n"
 msgstr "3001 Device %s est monté avec le volume \"%s\"\n"
 
-#: src/stored/dircmd.c:718 src/stored/dircmd.c:746 src/stored/dircmd.c:761
+#: src/stored/dircmd.c:735 src/stored/dircmd.c:764 src/stored/dircmd.c:779
 #, fuzzy, c-format
 msgid ""
 "3905 Device \"%s\" open but no Bacula volume is mounted.\n"
@@ -7257,152 +7319,152 @@ msgstr ""
 "Si ce n'est pas une cartouche vierge, essayer de la démonter puis de la "
 "remonter.\n"
 
-#: src/stored/dircmd.c:728
+#: src/stored/dircmd.c:745
 #, fuzzy, c-format
 msgid "3001 Device \"%s\" is doing acquire.\n"
 msgstr "3902 Le Device %s est occupé en acquisition.\n"
 
-#: src/stored/dircmd.c:733 src/stored/dircmd.c:854
+#: src/stored/dircmd.c:750 src/stored/dircmd.c:875
 #, fuzzy, c-format
 msgid "3903 Device \"%s\" is being labeled.\n"
 msgstr "3934 Device %s est en cours d'initialisation.\n"
 
-#: src/stored/dircmd.c:758
+#: src/stored/dircmd.c:776
 #, fuzzy, c-format
 msgid "3001 Device \"%s\" is already mounted with Volume \"%s\"\n"
 msgstr "3001 Device %s est déjà monté avec le volume \"%s\"\n"
 
-#: src/stored/dircmd.c:767
+#: src/stored/dircmd.c:788
 #, fuzzy, c-format
 msgid "3002 Device \"%s\" is mounted.\n"
 msgstr "3002 Le device %s est monté.\n"
 
-#: src/stored/dircmd.c:769 src/stored/dircmd.c:826 src/stored/dircmd.c:842
-#: src/stored/dircmd.c:874
+#: src/stored/dircmd.c:790 src/stored/dircmd.c:847 src/stored/dircmd.c:863
+#: src/stored/dircmd.c:895
 #, c-format
 msgid "3907 %s"
 msgstr "3907 %s"
 
-#: src/stored/dircmd.c:772
+#: src/stored/dircmd.c:793
 #, fuzzy, c-format
 msgid "3906 File device \"%s\" is always mounted.\n"
 msgstr "3906 Le device fichier %s est toujours monté.\n"
 
-#: src/stored/dircmd.c:781
+#: src/stored/dircmd.c:802
 #, fuzzy, c-format
 msgid "3930 Device \"%s\" is being released.\n"
 msgstr "3934 Device %s est en cours d'initialisation.\n"
 
-#: src/stored/dircmd.c:785
+#: src/stored/dircmd.c:806
 #, fuzzy, c-format
 msgid "3905 Unknown wait state %d\n"
 msgstr "est dans un état inconnu %c"
 
-#: src/stored/dircmd.c:795
+#: src/stored/dircmd.c:816
 #, c-format
 msgid "3909 Error scanning mount command: %s\n"
 msgstr "3909 Erreur pendant la lecture de la commande de montage : %s\n"
 
-#: src/stored/dircmd.c:823 src/stored/dircmd.c:876
+#: src/stored/dircmd.c:844 src/stored/dircmd.c:897
 #, fuzzy, c-format
 msgid "3002 Device \"%s\" unmounted.\n"
 msgstr "3002 Le device %s est démonté.\n"
 
-#: src/stored/dircmd.c:830
+#: src/stored/dircmd.c:851
 #, fuzzy, c-format
 msgid "3901 Device \"%s\" is already unmounted.\n"
 msgstr "3901 Le device %s est déjà démonté.\n"
 
-#: src/stored/dircmd.c:845
+#: src/stored/dircmd.c:866
 #, fuzzy, c-format
 msgid "3001 Device \"%s\" unmounted.\n"
 msgstr "3001 Le device %s est démonté.\n"
 
-#: src/stored/dircmd.c:850
+#: src/stored/dircmd.c:871
 #, fuzzy, c-format
 msgid "3902 Device \"%s\" is busy in acquire.\n"
 msgstr "3902 Le Device %s est occupé en acquisition.\n"
 
-#: src/stored/dircmd.c:888
+#: src/stored/dircmd.c:909
 #, c-format
 msgid "3907 Error scanning unmount command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:916
+#: src/stored/dircmd.c:937
 #, fuzzy
 msgid "3916 Error scanning action_on_purge command\n"
 msgstr "2902 Erreur dans le décodage de la commande d'annulation.\n"
 
-#: src/stored/dircmd.c:959
+#: src/stored/dircmd.c:980
 #, fuzzy, c-format
 msgid "3921 Device \"%s\" already released.\n"
 msgstr "3921 Le Device %s est déjà libéré.\n"
 
-#: src/stored/dircmd.c:966
+#: src/stored/dircmd.c:987
 #, fuzzy, c-format
 msgid "3922 Device \"%s\" waiting for sysop.\n"
 msgstr "3922 Device %s est en attente d'une intervention sysop.\n"
 
-#: src/stored/dircmd.c:972
+#: src/stored/dircmd.c:993
 #, fuzzy, c-format
 msgid "3922 Device \"%s\" waiting for mount.\n"
 msgstr "3922 Le Device %s est en atttente d'un montage.\n"
 
-#: src/stored/dircmd.c:976
+#: src/stored/dircmd.c:997
 #, fuzzy, c-format
 msgid "3923 Device \"%s\" is busy in acquire.\n"
 msgstr "3902 Le Device %s est occupé en acquisition.\n"
 
-#: src/stored/dircmd.c:980
+#: src/stored/dircmd.c:1001
 #, fuzzy, c-format
 msgid "3914 Device \"%s\" is being labeled.\n"
 msgstr "3934 Device %s est en cours d'initialisation.\n"
 
-#: src/stored/dircmd.c:988
+#: src/stored/dircmd.c:1009
 #, fuzzy, c-format
 msgid "3022 Device \"%s\" released.\n"
 msgstr "3022 Le device %s est libéré.\n"
 
-#: src/stored/dircmd.c:999
+#: src/stored/dircmd.c:1020
 #, c-format
 msgid "3927 Error scanning release command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1028 src/filed/job.c:1531
+#: src/stored/dircmd.c:1049 src/filed/job.c:1535
 #, c-format
 msgid "Could not create bootstrap file %s: ERR=%s\n"
 msgstr "Impossible de créer le fichier bootstrap %s : ERR=%s\n"
 
-#: src/stored/dircmd.c:1041
+#: src/stored/dircmd.c:1062
 msgid "Error parsing bootstrap file.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1103
+#: src/stored/dircmd.c:1124
 #, fuzzy, c-format
-msgid "3995 Device \"%s\" is not an autochanger.\n"
+msgid "3998 Device \"%s\" is not an autochanger.\n"
 msgstr "3995 Le Device %s n'est pas un autochangeur.\n"
 
-#: src/stored/dircmd.c:1120
+#: src/stored/dircmd.c:1141
 #, fuzzy, c-format
 msgid "3908 Error scanning autochanger drives/list/slots command: %s\n"
 msgstr "3909 Erreur pendant la lecture de la commande de montage : %s\n"
 
-#: src/stored/dircmd.c:1163
+#: src/stored/dircmd.c:1183
 #, c-format
 msgid "3909 Error scanning readlabel command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1191
+#: src/stored/dircmd.c:1211
 #, c-format
 msgid "3001 Volume=%s Slot=%d\n"
 msgstr "3001 Volume=%s Slot=%d\n"
 
-#: src/stored/dircmd.c:1223
+#: src/stored/dircmd.c:1243
 #, fuzzy, c-format
 msgid "3931 Device \"%s\" is BLOCKED. user unmounted.\n"
 msgstr "3931 Device %s est BLOQUÉ, démonté par l'utilisateur.\n"
 
-#: src/stored/dircmd.c:1227
+#: src/stored/dircmd.c:1247
 #, fuzzy, c-format
 msgid ""
 "3932 Device \"%s\" is BLOCKED. user unmounted during wait for media/mount.\n"
@@ -7410,37 +7472,37 @@ msgstr ""
 "3932 Device %s est BLOQUÉ, démonté par l'utilisateur alors que bacula était "
 "en attente d'un média.\n"
 
-#: src/stored/dircmd.c:1231
+#: src/stored/dircmd.c:1251
 #, fuzzy, c-format
 msgid "3933 Device \"%s\" is BLOCKED waiting for media.\n"
 msgstr "3933 Device %s est bloqué en attente d'un media.\n"
 
-#: src/stored/dircmd.c:1235
+#: src/stored/dircmd.c:1255
 #, fuzzy, c-format
 msgid "3934 Device \"%s\" is being initialized.\n"
 msgstr "3934 Device %s est en cours d'initialisation.\n"
 
-#: src/stored/dircmd.c:1239
+#: src/stored/dircmd.c:1259
 #, fuzzy, c-format
 msgid "3935 Device \"%s\" is blocked labeling a Volume.\n"
 msgstr "3935 Device %s est bloqué par une labélisation de volume.\n"
 
-#: src/stored/dircmd.c:1243
+#: src/stored/dircmd.c:1263
 #, fuzzy, c-format
 msgid "3935 Device \"%s\" is blocked for unknown reason.\n"
 msgstr "3935 Device %s est bloqué pour une raison inconnue.\n"
 
-#: src/stored/dircmd.c:1248
+#: src/stored/dircmd.c:1268
 #, fuzzy, c-format
 msgid "3936 Device \"%s\" is busy reading.\n"
 msgstr "3936 Device %s est occupé en lecture.\n"
 
-#: src/stored/dircmd.c:1251
+#: src/stored/dircmd.c:1271
 #, fuzzy, c-format
 msgid "3937 Device \"%s\" is busy with writers=%d reserved=%d.\n"
 msgstr "3937 Device %s est occupé avec %d flux en écriture.\n"
 
-#: src/stored/parse_bsr.c:123 src/stored/parse_bsr.c:127
+#: src/stored/parse_bsr.c:122 src/stored/parse_bsr.c:126
 #, c-format
 msgid ""
 "Bootstrap file error: %s\n"
@@ -7448,154 +7510,154 @@ msgid ""
 "%s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:149
+#: src/stored/parse_bsr.c:148
 #, c-format
 msgid "Cannot open bootstrap file %s: %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:280
+#: src/stored/parse_bsr.c:279
 #, c-format
 msgid "MediaType %s in bsr at inappropriate place.\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:312
+#: src/stored/parse_bsr.c:311
 #, c-format
 msgid "Device \"%s\" in bsr at inappropriate place.\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:485
+#: src/stored/parse_bsr.c:484
 #, fuzzy, c-format
 msgid "REGEX '%s' compile error. ERR=%s\n"
 msgstr "erreur de fermeture : ERR=%s\n"
 
-#: src/stored/parse_bsr.c:495
+#: src/stored/parse_bsr.c:494
 msgid "JobType not yet implemented\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:503
+#: src/stored/parse_bsr.c:502
 msgid "JobLevel not yet implemented\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:720
+#: src/stored/parse_bsr.c:719
 #, c-format
 msgid "Slot %d in bsr at inappropriate place.\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:744
+#: src/stored/parse_bsr.c:743
 #, c-format
 msgid "VolFile     : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:752
+#: src/stored/parse_bsr.c:751
 #, c-format
 msgid "VolBlock    : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:760
+#: src/stored/parse_bsr.c:759
 #, c-format
 msgid "VolAddr    : %llu-%llu\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:769
+#: src/stored/parse_bsr.c:768
 #, c-format
 msgid "FileIndex   : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:771
+#: src/stored/parse_bsr.c:770
 #, c-format
 msgid "FileIndex   : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:781
+#: src/stored/parse_bsr.c:780
 #, c-format
 msgid "JobId       : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:783
+#: src/stored/parse_bsr.c:782
 #, c-format
 msgid "JobId       : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:793
+#: src/stored/parse_bsr.c:792
 #, c-format
 msgid "SessId      : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:795
+#: src/stored/parse_bsr.c:794
 #, c-format
 msgid "SessId      : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:804
+#: src/stored/parse_bsr.c:803
 #, c-format
 msgid "VolumeName  : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:805
+#: src/stored/parse_bsr.c:804
 #, c-format
 msgid "  MediaType : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:806
+#: src/stored/parse_bsr.c:805
 #, c-format
 msgid "  Device    : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:807
+#: src/stored/parse_bsr.c:806
 #, c-format
 msgid "  Slot      : %d\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:816
+#: src/stored/parse_bsr.c:815
 #, c-format
 msgid "Client      : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:824
+#: src/stored/parse_bsr.c:823
 #, c-format
 msgid "Job          : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:832
+#: src/stored/parse_bsr.c:831
 #, c-format
 msgid "SessTime    : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:843
+#: src/stored/parse_bsr.c:842
 msgid "BSR is NULL\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:847
+#: src/stored/parse_bsr.c:846
 #, c-format
 msgid "Next        : 0x%x\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:848
+#: src/stored/parse_bsr.c:847
 #, c-format
 msgid "Root bsr    : 0x%x\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:860
+#: src/stored/parse_bsr.c:859
 #, c-format
 msgid "count       : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:861
+#: src/stored/parse_bsr.c:860
 #, c-format
 msgid "found       : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:864
+#: src/stored/parse_bsr.c:863
 #, c-format
 msgid "done        : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:865
+#: src/stored/parse_bsr.c:864
 #, c-format
 msgid "positioning : %d\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:866
+#: src/stored/parse_bsr.c:865
 #, c-format
 msgid "fast_reject : %d\n"
 msgstr ""
@@ -7679,65 +7741,63 @@ msgstr ""
 msgid "Unable to set network buffer size.\n"
 msgstr ""
 
-#: src/stored/append.c:96 src/stored/append.c:105 src/stored/append.c:117
-#: src/stored/append.c:297 src/stored/append.c:298 src/stored/askdir.c:339
-#: src/stored/askdir.c:340
+#: src/stored/append.c:95 src/stored/append.c:104 src/stored/append.c:116
+#: src/stored/askdir.c:340 src/stored/askdir.c:341
 msgid "NULL Volume name. This shouldn't happen!!!\n"
 msgstr ""
 
-#: src/stored/append.c:111 src/stored/btape.c:2233
+#: src/stored/append.c:110 src/stored/btape.c:2235
 #, c-format
 msgid "Write session label failed. ERR=%s\n"
 msgstr "Impossible d'écrire le label de session. ERR=%s\n"
 
-#: src/stored/append.c:123
+#: src/stored/append.c:122
 #, c-format
 msgid "Network send error to FD. ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:160
+#: src/stored/append.c:159
 #, c-format
 msgid "Error reading data header from FD. ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:168
+#: src/stored/append.c:167
 #, c-format
 msgid "Malformed data header from FD: %s\n"
 msgstr ""
 
-#: src/stored/append.c:188
+#: src/stored/append.c:187
 #, c-format
 msgid "FI=%d from FD not positive or sequential=%d\n"
 msgstr ""
 
-#: src/stored/append.c:244
+#: src/stored/append.c:235
 #, fuzzy, c-format
 msgid "Network error reading from FD. ERR=%s\n"
 msgstr "Erreur dans l'exécution de la commande : %s. ERR=%s\n"
 
-#: src/stored/append.c:274
-#, fuzzy, c-format
-msgid ""
-"Job write elapsed time = %02d:%02d:%02d, Transfer rate = %s Bytes/second\n"
-msgstr "Temps d'écriture du job = %02d:%02d:%02d, Taux de transfert = %s o/s\n"
-
-#: src/stored/append.c:289 src/stored/btape.c:2352
+#: src/stored/append.c:265 src/stored/btape.c:2354
 #, fuzzy, c-format
 msgid "Error writing end session label. ERR=%s\n"
 msgstr ""
 "Erreur pendant l'écriture des données vers le fichier de spool. ERR=%s\n"
 
-#: src/stored/append.c:305 src/stored/mac.c:126 src/stored/mac.c:247
+#: src/stored/append.c:277 src/stored/mac.c:126 src/stored/mac.c:261
 #: src/stored/spool.c:300
 #, c-format
 msgid "Fatal append error on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:307 src/stored/mac.c:128
+#: src/stored/append.c:279 src/stored/mac.c:128
 msgid "Set ok=FALSE after write_block_to_device.\n"
 msgstr ""
 
-#: src/stored/append.c:360
+#: src/stored/append.c:308 src/stored/mac.c:151
+#, fuzzy, c-format
+msgid "Elapsed time=%02d:%02d:%02d, Transfer rate=%s Bytes/second\n"
+msgstr "Temps d'écriture du job = %02d:%02d:%02d, Taux de transfert = %s o/s\n"
+
+#: src/stored/append.c:345
 #, c-format
 msgid "Error updating file attributes. ERR=%s\n"
 msgstr ""
@@ -7747,11 +7807,6 @@ msgstr ""
 msgid "Unable to initialize volume list lock. ERR=%s\n"
 msgstr "Impossible d'initialiser le verrou sur la base. ERR=%s\n"
 
-#: src/stored/vol_mgr.c:491
-#, c-format
-msgid "Device switch. New device %s chosen.\n"
-msgstr ""
-
 #: src/stored/label.c:93
 #, c-format
 msgid "Couldn't rewind device %s: ERR=%s\n"
@@ -7797,71 +7852,71 @@ msgstr ""
 msgid "Volume on %s has bad Bacula label type: %x\n"
 msgstr "Le volume sur %s possède un mauvais label Bacula : %x\n"
 
-#: src/stored/label.c:236 src/stored/label.c:399 src/stored/mount.c:460
+#: src/stored/label.c:236 src/stored/label.c:397 src/stored/mount.c:463
 #, fuzzy, c-format
 msgid "Could not reserve volume %s on %s\n"
 msgstr "Impossible de trouver le prochain volume pour le Job %s.\n"
 
-#: src/stored/label.c:276
+#: src/stored/label.c:277
 #, c-format
 msgid "Cannot write Volume label to block for device %s\n"
 msgstr "Impossible d'écrire le label du Volume sur le Device %s\n"
 
-#: src/stored/label.c:328 src/stored/label.c:429 src/stored/mount.c:216
+#: src/stored/label.c:328 src/stored/label.c:426 src/stored/mount.c:218
 #, fuzzy, c-format
 msgid "Open device %s Volume \"%s\" failed: ERR=%s\n"
 msgstr "Impossible de supprimer le volume \"%s\". ERR=%s"
 
-#: src/stored/label.c:454
+#: src/stored/label.c:451
 #, c-format
 msgid "Rewind error on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/label.c:462
+#: src/stored/label.c:458
 #, c-format
 msgid "Truncate error on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/label.c:468
+#: src/stored/label.c:464
 #, fuzzy, c-format
 msgid "Failed to re-open DVD after truncate on device %s: ERR=%s\n"
 msgstr ""
 "Impossible de se positionner à la fin du média sur le device %s : ERR=%s\n"
 
-#: src/stored/label.c:491
+#: src/stored/label.c:487
 #, c-format
 msgid "Unable to write device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/label.c:522
+#: src/stored/label.c:518
 #, c-format
 msgid "Recycled volume \"%s\" on device %s, all previous data lost.\n"
 msgstr ""
 "Recyclage du volume \"%s\" sur le lecteur %s, les précédentes données sont "
 "perdues.\n"
 
-#: src/stored/label.c:525
+#: src/stored/label.c:521
 #, c-format
 msgid "Wrote label to prelabeled Volume \"%s\" on device %s\n"
 msgstr ""
 "Écriture du label sur le Volume pré-labélisé \"%s\" sur le lecteur %s\n"
 
-#: src/stored/label.c:726
+#: src/stored/label.c:721
 #, fuzzy, c-format
 msgid "Bad Volume session label = %d\n"
 msgstr "Le Volume n'a pas de label.\n"
 
-#: src/stored/label.c:781
+#: src/stored/label.c:776
 #, c-format
 msgid "Expecting Volume Label, got FI=%s Stream=%s len=%d\n"
 msgstr ""
 
-#: src/stored/label.c:908
+#: src/stored/label.c:903
 #, c-format
 msgid "Unknown %d"
 msgstr ""
 
-#: src/stored/label.c:912
+#: src/stored/label.c:907
 #, c-format
 msgid ""
 "\n"
@@ -7878,17 +7933,17 @@ msgid ""
 "HostName          : %s\n"
 msgstr ""
 
-#: src/stored/label.c:934
+#: src/stored/label.c:929
 #, c-format
 msgid "Date label written: %s\n"
 msgstr ""
 
-#: src/stored/label.c:940
+#: src/stored/label.c:935
 #, c-format
 msgid "Date label written: %04d-%02d-%02d at %02d:%02d\n"
 msgstr ""
 
-#: src/stored/label.c:960
+#: src/stored/label.c:955
 #, c-format
 msgid ""
 "\n"
@@ -7901,7 +7956,7 @@ msgid ""
 "ClientName        : %s\n"
 msgstr ""
 
-#: src/stored/label.c:973
+#: src/stored/label.c:968
 #, c-format
 msgid ""
 "Job (unique name) : %s\n"
@@ -7910,7 +7965,7 @@ msgid ""
 "JobLevel          : %c\n"
 msgstr ""
 
-#: src/stored/label.c:982
+#: src/stored/label.c:977
 #, c-format
 msgid ""
 "JobFiles          : %s\n"
@@ -7923,52 +7978,52 @@ msgid ""
 "JobStatus         : %c\n"
 msgstr ""
 
-#: src/stored/label.c:1003
+#: src/stored/label.c:998
 #, c-format
 msgid "Date written      : %s\n"
 msgstr ""
 
-#: src/stored/label.c:1008
+#: src/stored/label.c:1003
 #, c-format
 msgid "Date written      : %04d-%02d-%02d at %02d:%02d\n"
 msgstr ""
 
-#: src/stored/label.c:1027
+#: src/stored/label.c:1022
 msgid "Fresh Volume"
 msgstr ""
 
-#: src/stored/label.c:1030
+#: src/stored/label.c:1025
 msgid "Volume"
 msgstr ""
 
-#: src/stored/label.c:1039 src/stored/read_record.c:428
+#: src/stored/label.c:1034 src/stored/read_record.c:428
 msgid "End of Media"
 msgstr ""
 
-#: src/stored/label.c:1042
+#: src/stored/label.c:1037
 msgid "End of Tape"
 msgstr ""
 
-#: src/stored/label.c:1062 src/stored/label.c:1070 src/stored/label.c:1103
+#: src/stored/label.c:1057 src/stored/label.c:1065 src/stored/label.c:1098
 #, c-format
 msgid "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d DataLen=%d\n"
 msgstr ""
 
-#: src/stored/label.c:1067
+#: src/stored/label.c:1062
 msgid "End of physical tape.\n"
 msgstr ""
 
-#: src/stored/label.c:1082 src/stored/label.c:1091
+#: src/stored/label.c:1077 src/stored/label.c:1086
 #, c-format
 msgid "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d\n"
 msgstr ""
 
-#: src/stored/label.c:1084
+#: src/stored/label.c:1079
 #, c-format
 msgid "   Job=%s Date=%s Level=%c Type=%c\n"
 msgstr ""
 
-#: src/stored/label.c:1093
+#: src/stored/label.c:1088
 #, c-format
 msgid "   Date=%s Level=%c Type=%c Files=%s Bytes=%s Errors=%d Status=%c\n"
 msgstr ""
@@ -7977,15 +8032,13 @@ msgstr ""
 msgid "Used Volume status:\n"
 msgstr "Volume en cours d'utilisation :\n"
 
-#: src/stored/status.c:107 src/stored/status.c:109
+#: src/stored/status.c:117
 msgid ""
-"====\n"
 "\n"
+"SD Resources:\n"
 msgstr ""
-"====\n"
-"\n"
 
-#: src/stored/status.c:128
+#: src/stored/status.c:153
 msgid ""
 "\n"
 "Device status:\n"
@@ -7993,15 +8046,16 @@ msgstr ""
 "\n"
 "Statut du Device :\n"
 
-#: src/stored/status.c:132
+#: src/stored/status.c:157
 #, c-format
 msgid "Autochanger \"%s\" with devices:\n"
 msgstr "Autochangeur \"%s\" avec les Devices :\n"
 
-#: src/stored/status.c:150
-#, c-format
+#: src/stored/status.c:177
+#, fuzzy, c-format
 msgid ""
-"Device %s is mounted with:\n"
+"\n"
+"Device %s is %s:\n"
 "    Volume:      %s\n"
 "    Pool:        %s\n"
 "    Media type:  %s\n"
@@ -8011,58 +8065,78 @@ msgstr ""
 "    Pool :          %s\n"
 "    Type du Media : %s\n"
 
-#: src/stored/status.c:160
-#, c-format
-msgid "Device %s open but no Bacula volume is currently mounted.\n"
+#: src/stored/status.c:182
+#, fuzzy
+msgid "waiting for"
+msgstr "En attente d'un montage"
+
+#: src/stored/status.c:182
+msgid "mounted with"
+msgstr ""
+
+#: src/stored/status.c:184
+#, fuzzy
+msgid "*unknown*"
+msgstr "inconnu"
+
+#: src/stored/status.c:188
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Device %s open but no Bacula volume is currently mounted.\n"
 msgstr "Le Device %s est ouvert, mais il n'y a pas de Volume Bacula monté.\n"
 
-#: src/stored/status.c:171
+#: src/stored/status.c:199
 #, c-format
 msgid "    Total Bytes=%s Blocks=%s Bytes/block=%s\n"
 msgstr "    Total Octets=%s Blocs=%s Octets/Bloc=%s\n"
 
-#: src/stored/status.c:186
+#: src/stored/status.c:214
 #, c-format
 msgid "    Total Bytes Read=%s Blocks Read=%s Bytes/block=%s\n"
 msgstr "    Total des Octets lu=%s Blocs lu=%s Octets/Bloc=%s\n"
 
-#: src/stored/status.c:192
+#: src/stored/status.c:220
 #, c-format
 msgid "    Positioned at File=%s Block=%s\n"
 msgstr "    Positionné sur Fichier=%s Bloc=%s\n"
 
-#: src/stored/status.c:199
-#, c-format
-msgid "Device %s is not open.\n"
+#: src/stored/status.c:227
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Device %s is not open.\n"
 msgstr "Le Device %s n'est pas ouvert.\n"
 
-#: src/stored/status.c:203
-#, c-format
-msgid "Device \"%s\" is not open or does not exist.\n"
+#: src/stored/status.c:231
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Device \"%s\" is not open or does not exist.\n"
 msgstr "Le Device \"%s\" n'est pas ouvert ou il n'existe pas.\n"
 
-#: src/stored/status.c:225
+#: src/stored/status.c:255
 #, fuzzy, c-format
 msgid "Daemon started %s. Jobs: run=%d, running=%d.\n"
 msgstr "Démon démarré depuis %s, %d jobs lancés depuis cette date.\n"
 
-#: src/stored/status.c:248
+#: src/stored/status.c:293
 msgid ""
 "No DEVICE structure.\n"
 "\n"
 msgstr ""
 
-#: src/stored/status.c:254
+#: src/stored/status.c:299
 msgid "    Device is BLOCKED. User unmounted.\n"
 msgstr "    Le Device est BLOQUÉ. Démonté par l'utilisateur.\n"
 
-#: src/stored/status.c:258
+#: src/stored/status.c:303
 msgid "    Device is BLOCKED. User unmounted during wait for media/mount.\n"
 msgstr ""
 "    Le Device est BLOQUÉ. Démonté par l'utilisateur à cause d'un chargement "
 "de média.\n"
 
-#: src/stored/status.c:270
+#: src/stored/status.c:313
 #, c-format
 msgid ""
 "    Device is BLOCKED waiting for mount of volume \"%s\",\n"
@@ -8073,7 +8147,7 @@ msgstr ""
 "        Pool :       %s\n"
 "        Media type : %s\n"
 
-#: src/stored/status.c:279
+#: src/stored/status.c:322
 #, c-format
 msgid ""
 "    Device is BLOCKED waiting to create a volume for:\n"
@@ -8084,75 +8158,75 @@ msgstr ""
 "        Pool :       %s\n"
 "        Media type : %s\n"
 
-#: src/stored/status.c:291
+#: src/stored/status.c:333
 msgid "    Device is BLOCKED waiting for media.\n"
 msgstr "    Le Device est BLOQUÉ en attente d'un média.\n"
 
-#: src/stored/status.c:297
+#: src/stored/status.c:339
 msgid "    Device is being initialized.\n"
 msgstr "    Le Device est en cours d'initialisation.\n"
 
-#: src/stored/status.c:301
+#: src/stored/status.c:343
 msgid "    Device is blocked labeling a Volume.\n"
 msgstr "    Le Device est occupé à labéliser un Volume.\n"
 
-#: src/stored/status.c:310
-#, c-format
-msgid "    Slot %d is loaded in drive %d.\n"
+#: src/stored/status.c:352
+#, fuzzy, c-format
+msgid "    Slot %d %s loaded in drive %d.\n"
 msgstr "    Le slot %d est chargé dans le lecteur %d.\n"
 
-#: src/stored/status.c:314
+#: src/stored/status.c:356
 #, c-format
 msgid "    Drive %d is not loaded.\n"
 msgstr "    Le lecteur %d n'est pas chargé.\n"
 
-#: src/stored/status.c:317
-#, c-format
-msgid "    Drive %d status unknown.\n"
-msgstr "    Le statut du lecteur %d est inconnu.\n"
-
-#: src/stored/status.c:331 src/stored/btape.c:688
+#: src/stored/status.c:371 src/stored/btape.c:688
 #, c-format
 msgid "Configured device capabilities:\n"
 msgstr ""
 
-#: src/stored/status.c:349
+#: src/stored/status.c:389
 msgid "Device state:\n"
 msgstr ""
 
-#: src/stored/status.c:367
+#: src/stored/status.c:405
 #, c-format
-msgid ""
-"num_writers=%d reserved=%d block=%d\n"
-"\n"
+msgid "  num_writers=%d reserves=%d block=%d\n"
 msgstr ""
 
-#: src/stored/status.c:371 src/stored/btape.c:720
+#: src/stored/status.c:409
+#, fuzzy
+msgid "Attached Jobs: "
+msgstr ""
+"\n"
+"Jobs planifiés :\n"
+
+#: src/stored/status.c:427 src/stored/btape.c:720
 #, c-format
 msgid "Device parameters:\n"
 msgstr ""
 
-#: src/stored/status.c:374
+#: src/stored/status.c:429
 #, c-format
-msgid "Archive name: %s Device name: %s\n"
+msgid "  Archive name: %s Device name: %s\n"
 msgstr ""
 
-#: src/stored/status.c:378
-#, c-format
-msgid "File=%u block=%u\n"
+#: src/stored/status.c:432
+#, fuzzy, c-format
+msgid "  File=%u block=%u\n"
 msgstr "Fichier=%u bloc=%u\n"
 
-#: src/stored/status.c:381
-#, c-format
-msgid "Min block=%u Max block=%u\n"
+#: src/stored/status.c:434
+#, fuzzy, c-format
+msgid "  Min block=%u Max block=%u\n"
 msgstr "Min bloc=%u Max bloc=%u\n"
 
-#: src/stored/status.c:401
+#: src/stored/status.c:455
 #, c-format
 msgid "%s Job %s waiting for Client connection.\n"
 msgstr "%s Job %s est en attente de la connexion du Client.\n"
 
-#: src/stored/status.c:417
+#: src/stored/status.c:471
 #, c-format
 msgid ""
 "Reading: %s %s job %s JobId=%d Volume=\"%s\"\n"
@@ -8161,7 +8235,7 @@ msgstr ""
 "Lecture : %s %s job %s JobId=%d Volume=\"%s\"\n"
 "   pool=\"%s\" device=%s\n"
 
-#: src/stored/status.c:430
+#: src/stored/status.c:484
 #, fuzzy, c-format
 msgid ""
 "Writing: %s %s job %s JobId=%d Volume=\"%s\"\n"
@@ -8170,26 +8244,26 @@ msgstr ""
 "Ecriture : %s %s job %s JobId=%d Volume=\"%s\"\n"
 "   pool=\"%s\" device=%s\n"
 
-#: src/stored/status.c:441
+#: src/stored/status.c:495
 #, c-format
 msgid "    spooling=%d despooling=%d despool_wait=%d\n"
 msgstr "    spooling=%d despooling=%d despool_wait=%d\n"
 
-#: src/stored/status.c:450
-#, c-format
-msgid "    Files=%s Bytes=%s Bytes/sec=%s\n"
-msgstr "    Fichiers=%s Octets=%s Octets/sec=%s\n"
+#: src/stored/status.c:511
+#, fuzzy, c-format
+msgid "    Files=%s Bytes=%s AveBytes/sec=%s LastBytes/sec=%s\n"
+msgstr "    Fichiers=%s Octets=%s Octets/sec=%s Erreurs=%d\n"
 
-#: src/stored/status.c:458
+#: src/stored/status.c:523
 #, c-format
 msgid "    FDReadSeqNo=%s in_msg=%u out_msg=%d fd=%d\n"
 msgstr ""
 
-#: src/stored/status.c:464
+#: src/stored/status.c:529
 msgid "    FDSocket closed\n"
 msgstr ""
 
-#: src/stored/status.c:485
+#: src/stored/status.c:550
 msgid ""
 "\n"
 "Jobs waiting to reserve a drive:\n"
@@ -8197,65 +8271,61 @@ msgstr ""
 "\n"
 "Jobs en attente de réservation de lecteur :\n"
 
-#: src/stored/status.c:516
+#: src/stored/status.c:581
 msgid "===================================================================\n"
 msgstr "===================================================================\n"
 
-#: src/stored/status.c:598 src/lib/util.c:423 src/filed/status.c:517
+#: src/stored/status.c:663 src/lib/util.c:423 src/filed/status.c:517
 msgid "Base"
 msgstr "Base"
 
-#: src/stored/status.c:615 src/filed/status.c:534
+#: src/stored/status.c:680 src/filed/status.c:534
 msgid "Init Catalog"
 msgstr ""
 
-#: src/stored/status.c:618 src/filed/status.c:537
+#: src/stored/status.c:683 src/filed/status.c:537
 msgid "Volume to Catalog"
 msgstr ""
 
-#: src/stored/status.c:621 src/filed/status.c:540
+#: src/stored/status.c:686 src/filed/status.c:540
 msgid "Disk to Catalog"
 msgstr ""
 
-#: src/stored/status.c:624 src/filed/status.c:543
+#: src/stored/status.c:689 src/filed/status.c:543
 msgid "Data"
 msgstr ""
 
-#: src/stored/status.c:630 src/lib/util.c:459 src/filed/status.c:549
+#: src/stored/status.c:695 src/lib/util.c:459 src/filed/status.c:549
 msgid "Unknown Job Level"
 msgstr ""
 
-#: src/stored/status.c:698 src/stored/status.c:744 src/filed/status.c:463
-#: src/filed/status.c:496
-#, c-format
-msgid "Bad .status command: %s\n"
-msgstr ""
-
-#: src/stored/status.c:699
-msgid "3900 Bad .status command, missing argument.\n"
-msgstr ""
+#: src/stored/status.c:763
+#, fuzzy, c-format
+msgid "3900 No arg in .status command: %s\n"
+msgstr "3909 Erreur pendant la lecture de la commande de montage : %s\n"
 
-#: src/stored/status.c:745
-msgid "3900 Bad .status command, wrong argument.\n"
-msgstr ""
+#: src/stored/status.c:811
+#, fuzzy, c-format
+msgid "3900 Unknown arg in .status command: %s\n"
+msgstr "Erreur inconnue."
 
-#: src/stored/status.c:760
+#: src/stored/status.c:826
 msgid "Bacula Storage: Idle"
 msgstr "Bacula Storage : En attente"
 
-#: src/stored/status.c:771
+#: src/stored/status.c:837
 msgid "Bacula Storage: Running"
 msgstr "Bacula Storage : En cours"
 
-#: src/stored/status.c:785
+#: src/stored/status.c:851
 msgid "Bacula Storage: Last Job Canceled"
 msgstr "Bacula Storage : Dernier Job annulé"
 
-#: src/stored/status.c:789
+#: src/stored/status.c:855
 msgid "Bacula Storage: Last Job Failed"
 msgstr "Bacula Storage : Dernier Job en erreur"
 
-#: src/stored/status.c:793
+#: src/stored/status.c:859
 msgid "Bacula Storage: Last Job had Warnings"
 msgstr "Bacula Storage : Le dernier Job avait des erreurs"
 
@@ -8340,7 +8410,7 @@ msgstr ""
 "      -?             affiche ce message.\n"
 "\n"
 
-#: src/stored/bextract.c:196 src/stored/bcopy.c:163 src/stored/bscan.c:248
+#: src/stored/bextract.c:196 src/stored/bcopy.c:161 src/stored/bscan.c:248
 #: src/tools/bvfs_test.c:201 src/tools/bbatch.c:190 src/tools/ing_test.c:185
 #: src/tools/cats_test.c:321
 msgid "Wrong number of arguments: \n"
@@ -8372,7 +8442,7 @@ msgid "%u files restored.\n"
 msgstr "%u fichiers restaurés.\n"
 
 #: src/stored/bextract.c:284 src/stored/bextract.c:290
-#: src/filed/restore.c:1474
+#: src/filed/restore.c:1480
 #, c-format
 msgid "Write error on %s: %s\n"
 msgstr ""
@@ -8381,7 +8451,7 @@ msgstr ""
 msgid "Logic error output file should be open but is not.\n"
 msgstr ""
 
-#: src/stored/bextract.c:335 src/filed/restore.c:566
+#: src/stored/bextract.c:335 src/filed/restore.c:569
 #, c-format
 msgid "%s stream not supported on this Client.\n"
 msgstr ""
@@ -8397,7 +8467,7 @@ msgid "Seek error on %s: %s\n"
 msgstr ""
 
 #: src/stored/bextract.c:429 src/stored/bextract.c:494
-#: src/filed/restore.c:1329
+#: src/filed/restore.c:1335
 #, c-format
 msgid "Seek to %s error on %s: ERR=%s\n"
 msgstr ""
@@ -8407,16 +8477,16 @@ msgstr ""
 msgid "Uncompression error. ERR=%d\n"
 msgstr "Erreur de décompression. ERR=%d\n"
 
-#: src/stored/bextract.c:462 src/filed/restore.c:1444
+#: src/stored/bextract.c:462 src/filed/restore.c:1450
 msgid "GZIP data stream found, but GZIP not configured!\n"
 msgstr ""
 
-#: src/stored/bextract.c:517 src/filed/restore.c:1370
+#: src/stored/bextract.c:517 src/filed/restore.c:1376
 #, c-format
 msgid "Compressed header version error. version=0x%x\n"
 msgstr ""
 
-#: src/stored/bextract.c:522 src/filed/restore.c:1375
+#: src/stored/bextract.c:522 src/filed/restore.c:1381
 #, c-format
 msgid "Compressed header size error. comp_len=%d, msglen=%d\n"
 msgstr ""
@@ -8426,7 +8496,7 @@ msgstr ""
 msgid "LZO uncompression error. ERR=%d\n"
 msgstr "Erreur de décompression. ERR=%d\n"
 
-#: src/stored/bextract.c:556 src/filed/restore.c:1408
+#: src/stored/bextract.c:556 src/filed/restore.c:1414
 #, c-format
 msgid "Compression algorithm 0x%x found, but not supported!\n"
 msgstr ""
@@ -8435,12 +8505,12 @@ msgstr ""
 msgid "Got Program Name or Data Stream. Ignored.\n"
 msgstr ""
 
-#: src/stored/bextract.c:592 src/filed/restore.c:325 src/filed/restore.c:1027
+#: src/stored/bextract.c:592 src/filed/restore.c:328 src/filed/restore.c:1033
 #, c-format
 msgid "Unknown stream=%d ignored. This shouldn't happen!\n"
 msgstr ""
 
-#: src/stored/bcopy.c:76
+#: src/stored/bcopy.c:74
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -8475,48 +8545,48 @@ msgstr ""
 "      -?             affiche ce message.\n"
 "\n"
 
-#: src/stored/bcopy.c:204 src/stored/device.c:298 src/stored/btape.c:473
+#: src/stored/bcopy.c:202 src/stored/device.c:298 src/stored/btape.c:473
 #, c-format
 msgid "dev open failed: %s\n"
 msgstr ""
 
-#: src/stored/bcopy.c:219
+#: src/stored/bcopy.c:217
 msgid "Write of last block failed.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:223
+#: src/stored/bcopy.c:221
 #, c-format
 msgid "%u Jobs copied. %u records copied.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:240 src/stored/bscan.c:428
+#: src/stored/bcopy.c:238 src/stored/bscan.c:428
 #, c-format
 msgid "Record: SessId=%u SessTim=%u FileIndex=%d Stream=%d len=%u\n"
 msgstr ""
 
-#: src/stored/bcopy.c:256
+#: src/stored/bcopy.c:254
 msgid "Volume is prelabeled. This volume cannot be copied.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:259
+#: src/stored/bcopy.c:257
 msgid "Volume label not copied.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:265
+#: src/stored/bcopy.c:263
 msgid "Copy skipped. Record does not match BSR filter.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:282 src/stored/bcopy.c:290 src/stored/bcopy.c:318
-#: src/stored/btape.c:2754
+#: src/stored/bcopy.c:280 src/stored/bcopy.c:288 src/stored/bcopy.c:316
+#: src/stored/btape.c:2756
 #, c-format
 msgid "Cannot fixup device error. %s\n"
 msgstr ""
 
-#: src/stored/bcopy.c:296
+#: src/stored/bcopy.c:294
 msgid "EOM label not copied.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:299
+#: src/stored/bcopy.c:297
 msgid "EOT label not copied.\n"
 msgstr ""
 
@@ -8554,19 +8624,14 @@ msgstr ""
 msgid "Next Volume part already exists on DVD. Cannot continue: %s\n"
 msgstr ""
 
-#: src/stored/dvd.c:377
-#, c-format
-msgid "open_next_part can't unlink existing part %s, ERR=%s\n"
-msgstr ""
-
-#: src/stored/dvd.c:583
+#: src/stored/dvd.c:563
 #, c-format
 msgid ""
 "Error writing. Current part less than total number of parts (%d/%d, device="
 "%s)\n"
 msgstr ""
 
-#: src/stored/dvd.c:590
+#: src/stored/dvd.c:570
 #, fuzzy, c-format
 msgid "Unable to write last on %s: ERR=%s\n"
 msgstr "Impossible de se connecter à %s sur %s:%d. ERR=%s\n"
@@ -8645,26 +8710,22 @@ msgstr ""
 msgid "Unexpected Tape is Off-line\n"
 msgstr ""
 
-#: src/stored/acquire.c:70
+#: src/stored/acquire.c:74
 #, c-format
 msgid "Acquire read: num_writers=%d not zero. Job %d canceled.\n"
 msgstr ""
 
-#: src/stored/acquire.c:79
+#: src/stored/acquire.c:83
 #, c-format
 msgid "No volumes specified for reading. Job %s canceled.\n"
 msgstr "Pas de volume spécifié pour la lecture. Abandon du job %s.\n"
 
-#: src/stored/acquire.c:88
+#: src/stored/acquire.c:92
 #, c-format
 msgid "Logic error: no next volume to read. Numvol=%d Curvol=%d\n"
 msgstr ""
 
-#: src/stored/acquire.c:95 src/stored/acquire.c:163 src/stored/acquire.c:431
-msgid "generate_plugin_event(bsdEventDeviceOpen) Failed\n"
-msgstr ""
-
-#: src/stored/acquire.c:119
+#: src/stored/acquire.c:118
 #, c-format
 msgid ""
 "Changing read device. Want Media Type=\"%s\" have=\"%s\"\n"
@@ -8673,101 +8734,105 @@ msgstr ""
 "Changement du Device de lecture. Want Media Type=\"%s\" have=\"%s\"\n"
 "  device=%s\n"
 
-#: src/stored/acquire.c:159
+#: src/stored/acquire.c:162
 #, c-format
 msgid "Media Type change.  New read device %s chosen.\n"
 msgstr ""
 
-#: src/stored/acquire.c:175
+#: src/stored/acquire.c:174
 #, c-format
 msgid "No suitable device found to read Volume \"%s\"\n"
 msgstr ""
 
-#: src/stored/acquire.c:214
+#: src/stored/acquire.c:213
 #, fuzzy, c-format
 msgid "Job %s canceled.\n"
 msgstr "Le job %s est annulé.\n"
 
-#: src/stored/acquire.c:232
+#: src/stored/acquire.c:231
 #, c-format
 msgid "Read open device %s Volume \"%s\" failed: ERR=%s\n"
 msgstr ""
 
-#: src/stored/acquire.c:322
+#: src/stored/acquire.c:321
 #, c-format
 msgid "Too many errors trying to mount device %s for reading.\n"
 msgstr ""
 
-#: src/stored/acquire.c:330
+#: src/stored/acquire.c:329
 #, c-format
 msgid "Ready to read from volume \"%s\" on device %s.\n"
 msgstr "Prêt à lire les données du volume \"%s\" depuis le device %s.\n"
 
-#: src/stored/acquire.c:383
+#: src/stored/acquire.c:381
 #, c-format
 msgid "Want to append, but device %s is busy reading.\n"
 msgstr ""
 
-#: src/stored/acquire.c:416
+#: src/stored/acquire.c:414
 #, c-format
 msgid "Could not ready device %s for append.\n"
 msgstr ""
 
-#: src/stored/acquire.c:508 src/stored/spool.c:321 src/stored/block.c:368
-#: src/stored/block.c:738 src/stored/block.c:812
+#: src/stored/acquire.c:501 src/stored/spool.c:321 src/stored/block.c:386
+#: src/stored/block.c:769 src/stored/block.c:847
 #, c-format
 msgid "Could not create JobMedia record for Volume=\"%s\" Job=%s\n"
 msgstr "Impossible de créer un JobMedia en base pour le Volume=%s Job=%s\n"
 
-#: src/stored/acquire.c:559
+#: src/stored/acquire.c:552
 #, c-format
 msgid "Alert: %s"
 msgstr "Alert: %s"
 
-#: src/stored/acquire.c:567
+#: src/stored/acquire.c:560
 #, c-format
 msgid "3997 Bad alert command: %s: ERR=%s.\n"
 msgstr ""
 
-#: src/stored/acquire.c:637 src/stored/dev.c:263 src/stored/dev.c:281
-#: src/stored/dev.c:287 src/stored/dev.c:298 src/lib/openssl.c:122
-#: src/lib/openssl.c:181
+#: src/stored/acquire.c:629 src/stored/dev.c:270 src/stored/dev.c:311
+#: src/lib/openssl.c:122 src/lib/openssl.c:181
 #, c-format
 msgid "Unable to init mutex: ERR=%s\n"
 msgstr "Impossible d'initialiser le muxtex : ERR=%s\n"
 
-#: src/stored/askdir.c:178
+#: src/stored/acquire.c:635
+#, fuzzy, c-format
+msgid "Unable to init r_mutex: ERR=%s\n"
+msgstr "Impossible d'initialiser le muxtex : ERR=%s\n"
+
+#: src/stored/askdir.c:179
 msgid "Network error on bnet_recv in req_vol_info.\n"
 msgstr ""
 
-#: src/stored/askdir.c:196
+#: src/stored/askdir.c:197
 #, c-format
 msgid "Error getting Volume info: %s"
 msgstr "Erreur pendant la récupération des informations sur un Volume : %s"
 
-#: src/stored/askdir.c:374
+#: src/stored/askdir.c:376
 #, c-format
 msgid "Didn't get vol info vol=%s: ERR=%s"
 msgstr ""
 
-#: src/stored/askdir.c:429
+#: src/stored/askdir.c:432
 #, c-format
 msgid "Error creating JobMedia record: ERR=%s\n"
 msgstr ""
 
-#: src/stored/askdir.c:436
+#: src/stored/askdir.c:439
 #, c-format
 msgid "Error creating JobMedia record: %s\n"
 msgstr ""
 
-#: src/stored/askdir.c:519
+#: src/stored/askdir.c:522
 #, c-format
 msgid "Job %s canceled while waiting for mount on Storage Device \"%s\".\n"
 msgstr ""
 "Le job %s a été annulé alors qu'il attendait un montage sur le Storage "
 "Device \"%s\".\n"
 
-#: src/stored/askdir.c:530
+#: src/stored/askdir.c:533
 #, fuzzy, c-format
 msgid ""
 "Job %s is waiting. Cannot find any appendable volumes.\n"
@@ -8782,30 +8847,30 @@ msgstr ""
 "    Type du Media : %s\n"
 "    Pool :          %s\n"
 
-#: src/stored/askdir.c:556 src/stored/askdir.c:658
+#: src/stored/askdir.c:558 src/stored/askdir.c:658
 #, c-format
 msgid "Max time exceeded waiting to mount Storage Device %s for Job %s\n"
 msgstr ""
 
-#: src/stored/askdir.c:566
+#: src/stored/askdir.c:568
 msgid "pthread error in mount_next_volume.\n"
 msgstr ""
 
-#: src/stored/askdir.c:600
+#: src/stored/askdir.c:601
 msgid "Cannot request another volume: no volume name given.\n"
 msgstr ""
 
-#: src/stored/askdir.c:606
+#: src/stored/askdir.c:607
 #, c-format
 msgid "Job %s canceled while waiting for mount on Storage Device %s.\n"
 msgstr ""
 "Le Job %s a été annulé pendant qu'il attendait le montage sur le Storage "
 "Device %s.\n"
 
-#: src/stored/askdir.c:623
+#: src/stored/askdir.c:624
 #, fuzzy, c-format
 msgid ""
-"Please mount Volume \"%s\" or label a new one for:\n"
+"Please mount append Volume \"%s\" or label a new one for:\n"
 "    Job:          %s\n"
 "    Storage:      %s\n"
 "    Pool:         %s\n"
@@ -8817,10 +8882,10 @@ msgstr ""
 "    Type du Media : %s\n"
 "    Pool :          %s\n"
 
-#: src/stored/askdir.c:629
+#: src/stored/askdir.c:630
 #, fuzzy, c-format
 msgid ""
-"Please mount Volume \"%s\" for:\n"
+"Please mount read Volume \"%s\" for:\n"
 "    Job:          %s\n"
 "    Storage:      %s\n"
 "    Pool:         %s\n"
@@ -8841,11 +8906,11 @@ msgstr ""
 msgid "unknown: %d"
 msgstr ""
 
-#: src/stored/record.c:424
+#: src/stored/record.c:392
 msgid "Damaged buffer\n"
 msgstr ""
 
-#: src/stored/record.c:600
+#: src/stored/record.c:670
 #, c-format
 msgid "Sanity check failed. maxlen=%d datalen=%d. Block discarded.\n"
 msgstr ""
@@ -8879,43 +8944,37 @@ msgstr ""
 msgid "No Changer Command given for device %s. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:84
-#, c-format
-msgid ""
-"Media Type not the same for all devices in changer %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:154
+#: src/stored/autochanger.c:139
 #, fuzzy, c-format
 msgid "No slot defined in catalog (slot=%d) for Volume \"%s\" on %s.\n"
 msgstr "Demande de labélisation du volume \"%s\" Slot %d...\n"
 
-#: src/stored/autochanger.c:156
+#: src/stored/autochanger.c:141
 msgid "Cartridge change or \"update slots\" may be required.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:162
+#: src/stored/autochanger.c:147
 #, c-format
 msgid "No \"Changer Device\" for %s. Manual load of Volume may be required.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:169
+#: src/stored/autochanger.c:154
 #, c-format
 msgid "No \"Changer Command\" for %s. Manual load of Volume may be requird.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:200
+#: src/stored/autochanger.c:185
 #, c-format
 msgid "3304 Issuing autochanger \"load slot %d, drive %d\" command.\n"
 msgstr ""
 "3304 Envoi de la commande « load slot %d, drive %d » à l'autochangeur.\n"
 
-#: src/stored/autochanger.c:208
+#: src/stored/autochanger.c:193
 #, c-format
 msgid "3305 Autochanger \"load slot %d, drive %d\", status is OK.\n"
 msgstr "3305 Autochangeur « load slot %d, drive %d », le résultat est OK.\n"
 
-#: src/stored/autochanger.c:217
+#: src/stored/autochanger.c:206
 #, c-format
 msgid ""
 "3992 Bad autochanger \"load slot %d, drive %d\": ERR=%s.\n"
@@ -8924,22 +8983,22 @@ msgstr ""
 "3992 Erreur sur l'autochangeur « load slot %d, drive %d » : ERR=%s.\n"
 "Resultat=%s\n"
 
-#: src/stored/autochanger.c:280
+#: src/stored/autochanger.c:268
 #, c-format
 msgid "3301 Issuing autochanger \"loaded? drive %d\" command.\n"
 msgstr "3301 Envoi de la commande « loaded? drive %d » à l'autochangeur.\n"
 
-#: src/stored/autochanger.c:292
+#: src/stored/autochanger.c:280
 #, c-format
 msgid "3302 Autochanger \"loaded? drive %d\", result is Slot %d.\n"
 msgstr "3302 Autochangeur « loaded drive %d », le resultat est Slot %d.\n"
 
-#: src/stored/autochanger.c:299
+#: src/stored/autochanger.c:287
 #, c-format
 msgid "3302 Autochanger \"loaded? drive %d\", result: nothing loaded.\n"
 msgstr "3302 Autochangeur « loaded drive %d », résultat : lecteur vide.\n"
 
-#: src/stored/autochanger.c:311
+#: src/stored/autochanger.c:299
 #, c-format
 msgid ""
 "3991 Bad autochanger \"loaded? drive %d\" command: ERR=%s.\n"
@@ -8948,23 +9007,23 @@ msgstr ""
 "3991 Erreur sur l'autochangeur « loaded drive %d » : ERR=%s.\n"
 "Resultat=%s\n"
 
-#: src/stored/autochanger.c:328
+#: src/stored/autochanger.c:316
 #, fuzzy, c-format
 msgid "Lock failure on autochanger. ERR=%s\n"
 msgstr "Erreur sur l'ouverture du périphérique. ERR=%s\n"
 
-#: src/stored/autochanger.c:342
+#: src/stored/autochanger.c:330
 #, fuzzy, c-format
 msgid "Unlock failure on autochanger. ERR=%s\n"
 msgstr "rwl_writeunlock en échec sur %s:%d :. ERR=%s\n"
 
-#: src/stored/autochanger.c:386 src/stored/autochanger.c:508
+#: src/stored/autochanger.c:374 src/stored/autochanger.c:523
 #, c-format
 msgid "3307 Issuing autochanger \"unload slot %d, drive %d\" command.\n"
 msgstr ""
 "3307 Envoi de la commande « unload slot %d, drive %d » à l'autochangeur.\n"
 
-#: src/stored/autochanger.c:399
+#: src/stored/autochanger.c:387
 #, c-format
 msgid ""
 "3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s\n"
@@ -8973,32 +9032,32 @@ msgstr ""
 "3995 Erreur sur l'autochangeur « unload slot %d, drive %d » : ERR=%s.\n"
 "Resultat=%s\n"
 
-#: src/stored/autochanger.c:465
+#: src/stored/autochanger.c:473
 #, fuzzy, c-format
 msgid "Volume \"%s\" wanted on %s is in use by device %s\n"
 msgstr "Le volume \"%s\" est utilisé par le device %s\n"
 
-#: src/stored/autochanger.c:526
-#, c-format
-msgid "3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
+#: src/stored/autochanger.c:541
+#, fuzzy, c-format
+msgid "3997 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
 msgstr ""
 "3995 Erreur sur l'autochangeur « unload slot %d, drive %d » : ERR=%s.\n"
 
-#: src/stored/autochanger.c:570
+#: src/stored/autochanger.c:585
 #, c-format
 msgid "3993 Device %s not an autochanger device.\n"
 msgstr "3993 Le Device %s n'est pas un autochangeur.\n"
 
-#: src/stored/autochanger.c:591
+#: src/stored/autochanger.c:612
 #, c-format
 msgid "3306 Issuing autochanger \"%s\" command.\n"
 msgstr "3306 Envoi de la commande \"%s\" à l'autochangeur.\n"
 
-#: src/stored/autochanger.c:594
+#: src/stored/autochanger.c:615
 msgid "3996 Open bpipe failed.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:621 src/console/console.c:1458
+#: src/stored/autochanger.c:642 src/console/console.c:1458
 #, c-format
 msgid "Autochanger error: ERR=%s\n"
 msgstr "Erreur sur l'autochangeur : ERR=%s\n"
@@ -9009,7 +9068,7 @@ msgid ""
 "\n"
 "Version: %s (%s)\n"
 "\n"
-"Usage: stored [options] [-c config_file] [config_file]\n"
+"Usage: bacula-sd [options] [-c config_file] [config_file]\n"
 "        -c <file>   use <file> as configuration file\n"
 "        -d <nn>     set debug level to <nn>\n"
 "        -dt         print timestamp in debug output\n"
@@ -9108,17 +9167,17 @@ msgid ""
 "using \"TLS Verify Peer\".\n"
 msgstr ""
 
-#: src/stored/stored.c:511
+#: src/stored/stored.c:568
 #, c-format
 msgid "Could not initialize %s\n"
 msgstr "Impossible d'initialiser %s\n"
 
-#: src/stored/stored.c:525
+#: src/stored/stored.c:582
 #, c-format
 msgid "Could not open device %s\n"
 msgstr "Impossible d'ouvrir le device %s\n"
 
-#: src/stored/stored.c:539
+#: src/stored/stored.c:596
 #, c-format
 msgid "Could not mount device %s\n"
 msgstr "Impossible de monter le device %s\n"
@@ -9148,7 +9207,7 @@ msgstr ""
 msgid "Catastrophic error. Cannot write overflow block to device %s. ERR=%s"
 msgstr ""
 
-#: src/stored/device.c:327 src/stored/dev.c:499
+#: src/stored/device.c:327 src/stored/dev.c:512
 #, c-format
 msgid "Unable to open device %s: ERR=%s\n"
 msgstr ""
@@ -9197,33 +9256,33 @@ msgstr ""
 msgid "Attempt to open read on non-open session.\n"
 msgstr ""
 
-#: src/stored/mount.c:96
+#: src/stored/mount.c:98
 #, c-format
 msgid "Too many errors trying to mount device %s.\n"
 msgstr ""
 
-#: src/stored/mount.c:104
+#: src/stored/mount.c:106
 #, c-format
 msgid "Job %d canceled.\n"
 msgstr "Le job %d est annulé.\n"
 
-#: src/stored/mount.c:280
+#: src/stored/mount.c:282
 #, c-format
 msgid "Volume \"%s\" previously written, moving to end of data.\n"
 msgstr "Le volume \"%s\" contient des données, re-positionnement à la fin.\n"
 
-#: src/stored/mount.c:286
+#: src/stored/mount.c:288
 #, c-format
 msgid "Unable to position to end of data on device %s: ERR=%s\n"
 msgstr ""
 "Impossible de se positionner à la fin du média sur le device %s : ERR=%s\n"
 
-#: src/stored/mount.c:408 src/stored/mount.c:730
+#: src/stored/mount.c:411 src/stored/mount.c:737
 #, c-format
 msgid "Volume \"%s\" not on device %s.\n"
 msgstr "Le volume \"%s\" n'est pas dans le device %s.\n"
 
-#: src/stored/mount.c:441
+#: src/stored/mount.c:444
 #, c-format
 msgid ""
 "Director wanted Volume \"%s\".\n"
@@ -9234,14 +9293,14 @@ msgstr ""
 "    Le volume courant \"%s\" n'est pas utilisable car :\n"
 "    %s"
 
-#: src/stored/mount.c:596
+#: src/stored/mount.c:603
 #, c-format
 msgid "Ready to append to end of Volume \"%s\" part=%d size=%s\n"
 msgstr ""
 "Prêt à ajouter des données à la fin du volume \"%s\" part=%d size=%s\n"
 "\n"
 
-#: src/stored/mount.c:600
+#: src/stored/mount.c:607
 #, fuzzy, c-format
 msgid ""
 "Bacula cannot write on DVD Volume \"%s\" because: The sizes do not match! "
@@ -9250,12 +9309,12 @@ msgstr ""
 "Impossible d'écrire sur le volume \"%s\" car :\n"
 "Les tailles ne correspondent pas. Volume=%s Catalogue=%s\n"
 
-#: src/stored/mount.c:614
+#: src/stored/mount.c:621
 #, c-format
 msgid "Ready to append to end of Volume \"%s\" at file=%d.\n"
 msgstr "Prêt à ajouter des données à la fin du volume \"%s\" file=%d.\n"
 
-#: src/stored/mount.c:617
+#: src/stored/mount.c:624
 #, fuzzy, c-format
 msgid ""
 "For Volume \"%s\":\n"
@@ -9265,12 +9324,12 @@ msgstr ""
 "Impossible d'écrire sur le volume \"%s\" \n"
 "car le nombre de fichiers ne correspond pas. Volume=%u Catalogue=%u\n"
 
-#: src/stored/mount.c:624 src/stored/mount.c:652
+#: src/stored/mount.c:631 src/stored/mount.c:659
 #, fuzzy
 msgid "Error updating Catalog\n"
 msgstr "Impossible d'ouvrir le fichier de données %s.\n"
 
-#: src/stored/mount.c:629
+#: src/stored/mount.c:636
 #, fuzzy, c-format
 msgid ""
 "Bacula cannot write on tape Volume \"%s\" because:\n"
@@ -9279,14 +9338,14 @@ msgstr ""
 "Impossible d'écrire sur le volume \"%s\" \n"
 "car le nombre de fichiers ne correspond pas. Volume=%u Catalogue=%u\n"
 
-#: src/stored/mount.c:640
+#: src/stored/mount.c:647
 #, fuzzy, c-format
 msgid "Ready to append to end of Volume \"%s\" size=%s\n"
 msgstr ""
 "Prêt à ajouter des données à la fin du volume \"%s\" part=%d size=%s\n"
 "\n"
 
-#: src/stored/mount.c:644
+#: src/stored/mount.c:651
 #, fuzzy, c-format
 msgid ""
 "For Volume \"%s\":\n"
@@ -9296,7 +9355,7 @@ msgstr ""
 "Impossible d'écrire sur le volume \"%s\" car :\n"
 "Les tailles ne correspondent pas. Volume=%s Catalogue=%s\n"
 
-#: src/stored/mount.c:657
+#: src/stored/mount.c:664
 #, fuzzy, c-format
 msgid ""
 "Bacula cannot write on disk Volume \"%s\" because: The sizes do not match! "
@@ -9305,35 +9364,35 @@ msgstr ""
 "Impossible d'écrire sur le volume \"%s\" car :\n"
 "Les tailles ne correspondent pas. Volume=%s Catalogue=%s\n"
 
-#: src/stored/mount.c:720
+#: src/stored/mount.c:727
 #, c-format
 msgid "Labeled new Volume \"%s\" on device %s.\n"
 msgstr "Le nouveau volume \"%s\" a été labélisé sur le device %s.\n"
 
-#: src/stored/mount.c:725
+#: src/stored/mount.c:732
 #, fuzzy, c-format
 msgid "Device %s not configured to autolabel Volumes.\n"
 msgstr ""
 "Attention, le device %s n'est pas configuré pour labéliser automatiquement "
 "les volumes.\n"
 
-#: src/stored/mount.c:744
+#: src/stored/mount.c:751
 #, c-format
 msgid "Marking Volume \"%s\" in Error in Catalog.\n"
 msgstr "Le volume \"%s\" est marqué en Erreur dans le catalogue.\n"
 
-#: src/stored/mount.c:761
+#: src/stored/mount.c:768
 #, c-format
 msgid ""
 "Autochanger Volume \"%s\" not found in slot %d.\n"
 "    Setting InChanger to zero in catalog.\n"
 msgstr ""
 
-#: src/stored/mount.c:780
+#: src/stored/mount.c:787
 msgid "Hey!!!!! WroteVol non-zero !!!!!\n"
 msgstr ""
 
-#: src/stored/mount.c:827
+#: src/stored/mount.c:834
 #, fuzzy, c-format
 msgid ""
 "Invalid tape position on volume \"%s\" on device %s. Expected %d, got %d\n"
@@ -9341,7 +9400,7 @@ msgstr ""
 "Fin du volume \"%s\" à %u:%u sur le device %s. Ecriture de %u octets, eu "
 "%d.\n"
 
-#: src/stored/mount.c:864 src/stored/btape.c:3120
+#: src/stored/mount.c:875 src/stored/btape.c:3122
 #, c-format
 msgid "Cannot open Dev=%s, Vol=%s\n"
 msgstr ""
@@ -9433,7 +9492,7 @@ msgstr ""
 "Temps du transfert des données spoolées = %02d:%02d:%02d, Taux de transfert "
 "= %s o/s\n"
 
-#: src/stored/spool.c:348 src/stored/spool.c:546 src/stored/spool.c:592
+#: src/stored/spool.c:348 src/stored/spool.c:549 src/stored/spool.c:595
 #, c-format
 msgid "Ftruncate spool file failed: ERR=%s\n"
 msgstr ""
@@ -9463,81 +9522,90 @@ msgstr ""
 msgid "Spool data read error. Wanted %u bytes, got %d\n"
 msgstr ""
 
-#: src/stored/spool.c:487
-msgid "User specified spool size reached.\n"
+#: src/stored/spool.c:480
+#, fuzzy, c-format
+msgid ""
+"User specified Job spool size reached: JobSpoolSize=%s MaxJobSpoolSize=%s\n"
 msgstr "Taille du spool spécifiée par l'utlisateur atteinte.\n"
 
-#: src/stored/spool.c:489
+#: src/stored/spool.c:485
+#, fuzzy, c-format
+msgid ""
+"User specified Device spool size reached: DevSpoolSize=%s MaxDevSpoolSize="
+"%s\n"
+msgstr "Taille du spool spécifiée par l'utlisateur atteinte.\n"
+
+#: src/stored/spool.c:492
 msgid "Bad return from despool in write_block.\n"
 msgstr ""
 
-#: src/stored/spool.c:497
+#: src/stored/spool.c:500
 msgid "Spooling data again ...\n"
 msgstr "Reprise du spool des données...\n"
 
-#: src/stored/spool.c:529
+#: src/stored/spool.c:532
 #, c-format
 msgid "Error writing header to spool file. ERR=%s\n"
 msgstr ""
 
-#: src/stored/spool.c:534
+#: src/stored/spool.c:537
 #, c-format
 msgid ""
 "Error writing header to spool file. Disk probably full. Attempting recovery. "
 "Wanted to write=%d got=%d\n"
 msgstr ""
 
-#: src/stored/spool.c:552 src/stored/spool.c:598
+#: src/stored/spool.c:555 src/stored/spool.c:601
 msgid "Fatal despooling error."
 msgstr ""
 
-#: src/stored/spool.c:560
+#: src/stored/spool.c:563
 msgid "Retrying after header spooling error failed.\n"
 msgstr ""
 
-#: src/stored/spool.c:576
+#: src/stored/spool.c:579
 #, c-format
 msgid "Error writing data to spool file. ERR=%s\n"
 msgstr ""
 "Erreur pendant l'écriture des données vers le fichier de spool. ERR=%s\n"
 
-#: src/stored/spool.c:609
+#: src/stored/spool.c:612
 msgid "Retrying after data spooling error failed.\n"
 msgstr ""
 
-#: src/stored/spool.c:679
+#: src/stored/spool.c:682
 msgid "Network error on BlastAttributes.\n"
 msgstr ""
 
-#: src/stored/spool.c:703 src/stored/spool.c:727
+#: src/stored/spool.c:706 src/stored/spool.c:730
 #, c-format
 msgid "Fseek on attributes file failed: ERR=%s\n"
 msgstr ""
 
 # Impossible d'ouvrir le fichier de spool des attributs : ERR=%s
-#: src/stored/spool.c:715
+#: src/stored/spool.c:718
 #, fuzzy, c-format
 msgid "Truncate on attributes file failed: ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier de spool des attributs %s : ERR=%s\n"
 
-#: src/stored/spool.c:739
+#: src/stored/spool.c:742
 #, c-format
 msgid "Sending spooled attrs to the Director. Despooling %s bytes ...\n"
 msgstr ""
 "Transfert des attributs spoolés au Director. Transfert de %s octets...\n"
 
 # Impossible d'ouvrir le fichier de spool des attributs : ERR=%s
-#: src/stored/spool.c:765
+#: src/stored/spool.c:768
 #, c-format
 msgid "fopen attr spool file %s failed: ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier de spool des attributs %s : ERR=%s\n"
 
-#: src/stored/lock.c:235
+#: src/stored/lock.c:405
 #, fuzzy, c-format
 msgid "pthread_cond_wait failure. ERR=%s\n"
 msgstr "Erreur sur l'ouverture du périphérique. ERR=%s\n"
 
-#: src/stored/lock.c:335
+#: src/stored/lock.c:504
 #, fuzzy
 msgid "unknown blocked code"
 msgstr "source inconnue"
@@ -9607,256 +9675,271 @@ msgid ""
 "Attempt to define second \"%s\" resource named \"%s\" is not permitted.\n"
 msgstr ""
 
-#: src/stored/dev.c:119
+#: src/stored/dev.c:127
 #, c-format
 msgid "Unable to stat device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:137
+#: src/stored/dev.c:145
 #, c-format
 msgid ""
 "%s is an unknown device type. Must be tape or directory\n"
 " or have RequiresMount=yes for DVD. st_mode=%x\n"
 msgstr ""
 
-#: src/stored/dev.c:147
+#: src/stored/dev.c:155
 msgid "DVD support is now deprecated\n"
 msgstr ""
 
-#: src/stored/dev.c:224
+#: src/stored/dev.c:231
 #, c-format
 msgid "Unable to stat mount point %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:229
+#: src/stored/dev.c:236
 msgid ""
 "Mount and unmount commands must defined for a device which requires mount.\n"
 msgstr ""
 
-#: src/stored/dev.c:240
+#: src/stored/dev.c:247
 #, c-format
 msgid "Min block size > max on device %s\n"
 msgstr ""
 
-#: src/stored/dev.c:244
+#: src/stored/dev.c:251
 #, c-format
 msgid "Block size %u on device %s is too large, using default %u\n"
 msgstr ""
 "La taille de bloc %u sur le Device %s est trop grande, utilisation de la "
 "valeur par défaut %u\n"
 
-#: src/stored/dev.c:249
+#: src/stored/dev.c:256
 #, fuzzy, c-format
 msgid "Max block size %u not multiple of device %s block size=%d.\n"
 msgstr ""
 "La taille du buffer réseau %d n'est pas un multiple de la taille de bloc du "
 "lecteur.\n"
 
-#: src/stored/dev.c:253
+#: src/stored/dev.c:260
 #, c-format
 msgid "Max Vol Size < 8 * Max Block Size for device %s\n"
 msgstr ""
 
-#: src/stored/dev.c:269 src/stored/dev.c:275
+#: src/stored/dev.c:276 src/stored/dev.c:282
 #, c-format
 msgid "Unable to init cond variable: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:403
+#: src/stored/dev.c:288
+#, fuzzy, c-format
+msgid "Unable to init spool mutex: ERR=%s\n"
+msgstr "Impossible d'initialiser le muxtex : ERR=%s\n"
+
+#: src/stored/dev.c:294
+#, fuzzy, c-format
+msgid "Unable to init acquire mutex: ERR=%s\n"
+msgstr "Impossible d'initialiser le muxtex : ERR=%s\n"
+
+#: src/stored/dev.c:300
+#, fuzzy, c-format
+msgid "Unable to init read acquire mutex: ERR=%s\n"
+msgstr "Impossible d'initialiser le muxtex : ERR=%s\n"
+
+#: src/stored/dev.c:416
 msgid "Illegal mode given to open dev.\n"
 msgstr ""
 
-#: src/stored/dev.c:538
+#: src/stored/dev.c:551
 #, c-format
 msgid "Could not open file device %s. No Volume name given.\n"
 msgstr ""
 
-#: src/stored/dev.c:561
+#: src/stored/dev.c:574
 #, c-format
 msgid "Could not open: %s, ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:626
+#: src/stored/dev.c:639
 #, c-format
 msgid "No tape loaded or drive offline on %s.\n"
 msgstr ""
 
-#: src/stored/dev.c:636
+#: src/stored/dev.c:649
 #, c-format
 msgid "Rewind error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:646 src/stored/dev.c:724 src/stored/dev.c:865
-#: src/stored/dev.c:1454
+#: src/stored/dev.c:659 src/stored/dev.c:737 src/stored/dev.c:878
+#: src/stored/dev.c:1469
 #, c-format
 msgid "lseek error on %s. ERR=%s.\n"
 msgstr "erreur de déplacement (lseek) sur %s : ERR=%s\n"
 
-#: src/stored/dev.c:695
+#: src/stored/dev.c:708
 #, fuzzy, c-format
 msgid "Bad call to eod. Device %s not open\n"
 msgstr "Le Device %s n'est pas ouvert.\n"
 
-#: src/stored/dev.c:762
+#: src/stored/dev.c:775
 #, c-format
 msgid "ioctl MTEOM error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:772 src/stored/dev.c:906
+#: src/stored/dev.c:785 src/stored/dev.c:919
 #, c-format
 msgid "ioctl MTIOCGET error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:852
+#: src/stored/dev.c:865
 msgid "Bad device call. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:864
+#: src/stored/dev.c:877
 #, c-format
 msgid "Seek error: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:901
+#: src/stored/dev.c:914
 msgid " Bacula status:"
 msgstr ""
 
-#: src/stored/dev.c:902 src/stored/dev.c:985 src/stored/dev.c:987
+#: src/stored/dev.c:915 src/stored/dev.c:998 src/stored/dev.c:1000
 #, c-format
 msgid " file=%d block=%d\n"
 msgstr " fichier=%d bloc=%d\n"
 
-#: src/stored/dev.c:910
+#: src/stored/dev.c:923
 msgid " Device status:"
 msgstr ""
 
-#: src/stored/dev.c:1009
+#: src/stored/dev.c:1022
 msgid "Bad call to load_dev. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1020 src/stored/dev.c:1033
+#: src/stored/dev.c:1033 src/stored/dev.c:1046
 #, c-format
 msgid "ioctl MTLOAD error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1064
+#: src/stored/dev.c:1077
 #, c-format
 msgid "ioctl MTOFFL error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1105
+#: src/stored/dev.c:1118
 msgid "Bad call to fsf. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1116 src/stored/dev.c:1243
+#: src/stored/dev.c:1129 src/stored/dev.c:1256
 #, c-format
 msgid "Device %s at End of Tape.\n"
 msgstr ""
 
-#: src/stored/dev.c:1147 src/stored/dev.c:1223
+#: src/stored/dev.c:1160 src/stored/dev.c:1236
 #, c-format
 msgid "ioctl MTFSF error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1194 src/stored/btape.c:1975
+#: src/stored/dev.c:1207 src/stored/btape.c:1977
 #, c-format
 msgid "read error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1272
+#: src/stored/dev.c:1285
 msgid "Bad call to bsf. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1278
+#: src/stored/dev.c:1291
 #, c-format
 msgid "Device %s cannot BSF because it is not a tape.\n"
 msgstr ""
 
-#: src/stored/dev.c:1295
+#: src/stored/dev.c:1308
 #, c-format
 msgid "ioctl MTBSF error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1314
+#: src/stored/dev.c:1327
 msgid "Bad call to fsr. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1324
+#: src/stored/dev.c:1337
 #, c-format
 msgid "ioctl MTFSR not permitted on %s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1352
+#: src/stored/dev.c:1365
 #, c-format
 msgid "ioctl MTFSR %d error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1370
+#: src/stored/dev.c:1383
 msgid "Bad call to bsr_dev. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1380
+#: src/stored/dev.c:1393
 #, c-format
 msgid "ioctl MTBSR not permitted on %s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1394
+#: src/stored/dev.c:1407
 #, c-format
 msgid "ioctl MTBSR error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1443
+#: src/stored/dev.c:1458
 msgid "Bad call to reposition. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1522
+#: src/stored/dev.c:1537
 msgid "Bad call to weof_dev. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1532
+#: src/stored/dev.c:1547
 msgid "Attempt to WEOF on non-appendable Volume\n"
 msgstr ""
 
-#: src/stored/dev.c:1550
+#: src/stored/dev.c:1565
 #, c-format
 msgid "ioctl MTWEOF error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1649
+#: src/stored/dev.c:1664
 #, c-format
 msgid "unknown func code %d"
 msgstr ""
 
-#: src/stored/dev.c:1655
+#: src/stored/dev.c:1670
 #, c-format
 msgid "I/O function \"%s\" not supported on this device.\n"
 msgstr ""
 
-#: src/stored/dev.c:1824
+#: src/stored/dev.c:1844
 #, c-format
 msgid "Unable to truncate device %s. ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:1841
+#: src/stored/dev.c:1861
 #, fuzzy, c-format
 msgid "Unable to stat device %s. ERR=%s\n"
 msgstr "3910 Impossible d'ouvrir le device %s : ERR=%s\n"
 
-#: src/stored/dev.c:1855
+#: src/stored/dev.c:1875
 #, c-format
 msgid "Device %s doesn't support ftruncate(). Recreating file %s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1867
+#: src/stored/dev.c:1887
 #, fuzzy, c-format
 msgid "Could not reopen: %s, ERR=%s\n"
 msgstr "Impossible d'ouvrir %s : ERR=%s\n"
 
-#: src/stored/dev.c:1989 src/stored/dev.c:2060
+#: src/stored/dev.c:2010 src/stored/dev.c:2081
 #, c-format
 msgid "Device %s cannot be %smounted. ERR=%s\n"
 msgstr "Le Device %s ne peut pas être %smounted. ERR=%s\n"
 
-#: src/stored/dev.c:2456
+#: src/stored/dev.c:2481
 #, fuzzy, c-format
 msgid "Unable to set eotmodel on device %s: ERR=%s\n"
 msgstr "3910 Impossible d'ouvrir le device %s : ERR=%s\n"
@@ -10026,7 +10109,7 @@ msgstr ""
 msgid "SOS_LABEL: PoolId mismatch for JobId=%u. DB=%d Vol=%d\n"
 msgstr ""
 
-#: src/stored/bscan.c:601 src/stored/bscan.c:1157
+#: src/stored/bscan.c:601 src/stored/bscan.c:1161
 #, c-format
 msgid "Could not find SessId=%d SessTime=%d for EOS record.\n"
 msgstr ""
@@ -10084,107 +10167,107 @@ msgstr ""
 msgid "Got Prog Data Stream record.\n"
 msgstr ""
 
-#: src/stored/bscan.c:858
+#: src/stored/bscan.c:862
 #, c-format
 msgid "Unknown stream type!!! stream=%d len=%i\n"
 msgstr ""
 
-#: src/stored/bscan.c:926
+#: src/stored/bscan.c:930
 #, c-format
 msgid "Could not create File Attributes record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:932
+#: src/stored/bscan.c:936
 #, c-format
 msgid "Created File record: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:977
+#: src/stored/bscan.c:981
 #, c-format
 msgid "Could not create media record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:981 src/stored/bscan.c:1002
+#: src/stored/bscan.c:985 src/stored/bscan.c:1006
 #, c-format
 msgid "Could not update media record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:985
+#: src/stored/bscan.c:989
 #, c-format
 msgid "Created Media record for Volume: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1006
+#: src/stored/bscan.c:1010
 #, c-format
 msgid "Updated Media record at end of Volume: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1023
+#: src/stored/bscan.c:1027
 #, c-format
 msgid "Could not create pool record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1027
+#: src/stored/bscan.c:1031
 #, c-format
 msgid "Created Pool record for Pool: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1046
+#: src/stored/bscan.c:1050
 #, fuzzy, c-format
 msgid "Could not get Client record. ERR=%s\n"
 msgstr "Impossible d'initialiser la queue cliente : ERR=%s\n"
 
-#: src/stored/bscan.c:1056
+#: src/stored/bscan.c:1060
 #, c-format
 msgid "Created Client record for Client: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1073
+#: src/stored/bscan.c:1077
 #, c-format
 msgid "Fileset \"%s\" already exists.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1077
+#: src/stored/bscan.c:1081
 #, c-format
 msgid "Could not create FileSet record \"%s\". ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1082
+#: src/stored/bscan.c:1086
 #, c-format
 msgid "Created FileSet record \"%s\"\n"
 msgstr ""
 
-#: src/stored/bscan.c:1129
+#: src/stored/bscan.c:1133
 #, c-format
 msgid "Could not create JobId record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1135
+#: src/stored/bscan.c:1139
 #, c-format
 msgid "Could not update job start record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1138
+#: src/stored/bscan.c:1142
 #, c-format
 msgid "Created new JobId=%u record for original JobId=%u\n"
 msgstr ""
 
-#: src/stored/bscan.c:1191
+#: src/stored/bscan.c:1195
 #, c-format
 msgid "Could not update JobId=%u record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1196
+#: src/stored/bscan.c:1200
 #, c-format
 msgid "Updated Job termination record for JobId=%u Level=%s TermStat=%c\n"
 msgstr ""
 
-#: src/stored/bscan.c:1221
+#: src/stored/bscan.c:1225
 #, c-format
 msgid "Job Termination code: %d"
 msgstr ""
 
-#: src/stored/bscan.c:1226
+#: src/stored/bscan.c:1230
 #, c-format
 msgid ""
 "%s\n"
@@ -10204,45 +10287,45 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/bscan.c:1284
+#: src/stored/bscan.c:1288
 #, c-format
 msgid "Could not create JobMedia record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1288
+#: src/stored/bscan.c:1292
 #, c-format
 msgid "Created JobMedia record JobId %d, MediaId %d\n"
 msgstr ""
 
-#: src/stored/bscan.c:1304
+#: src/stored/bscan.c:1308
 #, c-format
 msgid "Could not find SessId=%d SessTime=%d for MD5/SHA1 record.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1318
+#: src/stored/bscan.c:1322
 #, c-format
 msgid "Could not add MD5/SHA1 to File record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1323
+#: src/stored/bscan.c:1327
 msgid "Updated MD5/SHA1 record\n"
 msgstr ""
 
-#: src/stored/job.c:231
+#: src/stored/job.c:234
 #, fuzzy, c-format
 msgid "FD connect failed: Job name not found: %s\n"
 msgstr "Job non trouvé : %s\n"
 
-#: src/stored/job.c:241
+#: src/stored/job.c:244
 #, c-format
 msgid "Hey!!!! JobId %u Job %s already authenticated.\n"
 msgstr ""
 
-#: src/stored/job.c:258
+#: src/stored/job.c:261
 msgid "Unable to authenticate File daemon\n"
 msgstr ""
 
-#: src/stored/job.c:387
+#: src/stored/job.c:390
 msgid "In free_jcr(), but still attached to device!!!!\n"
 msgstr ""
 
@@ -10360,18 +10443,18 @@ msgstr ""
 msgid "Loaded %s\n"
 msgstr ""
 
-#: src/stored/btape.c:576 src/stored/btape.c:1137 src/stored/btape.c:1210
-#: src/stored/btape.c:1290 src/stored/btape.c:1561
+#: src/stored/btape.c:576 src/stored/btape.c:1139 src/stored/btape.c:1212
+#: src/stored/btape.c:1292 src/stored/btape.c:1563
 #, c-format
 msgid "Bad status from rewind. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:579 src/stored/btape.c:1569
+#: src/stored/btape.c:579 src/stored/btape.c:1571
 #, c-format
 msgid "Rewound %s\n"
 msgstr ""
 
-#: src/stored/btape.c:605 src/stored/btape.c:1573
+#: src/stored/btape.c:605 src/stored/btape.c:1575
 #, c-format
 msgid "Bad status from weof. ERR=%s\n"
 msgstr ""
@@ -10433,20 +10516,20 @@ msgstr ""
 msgid "Do you want to continue? (y/n): "
 msgstr "Voulez vous continuer ? (y/n) : "
 
-#: src/stored/btape.c:748 src/stored/btape.c:2198
+#: src/stored/btape.c:748 src/stored/btape.c:2200
 msgid "Command aborted.\n"
 msgstr "Commande annulée.\n"
 
-#: src/stored/btape.c:764
+#: src/stored/btape.c:765
 #, c-format
 msgid "Block %d i=%d\n"
 msgstr ""
 
-#: src/stored/btape.c:790
+#: src/stored/btape.c:792
 msgid "Skipping read backwards test because BSR turned off.\n"
 msgstr ""
 
-#: src/stored/btape.c:794
+#: src/stored/btape.c:796
 msgid ""
 "\n"
 "=== Write, backup, and re-read test ===\n"
@@ -10460,73 +10543,73 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:807 src/stored/btape.c:818 src/stored/btape.c:829
-#: src/stored/btape.c:1147 src/stored/btape.c:1163 src/stored/btape.c:1905
-#: src/stored/btape.c:2821
+#: src/stored/btape.c:809 src/stored/btape.c:820 src/stored/btape.c:831
+#: src/stored/btape.c:1149 src/stored/btape.c:1165 src/stored/btape.c:1907
+#: src/stored/btape.c:2823
 msgid "Error writing record to block.\n"
 msgstr ""
 
-#: src/stored/btape.c:811 src/stored/btape.c:822 src/stored/btape.c:833
-#: src/stored/btape.c:1151 src/stored/btape.c:1167 src/stored/btape.c:1909
-#: src/stored/btape.c:2825
+#: src/stored/btape.c:813 src/stored/btape.c:824 src/stored/btape.c:835
+#: src/stored/btape.c:1153 src/stored/btape.c:1169 src/stored/btape.c:1911
+#: src/stored/btape.c:2827
 msgid "Error writing block to device.\n"
 msgstr ""
 
-#: src/stored/btape.c:814
+#: src/stored/btape.c:816
 #, c-format
 msgid "Wrote first record of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:825
+#: src/stored/btape.c:827
 #, c-format
 msgid "Wrote second record of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:836
+#: src/stored/btape.c:838
 #, c-format
 msgid "Wrote third record of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:843 src/stored/btape.c:848
+#: src/stored/btape.c:845 src/stored/btape.c:850
 #, c-format
 msgid "Backspace file failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:852
+#: src/stored/btape.c:854
 msgid "Backspaced over EOF OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:854
+#: src/stored/btape.c:856
 #, c-format
 msgid "Backspace record failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:857
+#: src/stored/btape.c:859
 msgid "Backspace record OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:860 src/stored/btape.c:866
+#: src/stored/btape.c:862 src/stored/btape.c:868
 #, c-format
 msgid "Read block failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:871
+#: src/stored/btape.c:873
 msgid "Bad data in record. Test failed!\n"
 msgstr ""
 
-#: src/stored/btape.c:875
+#: src/stored/btape.c:877
 msgid ""
 "\n"
 "Block re-read correct. Test succeeded!\n"
 msgstr ""
 
-#: src/stored/btape.c:876
+#: src/stored/btape.c:878
 msgid ""
 "=== End Write, backup, and re-read test ===\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:883
+#: src/stored/btape.c:885
 msgid ""
 "This is not terribly serious since Bacula only uses\n"
 "this function to verify the last block written to the\n"
@@ -10538,52 +10621,52 @@ msgid ""
 "to your Storage daemon's Device resource definition.\n"
 msgstr ""
 
-#: src/stored/btape.c:905
+#: src/stored/btape.c:907
 #, c-format
 msgid "Begin writing %i files of %sB with raw blocks of %u bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:926 src/stored/btape.c:2877
+#: src/stored/btape.c:928 src/stored/btape.c:2879
 #, c-format
 msgid "Write failed at block %u. stat=%d ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:960
+#: src/stored/btape.c:962
 #, c-format
 msgid "Begin writing %i files of %sB with blocks of %u bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:969
+#: src/stored/btape.c:971
 #, fuzzy
 msgid ""
 "\n"
 "Error writing record to block.\n"
 msgstr "Erreur pendant l'écriture du fichier bsr.\n"
 
-#: src/stored/btape.c:973
+#: src/stored/btape.c:975
 #, fuzzy
 msgid ""
 "\n"
 "Error writing block to device.\n"
 msgstr "Erreur pendant l'écriture du fichier bsr.\n"
 
-#: src/stored/btape.c:1028
+#: src/stored/btape.c:1030
 msgid "The file_size is too big, stop this test with Ctrl-c.\n"
 msgstr ""
 
-#: src/stored/btape.c:1056
+#: src/stored/btape.c:1058
 msgid "Test with zero data, should give the maximum throughput.\n"
 msgstr ""
 
-#: src/stored/btape.c:1068 src/stored/btape.c:1094
+#: src/stored/btape.c:1070 src/stored/btape.c:1096
 msgid "Test with random data, should give the minimum throughput.\n"
 msgstr ""
 
-#: src/stored/btape.c:1083
+#: src/stored/btape.c:1085
 msgid "Test with zero data and bacula block structure.\n"
 msgstr ""
 
-#: src/stored/btape.c:1123
+#: src/stored/btape.c:1125
 #, c-format
 msgid ""
 "\n"
@@ -10597,66 +10680,66 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1155 src/stored/btape.c:1171
+#: src/stored/btape.c:1157 src/stored/btape.c:1173
 #, fuzzy, c-format
 msgid "Wrote %d blocks of %d bytes.\n"
 msgstr "Ecriture de 1000 blocs de %d octets.\n"
 
-#: src/stored/btape.c:1213 src/stored/btape.c:1293
+#: src/stored/btape.c:1215 src/stored/btape.c:1295
 msgid "Rewind OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:1226 src/stored/btape.c:1345
+#: src/stored/btape.c:1228 src/stored/btape.c:1347
 msgid "Got EOF on tape.\n"
 msgstr ""
 
-#: src/stored/btape.c:1231
+#: src/stored/btape.c:1233
 #, c-format
 msgid "Read block %d failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1237
+#: src/stored/btape.c:1239
 #, c-format
 msgid "Read record failed. Block %d! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1243 src/stored/btape.c:1375
+#: src/stored/btape.c:1245 src/stored/btape.c:1377
 #, c-format
 msgid "Bad data in record. Expected %d, got %d at byte %d. Test failed!\n"
 msgstr ""
 
-#: src/stored/btape.c:1250
+#: src/stored/btape.c:1252
 #, fuzzy, c-format
 msgid "%d blocks re-read correctly.\n"
 msgstr "1000 blocs relus correctement.\n"
 
-#: src/stored/btape.c:1253 src/stored/btape.c:1382
+#: src/stored/btape.c:1255 src/stored/btape.c:1384
 msgid ""
 "=== Test Succeeded. End Write, rewind, and re-read test ===\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1281
+#: src/stored/btape.c:1283
 msgid "Block position test\n"
 msgstr ""
 
-#: src/stored/btape.c:1336
+#: src/stored/btape.c:1338
 #, c-format
 msgid "Reposition to file:block %d:%d\n"
 msgstr ""
 
-#: src/stored/btape.c:1338
+#: src/stored/btape.c:1340
 msgid "Reposition error.\n"
 msgstr ""
 
-#: src/stored/btape.c:1351
+#: src/stored/btape.c:1353
 #, c-format
 msgid ""
 "Read block %d failed! file=%d blk=%d. ERR=%s\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1353
+#: src/stored/btape.c:1355
 msgid ""
 "This may be because the tape drive block size is not\n"
 " set to variable blocking as normally used by Bacula.\n"
@@ -10670,17 +10753,17 @@ msgid ""
 " in your Device resource.\n"
 msgstr ""
 
-#: src/stored/btape.c:1369
+#: src/stored/btape.c:1371
 #, c-format
 msgid "Read record failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1380
+#: src/stored/btape.c:1382
 #, c-format
 msgid "Block %d re-read correctly.\n"
 msgstr ""
 
-#: src/stored/btape.c:1401
+#: src/stored/btape.c:1403
 msgid ""
 "\n"
 "\n"
@@ -10694,58 +10777,58 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1425
+#: src/stored/btape.c:1427
 msgid "Now moving to end of medium.\n"
 msgstr ""
 
-#: src/stored/btape.c:1427 src/stored/btape.c:1656
+#: src/stored/btape.c:1429 src/stored/btape.c:1658
 #, c-format
 msgid "We should be in file 3. I am at file %d. %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1428 src/stored/btape.c:1446 src/stored/btape.c:1645
-#: src/stored/btape.c:1657 src/stored/btape.c:1670 src/stored/btape.c:1687
+#: src/stored/btape.c:1430 src/stored/btape.c:1448 src/stored/btape.c:1647
+#: src/stored/btape.c:1659 src/stored/btape.c:1672 src/stored/btape.c:1689
 msgid "This is correct!"
 msgstr ""
 
-#: src/stored/btape.c:1428 src/stored/btape.c:1446 src/stored/btape.c:1645
-#: src/stored/btape.c:1657 src/stored/btape.c:1670 src/stored/btape.c:1687
+#: src/stored/btape.c:1430 src/stored/btape.c:1448 src/stored/btape.c:1647
+#: src/stored/btape.c:1659 src/stored/btape.c:1672 src/stored/btape.c:1689
 msgid "This is NOT correct!!!!"
 msgstr ""
 
-#: src/stored/btape.c:1434
+#: src/stored/btape.c:1436
 msgid ""
 "\n"
 "Now the important part, I am going to attempt to append to the tape.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1441
+#: src/stored/btape.c:1443
 msgid ""
 "Done appending, there should be no I/O errors\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1442
+#: src/stored/btape.c:1444
 msgid "Doing Bacula scan of blocks:\n"
 msgstr ""
 
-#: src/stored/btape.c:1444
+#: src/stored/btape.c:1446
 msgid "End scanning the tape.\n"
 msgstr ""
 
-#: src/stored/btape.c:1445 src/stored/btape.c:1669
+#: src/stored/btape.c:1447 src/stored/btape.c:1671
 #, c-format
 msgid "We should be in file 4. I am at file %d. %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1470
+#: src/stored/btape.c:1472
 msgid ""
 "\n"
 "Autochanger enabled, but no name or no command device specified.\n"
 msgstr ""
 
-#: src/stored/btape.c:1474
+#: src/stored/btape.c:1476
 msgid ""
 "\n"
 "Ah, I see you have an autochanger configured.\n"
@@ -10753,13 +10836,13 @@ msgid ""
 " that I can write on in Slot 1.\n"
 msgstr ""
 
-#: src/stored/btape.c:1477
+#: src/stored/btape.c:1479
 msgid ""
 "\n"
 "Do you wish to continue with the Autochanger test? (y/n): "
 msgstr ""
 
-#: src/stored/btape.c:1484
+#: src/stored/btape.c:1486
 msgid ""
 "\n"
 "\n"
@@ -10767,74 +10850,74 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1493
+#: src/stored/btape.c:1495
 msgid "3301 Issuing autochanger \"loaded\" command.\n"
 msgstr ""
 
-#: src/stored/btape.c:1502
+#: src/stored/btape.c:1504
 #, c-format
 msgid "3991 Bad autochanger command: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1503
+#: src/stored/btape.c:1505
 #, c-format
 msgid "3991 result=\"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1507
+#: src/stored/btape.c:1509
 #, c-format
 msgid "Slot %d loaded. I am going to unload it.\n"
 msgstr ""
 
-#: src/stored/btape.c:1509
+#: src/stored/btape.c:1511
 msgid "Nothing loaded in the drive. OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:1516
+#: src/stored/btape.c:1518
 #, c-format
 msgid "3302 Issuing autochanger \"unload %d %d\" command.\n"
 msgstr ""
 
-#: src/stored/btape.c:1521
+#: src/stored/btape.c:1523
 #, c-format
 msgid "unload status=%s %d\n"
 msgstr ""
 
-#: src/stored/btape.c:1521
+#: src/stored/btape.c:1523
 msgid "Bad"
 msgstr ""
 
-#: src/stored/btape.c:1524
+#: src/stored/btape.c:1526
 #, c-format
 msgid "3992 Bad autochanger command: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1525
+#: src/stored/btape.c:1527
 #, c-format
 msgid "3992 result=\"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1535
+#: src/stored/btape.c:1537
 #, c-format
 msgid "3303 Issuing autochanger \"load %d %d\" command.\n"
 msgstr ""
 
-#: src/stored/btape.c:1543
+#: src/stored/btape.c:1545
 #, c-format
 msgid "3303 Autochanger \"load %d %d\" status is OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:1547
+#: src/stored/btape.c:1549
 #, c-format
 msgid "3993 Bad autochanger command: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1548
+#: src/stored/btape.c:1550
 #, c-format
 msgid "3993 result=\"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1563
+#: src/stored/btape.c:1565
 msgid ""
 "\n"
 "The test failed, probably because you need to put\n"
@@ -10842,12 +10925,12 @@ msgid ""
 "Adding a 30 second sleep and trying again ...\n"
 msgstr ""
 
-#: src/stored/btape.c:1576
+#: src/stored/btape.c:1578
 #, c-format
 msgid "Wrote EOF to %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1580
+#: src/stored/btape.c:1582
 #, c-format
 msgid ""
 "\n"
@@ -10859,18 +10942,18 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1585
+#: src/stored/btape.c:1587
 msgid ""
 "\n"
 "The test autochanger worked!!\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1596
+#: src/stored/btape.c:1598
 msgid "You must correct this error or the Autochanger will not work.\n"
 msgstr ""
 
-#: src/stored/btape.c:1614
+#: src/stored/btape.c:1616
 msgid ""
 "\n"
 "\n"
@@ -10882,30 +10965,30 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1639
+#: src/stored/btape.c:1641
 msgid "Now forward spacing 1 file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1641 src/stored/btape.c:1653 src/stored/btape.c:1666
-#: src/stored/btape.c:1684 src/stored/btape.c:1860
+#: src/stored/btape.c:1643 src/stored/btape.c:1655 src/stored/btape.c:1668
+#: src/stored/btape.c:1686 src/stored/btape.c:1862
 #, c-format
 msgid "Bad status from fsr. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1644
+#: src/stored/btape.c:1646
 #, c-format
 msgid "We should be in file 1. I am at file %d. %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1651
+#: src/stored/btape.c:1653
 msgid "Now forward spacing 2 files.\n"
 msgstr ""
 
-#: src/stored/btape.c:1664
+#: src/stored/btape.c:1666
 msgid "Now forward spacing 4 files.\n"
 msgstr ""
 
-#: src/stored/btape.c:1676
+#: src/stored/btape.c:1678
 msgid ""
 "The test worked this time. Please add:\n"
 "\n"
@@ -10914,35 +10997,35 @@ msgid ""
 "to your Device resource for this drive.\n"
 msgstr ""
 
-#: src/stored/btape.c:1682
+#: src/stored/btape.c:1684
 msgid "Now forward spacing 1 more file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1686
+#: src/stored/btape.c:1688
 #, c-format
 msgid "We should be in file 5. I am at file %d. %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1691
+#: src/stored/btape.c:1693
 msgid ""
 "\n"
 "=== End Forward space files test ===\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1695
+#: src/stored/btape.c:1697
 msgid ""
 "\n"
 "The forward space file test failed.\n"
 msgstr ""
 
-#: src/stored/btape.c:1697
+#: src/stored/btape.c:1699
 msgid ""
 "You have Fast Forward Space File enabled.\n"
 "I am turning it off then retrying the test.\n"
 msgstr ""
 
-#: src/stored/btape.c:1703
+#: src/stored/btape.c:1705
 msgid ""
 "You must correct this error or Bacula will not work.\n"
 "Some systems, e.g. OpenBSD, require you to set\n"
@@ -10950,7 +11033,7 @@ msgid ""
 "in your device resource. Use with caution.\n"
 msgstr ""
 
-#: src/stored/btape.c:1737
+#: src/stored/btape.c:1739
 msgid ""
 "\n"
 "Append test failed. Attempting again.\n"
@@ -10960,7 +11043,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1745
+#: src/stored/btape.c:1747
 msgid ""
 "\n"
 "\n"
@@ -10972,14 +11055,14 @@ msgid ""
 "to your Device resource in the Storage conf file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1752
+#: src/stored/btape.c:1754
 msgid ""
 "\n"
 "\n"
 "That appears *NOT* to have corrected the problem.\n"
 msgstr ""
 
-#: src/stored/btape.c:1757
+#: src/stored/btape.c:1759
 msgid ""
 "\n"
 "\n"
@@ -10987,7 +11070,7 @@ msgid ""
 "Setting \"BSF at EOM = yes\" and retrying append test.\n"
 msgstr ""
 
-#: src/stored/btape.c:1762
+#: src/stored/btape.c:1764
 msgid ""
 "\n"
 "\n"
@@ -11000,7 +11083,7 @@ msgid ""
 "to your Device resource in the Storage conf file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1773
+#: src/stored/btape.c:1775
 msgid ""
 "\n"
 "Append test failed.\n"
@@ -11027,7 +11110,7 @@ msgid ""
 "in your device resource. Use with caution.\n"
 msgstr ""
 
-#: src/stored/btape.c:1795
+#: src/stored/btape.c:1797
 msgid ""
 "\n"
 "The above Bacula scan should have output identical to what follows.\n"
@@ -11051,111 +11134,111 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1838
+#: src/stored/btape.c:1840
 #, c-format
 msgid "Bad status from fsf. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1842
+#: src/stored/btape.c:1844
 msgid "Forward spaced 1 file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1845
+#: src/stored/btape.c:1847
 #, c-format
 msgid "Forward spaced %d files.\n"
 msgstr ""
 
-#: src/stored/btape.c:1864
+#: src/stored/btape.c:1866
 msgid "Forward spaced 1 record.\n"
 msgstr ""
 
-#: src/stored/btape.c:1867
+#: src/stored/btape.c:1869
 #, c-format
 msgid "Forward spaced %d records.\n"
 msgstr ""
 
-#: src/stored/btape.c:1912
+#: src/stored/btape.c:1914
 #, c-format
 msgid "Wrote one record of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:1914
+#: src/stored/btape.c:1916
 msgid "Wrote block to device.\n"
 msgstr ""
 
-#: src/stored/btape.c:1928
+#: src/stored/btape.c:1930
 msgid "Enter length to read: "
 msgstr ""
 
-#: src/stored/btape.c:1933
+#: src/stored/btape.c:1935
 msgid "Bad length entered, using default of 1024 bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:1942
+#: src/stored/btape.c:1944
 #, c-format
 msgid "Read of %d bytes gives stat=%d. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1965 src/stored/btape.c:2014
+#: src/stored/btape.c:1967 src/stored/btape.c:2016
 #, c-format
 msgid "End of tape\n"
 msgstr ""
 
-#: src/stored/btape.c:1970
+#: src/stored/btape.c:1972
 #, c-format
 msgid "Starting scan at file %u\n"
 msgstr ""
 
-#: src/stored/btape.c:1977
+#: src/stored/btape.c:1979
 #, c-format
 msgid "Bad status from read %d. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1980 src/stored/btape.c:1994 src/stored/btape.c:2058
-#: src/stored/btape.c:2070 src/stored/btape.c:2083 src/stored/btape.c:2099
+#: src/stored/btape.c:1982 src/stored/btape.c:1996 src/stored/btape.c:2060
+#: src/stored/btape.c:2072 src/stored/btape.c:2085 src/stored/btape.c:2101
 #, c-format
 msgid "1 block of %d bytes in file %d\n"
 msgstr ""
 
-#: src/stored/btape.c:1983 src/stored/btape.c:1997 src/stored/btape.c:2061
-#: src/stored/btape.c:2073 src/stored/btape.c:2086 src/stored/btape.c:2102
+#: src/stored/btape.c:1985 src/stored/btape.c:1999 src/stored/btape.c:2063
+#: src/stored/btape.c:2075 src/stored/btape.c:2088 src/stored/btape.c:2104
 #, c-format
 msgid "%d blocks of %d bytes in file %d\n"
 msgstr ""
 
-#: src/stored/btape.c:2005 src/stored/btape.c:2077
+#: src/stored/btape.c:2007 src/stored/btape.c:2079
 #, c-format
 msgid "End of File mark.\n"
 msgstr ""
 
-#: src/stored/btape.c:2026 src/stored/btape.c:2130
+#: src/stored/btape.c:2028 src/stored/btape.c:2132
 #, c-format
 msgid "Total files=%d, blocks=%d, bytes = %s\n"
 msgstr ""
 
-#: src/stored/btape.c:2090
+#: src/stored/btape.c:2092
 #, c-format
 msgid "Short block read.\n"
 msgstr ""
 
-#: src/stored/btape.c:2093
+#: src/stored/btape.c:2095
 #, c-format
 msgid "Error reading block. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2117
+#: src/stored/btape.c:2119
 #, c-format
 msgid ""
 "Block=%u file,blk=%u,%u blen=%u First rec FI=%s SessId=%u SessTim=%u Strm=%s "
 "rlen=%d\n"
 msgstr ""
 
-#: src/stored/btape.c:2139
+#: src/stored/btape.c:2141
 #, c-format
 msgid "Device status: %u. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2171
+#: src/stored/btape.c:2173
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -11200,7 +11283,7 @@ msgstr ""
 "\n"
 "Ce test peut durer longtemps (voir des heures).\n"
 
-#: src/stored/btape.c:2189
+#: src/stored/btape.c:2191
 msgid ""
 "Do you want to run the simplified test (s) with one tape\n"
 "or the complete multiple tape (m) test: (s/m) "
@@ -11208,76 +11291,76 @@ msgstr ""
 "Voulez vous lancer le test simplifié (s) utilisant une seule bande\n"
 "ou bien le test multi-bande complet (m) : (s/m) "
 
-#: src/stored/btape.c:2192
+#: src/stored/btape.c:2194
 msgid "Simple test (single tape) selected.\n"
 msgstr "Sélection du test simplifié (utilisant une seule bande).\n"
 
-#: src/stored/btape.c:2195
+#: src/stored/btape.c:2197
 msgid "Multiple tape test selected.\n"
 msgstr "Sélection du test multiple.\n"
 
-#: src/stored/btape.c:2237
+#: src/stored/btape.c:2239
 msgid "Wrote Start of Session label.\n"
 msgstr "Écriture du label de début de session.\n"
 
-#: src/stored/btape.c:2256
+#: src/stored/btape.c:2258
 #, c-format
 msgid "%s Begin writing Bacula records to tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2258
+#: src/stored/btape.c:2260
 #, c-format
 msgid "%s Begin writing Bacula records to first tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2284
+#: src/stored/btape.c:2286
 #, fuzzy
 msgid "Flush block failed.\n"
 msgstr "Flush de %s blocs, écriture de EOF\n"
 
-#: src/stored/btape.c:2298
+#: src/stored/btape.c:2300
 #, fuzzy, c-format
 msgid "Wrote block=%u, file,blk=%u,%u VolBytes=%s rate=%sB/s\n"
 msgstr "Écriture blk_block=%u, dev_blk_num=%u VolBytes=%s rate=%.1f KB/s\n"
 
-#: src/stored/btape.c:2309
+#: src/stored/btape.c:2311
 #, c-format
 msgid "%s Flush block, write EOF\n"
 msgstr "Flush de %s blocs, écriture de EOF\n"
 
-#: src/stored/btape.c:2318
+#: src/stored/btape.c:2320
 #, fuzzy
 msgid "Wrote 1000 blocks on second tape. Done.\n"
 msgstr "Ecriture de 1000 blocs de %d octets.\n"
 
-#: src/stored/btape.c:2323
+#: src/stored/btape.c:2325
 msgid "Not OK\n"
 msgstr ""
 
-#: src/stored/btape.c:2347
+#: src/stored/btape.c:2349
 #, fuzzy
 msgid "Job canceled.\n"
 msgstr "Le job %s est annulé.\n"
 
-#: src/stored/btape.c:2358
+#: src/stored/btape.c:2360
 msgid "Set ok=false after write_block_to_device.\n"
 msgstr ""
 
-#: src/stored/btape.c:2362
+#: src/stored/btape.c:2364
 msgid "Wrote End of Session label.\n"
 msgstr "Écriture du label de fin de session.\n"
 
-#: src/stored/btape.c:2386
+#: src/stored/btape.c:2388
 #, c-format
 msgid "Wrote state file last_block_num1=%d last_block_num2=%d\n"
 msgstr "Écriture du fichier d'état last_block_num1=%d last_block_num2=%d\n"
 
-#: src/stored/btape.c:2390
+#: src/stored/btape.c:2392
 #, c-format
 msgid "Could not create state file: %s ERR=%s\n"
 msgstr "Impossible de créer le fichier d'état : %s ERR=%s\n"
 
-#: src/stored/btape.c:2401
+#: src/stored/btape.c:2403
 #, c-format
 msgid ""
 "\n"
@@ -11285,7 +11368,7 @@ msgid ""
 "%s Done filling tape at %d:%d. Now beginning re-read of tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2404
+#: src/stored/btape.c:2406
 #, c-format
 msgid ""
 "\n"
@@ -11293,24 +11376,24 @@ msgid ""
 "%s Done filling tapes at %d:%d. Now beginning re-read of first tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2410
+#: src/stored/btape.c:2412
 #, fuzzy
 msgid "do_unfill failed.\n"
 msgstr "Job échoué.\n"
 
-#: src/stored/btape.c:2415
+#: src/stored/btape.c:2417
 #, fuzzy, c-format
 msgid "%s: Error during test.\n"
 msgstr "Erreur pendant l'envoi de la liste d'inclusion.\n"
 
-#: src/stored/btape.c:2450
+#: src/stored/btape.c:2452
 msgid ""
 "\n"
 "The state file level has changed. You must redo\n"
 "the fill command.\n"
 msgstr ""
 
-#: src/stored/btape.c:2457
+#: src/stored/btape.c:2459
 #, c-format
 msgid ""
 "\n"
@@ -11321,95 +11404,95 @@ msgstr ""
 "Impossible de trouver le fichier d'état : %s ERR=%s\n"
 "Vous devez relancer la commande « fill ».\n"
 
-#: src/stored/btape.c:2523
+#: src/stored/btape.c:2525
 msgid "Mount first tape. Press enter when ready: "
 msgstr "Chargez la première bande et appuyez sur « Entrée » : "
 
-#: src/stored/btape.c:2539
+#: src/stored/btape.c:2541
 msgid "Rewinding.\n"
 msgstr "Rembobinage.\n"
 
-#: src/stored/btape.c:2544
+#: src/stored/btape.c:2546
 #, c-format
 msgid "Reading the first 10000 records from %u:%u.\n"
 msgstr "Lecture des 10000 premiers enregistrements depuis %u:%u.\n"
 
-#: src/stored/btape.c:2548 src/stored/btape.c:2616
+#: src/stored/btape.c:2550 src/stored/btape.c:2618
 #, c-format
 msgid "Reposition from %u:%u to %u:%u\n"
 msgstr "Re-positionnement de %u:%u à %u:%u\n"
 
-#: src/stored/btape.c:2551 src/stored/btape.c:2603 src/stored/btape.c:2619
+#: src/stored/btape.c:2553 src/stored/btape.c:2605 src/stored/btape.c:2621
 #, c-format
 msgid "Reposition error. ERR=%s\n"
 msgstr "Erreur pendant le re-positionnement. ERR=%s\n"
 
-#: src/stored/btape.c:2554
+#: src/stored/btape.c:2556
 #, c-format
 msgid "Reading block %u.\n"
 msgstr "Lecture du bloc %u.\n"
 
-#: src/stored/btape.c:2556 src/stored/btape.c:2608 src/stored/btape.c:2624
+#: src/stored/btape.c:2558 src/stored/btape.c:2610 src/stored/btape.c:2626
 #, c-format
 msgid "Error reading block: ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2561
+#: src/stored/btape.c:2563
 msgid ""
 "\n"
 "The last block on the tape matches. Test succeeded.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2564
+#: src/stored/btape.c:2566
 msgid ""
 "\n"
 "The last block of the first tape matches.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2588
+#: src/stored/btape.c:2590
 msgid "Mount second tape. Press enter when ready: "
 msgstr "Chargez une deuxième bande et appuyez sur « Entrée » : "
 
-#: src/stored/btape.c:2601
+#: src/stored/btape.c:2603
 #, c-format
 msgid "Reposition from %u:%u to 0:1\n"
 msgstr "Re-positionnement de %u:%u à 0:1\n"
 
-#: src/stored/btape.c:2606 src/stored/btape.c:2622
+#: src/stored/btape.c:2608 src/stored/btape.c:2624
 #, c-format
 msgid "Reading block %d.\n"
 msgstr "Lecture du bloc %d.\n"
 
-#: src/stored/btape.c:2612
+#: src/stored/btape.c:2614
 msgid ""
 "\n"
 "The first block on the second tape matches.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2628
+#: src/stored/btape.c:2630
 msgid ""
 "\n"
 "The last block on the second tape matches. Test succeeded.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2645
+#: src/stored/btape.c:2647
 #, c-format
 msgid "10000 records read now at %d:%d\n"
 msgstr "10000 enregistrements lus maintenant à %d:%d\n"
 
-#: src/stored/btape.c:2671 src/stored/btape.c:2682 src/stored/btape.c:2727
+#: src/stored/btape.c:2673 src/stored/btape.c:2684 src/stored/btape.c:2729
 msgid "Last block written"
 msgstr "Dernier bloc écrit"
 
-#: src/stored/btape.c:2673 src/stored/btape.c:2683
+#: src/stored/btape.c:2675 src/stored/btape.c:2685
 msgid "Block read back"
 msgstr ""
 
-#: src/stored/btape.c:2674
+#: src/stored/btape.c:2676
 #, c-format
 msgid ""
 "\n"
@@ -11417,7 +11500,7 @@ msgid ""
 "The blocks differ at byte %u\n"
 msgstr ""
 
-#: src/stored/btape.c:2675
+#: src/stored/btape.c:2677
 msgid ""
 "\n"
 "\n"
@@ -11427,172 +11510,172 @@ msgid ""
 "to write multi-tape Volumes.!!!!\n"
 msgstr ""
 
-#: src/stored/btape.c:2711
+#: src/stored/btape.c:2713
 #, c-format
 msgid "Last block at: %u:%u this_dev_block_num=%d\n"
 msgstr ""
 
-#: src/stored/btape.c:2725
+#: src/stored/btape.c:2727
 #, c-format
 msgid "Block not written: FileIndex=%u blk_block=%u Size=%u\n"
 msgstr ""
 
-#: src/stored/btape.c:2729
+#: src/stored/btape.c:2731
 msgid "Block not written"
 msgstr "Bloc non écrit"
 
-#: src/stored/btape.c:2744
+#: src/stored/btape.c:2746
 #, fuzzy, c-format
 msgid "End of tape %d:%d. Volume Bytes=%s. Write rate = %sB/s\n"
 msgstr "Fin de média sur le Volume \"%s\" Octets=%s Blocs=%s à %s.\n"
 
-#: src/stored/btape.c:2795
+#: src/stored/btape.c:2797
 msgid "Test writing blocks of 64512 bytes to tape.\n"
 msgstr ""
 
-#: src/stored/btape.c:2797
+#: src/stored/btape.c:2799
 msgid "How many blocks do you want to write? (1000): "
 msgstr ""
 
-#: src/stored/btape.c:2814
+#: src/stored/btape.c:2816
 #, c-format
 msgid "Begin writing %d Bacula blocks to tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2857
+#: src/stored/btape.c:2859
 #, c-format
 msgid "Begin writing raw blocks of %u bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:2888
+#: src/stored/btape.c:2890
 msgid "test autochanger"
 msgstr ""
 
-#: src/stored/btape.c:2889
+#: src/stored/btape.c:2891
 msgid "backspace file"
 msgstr ""
 
-#: src/stored/btape.c:2890
+#: src/stored/btape.c:2892
 msgid "backspace record"
 msgstr ""
 
-#: src/stored/btape.c:2891
+#: src/stored/btape.c:2893
 msgid "list device capabilities"
 msgstr ""
 
-#: src/stored/btape.c:2892
+#: src/stored/btape.c:2894
 msgid "clear tape errors"
 msgstr ""
 
-#: src/stored/btape.c:2893
+#: src/stored/btape.c:2895
 msgid "go to end of Bacula data for append"
 msgstr ""
 
-#: src/stored/btape.c:2894
+#: src/stored/btape.c:2896
 msgid "go to the physical end of medium"
 msgstr ""
 
-#: src/stored/btape.c:2895
+#: src/stored/btape.c:2897
 msgid "fill tape, write onto second volume"
 msgstr ""
 
-#: src/stored/btape.c:2896
+#: src/stored/btape.c:2898
 msgid "read filled tape"
 msgstr ""
 
-#: src/stored/btape.c:2897
+#: src/stored/btape.c:2899
 msgid "forward space a file"
 msgstr ""
 
-#: src/stored/btape.c:2898
+#: src/stored/btape.c:2900
 msgid "forward space a record"
 msgstr ""
 
-#: src/stored/btape.c:2899
+#: src/stored/btape.c:2901
 msgid "print this command"
 msgstr "affiche cette commande"
 
-#: src/stored/btape.c:2900
+#: src/stored/btape.c:2902
 msgid "write a Bacula label to the tape"
 msgstr ""
 
-#: src/stored/btape.c:2901
+#: src/stored/btape.c:2903
 msgid "load a tape"
 msgstr ""
 
-#: src/stored/btape.c:2902
+#: src/stored/btape.c:2904
 msgid "quit btape"
 msgstr ""
 
-#: src/stored/btape.c:2903
+#: src/stored/btape.c:2905
 msgid "use write() to fill tape"
 msgstr ""
 
-#: src/stored/btape.c:2904
+#: src/stored/btape.c:2906
 msgid "read and print the Bacula tape label"
 msgstr ""
 
-#: src/stored/btape.c:2905
+#: src/stored/btape.c:2907
 msgid "test record handling functions"
 msgstr ""
 
-#: src/stored/btape.c:2906
+#: src/stored/btape.c:2908
 msgid "rewind the tape"
 msgstr "rembobine la bande"
 
-#: src/stored/btape.c:2907
+#: src/stored/btape.c:2909
 msgid "read() tape block by block to EOT and report"
 msgstr ""
 
-#: src/stored/btape.c:2908
+#: src/stored/btape.c:2910
 msgid "Bacula read block by block to EOT and report"
 msgstr "Bacula lit bloc par bloc jusqu'à la fin de la bande (EOT) et résume"
 
-#: src/stored/btape.c:2909
+#: src/stored/btape.c:2911
 msgid ""
 "[file_size=n(GB)|nb_file=3|skip_zero|skip_random|skip_raw|skip_block] report "
 "drive speed"
 msgstr ""
 
-#: src/stored/btape.c:2910
+#: src/stored/btape.c:2912
 msgid "print tape status"
 msgstr ""
 
-#: src/stored/btape.c:2911
+#: src/stored/btape.c:2913
 msgid "General test Bacula tape functions"
 msgstr "test général des fonctions Bacula sur un lecteur de bande"
 
-#: src/stored/btape.c:2912
+#: src/stored/btape.c:2914
 msgid "write an EOF on the tape"
 msgstr "écrit un EOF sur la bande"
 
-#: src/stored/btape.c:2913
+#: src/stored/btape.c:2915
 msgid "write a single Bacula block"
 msgstr "écrit un seul bloc bacula"
 
-#: src/stored/btape.c:2914
+#: src/stored/btape.c:2916
 msgid "read a single record"
 msgstr "lit un seul enregistrement"
 
-#: src/stored/btape.c:2915
+#: src/stored/btape.c:2917
 msgid "read a single Bacula block"
 msgstr "lit un seul bloc bacula"
 
-#: src/stored/btape.c:2916
+#: src/stored/btape.c:2918
 msgid "quick fill command"
 msgstr ""
 
-#: src/stored/btape.c:2937
+#: src/stored/btape.c:2939
 #, c-format
 msgid "\"%s\" is an invalid command\n"
 msgstr "\"%s\" est une commande invalide.\n"
 
-#: src/stored/btape.c:2946
+#: src/stored/btape.c:2948
 #, c-format
 msgid "Interactive commands:\n"
 msgstr ""
 
-#: src/stored/btape.c:2957
+#: src/stored/btape.c:2959
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -11618,22 +11701,22 @@ msgstr ""
 "       -t          test - lecture de la configuration et sortie\n"
 "\n"
 
-#: src/stored/btape.c:3045
+#: src/stored/btape.c:3047
 #, c-format
 msgid "Mount second Volume on device %s and press return when ready: "
 msgstr ""
 
-#: src/stored/btape.c:3073
+#: src/stored/btape.c:3075
 #, c-format
 msgid "Mount blank Volume on device %s and press return when ready: "
 msgstr ""
 
-#: src/stored/btape.c:3093
+#: src/stored/btape.c:3095
 #, fuzzy, c-format
 msgid "End of Volume \"%s\" %d records.\n"
 msgstr "Le volume \"%s\" existe déjà en base.\n"
 
-#: src/stored/btape.c:3107
+#: src/stored/btape.c:3109
 #, fuzzy, c-format
 msgid "Read block=%u, VolBytes=%s rate=%sB/s\n"
 msgstr "Écriture blk_block=%u, dev_blk_num=%u VolBytes=%s rate=%.1f KB/s\n"
@@ -11708,223 +11791,247 @@ msgstr ""
 msgid "JobId=%s, Job %s waiting to reserve a device.\n"
 msgstr "Le job %s est en attente de réservation d'un device.\n"
 
-#: src/stored/block.c:89
+#: src/stored/block.c:102
 #, c-format
 msgid ""
 "Dump block %s %x: size=%d BlkNum=%d\n"
 "               Hdrcksum=%x cksum=%x\n"
 msgstr ""
 
-#: src/stored/block.c:102
+#: src/stored/block.c:115
 #, c-format
 msgid "   Rec: VId=%u VT=%u FI=%s Strm=%s len=%d p=%x\n"
 msgstr ""
 
-#: src/stored/block.c:158
+#: src/stored/block.c:171
 #, c-format
 msgid "%d block read errors not printed.\n"
 msgstr ""
 
-#: src/stored/block.c:248 src/stored/block.c:264 src/stored/block.c:274
+#: src/stored/block.c:264 src/stored/block.c:280 src/stored/block.c:290
 #, c-format
 msgid ""
 "Volume data error at %u:%u! Wanted ID: \"%s\", got \"%s\". Buffer "
 "discarded.\n"
 msgstr ""
 
-#: src/stored/block.c:289
+#: src/stored/block.c:305
 #, c-format
 msgid ""
 "Volume data error at %u:%u! Block length %u is insane (too large), probably "
 "due to a bad archive.\n"
 msgstr ""
 
-#: src/stored/block.c:315
+#: src/stored/block.c:331
 #, c-format
 msgid ""
 "Volume data error at %u:%u!\n"
 "Block checksum mismatch in block=%u len=%d: calc=%x blk=%x\n"
 msgstr ""
 
-#: src/stored/block.c:434
+#: src/stored/block.c:452
 #, fuzzy, c-format
 msgid "Cannot write block. Device at EOM. dev=%s\n"
 msgstr "Impossible d'écrire un bloc. Le Device est au bout EOM.\n"
 
-#: src/stored/block.c:439
+#: src/stored/block.c:458
 #, c-format
 msgid "Attempt to write on read-only Volume. dev=%s\n"
 msgstr ""
 
-#: src/stored/block.c:444
+#: src/stored/block.c:464
 #, c-format
 msgid "Attempt to write on closed device=%s\n"
 msgstr ""
 
-#: src/stored/block.c:491
+#: src/stored/block.c:513
 #, c-format
 msgid "User defined maximum volume capacity %s exceeded on device %s.\n"
 msgstr ""
 
-#: src/stored/block.c:506
+#: src/stored/block.c:528
 #, c-format
 msgid "Unable to write EOF. ERR=%s\n"
 msgstr "Impossible d'écrire le marqueur EOF. ERR=%s\n"
 
-#: src/stored/block.c:532 src/stored/block.c:557
+#: src/stored/block.c:554 src/stored/block.c:588
 msgid "Write block header zeroed.\n"
 msgstr ""
 
-#: src/stored/block.c:576
+#: src/stored/block.c:580
+#, c-format
+msgid "Block checksum changed during write: before=%ud after=%ud\n"
+msgstr ""
+
+#: src/stored/block.c:607
 #, c-format
 msgid "Write error at %u:%u on device %s. ERR=%s.\n"
 msgstr "Erreur d'écriture à %u:%u sur le device %s. ERR=%s\n"
 
-#: src/stored/block.c:583
+#: src/stored/block.c:614
 #, c-format
 msgid "End of Volume \"%s\" at %u:%u on device %s. Write of %u bytes got %d.\n"
 msgstr ""
 "Fin du volume \"%s\" à %u:%u sur le device %s. Ecriture de %u octets, eu "
 "%d.\n"
 
-#: src/stored/block.c:664 src/stored/block.c:670
+#: src/stored/block.c:695 src/stored/block.c:701
 #, c-format
 msgid "Backspace file at EOT failed. ERR=%s\n"
 msgstr ""
 
-#: src/stored/block.c:677
+#: src/stored/block.c:708
 #, c-format
 msgid "Backspace record at EOT failed. ERR=%s\n"
 msgstr ""
 
-#: src/stored/block.c:694
+#: src/stored/block.c:725
 #, c-format
 msgid "Re-read last block at EOT failed. ERR=%s"
 msgstr "Erreur sur la re-lecture du dernier bloc en EOT. ERR=%s"
 
-#: src/stored/block.c:704
+#: src/stored/block.c:735
 #, c-format
 msgid ""
 "Re-read of last block: block numbers differ by more than one.\n"
 "Probable tape misconfiguration and data loss. Read block=%u Want block=%u.\n"
 msgstr ""
 
-#: src/stored/block.c:709
+#: src/stored/block.c:740
 #, c-format
 msgid ""
 "Re-read of last block OK, but block numbers differ. Read block=%u Want block="
 "%u.\n"
 msgstr ""
 
-#: src/stored/block.c:713
+#: src/stored/block.c:744
 msgid "Re-read of last block succeeded.\n"
 msgstr "La re-lecture du dernier bloc écrit a réussi.\n"
 
-#: src/stored/block.c:745
+#: src/stored/block.c:777
 #, c-format
 msgid ""
 "Error writing final EOF to tape. This Volume may not be readable.\n"
 "%s"
 msgstr ""
 
-#: src/stored/block.c:759
+#: src/stored/block.c:791
 #, c-format
 msgid ""
 "Error writing final part to DVD. This Volume may not be readable.\n"
 "%s"
 msgstr ""
 
-#: src/stored/block.c:861
+#: src/stored/block.c:801
+#, fuzzy
+msgid "Error sending Volume info to Director.\n"
+msgstr "Erreur pendant la récupération des informations sur un Volume : %s"
+
+#: src/stored/block.c:896
 #, c-format
 msgid ""
 "Error while writing, current part number is less than the total number of "
 "parts (%d/%d, device=%s)\n"
 msgstr ""
 
-#: src/stored/block.c:869
+#: src/stored/block.c:904
 #, c-format
 msgid "Unable to open device next part %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/block.c:889
+#: src/stored/block.c:924
 #, c-format
 msgid ""
 "End of Volume \"%s\" at %u:%u on device %s (part_size=%s, free_space=%s, "
 "free_space_errno=%d, errmsg=%s).\n"
 msgstr ""
 
-#: src/stored/block.c:902
+#: src/stored/block.c:937
 #, c-format
 msgid ""
 "End of Volume \"%s\" at %u:%u on device %s (part_size=%s, free_space=%s, "
 "free_space_errno=%d).\n"
 msgstr ""
 
-#: src/stored/block.c:962
+#: src/stored/block.c:980
+#, fuzzy
+msgid "Job failed or canceled.\n"
+msgstr "Le job %d est annulé.\n"
+
+#: src/stored/block.c:986
+msgid "Attempt to read past end of tape or file.\n"
+msgstr ""
+
+#: src/stored/block.c:995
+#, c-format
+msgid "Attempt to read closed device: fd=%d at file:blk %u:%u on device %s\n"
+msgstr ""
+
+#: src/stored/block.c:1005
 #, c-format
 msgid "Block buffer size looping problem on device %s\n"
 msgstr ""
 
-#: src/stored/block.c:974
+#: src/stored/block.c:1017
 #, fuzzy, c-format
 msgid "Unable to open device part=%d %s: ERR=%s\n"
 msgstr "3910 Impossible d'ouvrir le device %s : ERR=%s\n"
 
-#: src/stored/block.c:1000
+#: src/stored/block.c:1044
 #, c-format
 msgid "Read error on fd=%d at file:blk %u:%u on device %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/block.c:1013
+#: src/stored/block.c:1057
 #, c-format
 msgid "Read zero bytes at %u:%u on device %s.\n"
 msgstr ""
 
-#: src/stored/block.c:1037
+#: src/stored/block.c:1081
 #, c-format
 msgid ""
 "Volume data error at %u:%u! Very short block of %d bytes on device %s "
 "discarded.\n"
 msgstr ""
 
-#: src/stored/block.c:1062
+#: src/stored/block.c:1107
 #, c-format
 msgid "Block length %u is greater than buffer %u. Attempting recovery.\n"
 msgstr ""
 
-#: src/stored/block.c:1081
+#: src/stored/block.c:1127
 #, c-format
 msgid "Setting block buffer size to %u bytes.\n"
 msgstr ""
 
-#: src/stored/block.c:1096
+#: src/stored/block.c:1142
 #, c-format
 msgid ""
 "Volume data error at %u:%u! Short block of %d bytes on device %s discarded.\n"
 msgstr ""
 
-#: src/lib/plugins.c:112
+#: src/lib/plugins.c:117
 #, fuzzy, c-format
 msgid "Failed to open Plugin directory %s: ERR=%s\n"
 msgstr "3910 Impossible d'ouvrir le device %s : ERR=%s\n"
 
-#: src/lib/plugins.c:129
+#: src/lib/plugins.c:134
 #, c-format
 msgid "Failed to find any plugins in %s\n"
 msgstr ""
 
-#: src/lib/plugins.c:163
+#: src/lib/plugins.c:168
 #, fuzzy, c-format
 msgid "dlopen plugin %s failed: ERR=%s\n"
 msgstr "fopen %s en erreur : ERR=%s\n"
 
-#: src/lib/plugins.c:174
+#: src/lib/plugins.c:179
 #, fuzzy, c-format
 msgid "Lookup of loadPlugin in plugin %s failed: ERR=%s\n"
 msgstr "fopen %s en erreur : ERR=%s\n"
 
 # Impossible d'ouvrir le fichier de spool des attributs : ERR=%s
-#: src/lib/plugins.c:183
+#: src/lib/plugins.c:188
 #, fuzzy, c-format
 msgid "Lookup of unloadPlugin in plugin %s failed: ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier de spool des attributs %s : ERR=%s\n"
@@ -12094,56 +12201,75 @@ msgstr "  Adresse du buffer : %p\n"
 msgid "Damaged buffer:  %6u bytes allocated at line %d of %s %s\n"
 msgstr ""
 
-#: src/lib/rwlock.c:302
-msgid "rwl_writeunlock called too many times.\n"
+#: src/lib/sellist.c:69
+#, fuzzy
+msgid "Negative numbers not permitted.\n"
+msgstr "Les nombres négatifs ne sont pas autorisés\n"
+
+#: src/lib/sellist.c:106
+#, fuzzy
+msgid "Selection items must be be greater than zero.\n"
+msgstr "Les valeurs doivent être supérieurs à zéro.\n"
+
+#: src/lib/sellist.c:110
+#, fuzzy
+msgid "Selection item too large.\n"
+msgstr "Slot trop grand.\n"
+
+#: src/lib/sellist.c:167
+msgid "No input string given.\n"
 msgstr ""
 
 #: src/lib/rwlock.c:307
+msgid "rwl_writeunlock called too many times.\n"
+msgstr ""
+
+#: src/lib/rwlock.c:312
 msgid "rwl_writeunlock by non-owner.\n"
 msgstr ""
 
-#: src/lib/rwlock.c:432 src/lib/save/devlock.c:501 src/lib/devlock.c:501
+#: src/lib/rwlock.c:437 src/lib/save/devlock.c:501 src/lib/devlock.c:501
 #, c-format
 msgid "Thread %d found unchanged elements %d times\n"
 msgstr ""
 
-#: src/lib/rwlock.c:502 src/lib/save/devlock.c:571 src/lib/devlock.c:571
+#: src/lib/rwlock.c:507 src/lib/save/devlock.c:571 src/lib/devlock.c:571
 #, c-format
 msgid "%02d: interval %d, writes %d, reads %d\n"
 msgstr ""
 
-#: src/lib/rwlock.c:512 src/lib/save/devlock.c:581 src/lib/devlock.c:581
+#: src/lib/rwlock.c:517 src/lib/save/devlock.c:581 src/lib/devlock.c:581
 #, c-format
 msgid "data %02d: value %d, %d writes\n"
 msgstr ""
 
-#: src/lib/rwlock.c:517 src/lib/save/devlock.c:586 src/lib/devlock.c:586
+#: src/lib/rwlock.c:522 src/lib/save/devlock.c:586 src/lib/devlock.c:586
 #, c-format
 msgid "Total: %d thread writes, %d data writes\n"
 msgstr ""
 
-#: src/lib/rwlock.c:589 src/lib/save/devlock.c:658 src/lib/devlock.c:658
+#: src/lib/rwlock.c:594 src/lib/save/devlock.c:658 src/lib/devlock.c:658
 msgid "Try write lock"
 msgstr ""
 
-#: src/lib/rwlock.c:595 src/lib/save/devlock.c:664 src/lib/devlock.c:664
+#: src/lib/rwlock.c:600 src/lib/save/devlock.c:664 src/lib/devlock.c:664
 msgid "Try read lock"
 msgstr ""
 
-#: src/lib/rwlock.c:651 src/lib/save/devlock.c:720 src/lib/devlock.c:720
+#: src/lib/rwlock.c:656 src/lib/save/devlock.c:720 src/lib/devlock.c:720
 msgid "Create thread"
 msgstr ""
 
-#: src/lib/rwlock.c:661 src/lib/save/devlock.c:730 src/lib/devlock.c:730
+#: src/lib/rwlock.c:666 src/lib/save/devlock.c:730 src/lib/devlock.c:730
 msgid "Join thread"
 msgstr ""
 
-#: src/lib/rwlock.c:663 src/lib/save/devlock.c:732 src/lib/devlock.c:732
+#: src/lib/rwlock.c:668 src/lib/save/devlock.c:732 src/lib/devlock.c:732
 #, c-format
 msgid "%02d: interval %d, updates %d, r_collisions %d, w_collisions %d\n"
 msgstr ""
 
-#: src/lib/rwlock.c:675 src/lib/save/devlock.c:744 src/lib/devlock.c:744
+#: src/lib/rwlock.c:680 src/lib/save/devlock.c:744 src/lib/devlock.c:744
 #, c-format
 msgid "data %02d: value %d, %d updates\n"
 msgstr ""
@@ -12157,7 +12283,7 @@ msgstr "Statut OK\n"
 msgid "bget_msg: unknown signal %d\n"
 msgstr ""
 
-#: src/lib/bsock.c:126
+#: src/lib/bsock.c:131
 #, c-format
 msgid ""
 "Could not connect to %s on %s:%d. ERR=%s\n"
@@ -12166,155 +12292,148 @@ msgstr ""
 "Impossible de se connecter à %s sur %s:%d. ERR=%s\n"
 "Réessaie...\n"
 
-#: src/lib/bsock.c:132
+#: src/lib/bsock.c:137
 #, c-format
 msgid "Unable to connect to %s on %s:%d. ERR=%s\n"
 msgstr "Impossible de se connecter à %s sur %s:%d. ERR=%s\n"
 
-#: src/lib/bsock.c:202
+#: src/lib/bsock.c:207
 #, fuzzy, c-format
-msgid "gethostbyname() for host \"%s\" failed: ERR=%s\n"
+msgid "bnet_host2ipaddrs() for host \"%s\" failed: ERR=%s\n"
 msgstr "Impossible de supprimer le volume \"%s\". ERR=%s"
 
-#: src/lib/bsock.c:222
+#: src/lib/bsock.c:260
 #, c-format
 msgid "Socket open error. proto=%d port=%d. ERR=%s\n"
 msgstr "Ouverture de la socket en erreur. proto=%d port=%d. ERR=%s\n"
 
-#: src/lib/bsock.c:233
+#: src/lib/bsock.c:273
 #, fuzzy, c-format
 msgid "Source address bind error. proto=%d. ERR=%s\n"
 msgstr "Ouverture de la socket en erreur. proto=%d port=%d. ERR=%s\n"
 
-#: src/lib/bsock.c:244 src/lib/bsock.c:280 src/lib/bnet_server.c:201
+#: src/lib/bsock.c:284 src/lib/bsock.c:320 src/lib/bnet_server.c:218
 #, c-format
 msgid "Cannot set SO_KEEPALIVE on socket: %s\n"
 msgstr "Impossible de positionner SO_KEEPALIVE sur la socket : %s\n"
 
-#: src/lib/bsock.c:252
+#: src/lib/bsock.c:292
 #, fuzzy, c-format
-msgid "Cannot set SO_KEEPIDLE on socket: %s\n"
+msgid "Cannot set TCP_KEEPIDLE on socket: %s\n"
 msgstr "Impossible de positionner SO_KEEPALIVE sur la socket : %s\n"
 
-#: src/lib/bsock.c:299
+#: src/lib/bsock.c:339
 #, fuzzy, c-format
 msgid "Could not init bsock mutex. ERR=%s\n"
 msgstr "Impossible d'initialiser la queue cliente : ERR=%s\n"
 
-#: src/lib/bsock.c:334
+#: src/lib/bsock.c:374
 #, c-format
 msgid "Socket has errors=%d on call to %s:%s:%d\n"
 msgstr ""
 
-#: src/lib/bsock.c:341
+#: src/lib/bsock.c:381
 #, c-format
 msgid "Socket is terminated=%d on call to %s:%s:%d\n"
 msgstr ""
 
-#: src/lib/bsock.c:349
+#: src/lib/bsock.c:389
 #, c-format
 msgid "Socket has insane msglen=%d on call to %s:%s:%d\n"
 msgstr ""
 
-#: src/lib/bsock.c:387
+#: src/lib/bsock.c:427
 #, fuzzy, c-format
 msgid "Write error sending %d bytes to %s:%s:%d: ERR=%s\n"
 msgstr "Erreur de lecture de %s:%s:%d : ERR=%s\n"
 
-#: src/lib/bsock.c:393
+#: src/lib/bsock.c:433
 #, c-format
 msgid "Wrote %d bytes to %s:%s:%d, but only %d accepted.\n"
 msgstr ""
 
-#: src/lib/bsock.c:482 src/lib/bsock.c:543
+#: src/lib/bsock.c:522 src/lib/bsock.c:583
 #, c-format
 msgid "Read expected %d got %d from %s:%s:%d\n"
 msgstr "Attendait %d en lecture, eu %d de %s:%s:%d\n"
 
-#: src/lib/bsock.c:502
+#: src/lib/bsock.c:542
 #, c-format
 msgid "Packet size too big from \"%s:%s:%d. Terminating connection.\n"
 msgstr ""
 
-#: src/lib/bsock.c:532
+#: src/lib/bsock.c:572
 #, c-format
 msgid "Read error from %s:%s:%d: ERR=%s\n"
 msgstr "Erreur de lecture de %s:%s:%d : ERR=%s\n"
 
-#: src/lib/bsock.c:623
+#: src/lib/bsock.c:663
 #, fuzzy
 msgid "fread attr spool I/O error.\n"
 msgstr "Erreur pendant l'écriture des attributs dans le spool. ERR=%s\n"
 
-#: src/lib/bsock.c:684
+#: src/lib/bsock.c:724
 #, fuzzy
 msgid "Could not malloc BSOCK data buffer\n"
 msgstr "Impossible d'ouvrir la base de données \"%s\".\n"
 
-#: src/lib/bsock.c:702 src/lib/bsock.c:726
+#: src/lib/bsock.c:742 src/lib/bsock.c:761
 #, c-format
 msgid "sockopt error: %s\n"
 msgstr "erreur sockopt : %s\n"
 
-#: src/lib/bsock.c:708 src/lib/bsock.c:732
+#: src/lib/bsock.c:748 src/lib/bsock.c:767
 #, c-format
 msgid "Warning network buffer = %d bytes not max size.\n"
 msgstr ""
 
-#: src/lib/bsock.c:712 src/lib/bsock.c:736
-#, c-format
-msgid "Network buffer size %d not multiple of tape block size.\n"
-msgstr ""
-"La taille du buffer réseau %d n'est pas un multiple de la taille de bloc du "
-"lecteur.\n"
-
-#: src/lib/bsock.c:757 src/lib/bsock.c:791
+#: src/lib/bsock.c:787 src/lib/bsock.c:821
 #, fuzzy, c-format
 msgid "fcntl F_GETFL error. ERR=%s\n"
 msgstr "erreur de fermeture : ERR=%s\n"
 
-#: src/lib/bsock.c:763 src/lib/bsock.c:797 src/lib/bsock.c:829
+#: src/lib/bsock.c:793 src/lib/bsock.c:827 src/lib/bsock.c:859
 #, fuzzy, c-format
 msgid "fcntl F_SETFL error. ERR=%s\n"
 msgstr "erreur de fermeture : ERR=%s\n"
 
-#: src/lib/bsock.c:1002 src/qt-console/bcomm/dircomm_auth.cpp:112
+#: src/lib/bsock.c:1032 src/qt-console/bcomm/dircomm_auth.cpp:112
 #, fuzzy, c-format
 msgid "Director authorization problem at \"%s:%d\"\n"
 msgstr "Pas d'enregistrement trouvé en base pour : %s\n"
 
-#: src/lib/bsock.c:1009 src/qt-console/bcomm/dircomm_auth.cpp:119
+#: src/lib/bsock.c:1039 src/qt-console/bcomm/dircomm_auth.cpp:119
 #, c-format
 msgid ""
 "Authorization problem: Remote server at \"%s:%d\" did not advertise required "
 "TLS support.\n"
 msgstr ""
 
-#: src/lib/bsock.c:1017 src/qt-console/bcomm/dircomm_auth.cpp:127
+#: src/lib/bsock.c:1047 src/qt-console/bcomm/dircomm_auth.cpp:127
 #, c-format
 msgid ""
 "Authorization problem with Director at \"%s:%d\": Remote server requires "
 "TLS.\n"
 msgstr ""
 
-#: src/lib/bsock.c:1029 src/qt-console/bcomm/dircomm_auth.cpp:138
+#: src/lib/bsock.c:1059 src/qt-console/bcomm/dircomm_auth.cpp:138
 #, fuzzy, c-format
 msgid "TLS negotiation failed with Director at \"%s:%d\"\n"
 msgstr "Négociation TLS échouée avec le SD « %s:%d ».\n"
 
-#: src/lib/bsock.c:1039 src/qt-console/bcomm/dircomm_auth.cpp:150
+#: src/lib/bsock.c:1069 src/qt-console/bcomm/dircomm_auth.cpp:150
 #, fuzzy, c-format
 msgid ""
 "Bad response to Hello command: ERR=%s\n"
 "The Director at \"%s:%d\" is probably not running.\n"
 msgstr "Mauvaise réponse à la commande Hello : ERR=%s\n"
 
-#: src/lib/bsock.c:1048 src/qt-console/bcomm/dircomm_auth.cpp:159
+#: src/lib/bsock.c:1078 src/qt-console/bcomm/dircomm_auth.cpp:159
 #, fuzzy, c-format
 msgid "Director at \"%s:%d\" rejected Hello command\n"
 msgstr "Le File Daemon  « %s:%d » a rejeté la commande Hello\n"
 
-#: src/lib/bsock.c:1058 src/qt-console/bcomm/dircomm_auth.cpp:171
+#: src/lib/bsock.c:1088 src/qt-console/bcomm/dircomm_auth.cpp:171
 #, fuzzy, c-format
 msgid ""
 "Authorization problem with Director at \"%s:%d\"\n"
@@ -12331,40 +12450,40 @@ msgstr ""
 "Vous trouverez de l'aide sur\n"
 "http://www.bacula.org/rel-manual/faq.html#AuthorizationErrors\n"
 
-#: src/lib/message.c:340 src/lib/message.c:350
+#: src/lib/message.c:362 src/lib/message.c:372
 #, c-format
 msgid "Could not open console message file %s: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:355
+#: src/lib/message.c:377
 #, c-format
 msgid "Could not get con mutex: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:460
+#: src/lib/message.c:482
 msgid "Bacula Message"
 msgstr "Message de Bacula"
 
-#: src/lib/message.c:464
+#: src/lib/message.c:486
 #, c-format
 msgid "open mail pipe %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:532
+#: src/lib/message.c:577
 msgid "open mail pipe failed.\n"
 msgstr ""
 
-#: src/lib/message.c:544
+#: src/lib/message.c:590
 #, c-format
 msgid "close error: ERR=%s\n"
 msgstr "erreur de fermeture : ERR=%s\n"
 
-#: src/lib/message.c:555
+#: src/lib/message.c:601
 #, c-format
 msgid "Mail prog: %s"
 msgstr ""
 
-#: src/lib/message.c:564
+#: src/lib/message.c:610
 #, c-format
 msgid ""
 "Mail program terminated in error.\n"
@@ -12375,12 +12494,16 @@ msgstr ""
 "CMD=%s\n"
 "ERR=%s\n"
 
-#: src/lib/message.c:662
+#: src/lib/message.c:713
 #, c-format
 msgid "fopen %s failed: ERR=%s\n"
 msgstr "fopen %s en erreur : ERR=%s\n"
 
-#: src/lib/message.c:835
+#: src/lib/message.c:835 src/lib/message.c:838
+msgid "Msg delivery error: Unable to store data in database.\n"
+msgstr ""
+
+#: src/lib/message.c:890
 #, fuzzy, c-format
 msgid ""
 "Msg delivery error: Operator mail program terminated in error.\n"
@@ -12391,126 +12514,126 @@ msgstr ""
 "CMD=%s\n"
 "ERR=%s\n"
 
-#: src/lib/message.c:856
+#: src/lib/message.c:911
 #, fuzzy, c-format
 msgid "Msg delivery error: fopen %s failed: ERR=%s\n"
 msgstr "fopen %s en erreur : ERR=%s\n"
 
-#: src/lib/message.c:1175
+#: src/lib/message.c:1230
 #, c-format
 msgid "%s: ABORTING due to ERROR in %s:%d\n"
 msgstr ""
 
-#: src/lib/message.c:1179
+#: src/lib/message.c:1234
 #, c-format
 msgid "%s: ERROR TERMINATION at %s:%d\n"
 msgstr ""
 
-#: src/lib/message.c:1184
+#: src/lib/message.c:1239
 #, c-format
 msgid "%s: Fatal Error because: "
 msgstr "%s : Erreur Fatale car : "
 
-#: src/lib/message.c:1186
+#: src/lib/message.c:1241
 #, c-format
 msgid "%s: Fatal Error at %s:%d because:\n"
 msgstr "%s : Erreur Fatale à %s:%d car :\n"
 
-#: src/lib/message.c:1190
+#: src/lib/message.c:1245
 #, c-format
 msgid "%s: ERROR: "
 msgstr "%s : ERREUR : "
 
-#: src/lib/message.c:1192
+#: src/lib/message.c:1247
 #, c-format
 msgid "%s: ERROR in %s:%d "
 msgstr "%s : ERREUR dans %s:%d "
 
-#: src/lib/message.c:1195
+#: src/lib/message.c:1250
 #, c-format
 msgid "%s: Warning: "
 msgstr "%s : Attention : "
 
-#: src/lib/message.c:1198
+#: src/lib/message.c:1253
 #, c-format
 msgid "%s: Security violation: "
 msgstr ""
 
-#: src/lib/message.c:1286
+#: src/lib/message.c:1341
 #, c-format
 msgid "%s ABORTING due to ERROR\n"
 msgstr ""
 
-#: src/lib/message.c:1289
+#: src/lib/message.c:1344
 #, c-format
 msgid "%s ERROR TERMINATION\n"
 msgstr ""
 
-#: src/lib/message.c:1292
+#: src/lib/message.c:1347
 #, fuzzy, c-format
 msgid "%s JobId %u: Fatal error: "
 msgstr "%s : %s Erreur fatale : "
 
-#: src/lib/message.c:1301
+#: src/lib/message.c:1356
 #, fuzzy, c-format
 msgid "%s JobId %u: Error: "
 msgstr "%s : %s Erreur : "
 
-#: src/lib/message.c:1307
+#: src/lib/message.c:1362
 #, fuzzy, c-format
 msgid "%s JobId %u: Warning: "
 msgstr "%s : Attention : "
 
-#: src/lib/message.c:1313
+#: src/lib/message.c:1368
 #, c-format
 msgid "%s JobId %u: Security violation: "
 msgstr ""
 
-#: src/lib/bnet_server.c:108
+#: src/lib/bnet_server.c:125
 #, c-format
 msgid "Cannot open stream socket. ERR=%s. Current %s All %s\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:121
+#: src/lib/bnet_server.c:138
 #, c-format
 msgid "Cannot set SO_REUSEADDR on socket: %s\n"
 msgstr "Impossible de positionner l'option SO_REUSEADDR sur la socket : %s\n"
 
-#: src/lib/bnet_server.c:130
+#: src/lib/bnet_server.c:147
 #, c-format
 msgid "Cannot bind port %d: ERR=%s: Retrying ...\n"
 msgstr "Impossible de s'attacher au port %d : ERR=%s : Réessaie...\n"
 
-#: src/lib/bnet_server.c:135
+#: src/lib/bnet_server.c:152
 #, c-format
 msgid "Cannot bind port %d: ERR=%s.\n"
 msgstr "Impossible de s'attacher au port %d : ERR=%s.\n"
 
-#: src/lib/bnet_server.c:146
+#: src/lib/bnet_server.c:163
 #, c-format
 msgid "Could not init client queue: ERR=%s\n"
 msgstr "Impossible d'initialiser la queue cliente : ERR=%s\n"
 
-#: src/lib/bnet_server.c:165
+#: src/lib/bnet_server.c:182
 #, c-format
 msgid "Error in select: %s\n"
 msgstr "Erreur sur le select : %s\n"
 
-#: src/lib/bnet_server.c:186
+#: src/lib/bnet_server.c:203
 #, c-format
 msgid "Connection from %s:%d refused by hosts.access\n"
 msgstr "Connexion depuis %s:%d refusée par hosts.access\n"
 
-#: src/lib/bnet_server.c:212
+#: src/lib/bnet_server.c:229
 msgid "Could not create client BSOCK.\n"
 msgstr "Impossible de créer la structure BSOCK cliente.\n"
 
-#: src/lib/bnet_server.c:219
+#: src/lib/bnet_server.c:236
 #, c-format
 msgid "Could not add job to client queue: ERR=%s\n"
 msgstr "Impossible d'ajouter le job à la queue cliente : ERR=%s\n"
 
-#: src/lib/bnet_server.c:236
+#: src/lib/bnet_server.c:253
 #, c-format
 msgid "Could not destroy client queue: ERR=%s\n"
 msgstr "Impossible de détruire la queue cliente : ERR=%s\n"
@@ -12978,7 +13101,7 @@ msgstr ""
 msgid "Truncate"
 msgstr ""
 
-#: src/lib/util.c:409 src/filed/restore.c:1158
+#: src/lib/util.c:409 src/filed/restore.c:1164
 msgid "None"
 msgstr ""
 
@@ -13031,7 +13154,7 @@ msgstr "Nom de Volume invalide : %s\n"
 
 #: src/lib/util.c:753 src/lib/util.c:763 src/lib/util.c:771 src/lib/util.c:778
 #: src/lib/util.c:785 src/lib/util.c:799 src/lib/util.c:809 src/lib/util.c:822
-#: src/lib/util.c:833 src/filed/restore.c:1174
+#: src/lib/util.c:833 src/filed/restore.c:1180
 msgid "*none*"
 msgstr ""
 
@@ -13057,7 +13180,7 @@ msgstr ""
 msgid "writeunlock by non-owner.\n"
 msgstr ""
 
-#: src/lib/daemon.c:64
+#: src/lib/daemon.c:65
 #, fuzzy, c-format
 msgid "Cannot fork to become daemon: ERR=%s\n"
 msgstr "Impossible de forker pour passer en mode démon : %s\n"
@@ -13244,7 +13367,7 @@ msgstr "JCR use_count=%d JobId=%d\n"
 msgid "pthread_setspecific failed: ERR=%s\n"
 msgstr "Erreur sur l'ouverture du périphérique. ERR=%s\n"
 
-#: src/lib/jcr.c:1097
+#: src/lib/jcr.c:1103
 #, c-format
 msgid ""
 "Watchdog sending kill after %d secs to thread stalled reading Storage "
@@ -13253,7 +13376,7 @@ msgstr ""
 "Le watchdog a envoyé un signal après %d secs au thread bloqué en écoute du "
 "SD.\n"
 
-#: src/lib/jcr.c:1109
+#: src/lib/jcr.c:1115
 #, c-format
 msgid ""
 "Watchdog sending kill after %d secs to thread stalled reading File daemon.\n"
@@ -13261,7 +13384,7 @@ msgstr ""
 "Le watchdog a envoyé un signal après %d secs au thread bloqué en écoute du "
 "FD.\n"
 
-#: src/lib/jcr.c:1121
+#: src/lib/jcr.c:1127
 #, c-format
 msgid ""
 "Watchdog sending kill after %d secs to thread stalled reading Director.\n"
@@ -13484,31 +13607,31 @@ msgstr "TLS activé mais non configuré.\n"
 msgid "TLS enable but not configured.\n"
 msgstr "TLS actif mais non configuré.\n"
 
-#: src/lib/bnet.c:423
+#: src/lib/bnet.c:481
 msgid "No problem."
 msgstr "Pas de problème."
 
-#: src/lib/bnet.c:426
+#: src/lib/bnet.c:484
 msgid "Authoritative answer for host not found."
 msgstr ""
 
-#: src/lib/bnet.c:429
+#: src/lib/bnet.c:487
 msgid "Non-authoritative for host not found, or ServerFail."
 msgstr ""
 
-#: src/lib/bnet.c:432
+#: src/lib/bnet.c:490
 msgid "Non-recoverable errors, FORMERR, REFUSED, or NOTIMP."
 msgstr ""
 
-#: src/lib/bnet.c:435
+#: src/lib/bnet.c:493
 msgid "Valid name, no data record of resquested type."
 msgstr ""
 
-#: src/lib/bnet.c:438
+#: src/lib/bnet.c:496
 msgid "Unknown error."
 msgstr "Erreur inconnue."
 
-#: src/lib/bnet.c:697
+#: src/lib/bnet.c:755
 #, c-format
 msgid "Unknown sig %d"
 msgstr "sig inconnu %d"
@@ -13517,248 +13640,275 @@ msgstr "sig inconnu %d"
 msgid "Invalid signal number"
 msgstr ""
 
-#: src/lib/signal.c:151 src/lib/signal.c:153
+#: src/lib/signal.c:152 src/lib/signal.c:154
 #, c-format
 msgid "Bacula interrupted by signal %d: %s\n"
 msgstr "Bacula a reçu le signal %d : %s\n"
 
-#: src/lib/signal.c:166
+#: src/lib/signal.c:167
 #, c-format
 msgid "Kaboom! %s, %s got signal %d - %s. Attempting traceback.\n"
 msgstr ""
 "Kaboom ! %s, %s a reçu le signal %d - %s. Tentative de dump des traces.\n"
 
-#: src/lib/signal.c:168
+#: src/lib/signal.c:169
 #, c-format
 msgid "Kaboom! exepath=%s\n"
 msgstr "Kaboom ! exepath=%s\n"
 
-#: src/lib/signal.c:202
+#: src/lib/signal.c:210
 #, c-format
 msgid "Fork error: ERR=%s\n"
 msgstr "Fork en erreur : ERR=%s\n"
 
-#: src/lib/signal.c:210
+#: src/lib/signal.c:218
 #, fuzzy, c-format
 msgid "Calling: %s %s %s %s\n"
 msgstr "Exécution : %s %s %s\n"
 
-#: src/lib/signal.c:214
+#: src/lib/signal.c:222
 #, c-format
 msgid "execv: %s failed: ERR=%s\n"
 msgstr "execv : %s en échec : ERR=%s\n"
 
-#: src/lib/signal.c:235
+#: src/lib/signal.c:244
 #, c-format
-msgid "It looks like the traceback worked ...\n"
+msgid "It looks like the traceback worked...\n"
 msgstr ""
 
-#: src/lib/signal.c:289
+#: src/lib/signal.c:246
+#, c-format
+msgid "The btraceback call returned %d\n"
+msgstr ""
+
+#: src/lib/signal.c:306
 #, c-format
 msgid "BA_NSIG too small (%d) should be (%d)\n"
 msgstr "BA_NSIG trop petit (%d) devrait être (%d)\n"
 
-#: src/lib/signal.c:295
+#: src/lib/signal.c:312
 msgid "UNKNOWN SIGNAL"
 msgstr "SIGNAL INCONNU"
 
-#: src/lib/signal.c:296
+#: src/lib/signal.c:313
 msgid "Hangup"
 msgstr "Hangup"
 
-#: src/lib/signal.c:297
+#: src/lib/signal.c:314
 msgid "Interrupt"
 msgstr ""
 
-#: src/lib/signal.c:298
+#: src/lib/signal.c:315
 msgid "Quit"
 msgstr "Quit"
 
-#: src/lib/signal.c:299
+#: src/lib/signal.c:316
 msgid "Illegal instruction"
 msgstr ""
 
-#: src/lib/signal.c:300
+#: src/lib/signal.c:317
 msgid "Trace/Breakpoint trap"
 msgstr ""
 
-#: src/lib/signal.c:301
+#: src/lib/signal.c:318
 msgid "Abort"
 msgstr "Abort"
 
-#: src/lib/signal.c:303
+#: src/lib/signal.c:320
 msgid "EMT instruction (Emulation Trap)"
 msgstr ""
 
-#: src/lib/signal.c:306
+#: src/lib/signal.c:323
 msgid "IOT trap"
 msgstr "IOT trap"
 
-#: src/lib/signal.c:308
+#: src/lib/signal.c:325
 msgid "BUS error"
 msgstr "BUS error"
 
-#: src/lib/signal.c:309
+#: src/lib/signal.c:326
 msgid "Floating-point exception"
 msgstr ""
 
-#: src/lib/signal.c:310
+#: src/lib/signal.c:327
 msgid "Kill, unblockable"
 msgstr ""
 
-#: src/lib/signal.c:311
+#: src/lib/signal.c:328
 msgid "User-defined signal 1"
 msgstr ""
 
-#: src/lib/signal.c:312
+#: src/lib/signal.c:329
 msgid "Segmentation violation"
 msgstr "Erreur de segmentation"
 
-#: src/lib/signal.c:313
+#: src/lib/signal.c:330
 msgid "User-defined signal 2"
 msgstr ""
 
-#: src/lib/signal.c:314
+#: src/lib/signal.c:331
 msgid "Broken pipe"
 msgstr "Tube brisé"
 
-#: src/lib/signal.c:315
+#: src/lib/signal.c:332
 msgid "Alarm clock"
 msgstr "Alarm clock"
 
-#: src/lib/signal.c:316
+#: src/lib/signal.c:333
 msgid "Termination"
 msgstr ""
 
-#: src/lib/signal.c:318
+#: src/lib/signal.c:335
 msgid "Stack fault"
 msgstr ""
 
-#: src/lib/signal.c:320
+#: src/lib/signal.c:337
 msgid "Child status has changed"
 msgstr ""
 
-#: src/lib/signal.c:321
+#: src/lib/signal.c:338
 msgid "Continue"
 msgstr "Continue"
 
-#: src/lib/signal.c:322
+#: src/lib/signal.c:339
 msgid "Stop, unblockable"
 msgstr ""
 
-#: src/lib/signal.c:323
+#: src/lib/signal.c:340
 msgid "Keyboard stop"
 msgstr ""
 
-#: src/lib/signal.c:324
+#: src/lib/signal.c:341
 msgid "Background read from tty"
 msgstr ""
 
-#: src/lib/signal.c:325
+#: src/lib/signal.c:342
 msgid "Background write to tty"
 msgstr ""
 
-#: src/lib/signal.c:326
+#: src/lib/signal.c:343
 msgid "Urgent condition on socket"
 msgstr ""
 
-#: src/lib/signal.c:327
+#: src/lib/signal.c:344
 msgid "CPU limit exceeded"
 msgstr ""
 
-#: src/lib/signal.c:328
+#: src/lib/signal.c:345
 msgid "File size limit exceeded"
 msgstr ""
 
-#: src/lib/signal.c:329
+#: src/lib/signal.c:346
 msgid "Virtual alarm clock"
 msgstr ""
 
-#: src/lib/signal.c:330
+#: src/lib/signal.c:347
 msgid "Profiling alarm clock"
 msgstr ""
 
-#: src/lib/signal.c:331
+#: src/lib/signal.c:348
 msgid "Window size change"
 msgstr ""
 
-#: src/lib/signal.c:332
+#: src/lib/signal.c:349
 msgid "I/O now possible"
 msgstr ""
 
-#: src/lib/signal.c:334
+#: src/lib/signal.c:351
 msgid "Power failure restart"
 msgstr ""
 
-#: src/lib/signal.c:337
+#: src/lib/signal.c:354
 msgid "No runnable lwp"
 msgstr ""
 
-#: src/lib/signal.c:340
+#: src/lib/signal.c:357
 msgid "SIGLWP special signal used by thread library"
 msgstr ""
 
-#: src/lib/signal.c:343
+#: src/lib/signal.c:360
 msgid "Checkpoint Freeze"
 msgstr ""
 
-#: src/lib/signal.c:346
+#: src/lib/signal.c:363
 msgid "Checkpoint Thaw"
 msgstr ""
 
-#: src/lib/signal.c:349
+#: src/lib/signal.c:366
 msgid "Thread Cancellation"
 msgstr ""
 
-#: src/lib/signal.c:352
+#: src/lib/signal.c:369
 msgid "Resource Lost (e.g. record-lock lost)"
 msgstr ""
 
+#: src/lib/ini.c:106 src/lib/ini.c:118
+#, fuzzy, c-format
+msgid ""
+"Config file error: %s\n"
+"            : Line %d, col %d of file %s\n"
+"%s\n"
+msgstr ""
+"Erreur de config : %s\n"
+"                 : ligne %d, col %d du fichier %s\n"
+"%s\n"
+"%s"
+
+#: src/lib/ini.c:308 src/lib/ini.c:383
+#, fuzzy, c-format
+msgid "Cannot open config file %s: %s\n"
+msgstr "Impossible d'ouvrir le fichier de configuration \"%s\" : %s\n"
+
 #: src/lib/btimers.c:265
 msgid "stop_btimer called with NULL btimer_id\n"
 msgstr ""
 
-#: src/lib/bsys.c:215 src/lib/bsys.c:232 src/lib/bsys.c:256 src/lib/bsys.c:269
+#: src/lib/bsys.c:72
+#, fuzzy, c-format
+msgid "safe_unlink could not compile regex pattern \"%s\" ERR=%s\n"
+msgstr "Impossible d'ouvrir %s : ERR=%s\n"
+
+#: src/lib/bsys.c:261 src/lib/bsys.c:278 src/lib/bsys.c:302 src/lib/bsys.c:315
 #, c-format
 msgid "Out of memory: ERR=%s\n"
 msgstr "Plus de mémoire : ERR=%s\n"
 
-#: src/lib/bsys.c:311
+#: src/lib/bsys.c:357
 msgid "Buffer overflow.\n"
 msgstr "Buffer overflow.\n"
 
-#: src/lib/bsys.c:377
+#: src/lib/bsys.c:423
 msgid "Bad errno"
 msgstr "Mauvais errno"
 
-#: src/lib/bsys.c:392
+#: src/lib/bsys.c:438
 #, c-format
 msgid "Memset for %d bytes at %s:%d\n"
 msgstr ""
 
-#: src/lib/bsys.c:422
+#: src/lib/bsys.c:468
 #, c-format
 msgid "Cannot open pid file. %s ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier contenant le pid. %s ERR=%s\n"
 
-#: src/lib/bsys.c:437
+#: src/lib/bsys.c:483
 #, c-format
 msgid ""
 "%s is already running. pid=%d\n"
 "Check file %s\n"
 msgstr ""
 
-#: src/lib/bsys.c:451
+#: src/lib/bsys.c:497
 #, c-format
 msgid "Could not open pid file. %s ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier pid. %s ERR=%s\n"
 
-#: src/lib/bsys.c:562
+#: src/lib/bsys.c:608
 #, c-format
 msgid "Could not create state file. %s ERR=%s\n"
 msgstr "Impossible de créer le fichier d'état. %s ERR=%s\n"
 
-#: src/lib/bsys.c:581
+#: src/lib/bsys.c:627
 #, c-format
 msgid "Write final hdr error: ERR=%s\n"
 msgstr ""
@@ -13812,101 +13962,101 @@ msgstr "Erreur de config : %s\n"
 msgid "Close of NULL file\n"
 msgstr ""
 
-#: src/lib/lex.c:224
+#: src/lib/lex.c:226
 msgid ""
 "get_char: called after EOF. You may have a open double quote without the "
 "closing double quote.\n"
 msgstr ""
 
-#: src/lib/lex.c:267
+#: src/lib/lex.c:268
 #, c-format
 msgid "Config token too long, file: %s, line %d, begins at line %d\n"
 msgstr "Config token trop long, fichier : %s, ligne %d, débutant ligne %d\n"
 
-#: src/lib/lex.c:291
+#: src/lib/lex.c:292
 msgid "none"
 msgstr "none"
 
-#: src/lib/lex.c:292
+#: src/lib/lex.c:293
 msgid "comment"
 msgstr "comment"
 
-#: src/lib/lex.c:293
+#: src/lib/lex.c:294
 msgid "number"
 msgstr "number"
 
-#: src/lib/lex.c:294
+#: src/lib/lex.c:295
 msgid "ip_addr"
 msgstr "ip_addr"
 
 # identifiant
-#: src/lib/lex.c:295
+#: src/lib/lex.c:296
 msgid "identifier"
 msgstr "identifier"
 
-#: src/lib/lex.c:296
+#: src/lib/lex.c:297
 msgid "string"
 msgstr "string"
 
-#: src/lib/lex.c:297
+#: src/lib/lex.c:298
 msgid "quoted_string"
 msgstr "quoted_string"
 
-#: src/lib/lex.c:298
+#: src/lib/lex.c:299
 #, fuzzy
 msgid "include"
 msgstr "Depuis"
 
-#: src/lib/lex.c:299
+#: src/lib/lex.c:300
 #, fuzzy
 msgid "include_quoted_string"
 msgstr "quoted_string"
 
-#: src/lib/lex.c:300
+#: src/lib/lex.c:301
 msgid "UTF-8 Byte Order Mark"
 msgstr ""
 
-#: src/lib/lex.c:301
+#: src/lib/lex.c:302
 msgid "UTF-16le Byte Order Mark"
 msgstr ""
 
-#: src/lib/lex.c:339 src/lib/lex.c:345 src/lib/lex.c:356 src/lib/lex.c:362
+#: src/lib/lex.c:340 src/lib/lex.c:346 src/lib/lex.c:357 src/lib/lex.c:363
 #, c-format
 msgid "expected a positive integer number, got: %s"
 msgstr "attendait un nombre entier positif, pas : %s"
 
-#: src/lib/lex.c:478
+#: src/lib/lex.c:479
 msgid ""
 "This config file appears to be in an unsupported Unicode format (UTF-16be). "
 "Please resave as UTF-8\n"
 msgstr ""
 
-#: src/lib/lex.c:617 src/lib/lex.c:645
+#: src/lib/lex.c:625 src/lib/lex.c:653
 #, c-format
 msgid "Cannot open included config file %s: %s\n"
 msgstr "Impossible d'ouvrir le fichier de configuration inclus %s : %s\n"
 
-#: src/lib/lex.c:704 src/lib/lex.c:761
+#: src/lib/lex.c:712 src/lib/lex.c:769
 #, c-format
 msgid "expected an integer or a range, got %s: %s"
 msgstr "attendait un entier ou bien un intervalle, pas %s : %s"
 
-#: src/lib/lex.c:718 src/lib/lex.c:726 src/lib/lex.c:737 src/lib/lex.c:745
+#: src/lib/lex.c:726 src/lib/lex.c:734 src/lib/lex.c:745 src/lib/lex.c:753
 #, c-format
 msgid "expected an integer number, got %s: %s"
 msgstr "attendait un nombre entier, pas %s : %s"
 
-#: src/lib/lex.c:775
+#: src/lib/lex.c:783
 #, c-format
 msgid "expected a name, got %s: %s"
 msgstr "attendait un nom, pas %s : %s"
 
-#: src/lib/lex.c:779
+#: src/lib/lex.c:787
 #, c-format
 msgid "name %s length %d too long, max is %d\n"
 msgstr "la longueur du nom %s (%d) est trop grande, le max est %d\n"
 
-#: src/lib/lex.c:787
+#: src/lib/lex.c:795
 #, c-format
 msgid "expected a string, got %s: %s"
 msgstr "attendait une chaîne, pas %s : %s"
@@ -14338,7 +14488,7 @@ msgstr ""
 msgid "bpkt already open fid=%d\n"
 msgstr ""
 
-#: src/findlib/create_file.c:226 src/filed/fd_plugins.c:890
+#: src/findlib/create_file.c:226 src/filed/fd_plugins.c:1009
 #, c-format
 msgid "Could not create %s: ERR=%s\n"
 msgstr ""
@@ -14582,86 +14732,98 @@ msgid "FreeBSD Specific NFSv4/ZFS ACL attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:191
-msgid "IRIX Specific Extended attribs"
+msgid "GNU Hurd Specific Default ACL attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:193
-msgid "TRU64 Specific Extended attribs"
+msgid "GNU Hurd Specific Access ACL attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:195
-msgid "AIX Specific Extended attribs"
+msgid "GNU Hurd Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:197
-msgid "OpenBSD Specific Extended attribs"
+msgid "IRIX Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:199
-msgid "Solaris Specific Extensible attribs or System Extended attribs"
+msgid "TRU64 Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:201
-msgid "Solaris Specific Extended attribs"
+msgid "AIX Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:203
-msgid "Darwin Specific Extended attribs"
+msgid "OpenBSD Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:205
-msgid "FreeBSD Specific Extended attribs"
+msgid "Solaris Specific Extensible attribs or System Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:207
-msgid "Linux Specific Extended attribs"
+msgid "Solaris Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:209
+msgid "Darwin Specific Extended attribs"
+msgstr ""
+
+#: src/findlib/bfile.c:211
+msgid "FreeBSD Specific Extended attribs"
+msgstr ""
+
+#: src/findlib/bfile.c:213
+msgid "Linux Specific Extended attribs"
+msgstr ""
+
+#: src/findlib/bfile.c:215
 msgid "NetBSD Specific Extended attribs"
 msgstr ""
 
-#: src/findlib/find.c:226
+#: src/findlib/find.c:237
 #, fuzzy, c-format
 msgid "Plugin: \"%s\" not found.\n"
 msgstr "Plugin=%s non trouvé.\n"
 
-#: src/findlib/match.c:210 src/tools/testfind.c:654 src/filed/job.c:1456
+#: src/findlib/match.c:210 src/tools/testfind.c:654 src/filed/job.c:1460
 #, c-format
 msgid "Unknown include/exclude option: %c\n"
 msgstr ""
 
-#: src/findlib/find_one.c:223
+#: src/findlib/find_one.c:227
 #, c-format
 msgid "     NODUMP flag set - will not process %s\n"
 msgstr ""
 
-#: src/findlib/find_one.c:244
+#: src/findlib/find_one.c:248
 #, fuzzy, c-format
 msgid "Cannot stat file %s: ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/findlib/find_one.c:250
+#: src/findlib/find_one.c:253
 #, c-format
 msgid "%s mtime changed during backup.\n"
 msgstr ""
 
-#: src/findlib/find_one.c:256
+#: src/findlib/find_one.c:260
 #, c-format
 msgid "%s ctime changed during backup.\n"
 msgstr ""
 
-#: src/findlib/find_one.c:262 src/findlib/find_one.c:269
+#: src/findlib/find_one.c:268 src/findlib/find_one.c:276
 #, c-format
 msgid "%s size changed during backup.\n"
 msgstr ""
 
-#: src/findlib/find_one.c:398
+#: src/findlib/find_one.c:403
 #, c-format
 msgid "Top level directory \"%s\" has unlisted fstype \"%s\"\n"
 msgstr ""
 
-#: src/findlib/find_one.c:413
+#: src/findlib/find_one.c:418
 #, c-format
 msgid "Top level directory \"%s\" has an unlisted drive type \"%s\"\n"
 msgstr ""
@@ -14751,24 +14913,24 @@ msgstr ""
 msgid "Create DB Client record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:588 src/cats/sql_get.c:251
+#: src/cats/sql_create.c:589 src/cats/sql_get.c:251
 #, c-format
 msgid "More than one Path!: %s for path: %s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:595 src/cats/sql_get.c:205 src/cats/sql_get.c:258
-#: src/cats/sql_get.c:640 src/cats/sql_get.c:722 src/cats/sql_get.c:1041
-#: src/cats/sql.c:340 src/cats/sql.c:347 src/cats/postgresql.c:158
+#: src/cats/sql_create.c:596 src/cats/sql_get.c:205 src/cats/sql_get.c:258
+#: src/cats/sql_get.c:640 src/cats/sql_get.c:722 src/cats/sql_get.c:1039
+#: src/cats/sql.c:340 src/cats/sql.c:347 src/cats/postgresql.c:165
 #, c-format
 msgid "error fetching row: %s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:620
+#: src/cats/sql_create.c:621
 #, c-format
 msgid "Create db Path record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:665
+#: src/cats/sql_create.c:666
 #, c-format
 msgid "Create DB Counters record %s failed. ERR=%s\n"
 msgstr ""
@@ -14788,40 +14950,40 @@ msgstr ""
 msgid "Create DB FileSet record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:994
+#: src/cats/sql_create.c:989
 #, c-format
 msgid "Create db File record %s failed. ERR=%s"
 msgstr ""
 
-#: src/cats/sql_create.c:1019
+#: src/cats/sql_create.c:1015
 #, c-format
 msgid "More than one Filename! %s for file: %s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:1025
+#: src/cats/sql_create.c:1021
 #, c-format
 msgid "Error fetching row for file=%s: ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:1042
+#: src/cats/sql_create.c:1038
 #, c-format
 msgid "Create db Filename record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:1061
+#: src/cats/sql_create.c:1058
 #, c-format
 msgid "Attempt to put non-attributes into catalog. Stream=%d\n"
 msgstr ""
 
 #: src/cats/sql_create.c:1074
-msgid "Cannot Copy/Migrate job using BaseJob"
+msgid "Cannot Copy/Migrate job using BaseJob.\n"
 msgstr ""
 
-#: src/cats/sql_create.c:1165 src/cats/sql_get.c:1138
+#: src/cats/sql_create.c:1166 src/cats/sql_get.c:1136
 msgid "ERR=JobIds are empty\n"
 msgstr ""
 
-#: src/cats/sql_create.c:1218
+#: src/cats/sql_create.c:1219
 #, fuzzy, c-format
 msgid "Create db Object record %s failed. ERR=%s"
 msgstr "fopen %s en erreur : ERR=%s\n"
@@ -14928,66 +15090,66 @@ msgstr ""
 msgid "Client record not found in Catalog.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:767
+#: src/cats/sql_get.c:765
 #, c-format
 msgid "More than one Counter!: %d\n"
 msgstr ""
 
-#: src/cats/sql_get.c:772
+#: src/cats/sql_get.c:770
 #, c-format
 msgid "error fetching Counter row: %s\n"
 msgstr ""
 
-#: src/cats/sql_get.c:792
+#: src/cats/sql_get.c:790
 #, c-format
 msgid "Counter record: %s not found in Catalog.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:832
+#: src/cats/sql_get.c:830
 #, c-format
 msgid "Error got %s FileSets but expected only one!\n"
 msgstr ""
 
-#: src/cats/sql_get.c:837
+#: src/cats/sql_get.c:835
 #, c-format
 msgid "FileSet record \"%s\" not found.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:847
+#: src/cats/sql_get.c:845
 msgid "FileSet record not found in Catalog.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:943
+#: src/cats/sql_get.c:941
 #, c-format
 msgid "Media id select failed: ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_get.c:981
+#: src/cats/sql_get.c:979
 #, fuzzy, c-format
 msgid "query dbids failed: ERR=%s\n"
 msgstr "fopen %s en erreur : ERR=%s\n"
 
-#: src/cats/sql_get.c:1036
+#: src/cats/sql_get.c:1034
 #, c-format
 msgid "More than one Volume!: %s\n"
 msgstr ""
 
-#: src/cats/sql_get.c:1092
+#: src/cats/sql_get.c:1090
 #, c-format
 msgid "Media record MediaId=%s not found.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:1095
+#: src/cats/sql_get.c:1093
 #, c-format
 msgid "Media record for Volume \"%s\" not found.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:1102
+#: src/cats/sql_get.c:1100
 #, c-format
 msgid "Media record for MediaId=%u not found in Catalog.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:1105
+#: src/cats/sql_get.c:1103
 #, c-format
 msgid "Media record for Vol=%s not found in Catalog.\n"
 msgstr ""
@@ -15040,29 +15202,29 @@ msgstr "Le slot %d est ignoré car il est supérieur au maximum %d.\n"
 msgid "No Volume record found for item %d.\n"
 msgstr "Pas de volume trouvé en base pour l'objet %d.\n"
 
-#: src/cats/sqlite.c:159 src/cats/ingres.c:248 src/cats/postgresql.c:203
-#: src/cats/dbi.c:221 src/cats/mysql.c:157
+#: src/cats/sqlite.c:166 src/cats/ingres.c:255 src/cats/postgresql.c:210
+#: src/cats/dbi.c:228 src/cats/mysql.c:164
 #, c-format
 msgid "Unable to initialize DB lock. ERR=%s\n"
 msgstr "Impossible d'initialiser le verrou sur la base. ERR=%s\n"
 
-#: src/cats/sqlite.c:174
+#: src/cats/sqlite.c:181
 #, c-format
 msgid "Database %s does not exist, please create it.\n"
 msgstr ""
 
-#: src/cats/sqlite.c:196
+#: src/cats/sqlite.c:203
 #, c-format
 msgid "Unable to open Database=%s. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sqlite.c:197
+#: src/cats/sqlite.c:204
 msgid "unknown"
 msgstr "inconnu"
 
-#: src/cats/sqlite.c:449 src/cats/ingres.c:483 src/cats/postgresql.c:493
-#: src/cats/postgresql.c:540 src/cats/dbi.c:618 src/cats/cats.c:147
-#: src/cats/mysql.c:380
+#: src/cats/sqlite.c:462 src/cats/ingres.c:496 src/cats/postgresql.c:506
+#: src/cats/postgresql.c:553 src/cats/dbi.c:631 src/cats/cats.c:149
+#: src/cats/mysql.c:393
 #, c-format
 msgid "Query failed: %s: ERR=%s\n"
 msgstr ""
@@ -15077,7 +15239,7 @@ msgstr "Impossible de se connecter au Director\n"
 msgid "Failed to allocate space for query filters.\n"
 msgstr "Impossible de se connecter au Director\n"
 
-#: src/cats/ingres.c:260
+#: src/cats/ingres.c:267
 #, fuzzy, c-format
 msgid ""
 "Unable to connect to Ingres server.\n"
@@ -15088,7 +15250,7 @@ msgstr ""
 "Base=%s Utilisateur=%s\n"
 "Le serveur n'est pas démarré ou bien votre password est invalide.\n"
 
-#: src/cats/ingres.c:1074
+#: src/cats/ingres.c:1087
 #, fuzzy
 msgid "A user name for Ingres must be supplied.\n"
 msgstr "Un nom d'utilisateur MySQL doit être fourni.\n"
@@ -15148,22 +15310,22 @@ msgstr ""
 msgid "No results to list.\n"
 msgstr "Liste vide.\n"
 
-#: src/cats/sql.c:724
+#: src/cats/sql.c:721
 #, fuzzy
-msgid "Could not init database batch connection"
+msgid "Could not init database batch connection\n"
 msgstr "Impossible d'initialiser le Python\n"
 
-#: src/cats/sql.c:730
+#: src/cats/sql.c:727
 #, fuzzy, c-format
 msgid "Could not open database \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir la base de données \"%s\".\n"
 
-#: src/cats/postgresql.c:174
+#: src/cats/postgresql.c:181
 #, c-format
 msgid "Encoding error for database \"%s\". Wanted SQL_ASCII, got %s\n"
 msgstr ""
 
-#: src/cats/postgresql.c:239
+#: src/cats/postgresql.c:246
 #, fuzzy, c-format
 msgid ""
 "Unable to connect to PostgreSQL server. Database=%s User=%s\n"
@@ -15174,39 +15336,39 @@ msgstr ""
 "Base=%s Utilisateur=%s\n"
 "Le serveur n'est pas démarré ou bien votre password est invalide.\n"
 
-#: src/cats/postgresql.c:337
+#: src/cats/postgresql.c:350
 msgid "PQescapeStringConn returned non-zero.\n"
 msgstr ""
 
-#: src/cats/postgresql.c:355
+#: src/cats/postgresql.c:368
 msgid "PQescapeByteaConn returned NULL.\n"
 msgstr ""
 
-#: src/cats/postgresql.c:386
+#: src/cats/postgresql.c:399
 msgid "PQunescapeByteaConn returned NULL.\n"
 msgstr ""
 
-#: src/cats/postgresql.c:800
+#: src/cats/postgresql.c:813
 #, c-format
 msgid "error fetching currval: %s\n"
 msgstr ""
 
-#: src/cats/postgresql.c:991 src/cats/dbi.c:1264
+#: src/cats/postgresql.c:1004 src/cats/dbi.c:1277
 #, fuzzy, c-format
 msgid "error starting batch mode: %s"
 msgstr "erreur en terminant le mode batch: %s\n"
 
-#: src/cats/postgresql.c:1021 src/cats/postgresql.c:1028
+#: src/cats/postgresql.c:1034 src/cats/postgresql.c:1041
 #, fuzzy, c-format
 msgid "error ending batch mode: %s"
 msgstr "erreur en terminant le mode batch: %s\n"
 
-#: src/cats/postgresql.c:1075
+#: src/cats/postgresql.c:1088
 #, fuzzy, c-format
 msgid "error copying in batch mode: %s"
 msgstr "erreur en terminant le mode batch: %s\n"
 
-#: src/cats/postgresql.c:1097
+#: src/cats/postgresql.c:1110
 msgid "A user name for PostgreSQL must be supplied.\n"
 msgstr "Un nom d'utilisateur PostgreSQL doit être fourni.\n"
 
@@ -15228,14 +15390,14 @@ msgstr ""
 msgid "Unknown database type: %s\n"
 msgstr "Mot clef inconnu : %s\n"
 
-#: src/cats/dbi.c:235
+#: src/cats/dbi.c:242
 #, c-format
 msgid ""
 "Unable to locate the DBD drivers to DBI interface in: \n"
 "db_driverdir=%s. It is probaly not found any drivers\n"
 msgstr ""
 
-#: src/cats/dbi.c:292
+#: src/cats/dbi.c:299
 #, fuzzy, c-format
 msgid ""
 "Unable to connect to DBI interface. Type=%s Database=%s User=%s\n"
@@ -15246,22 +15408,22 @@ msgstr ""
 "Base=%s Utilisateur=%s\n"
 "Le serveur n'est pas démarré ou bien votre password est invalide.\n"
 
-#: src/cats/dbi.c:1426
+#: src/cats/dbi.c:1439
 #, fuzzy, c-format
 msgid "error inserting batch mode: %s"
 msgstr "erreur en terminant le mode batch: %s\n"
 
-#: src/cats/dbi.c:1443
+#: src/cats/dbi.c:1456
 #, fuzzy
 msgid "Driver type not specified in Catalog resource.\n"
 msgstr "Impossible de trouver un Catalogue\n"
 
-#: src/cats/dbi.c:1447
+#: src/cats/dbi.c:1460
 #, fuzzy
 msgid "Invalid driver type, must be \"dbi:<type>\"\n"
 msgstr "Saisie invalide. Veuillez répondre oui ou non.\n"
 
-#: src/cats/dbi.c:1451
+#: src/cats/dbi.c:1464
 #, fuzzy
 msgid "A user name for DBI must be supplied.\n"
 msgstr "Un nom d'utilisateur MySQL doit être fourni.\n"
@@ -15285,7 +15447,7 @@ msgstr ""
 msgid "Error fetching row %s\n"
 msgstr ""
 
-#: src/cats/mysql.c:200
+#: src/cats/mysql.c:207
 #, c-format
 msgid ""
 "Unable to connect to MySQL server.\n"
@@ -15297,7 +15459,7 @@ msgstr ""
 "Base=%s Utilisateur=%s\n"
 "Le serveur n'est pas démarré ou bien votre password est invalide.\n"
 
-#: src/cats/mysql.c:639
+#: src/cats/mysql.c:692
 msgid "A user name for MySQL must be supplied.\n"
 msgstr "Un nom d'utilisateur MySQL doit être fourni.\n"
 
@@ -15448,13 +15610,13 @@ msgid "You must enter a number between 1 and %d\n"
 msgstr "Vous devez saisir un nombre entre 1 et %d\n"
 
 #: src/console/console.c:1160 src/wx-console/console_thread.cpp:399
-#: src/qt-console/bcomm/dircomm.cpp:129
+#: src/qt-console/bcomm/dircomm.cpp:131
 #, c-format
 msgid "Failed to initialize TLS context for Console \"%s\".\n"
 msgstr "Impossible d'initialiser le contexte TLS pour la Console \"%s\".\n"
 
 #: src/console/console.c:1180 src/wx-console/console_thread.cpp:420
-#: src/qt-console/bcomm/dircomm.cpp:152
+#: src/qt-console/bcomm/dircomm.cpp:154
 #, c-format
 msgid "Failed to initialize TLS context for Director \"%s\".\n"
 msgstr "Impossible d'initialiser le contexte TLS pour le Director \"%s\".\n"
@@ -15865,22 +16027,25 @@ msgstr ""
 msgid "Could not open, database \"%s\".\n"
 msgstr "Impossible d'ouvrir la base de données \"%s\".\n"
 
-#: src/tools/bsmtp.c:145
+#: src/tools/bsmtp.c:151
 #, c-format
 msgid "Fatal malformed reply from %s: %s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:153
+#: src/tools/bsmtp.c:159
 #, fuzzy, c-format
 msgid "Fatal fgets error: ERR=%s\n"
 msgstr "erreur de fermeture : ERR=%s\n"
 
-#: src/tools/bsmtp.c:186
+#: src/tools/bsmtp.c:192
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Usage: %s [-f from] [-h mailhost] [-s subject] [-c copy] [recipient ...]\n"
+"       -4          forces bsmtp to use IPv4 addresses only.\n"
+"       -6          forces bsmtp to use IPv6 addresses only.\n"
 "       -8          set charset to UTF-8\n"
+"       -a          use any ip protocol for address resolution\n"
 "       -c          set the Cc: field\n"
 "       -d <nn>     set debug level to <nn>\n"
 "       -dt         print a timestamp in debug output\n"
@@ -15910,56 +16075,66 @@ msgstr ""
 "      -?             affiche ce message.\n"
 "\n"
 
-#: src/tools/bsmtp.c:343
+#: src/tools/bsmtp.c:379
 msgid "Fatal error: no recipient given.\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:372
+#: src/tools/bsmtp.c:407
 #, c-format
 msgid "Fatal gethostname error: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:376
+#: src/tools/bsmtp.c:418
+#, fuzzy, c-format
+msgid "Fatal getaddrinfo for myself failed \"%s\": ERR=%s\n"
+msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
+
+#: src/tools/bsmtp.c:426
 #, c-format
 msgid "Fatal gethostbyname for myself failed \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:412
+#: src/tools/bsmtp.c:486 src/tools/bsmtp.c:521
 #, c-format
 msgid "Error unknown mail host \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:415
+#: src/tools/bsmtp.c:489 src/tools/bsmtp.c:524
 msgid "Retrying connection using \"localhost\".\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:423
+#: src/tools/bsmtp.c:514
+#, fuzzy, c-format
+msgid "Failed to connect to mailhost %s\n"
+msgstr "Impossible de se connecter au Client.\n"
+
+#: src/tools/bsmtp.c:532
 #, c-format
 msgid "Fatal error: Unknown address family for smtp host: %d\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:432 src/tools/bsmtp.c:437
+#: src/tools/bsmtp.c:541 src/tools/bsmtp.c:546
 #, c-format
 msgid "Fatal socket error: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:442
+#: src/tools/bsmtp.c:551
 #, c-format
 msgid "Fatal connect error to %s: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:450
+#: src/tools/bsmtp.c:560
 #, fuzzy, c-format
 msgid "Fatal _open_osfhandle error: ERR=%s\n"
 msgstr "erreur de fermeture : ERR=%s\n"
 
-#: src/tools/bsmtp.c:457 src/tools/bsmtp.c:461 src/tools/bsmtp.c:470
-#: src/tools/bsmtp.c:474
+#: src/tools/bsmtp.c:567 src/tools/bsmtp.c:571 src/tools/bsmtp.c:580
+#: src/tools/bsmtp.c:584
 #, c-format
 msgid "Fatal fdopen error: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:466
+#: src/tools/bsmtp.c:576
 #, c-format
 msgid "Fatal dup error: ERR=%s\n"
 msgstr ""
@@ -16424,7 +16599,7 @@ msgstr ""
 msgid "Network error in send to Director: ERR=%s\n"
 msgstr ""
 
-#: src/filed/verify.c:247 src/filed/accurate.c:428 src/filed/backup.c:503
+#: src/filed/verify.c:247 src/filed/accurate.c:429 src/filed/backup.c:506
 #, c-format
 msgid "%s digest initialization failed\n"
 msgstr ""
@@ -16449,12 +16624,12 @@ msgstr ""
 msgid "Space saved with Base jobs: %lld MB\n"
 msgstr ""
 
-#: src/filed/accurate.c:399
+#: src/filed/accurate.c:400
 #, fuzzy, c-format
 msgid "Cannot verify checksum for %s\n"
 msgstr "Impossible de trouver la ressource Schedule \"%s\"\n"
 
-#: src/filed/accurate.c:507
+#: src/filed/accurate.c:508
 #, fuzzy
 msgid "2991 Bad accurate command\n"
 msgstr "2991 Erreur dans la commande setdebug : %s\n"
@@ -16511,6 +16686,11 @@ msgstr "====\n"
 msgid " SDSocket=closed\n"
 msgstr ""
 
+#: src/filed/status.c:463 src/filed/status.c:496
+#, c-format
+msgid "Bad .status command: %s\n"
+msgstr ""
+
 #: src/filed/status.c:464
 msgid "2900 Bad .status command, missing argument.\n"
 msgstr ""
@@ -16539,319 +16719,320 @@ msgstr ""
 msgid "Bacula Client: Last Job had Warnings"
 msgstr ""
 
-#: src/filed/xattr.c:96 src/filed/xattr.c:111 src/filed/xattr.c:119
-#: src/filed/fd_plugins.c:696 src/filed/fd_plugins.c:710 src/filed/acl.c:105
-#: src/filed/acl.c:120 src/filed/acl.c:128 src/filed/backup.c:993
-#: src/filed/backup.c:1189 src/filed/backup.c:1226 src/filed/backup.c:1239
-#: src/filed/backup.c:1315 src/filed/backup.c:1413
+#: src/filed/xattr.c:97 src/filed/xattr.c:112 src/filed/xattr.c:120
+#: src/filed/fd_plugins.c:789 src/filed/fd_plugins.c:805 src/filed/acl.c:108
+#: src/filed/acl.c:123 src/filed/acl.c:131 src/filed/backup.c:999
+#: src/filed/backup.c:1199 src/filed/backup.c:1236 src/filed/backup.c:1249
+#: src/filed/backup.c:1325 src/filed/backup.c:1424
 #, c-format
 msgid "Network send error to SD. ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:244
+#: src/filed/xattr.c:245
 #, c-format
 msgid "Illegal xattr stream, no XATTR_MAGIC on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:258
+#: src/filed/xattr.c:259
 #, c-format
 msgid "Illegal xattr stream, xattr name length <= 0 on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:376 src/filed/xattr.c:408
+#: src/filed/xattr.c:381 src/filed/xattr.c:417
 #, fuzzy, c-format
 msgid "llistea error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/xattr.c:472 src/filed/xattr.c:500
+#: src/filed/xattr.c:467 src/filed/xattr.c:520
 #, fuzzy, c-format
 msgid "lgetea error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/xattr.c:519 src/filed/xattr.c:807 src/filed/xattr.c:1249
-#: src/filed/xattr.c:1702 src/filed/xattr.c:2064 src/filed/xattr.c:2843
+#: src/filed/xattr.c:556 src/filed/xattr.c:877 src/filed/xattr.c:1352
+#: src/filed/xattr.c:1820 src/filed/xattr.c:2176 src/filed/xattr.c:2968
 #, c-format
 msgid "Xattr stream on file \"%s\" exceeds maximum size of %d bytes\n"
 msgstr ""
 
-#: src/filed/xattr.c:550 src/filed/xattr.c:841 src/filed/xattr.c:1280
-#: src/filed/xattr.c:1743 src/filed/xattr.c:2089
+#: src/filed/xattr.c:576 src/filed/xattr.c:903 src/filed/xattr.c:1372
+#: src/filed/xattr.c:1850 src/filed/xattr.c:2193
 #, fuzzy, c-format
 msgid "Failed to serialize extended attributes on file \"%s\"\n"
 msgstr "Impossible d'initialiser le contexte TLS pour la Console \"%s\".\n"
 
-#: src/filed/xattr.c:624
+#: src/filed/xattr.c:643
 #, fuzzy, c-format
 msgid "lsetea error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/xattr.c:710 src/filed/xattr.c:777 src/filed/xattr.c:789
+#: src/filed/xattr.c:731 src/filed/xattr.c:769 src/filed/xattr.c:832
+#: src/filed/xattr.c:844
 #, fuzzy, c-format
 msgid "attr_list error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/xattr.c:916
+#: src/filed/xattr.c:968
 #, fuzzy, c-format
 msgid "Received illegal xattr named %s on file \"%s\"\n"
 msgstr "Impossible de créer le fichier bootstrap %s. ERR=%s\n"
 
-#: src/filed/xattr.c:947 src/filed/xattr.c:957
+#: src/filed/xattr.c:1001 src/filed/xattr.c:1011
 #, fuzzy, c-format
 msgid "attr_set error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/xattr.c:1092 src/filed/xattr.c:1123
+#: src/filed/xattr.c:1161 src/filed/xattr.c:1196
 #, fuzzy, c-format
 msgid "llistxattr error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/xattr.c:1204 src/filed/xattr.c:1231
+#: src/filed/xattr.c:1264 src/filed/xattr.c:1316
 #, fuzzy, c-format
 msgid "lgetxattr error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/xattr.c:1350
+#: src/filed/xattr.c:1435
 #, fuzzy, c-format
 msgid "lsetxattr error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/xattr.c:1507 src/filed/xattr.c:1539
+#: src/filed/xattr.c:1593 src/filed/xattr.c:1628
 #, fuzzy, c-format
 msgid "extattr_list_link error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/xattr.c:1558
+#: src/filed/xattr.c:1648
 #, fuzzy, c-format
 msgid "Failed to convert %d into namespace on file \"%s\"\n"
 msgstr "Impossible de lire le certificat à partir du fichier"
 
-#: src/filed/xattr.c:1653 src/filed/xattr.c:1682
+#: src/filed/xattr.c:1728 src/filed/xattr.c:1783
 #, fuzzy, c-format
 msgid "extattr_get_link error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/xattr.c:1809
+#: src/filed/xattr.c:1907
 #, fuzzy, c-format
 msgid "Failed to split %s into namespace and name part on file \"%s\"\n"
 msgstr ""
 "Impossible de se positionner à la fin du média sur le device %s : ERR=%s\n"
 
-#: src/filed/xattr.c:1822
+#: src/filed/xattr.c:1920
 #, fuzzy, c-format
 msgid "Failed to convert %s into namespace on file \"%s\"\n"
 msgstr "Impossible de lire le certificat à partir du fichier"
 
-#: src/filed/xattr.c:1841
+#: src/filed/xattr.c:1941
 #, fuzzy, c-format
 msgid "extattr_set_link error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/xattr.c:1943 src/filed/xattr.c:1965
+#: src/filed/xattr.c:2044 src/filed/xattr.c:2069
 #, fuzzy, c-format
 msgid "getproplist error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/xattr.c:2169
+#: src/filed/xattr.c:2262
 #, fuzzy, c-format
 msgid "Unable create proper proplist to restore xattrs on file \"%s\"\n"
 msgstr "Impossible de lire le certificat à partir du fichier"
 
-#: src/filed/xattr.c:2196
+#: src/filed/xattr.c:2291
 #, fuzzy, c-format
 msgid "setproplist error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/xattr.c:2496 src/filed/xattr.c:2547
+#: src/filed/xattr.c:2609 src/filed/xattr.c:2662
 #, fuzzy, c-format
 msgid "Unable to get acl on xattr %s on file \"%s\": ERR=%s\n"
 msgstr "Impossible de créer le fichier bootstrap %s. ERR=%s\n"
 
-#: src/filed/xattr.c:2562
+#: src/filed/xattr.c:2679
 #, fuzzy, c-format
 msgid "Unable to get acl text on xattr %s on file \"%s\": ERR=%s\n"
 msgstr "Impossible de créer le fichier bootstrap %s. ERR=%s\n"
 
-#: src/filed/xattr.c:2632
+#: src/filed/xattr.c:2753
 #, fuzzy, c-format
 msgid "Unable to get status on xattr %s on file \"%s\": ERR=%s\n"
 msgstr "Impossible de créer le fichier bootstrap %s. ERR=%s\n"
 
-#: src/filed/xattr.c:2763
+#: src/filed/xattr.c:2886
 #, fuzzy, c-format
 msgid "Unable to open xattr %s on \"%s\": ERR=%s\n"
 msgstr "Impossible de se connecter à %s sur %s:%d. ERR=%s\n"
 
-#: src/filed/xattr.c:2784
+#: src/filed/xattr.c:2909
 #, fuzzy, c-format
 msgid "Unable to read symlin %s on \"%s\": ERR=%s\n"
 msgstr "Impossible de se connecter à %s sur %s:%d. ERR=%s\n"
 
-#: src/filed/xattr.c:2859
+#: src/filed/xattr.c:2984
 #, fuzzy, c-format
 msgid "Unable to read content of xattr %s on file \"%s\"\n"
 msgstr "Impossible de lire le certificat à partir du fichier"
 
-#: src/filed/xattr.c:2897
+#: src/filed/xattr.c:3024
 #, fuzzy, c-format
 msgid "Unable to chdir to xattr space of file \"%s\": ERR=%s\n"
 msgstr "Impossible de créer le fichier bootstrap %s. ERR=%s\n"
 
-#: src/filed/xattr.c:2953 src/filed/xattr.c:3193
+#: src/filed/xattr.c:3081 src/filed/xattr.c:3330
 #, fuzzy, c-format
 msgid "Unable to open file \"%s\": ERR=%s\n"
 msgstr "3910 Impossible d'ouvrir le device %s : ERR=%s\n"
 
-#: src/filed/xattr.c:2979 src/filed/xattr.c:3246
+#: src/filed/xattr.c:3109 src/filed/xattr.c:3391
 #, fuzzy, c-format
 msgid "Unable to open xattr space %s on file \"%s\": ERR=%s\n"
 msgstr "Impossible de créer le fichier bootstrap %s. ERR=%s\n"
 
-#: src/filed/xattr.c:2993 src/filed/xattr.c:3214
+#: src/filed/xattr.c:3125 src/filed/xattr.c:3355
 #, fuzzy, c-format
 msgid "Unable to chdir to xattr space on file \"%s\": ERR=%s\n"
 msgstr "Impossible de créer le fichier bootstrap %s. ERR=%s\n"
 
-#: src/filed/xattr.c:3012
+#: src/filed/xattr.c:3146
 #, fuzzy, c-format
 msgid "Unable to list the xattr space on file \"%s\": ERR=%s\n"
 msgstr "Impossible de créer le fichier bootstrap %s. ERR=%s\n"
 
-#: src/filed/xattr.c:3105
+#: src/filed/xattr.c:3238
 #, fuzzy, c-format
 msgid "Unable to convert acl from text on file \"%s\"\n"
 msgstr "Impossible de lire le certificat à partir du fichier"
 
-#: src/filed/xattr.c:3113 src/filed/xattr.c:3135
+#: src/filed/xattr.c:3248 src/filed/xattr.c:3271
 #, fuzzy, c-format
 msgid "Unable to restore acl of xattr %s on file \"%s\": ERR=%s\n"
 msgstr "Impossible de créer le fichier bootstrap %s. ERR=%s\n"
 
-#: src/filed/xattr.c:3205
+#: src/filed/xattr.c:3344
 #, fuzzy, c-format
 msgid "Unable to open xattr space on file \"%s\": ERR=%s\n"
 msgstr "Impossible de créer le fichier bootstrap %s. ERR=%s\n"
 
-#: src/filed/xattr.c:3231 src/filed/xattr.c:3379
+#: src/filed/xattr.c:3374 src/filed/xattr.c:3536
 #, fuzzy, c-format
 msgid "Unable to open xattr %s on file \"%s\": ERR=%s\n"
 msgstr "Impossible de créer le fichier bootstrap %s. ERR=%s\n"
 
-#: src/filed/xattr.c:3261
+#: src/filed/xattr.c:3408
 #, fuzzy, c-format
 msgid "Unable to chdir to xattr space %s on file \"%s\": ERR=%s\n"
 msgstr "Impossible de créer le fichier bootstrap %s. ERR=%s\n"
 
-#: src/filed/xattr.c:3299
+#: src/filed/xattr.c:3448
 #, fuzzy, c-format
 msgid "Unable to mkfifo xattr %s on file \"%s\": ERR=%s\n"
 msgstr "Impossible de créer le fichier bootstrap %s. ERR=%s\n"
 
-#: src/filed/xattr.c:3315
+#: src/filed/xattr.c:3466
 #, fuzzy, c-format
 msgid "Unable to mknod xattr %s on file \"%s\": ERR=%s\n"
 msgstr "Impossible de créer le fichier bootstrap %s. ERR=%s\n"
 
-#: src/filed/xattr.c:3331
+#: src/filed/xattr.c:3484
 #, fuzzy, c-format
 msgid "Unable to mkdir xattr %s on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/xattr.c:3349
+#: src/filed/xattr.c:3504
 #, fuzzy, c-format
 msgid "Unable to link xattr %s to %s on file \"%s\": ERR=%s\n"
 msgstr "Impossible de se connecter à %s sur %s:%d. ERR=%s\n"
 
-#: src/filed/xattr.c:3400
+#: src/filed/xattr.c:3557
 #, c-format
 msgid ""
 "Unable to restore data of xattr %s on file \"%s\": Not all data available in "
 "xattr stream\n"
 msgstr ""
 
-#: src/filed/xattr.c:3411
+#: src/filed/xattr.c:3570
 #, fuzzy, c-format
 msgid "Unable to restore data of xattr %s on file \"%s\": ERR=%s\n"
 msgstr "Impossible de créer le fichier bootstrap %s. ERR=%s\n"
 
-#: src/filed/xattr.c:3432
+#: src/filed/xattr.c:3593
 #, fuzzy, c-format
 msgid "Unable to symlink xattr %s to %s on file \"%s\": ERR=%s\n"
 msgstr "Impossible de créer le fichier bootstrap %s. ERR=%s\n"
 
-#: src/filed/xattr.c:3466
+#: src/filed/xattr.c:3629
 #, fuzzy, c-format
 msgid "Unable to restore owner of xattr %s on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/xattr.c:3492
+#: src/filed/xattr.c:3657
 #, fuzzy, c-format
 msgid "Unable to restore filetimes of xattr %s on file \"%s\": ERR=%s\n"
 msgstr "Impossible de créer le fichier bootstrap %s : ERR=%s\n"
 
-#: src/filed/xattr.c:3508
+#: src/filed/xattr.c:3673
 #, c-format
 msgid "Illegal xattr stream, failed to parse xattr stream on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:3570
+#: src/filed/xattr.c:3734
 #, c-format
 msgid "Failed to restore extensible attributes on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:3583
+#: src/filed/xattr.c:3747
 #, fuzzy, c-format
 msgid "Failed to restore extended attributes on file \"%s\"\n"
 msgstr ""
 "Impossible de se positionner à la fin du média sur le device %s : ERR=%s\n"
 
-#: src/filed/xattr.c:3672 src/filed/acl.c:2109
+#: src/filed/xattr.c:3841 src/filed/acl.c:2265
 #, fuzzy, c-format
 msgid "Unable to stat file \"%s\": ERR=%s\n"
 msgstr "3910 Impossible d'ouvrir le device %s : ERR=%s\n"
 
-#: src/filed/xattr.c:3719
+#: src/filed/xattr.c:3891
 #, c-format
 msgid ""
 "Can't restore Extended Attributes of %s - incompatible xattr stream "
 "encountered - %d\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:480 src/filed/fd_plugins.c:619
+#: src/filed/fd_plugins.c:550 src/filed/fd_plugins.c:694
 #, c-format
 msgid "Command plugin \"%s\": no type in startBackupFile packet.\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:493
+#: src/filed/fd_plugins.c:563
 #, c-format
 msgid "Command plugin \"%s\": no object_name in startBackupFile packet.\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:505 src/filed/fd_plugins.c:626
+#: src/filed/fd_plugins.c:576 src/filed/fd_plugins.c:701
 #, c-format
 msgid "Command plugin \"%s\": no fname in startBackupFile packet.\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:683
+#: src/filed/fd_plugins.c:775
 #, fuzzy
 msgid "Plugin save packet not found.\n"
 msgstr "le client \"%s\" est introuvable.\n"
 
-#: src/filed/fd_plugins.c:806
+#: src/filed/fd_plugins.c:910
 #, c-format
 msgid "Plugin=%s not found.\n"
 msgstr "Plugin=%s non trouvé.\n"
 
-#: src/filed/fd_plugins.c:863
+#: src/filed/fd_plugins.c:977
 #, c-format
 msgid "Plugin createFile call failed. Stat=%d file=%s\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:874
+#: src/filed/fd_plugins.c:982
 #, c-format
 msgid "Plugin createFile call failed. Returned CF_ERROR file=%s\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:1621
+#: src/filed/fd_plugins.c:1859
 msgid "Command plugin: no fname in baculaCheckChanges packet.\n"
 msgstr ""
 
@@ -16965,56 +17146,56 @@ msgstr ""
 msgid "No Director resource defined in %s\n"
 msgstr ""
 
-#: src/filed/acl.c:225 src/filed/acl.c:248
+#: src/filed/acl.c:229 src/filed/acl.c:254
 #, fuzzy, c-format
 msgid "aclx_get error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/acl.c:274
+#: src/filed/acl.c:280
 #, fuzzy, c-format
 msgid "Unknown acl type encountered on file \"%s\": %ld\n"
 msgstr "Impossible de créer le fichier bootstrap %s. ERR=%s\n"
 
-#: src/filed/acl.c:298 src/filed/acl.c:307
+#: src/filed/acl.c:304 src/filed/acl.c:313
 #, fuzzy, c-format
 msgid "Failed to convert acl into text on file \"%s\"\n"
 msgstr "Impossible de lire le certificat à partir du fichier"
 
-#: src/filed/acl.c:381
+#: src/filed/acl.c:386
 #, c-format
 msgid ""
 "Trying to restore POSIX acl on file \"%s\" on filesystem without AIXC acl "
 "support\n"
 msgstr ""
 
-#: src/filed/acl.c:389
+#: src/filed/acl.c:394
 #, c-format
 msgid ""
 "Trying to restore NFSv4 acl on file \"%s\" on filesystem without NFS4 acl "
 "support\n"
 msgstr ""
 
-#: src/filed/acl.c:433 src/filed/acl.c:443
+#: src/filed/acl.c:442 src/filed/acl.c:452
 #, fuzzy, c-format
 msgid "aclx_scanStr error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/acl.c:467
+#: src/filed/acl.c:478
 #, fuzzy, c-format
 msgid "aclx_put error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/acl.c:809
+#: src/filed/acl.c:823
 #, fuzzy, c-format
 msgid "acl_to_text error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/acl.c:837
+#: src/filed/acl.c:853
 #, fuzzy, c-format
 msgid "acl_get_file error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/acl.c:889
+#: src/filed/acl.c:906
 #, fuzzy, c-format
 msgid ""
 "acl_delete_def_file error on file \"%s\": filesystem doesn't support ACLs\n"
@@ -17022,126 +17203,136 @@ msgstr ""
 "Impossible de récupérer les informations du Media pour le Volume %s : ERR="
 "%s\n"
 
-#: src/filed/acl.c:895
+#: src/filed/acl.c:912
 #, fuzzy, c-format
 msgid "acl_delete_def_file error on file \"%s\": ERR=%s\n"
 msgstr ""
 "Impossible de récupérer les informations du Media pour le Volume %s : ERR="
 "%s\n"
 
-#: src/filed/acl.c:904
+#: src/filed/acl.c:923
 #, fuzzy, c-format
 msgid "acl_from_text error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/acl.c:918
+#: src/filed/acl.c:939
 #, fuzzy, c-format
 msgid "acl_valid error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/acl.c:948
+#: src/filed/acl.c:971
 #, fuzzy, c-format
 msgid "acl_set_file error on file \"%s\": filesystem doesn't support ACLs\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/acl.c:957
+#: src/filed/acl.c:980
 #, fuzzy, c-format
 msgid "acl_set_file error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/acl.c:1063 src/filed/acl.c:1089 src/filed/acl.c:1201
-#: src/filed/acl.c:1692 src/filed/acl.c:1795
+#: src/filed/acl.c:1087 src/filed/acl.c:1116 src/filed/acl.c:1230
+#: src/filed/acl.c:1738 src/filed/acl.c:1845
 #, fuzzy, c-format
 msgid "pathconf error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/acl.c:1216
+#: src/filed/acl.c:1246
 #, c-format
 msgid ""
 "Trying to restore acl on file \"%s\" on filesystem without %s acl support\n"
 msgstr ""
 
-#: src/filed/acl.c:1492
+#: src/filed/acl.c:1531
 #, fuzzy, c-format
 msgid "getacl error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/acl.c:1525
+#: src/filed/acl.c:1566
 #, fuzzy, c-format
 msgid "acltostr error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/acl.c:1546 src/filed/acl.c:1554
+#: src/filed/acl.c:1588 src/filed/acl.c:1598
 #, fuzzy, c-format
 msgid "strtoacl error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/acl.c:1582
+#: src/filed/acl.c:1627
 #, fuzzy, c-format
 msgid "setacl error on file \"%s\": filesystem doesn't support ACLs\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/acl.c:1590
+#: src/filed/acl.c:1635
 #, fuzzy, c-format
 msgid "setacl error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/acl.c:1711
+#: src/filed/acl.c:1760
 #, fuzzy, c-format
 msgid "acl_get error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/acl.c:1786
+#: src/filed/acl.c:1834
 #, c-format
 msgid ""
 "Trying to restore acl on file \"%s\" on filesystem without acl support\n"
 msgstr ""
 
-#: src/filed/acl.c:1812
+#: src/filed/acl.c:1863
 #, fuzzy, c-format
 msgid ""
 "Trying to restore POSIX acl on file \"%s\" on filesystem without aclent acl "
 "support\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/acl.c:1823
+#: src/filed/acl.c:1874
 #, c-format
 msgid ""
 "Trying to restore NFSv4 acl on file \"%s\" on filesystem without ace acl "
 "support\n"
 msgstr ""
 
-#: src/filed/acl.c:1839
+#: src/filed/acl.c:1890
 #, fuzzy, c-format
 msgid "acl_fromtext error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/acl.c:1853 src/filed/acl.c:1861
+#: src/filed/acl.c:1904 src/filed/acl.c:1912
 #, c-format
 msgid "wrong encoding of acl type in acl stream on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/acl.c:1886
+#: src/filed/acl.c:1937
 #, fuzzy, c-format
 msgid "acl_set error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/acl.c:1971
+#: src/filed/acl.c:2023
 #, fuzzy, c-format
 msgid "acltotext error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/acl.c:1993
+#: src/filed/acl.c:2046
 #, fuzzy, c-format
 msgid "aclfromtext error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/acl.c:2011
+#: src/filed/acl.c:2066
 #, fuzzy, c-format
 msgid "acl(SETACL) error on file \"%s\": ERR=%s\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/acl.c:2181
+#: src/filed/acl.c:2132
+#, fuzzy, c-format
+msgid "pioctl VIOCGETAL error on file \"%s\": ERR=%s\n"
+msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
+
+#: src/filed/acl.c:2160
+#, fuzzy, c-format
+msgid "pioctl VIOCSETAL error on file \"%s\": ERR=%s\n"
+msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
+
+#: src/filed/acl.c:2363
 #, c-format
 msgid "Can't restore ACLs of %s - incompatible acl stream encountered - %d\n"
 msgstr ""
@@ -17150,17 +17341,17 @@ msgstr ""
 msgid "Storage command not issued before Verify.\n"
 msgstr ""
 
-#: src/filed/verify_vol.c:97 src/filed/restore.c:483
+#: src/filed/verify_vol.c:97 src/filed/restore.c:486
 #, c-format
 msgid "Record header scan error: %s\n"
 msgstr ""
 
-#: src/filed/verify_vol.c:106 src/filed/restore.c:495
+#: src/filed/verify_vol.c:106 src/filed/restore.c:498
 #, c-format
 msgid "Data record error. ERR=%s\n"
 msgstr ""
 
-#: src/filed/verify_vol.c:110 src/filed/restore.c:499
+#: src/filed/verify_vol.c:110 src/filed/restore.c:502
 #, c-format
 msgid "Actual data size %d not same as header %d\n"
 msgstr ""
@@ -17238,91 +17429,91 @@ msgstr ""
 msgid "     Could not open directory \"%s\": ERR=%s\n"
 msgstr "     Impossible d'ouvrir le répertoire \"%s\" : ERR=%s\n"
 
-#: src/filed/backup.c:463
+#: src/filed/backup.c:466
 #, c-format
 msgid "     Unknown file type %d; not saved: %s\n"
 msgstr "     Type de fichier inconnu %d ; non sauvé : %s\n"
 
-#: src/filed/backup.c:519
+#: src/filed/backup.c:522
 #, c-format
 msgid "%s signature digest initialization failed\n"
 msgstr ""
 
-#: src/filed/backup.c:624
+#: src/filed/backup.c:630
 #, c-format
 msgid "     Cannot open \"%s\": ERR=%s.\n"
 msgstr "     Impossible d'ouvrir \"%s\" : ERR=%s.\n"
 
-#: src/filed/backup.c:661
+#: src/filed/backup.c:667
 #, fuzzy, c-format
 msgid "     Cannot open resource fork for \"%s\": ERR=%s.\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/backup.c:757
+#: src/filed/backup.c:763
 #, fuzzy
 msgid "Failed to allocate memory for crypto signature.\n"
 msgstr "Impossible de se connecter au Director\n"
 
-#: src/filed/backup.c:762 src/filed/backup.c:768 src/filed/backup.c:783
+#: src/filed/backup.c:768 src/filed/backup.c:774 src/filed/backup.c:789
 msgid "An error occurred while signing the stream.\n"
 msgstr ""
 
-#: src/filed/backup.c:807
+#: src/filed/backup.c:813
 msgid "An error occurred finalizing signing the stream.\n"
 msgstr ""
 
-#: src/filed/backup.c:925
+#: src/filed/backup.c:931
 #, c-format
 msgid "Compression deflateParams error: %d\n"
 msgstr ""
 
-#: src/filed/backup.c:962
+#: src/filed/backup.c:968
 msgid "Encrypting sparse or offset data not supported.\n"
 msgstr ""
 
-#: src/filed/backup.c:969
+#: src/filed/backup.c:975
 #, fuzzy
 msgid "Failed to initialize encryption context.\n"
 msgstr "Impossible d'initialiser le contexte TLS pour la Console \"%s\".\n"
 
-#: src/filed/backup.c:1079
+#: src/filed/backup.c:1085
 #, c-format
 msgid "Compression deflate error: %d\n"
 msgstr ""
 
-#: src/filed/backup.c:1086
+#: src/filed/backup.c:1092
 #, c-format
 msgid "Compression deflateReset error: %d\n"
 msgstr ""
 
-#: src/filed/backup.c:1116
+#: src/filed/backup.c:1126
 #, fuzzy, c-format
 msgid "Compression LZO error: %d\n"
 msgstr "Erreur de décompression. ERR=%d\n"
 
-#: src/filed/backup.c:1161 src/filed/backup.c:1177
+#: src/filed/backup.c:1171 src/filed/backup.c:1187
 msgid "Encryption error\n"
 msgstr ""
 
-#: src/filed/backup.c:1203
+#: src/filed/backup.c:1213
 #, c-format
 msgid "Read error on file %s. ERR=%s\n"
 msgstr ""
 
-#: src/filed/backup.c:1206
+#: src/filed/backup.c:1216
 #, c-format
 msgid "Too many errors. JobErrors=%d.\n"
 msgstr ""
 
-#: src/filed/backup.c:1216
+#: src/filed/backup.c:1226
 msgid "Encryption padding error\n"
 msgstr ""
 
-#: src/filed/backup.c:1280
+#: src/filed/backup.c:1290
 msgid "Invalid file flags, no supported data stream type.\n"
 msgstr ""
 
-#: src/filed/backup.c:1536
+#: src/filed/backup.c:1549
 #, c-format
 msgid "VSS Writer (BackupComplete): %s\n"
 msgstr ""
@@ -17342,297 +17533,297 @@ msgstr ""
 msgid "Could not set Finder Info on %s\n"
 msgstr "Impossible d'ouvrir le device %s\n"
 
-#: src/filed/restore.c:415
+#: src/filed/restore.c:418
 #, fuzzy
 msgid "LZO init failed\n"
 msgstr "Impossible de Rembobiner.\n"
 
-#: src/filed/restore.c:657
+#: src/filed/restore.c:660
 msgid "Unexpected cryptographic session data stream.\n"
 msgstr ""
 
-#: src/filed/restore.c:667
+#: src/filed/restore.c:670
 msgid ""
 "No private decryption keys have been defined to decrypt encrypted backup "
 "data.\n"
 msgstr ""
 
-#: src/filed/restore.c:678
+#: src/filed/restore.c:681
 #, fuzzy
 msgid "Could not create digest.\n"
 msgstr "Impossible de créer la structure BSOCK cliente.\n"
 
-#: src/filed/restore.c:696
+#: src/filed/restore.c:699
 msgid "Missing private key required to decrypt encrypted backup data.\n"
 msgstr ""
 
-#: src/filed/restore.c:699
+#: src/filed/restore.c:702
 msgid "Decrypt of the session key failed.\n"
 msgstr "Impossible de décrypter la clef de session.\n"
 
-#: src/filed/restore.c:705
+#: src/filed/restore.c:708
 #, c-format
 msgid "An error occurred while decoding encrypted session data stream: %s\n"
 msgstr ""
 
-#: src/filed/restore.c:772 src/filed/restore.c:825
+#: src/filed/restore.c:775 src/filed/restore.c:828
 #, c-format
 msgid "Missing encryption session data stream for %s\n"
 msgstr ""
 
-#: src/filed/restore.c:780 src/filed/restore.c:832
+#: src/filed/restore.c:783 src/filed/restore.c:835
 #, c-format
 msgid "Failed to initialize decryption context for %s\n"
 msgstr ""
 
-#: src/filed/restore.c:844
+#: src/filed/restore.c:847
 #, fuzzy, c-format
 msgid "Cannot open resource fork for %s.\n"
 msgstr "Impossible d'ouvrir le fichier %s : ERR=%s\n"
 
-#: src/filed/restore.c:986
+#: src/filed/restore.c:992
 msgid "Unexpected cryptographic signature data stream.\n"
 msgstr ""
 
-#: src/filed/restore.c:994
+#: src/filed/restore.c:1000
 #, c-format
 msgid "Failed to decode message signature for %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1058
+#: src/filed/restore.c:1064
 #, fuzzy, c-format
 msgid "Encountered %ld acl errors while doing restore\n"
 msgstr "Saisir la liste des fichiers à restaurer"
 
-#: src/filed/restore.c:1062
+#: src/filed/restore.c:1068
 #, c-format
 msgid "Encountered %ld xattr errors while doing restore\n"
 msgstr ""
 
-#: src/filed/restore.c:1066
+#: src/filed/restore.c:1072
 #, c-format
 msgid ""
 "%d non-supported data streams and %d non-supported attrib streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1070
+#: src/filed/restore.c:1076
 #, c-format
 msgid "%d non-supported resource fork streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1073
+#: src/filed/restore.c:1079
 #, c-format
 msgid "%d non-supported Finder Info streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1076
+#: src/filed/restore.c:1082
 #, c-format
 msgid "%d non-supported acl streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1079
+#: src/filed/restore.c:1085
 #, fuzzy, c-format
 msgid "%d non-supported crypto streams ignored.\n"
 msgstr "contentEncryptionAlgorithm non supporté : %d\n"
 
-#: src/filed/restore.c:1082
+#: src/filed/restore.c:1088
 #, fuzzy, c-format
 msgid "%d non-supported xattr streams ignored.\n"
 msgstr "contentEncryptionAlgorithm non supporté : %d\n"
 
-#: src/filed/restore.c:1162
+#: src/filed/restore.c:1168
 msgid "Zlib errno"
 msgstr ""
 
-#: src/filed/restore.c:1164
+#: src/filed/restore.c:1170
 msgid "Zlib stream error"
 msgstr ""
 
-#: src/filed/restore.c:1166
+#: src/filed/restore.c:1172
 msgid "Zlib data error"
 msgstr ""
 
-#: src/filed/restore.c:1168
+#: src/filed/restore.c:1174
 msgid "Zlib memory error"
 msgstr ""
 
-#: src/filed/restore.c:1170
+#: src/filed/restore.c:1176
 msgid "Zlib buffer error"
 msgstr ""
 
-#: src/filed/restore.c:1172
+#: src/filed/restore.c:1178
 msgid "Zlib version error"
 msgstr ""
 
-#: src/filed/restore.c:1212
+#: src/filed/restore.c:1218
 #, c-format
 msgid "Missing cryptographic signature for %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1245 src/filed/restore.c:1274
+#: src/filed/restore.c:1251 src/filed/restore.c:1280
 #, fuzzy, c-format
 msgid "Signature validation failed for file %s: ERR=%s\n"
 msgstr "Impossible de créer le fichier bootstrap %s : ERR=%s\n"
 
-#: src/filed/restore.c:1262
+#: src/filed/restore.c:1268
 #, fuzzy, c-format
 msgid "Digest one file failed for file: %s\n"
 msgstr "Impossible de créer le fichier bootstrap %s : ERR=%s\n"
 
-#: src/filed/restore.c:1301
+#: src/filed/restore.c:1307
 #, c-format
 msgid "Signature validation failed for %s: %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1398
+#: src/filed/restore.c:1404
 #, fuzzy, c-format
 msgid "LZO uncompression error on file %s. ERR=%d\n"
 msgstr "Erreur de décompression. ERR=%d\n"
 
-#: src/filed/restore.c:1435
+#: src/filed/restore.c:1441
 #, c-format
 msgid "Uncompression error on file %s. ERR=%s\n"
 msgstr ""
 
-#: src/filed/restore.c:1468
+#: src/filed/restore.c:1474
 #, c-format
 msgid "Write error in Win32 Block Decomposition on %s: %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1527
+#: src/filed/restore.c:1533
 msgid "Decryption error\n"
 msgstr ""
 
-#: src/filed/restore.c:1620
+#: src/filed/restore.c:1626
 msgid "Logic error: output file should be open\n"
 msgstr ""
 
-#: src/filed/restore.c:1658
+#: src/filed/restore.c:1664
 msgid "Logic error: output file should not be open\n"
 msgstr ""
 
-#: src/filed/restore.c:1692
+#: src/filed/restore.c:1698
 #, c-format
 msgid "Decryption error. buf_len=%d decrypt_len=%d on file %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1813
+#: src/filed/restore.c:1819
 msgid "Open File Manager paused\n"
 msgstr ""
 
-#: src/filed/restore.c:1817
+#: src/filed/restore.c:1823
 msgid "FAILED to pause Open File Manager\n"
 msgstr ""
 
-#: src/filed/restore.c:1825
+#: src/filed/restore.c:1831
 #, c-format
 msgid "Running as '%s'. Privmask=%#08x\n"
 msgstr ""
 
-#: src/filed/restore.c:1827
+#: src/filed/restore.c:1833
 msgid "Failed to retrieve current UserName\n"
 msgstr ""
 
-#: src/filed/job.c:458
+#: src/filed/job.c:456
 #, c-format
 msgid "2901 Job %s not found.\n"
 msgstr "2901 Le job %s est introuvable.\n"
 
-#: src/filed/job.c:468
+#: src/filed/job.c:466
 #, c-format
 msgid "2001 Job %s marked to be canceled.\n"
 msgstr "2001 Le job %s va être annulé.\n"
 
-#: src/filed/job.c:471
+#: src/filed/job.c:469
 msgid "2902 Error scanning cancel command.\n"
 msgstr "2902 Erreur dans le décodage de la commande d'annulation.\n"
 
-#: src/filed/job.c:494
+#: src/filed/job.c:492
 #, c-format
 msgid "2991 Bad setdebug command: %s\n"
 msgstr "2991 Erreur dans la commande setdebug : %s\n"
 
-#: src/filed/job.c:517
+#: src/filed/job.c:515
 #, c-format
 msgid "Bad estimate command: %s"
 msgstr ""
 
-#: src/filed/job.c:518
+#: src/filed/job.c:516
 msgid "2992 Bad estimate command.\n"
 msgstr ""
 
-#: src/filed/job.c:541
+#: src/filed/job.c:539
 #, c-format
 msgid "Bad Job Command: %s"
 msgstr ""
 
-#: src/filed/job.c:580
+#: src/filed/job.c:578
 #, c-format
 msgid "Bad RunBeforeJob command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:581 src/filed/job.c:600
+#: src/filed/job.c:579 src/filed/job.c:598
 msgid "2905 Bad RunBeforeJob command.\n"
 msgstr ""
 
-#: src/filed/job.c:611
+#: src/filed/job.c:609
 msgid "2905 Bad RunBeforeNow command.\n"
 msgstr ""
 
-#: src/filed/job.c:630
+#: src/filed/job.c:628
 #, c-format
 msgid "Bad RunAfter command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:631
+#: src/filed/job.c:629
 msgid "2905 Bad RunAfterJob command.\n"
 msgstr ""
 
-#: src/filed/job.c:667
+#: src/filed/job.c:665
 #, c-format
 msgid "Bad RunScript command: %s\n"
 msgstr "Erreur dans la commande RunScript : %s\n"
 
-#: src/filed/job.c:668
+#: src/filed/job.c:666
 msgid "2905 Bad RunScript command.\n"
 msgstr "2905 Erreur sur la commande RunScript.\n"
 
-#: src/filed/job.c:722
+#: src/filed/job.c:720
 #, fuzzy, c-format
 msgid "Bad RestoreObject command: %s\n"
 msgstr "Erreur dans la commande RunScript : %s\n"
 
-#: src/filed/job.c:789
+#: src/filed/job.c:785
 #, fuzzy
 msgid "2909 Bad RestoreObject command.\n"
 msgstr "2905 Erreur sur la commande RunScript.\n"
 
-#: src/filed/job.c:828
+#: src/filed/job.c:824
 #, c-format
 msgid "Plugin Directory not defined. Cannot use plugin: \"%s\"\n"
 msgstr ""
 
-#: src/filed/job.c:870
+#: src/filed/job.c:866
 #, c-format
 msgid "Error running program: %s. stat=%d: ERR=%s\n"
 msgstr "Erreur dans l'exécution de la commande : %s. stat=%d: ERR=%s\n"
 
-#: src/filed/job.c:881
+#: src/filed/job.c:877
 #, c-format
 msgid "Cannot open FileSet input file: %s. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:1027
+#: src/filed/job.c:1031
 #, c-format
 msgid "REGEX %s compile error. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:1178
+#: src/filed/job.c:1182
 #, c-format
 msgid "Invalid FileSet command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:1651
+#: src/filed/job.c:1655
 #, fuzzy, c-format
 msgid ""
 "DIR and FD clocks differ by %lld seconds, FD automatically compensating.\n"
@@ -17640,143 +17831,143 @@ msgstr ""
 "L'horloge du client et du director ont %d secondes d'écart, le client s'est "
 "ajusté automatiquement.\n"
 
-#: src/filed/job.c:1660
+#: src/filed/job.c:1664
 #, c-format
 msgid "Unknown backup level: %s\n"
 msgstr ""
 
-#: src/filed/job.c:1673
+#: src/filed/job.c:1677
 #, c-format
 msgid "Bad level command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:1695
+#: src/filed/job.c:1699
 #, c-format
 msgid "Bad session command: %s"
 msgstr ""
 
-#: src/filed/job.c:1756
+#: src/filed/job.c:1760
 #, c-format
 msgid "Bad storage command: %s"
 msgstr ""
 
-#: src/filed/job.c:1777
+#: src/filed/job.c:1781
 #, c-format
 msgid "Failed to connect to Storage daemon: %s:%d\n"
 msgstr ""
 
-#: src/filed/job.c:1789
+#: src/filed/job.c:1793
 msgid "Failed to authenticate Storage daemon.\n"
 msgstr ""
 
-#: src/filed/job.c:1836
+#: src/filed/job.c:1840
 msgid "ACL support not configured for your machine.\n"
 msgstr ""
 
-#: src/filed/job.c:1840
+#: src/filed/job.c:1844
 msgid "XATTR support not configured for your machine.\n"
 msgstr ""
 
-#: src/filed/job.c:1849
+#: src/filed/job.c:1853
 msgid "Cannot contact Storage daemon\n"
 msgstr "Impossible de se connecter au démon Storage\n"
 
-#: src/filed/job.c:1868
+#: src/filed/job.c:1872
 #, c-format
 msgid "Bad response to append open: %s\n"
 msgstr ""
 
-#: src/filed/job.c:1873
+#: src/filed/job.c:1877
 msgid "Bad response from stored to open command\n"
 msgstr ""
 
-#: src/filed/job.c:1904
+#: src/filed/job.c:1909
 #, c-format
 msgid "Generate VSS snapshots. Driver=\"%s\", Drive(s)=\"%s\"\n"
 msgstr "Création des snapshot VSS. Driver=\"%s\", Lecteur(s)=\"%s\"\n"
 
-#: src/filed/job.c:1906
-#, fuzzy
-msgid "CreateSGenerate VSS snapshots failed.\n"
+#: src/filed/job.c:1912
+#, fuzzy, c-format
+msgid "CreateSGenerate VSS snapshots failed. ERR=%s\n"
 msgstr "Erreur durant la création des snapshots VSS.\n"
 
-#: src/filed/job.c:1912
+#: src/filed/job.c:1919
 #, fuzzy, c-format
 msgid "Generate VSS snapshot of drive \"%c:\\\" failed.\n"
 msgstr "Erreur durant la création des snapshots VSS.\n"
 
-#: src/filed/job.c:1918
+#: src/filed/job.c:1925
 #, c-format
 msgid "VSS Writer (PrepareForBackup): %s\n"
 msgstr ""
 
-#: src/filed/job.c:1923
+#: src/filed/job.c:1930
 msgid "No drive letters found for generating VSS snapshots.\n"
 msgstr ""
 
-#: src/filed/job.c:1926
-#, fuzzy
-msgid "VSS was not initialized properly.\n"
+#: src/filed/job.c:1934
+#, fuzzy, c-format
+msgid "VSS was not initialized properly. ERR=%s\n"
 msgstr "Impossible d'initialiser le verrou sur la base. ERR=%s\n"
 
-#: src/filed/job.c:1976
+#: src/filed/job.c:1985
 msgid "Append Close with SD failed.\n"
 msgstr ""
 
-#: src/filed/job.c:1980
+#: src/filed/job.c:1989
 #, c-format
 msgid "Bad status %d returned from Storage Daemon.\n"
 msgstr ""
 
-#: src/filed/job.c:2010
+#: src/filed/job.c:2019
 #, c-format
 msgid "2994 Bad verify command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:2025 src/filed/job.c:2066
+#: src/filed/job.c:2034 src/filed/job.c:2075
 #, c-format
 msgid "2994 Bad verify level: %s\n"
 msgstr ""
 
-#: src/filed/job.c:2138
+#: src/filed/job.c:2146
 #, c-format
 msgid "Bad replace command. CMD=%s\n"
 msgstr ""
 
-#: src/filed/job.c:2161
+#: src/filed/job.c:2169
 #, c-format
 msgid "Bad where regexp. where=%s\n"
 msgstr ""
 
-#: src/filed/job.c:2199
+#: src/filed/job.c:2207
 #, c-format
 msgid "VSS was not initialized properly. VSS support is disabled. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:2244
+#: src/filed/job.c:2252
 #, c-format
 msgid "VSS Writer (RestoreComplete): %s\n"
 msgstr ""
 
-#: src/filed/job.c:2292
+#: src/filed/job.c:2302
 msgid "Improper calling sequence.\n"
 msgstr ""
 
-#: src/filed/job.c:2312
+#: src/filed/job.c:2322
 #, c-format
 msgid "Bad response to SD read open: %s\n"
 msgstr ""
 
-#: src/filed/job.c:2317
+#: src/filed/job.c:2327
 msgid "Bad response from stored to read open command\n"
 msgstr ""
 
-#: src/filed/job.c:2385
+#: src/filed/job.c:2391
 #, c-format
 msgid "Comm error with SD. bad response to %s. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:2388
+#: src/filed/job.c:2394
 #, c-format
 msgid "Bad response to %s command. Wanted %s, got %s\n"
 msgstr ""
@@ -17813,7 +18004,7 @@ msgid ""
 "Version: "
 msgstr ""
 
-#: src/baconfig.h:72 src/baconfig.h:73
+#: src/baconfig.h:72 src/baconfig.h:73 src/baconfig.h:78 src/baconfig.h:79
 #, c-format
 msgid "Failed ASSERT: %s\n"
 msgstr ""
@@ -17994,8 +18185,9 @@ msgid "Save and close"
 msgstr ""
 
 #: src/wx-console/wxbconfigfileeditor.cpp:112
+#, fuzzy
 msgid "Close without saving"
-msgstr ""
+msgstr "Terminé avec des avertissements"
 
 #: src/wx-console/wxbconfigfileeditor.cpp:139
 #, fuzzy, c-format
@@ -18124,8 +18316,9 @@ msgid "if newer"
 msgstr "Type"
 
 #: src/wx-console/wxbrestorepanel.cpp:351
+#, fuzzy
 msgid "if older"
-msgstr ""
+msgstr "FileSet"
 
 #: src/wx-console/wxbrestorepanel.cpp:351
 #: src/wx-console/wxbrestorepanel.cpp:1908
@@ -18134,8 +18327,9 @@ msgid "never"
 msgstr "Type"
 
 #: src/wx-console/wxbrestorepanel.cpp:359
+#, fuzzy
 msgid "Please configure parameters concerning files restoration :"
-msgstr ""
+msgstr "Aucun fichier sélectionné pour la restauration.\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:427
 msgid "Getting parameters list."
@@ -18147,8 +18341,9 @@ msgid "Error : no clients returned by the director."
 msgstr "Impossible de se connecter au Director\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:459
+#, fuzzy
 msgid "Error : no filesets returned by the director."
-msgstr ""
+msgstr "Impossible de se connecter au Director\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:483
 #, fuzzy
@@ -18254,8 +18449,9 @@ msgid "Job failed."
 msgstr "Job échoué.\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:828
+#, fuzzy
 msgid "Restore failed, please look at messages.\n"
-msgstr ""
+msgstr "Impossible de créer le fichier bootstrap %s : ERR=%s\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:829
 msgid "Restore failed, please look at messages in console."
@@ -18298,8 +18494,9 @@ msgid "Restore job terminated successfully.\n"
 msgstr "Restauration non effectuée.\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:904
+#, fuzzy
 msgid "Restore job terminated in error, see messages in console."
-msgstr ""
+msgstr "    Le Device est BLOQUÉ en attente d'un média.\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:905
 #, fuzzy
@@ -18307,8 +18504,9 @@ msgid "Restore job terminated in error, see messages.\n"
 msgstr "    Le Device est BLOQUÉ en attente d'un média.\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:910
+#, fuzzy
 msgid "Restore job reported a non-fatal error."
-msgstr ""
+msgstr "Restauration annulée"
 
 #: src/wx-console/wxbrestorepanel.cpp:914
 #, fuzzy
@@ -18388,8 +18586,9 @@ msgid "Restore done successfully."
 msgstr "Restauration non effectuée.\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:1086
+#, fuzzy
 msgid "Applying restore configuration changes..."
-msgstr ""
+msgstr "Merci de corriger le fichier de configuration : %s\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:1138
 #, fuzzy
@@ -18476,8 +18675,9 @@ msgid "ifnewer"
 msgstr "Type"
 
 #: src/wx-console/wxbrestorepanel.cpp:1907
+#, fuzzy
 msgid "ifolder"
-msgstr ""
+msgstr "FileSet"
 
 #: src/wx-console/wxbrestorepanel.cpp:1911
 #, fuzzy
@@ -18581,9 +18781,9 @@ msgid "Multiple directors found in your config file.\n"
 msgstr ""
 
 #: src/wx-console/console_thread.cpp:360
-#, c-format
+#, fuzzy, c-format
 msgid "Please choose a director (1-%d): "
-msgstr ""
+msgstr "Aucun fichier sélectionné pour la restauration.\n"
 
 #: src/wx-console/console_thread.cpp:389
 #, c-format
@@ -18763,8 +18963,9 @@ msgid "Please choose a configuration file to use"
 msgstr "Merci de corriger le fichier de configuration : %s\n"
 
 #: src/wx-console/wxbmainframe.cpp:463
+#, fuzzy
 msgid "This configuration file has been successfully read, use it as default?"
-msgstr ""
+msgstr "Merci de corriger le fichier de configuration : %s\n"
 
 #: src/wx-console/wxbmainframe.cpp:464
 #, fuzzy
@@ -18797,8 +18998,9 @@ msgid ""
 msgstr ""
 
 #: src/wx-console/wxbmainframe.cpp:521
+#, fuzzy
 msgid "About Bacula bwx-console"
-msgstr ""
+msgstr "Message de Bacula"
 
 #: src/wx-console/wxbmainframe.cpp:527
 #, fuzzy
@@ -18877,50 +19079,50 @@ msgstr ""
 "       -t          test - lecture de la configuration et sortie\n"
 "\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:90
+#: src/qt-console/bcomm/dircomm.cpp:92
 #, fuzzy, c-format
 msgid "Already connected\"%s\".\n"
 msgstr "Console connecté à %s\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:103
+#: src/qt-console/bcomm/dircomm.cpp:105
 #, fuzzy, c-format
 msgid ""
 "Connecting to Director %s:%d\n"
 "\n"
 msgstr "Connexion au Director %s:%d\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:206
+#: src/qt-console/bcomm/dircomm.cpp:208
 msgid "Initializing ..."
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:221 src/qt-console/console/console.cpp:142
+#: src/qt-console/bcomm/dircomm.cpp:224 src/qt-console/console/console.cpp:142
 #, fuzzy
 msgid "Connected"
 msgstr "Connexion...\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:345
+#: src/qt-console/bcomm/dircomm.cpp:348
 #, fuzzy
 msgid "Command completed ..."
 msgstr "Commande annulée.\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:352 src/qt-console/console/console.cpp:373
+#: src/qt-console/bcomm/dircomm.cpp:355 src/qt-console/console/console.cpp:379
 msgid "Processing command ..."
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:359
+#: src/qt-console/bcomm/dircomm.cpp:362
 msgid "At main prompt waiting for input ..."
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:366 src/qt-console/bcomm/dircomm.cpp:378
+#: src/qt-console/bcomm/dircomm.cpp:369 src/qt-console/bcomm/dircomm.cpp:382
 msgid "At prompt waiting for input ..."
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:386
+#: src/qt-console/bcomm/dircomm.cpp:390
 #, fuzzy
 msgid "Command failed."
 msgstr "Commande annulée.\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:458
+#: src/qt-console/bcomm/dircomm.cpp:463
 #, fuzzy
 msgid "Director disconnected."
 msgstr "Connexion du director le %s\n"
@@ -18953,6 +19155,24 @@ msgstr ""
 "       -t          test - lecture de la configuration et sortie\n"
 "\n"
 
+#~ msgid ""
+#~ "====\n"
+#~ "\n"
+#~ msgstr ""
+#~ "====\n"
+#~ "\n"
+
+#~ msgid "    Drive %d status unknown.\n"
+#~ msgstr "    Le statut du lecteur %d est inconnu.\n"
+
+#~ msgid "    Files=%s Bytes=%s Bytes/sec=%s\n"
+#~ msgstr "    Fichiers=%s Octets=%s Octets/sec=%s\n"
+
+#~ msgid "Network buffer size %d not multiple of tape block size.\n"
+#~ msgstr ""
+#~ "La taille du buffer réseau %d n'est pas un multiple de la taille de bloc "
+#~ "du lecteur.\n"
+
 #, fuzzy
 #~ msgid "Plugin load %s failed: ERR=%s\n"
 #~ msgstr "fopen %s en erreur : ERR=%s\n"
@@ -19113,10 +19333,6 @@ msgstr ""
 #~ msgstr "Pas d'enregistrement trouvé en base pour : %s\n"
 
 #, fuzzy
-#~ msgid "Folder"
-#~ msgstr "FileSet"
-
-#, fuzzy
 #~ msgid "1 file (%s)"
 #~ msgstr "Nouveau Fichier : %s\n"
 
diff --git a/po/bacula.pot b/po/nl.po
similarity index 80%
copy from po/bacula.pot
copy to po/nl.po
index ee751d8..6418d0c 100644
--- a/po/bacula.pot
+++ b/po/nl.po
@@ -1,20 +1,19 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR Kern Sibbald
+# Dutch translation of Bacula
+# Copyright (C) 2012 Kern Sibbald
 # This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+# W. van den Akker <wvdakker at wilsoft.nl>, 2012
 #
-#, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: Bacula 5.2.7\n"
 "Report-Msgid-Bugs-To: bacula-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2012-01-17 20:45+0100\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"POT-Creation-Date: 2013-02-19 18:26+0100\n"
+"PO-Revision-Date: 2012-05-05 11:52+0100\n"
+"Last-Translator: W. van den Akker <wvdakker at wilsoft.nl>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
-"Language: \n"
+"Language: nl\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
 #: src/dird/jobq.c:74
@@ -45,13 +44,13 @@ msgstr ""
 #: src/dird/jobq.c:180
 #, c-format
 msgid "Job %s waiting %d seconds for scheduled start time.\n"
-msgstr ""
+msgstr "Job %s wacht %d seconde voor de start tijd.\n"
 
-#: src/dird/jobq.c:220 src/dird/job.c:113 src/stored/dircmd.c:198
-#: src/stored/stored.c:503
+#: src/dird/jobq.c:220 src/dird/job.c:113 src/stored/dircmd.c:200
+#: src/stored/stored.c:560
 #, c-format
 msgid "Unable to init job cond variable: ERR=%s\n"
-msgstr ""
+msgstr "Kan job cond variabele niet initialiseren: ERR=%s\n"
 
 #: src/dird/jobq.c:242
 #, c-format
@@ -71,11 +70,11 @@ msgstr ""
 #: src/dird/jobq.c:647
 #, c-format
 msgid "Rescheduled Job %s at %s to re-run in %d seconds (%s).\n"
-msgstr ""
+msgstr "Opnieuw ingeplande Job %s in %s start opnieuw in %d seconden (%s).\n"
 
 #: src/dird/jobq.c:703 src/dird/jobq.c:708
 msgid "previous Job"
-msgstr ""
+msgstr "vorige Job"
 
 #: src/dird/jobq.c:745
 #, c-format
@@ -83,38 +82,41 @@ msgid ""
 "Job canceled. Attempt to read and write same device.\n"
 "    Read storage \"%s\" (From %s) -- Write storage \"%s\" (From %s)\n"
 msgstr ""
+"Job geannuleerd. Er wordt van hetzelfde device gelezen en naar geschreven.\n"
+"   Lezen van opslag \"%s\" (Van %s) -- Schrijven naar opslag \"%s\" (Van "
+"%s)\n"
 
 #: src/dird/ua_select.c:54
 #, c-format
 msgid "The current %s retention period is: %s\n"
-msgstr ""
+msgstr "De huidige %s retention periode: %s\n"
 
 #: src/dird/ua_select.c:59
 msgid "Continue? (yes/mod/no): "
-msgstr ""
+msgstr "Doorgaan? (ja, wijz, nee):"
 
-#: src/dird/ua_select.c:62 src/dird/ua_run.c:232
+#: src/dird/ua_select.c:62 src/dird/ua_run.c:219
 msgid "mod"
 msgstr ""
 
 #: src/dird/ua_select.c:63
 msgid "Enter new retention period: "
-msgstr ""
+msgstr "Geef nieuwe retention periode:"
 
 #: src/dird/ua_select.c:67
 msgid "Invalid period.\n"
-msgstr ""
+msgstr "Onjuiste periode.\n"
 
 #: src/dird/ua_select.c:143
 msgid "You have the following choices:\n"
-msgstr ""
+msgstr "U heeft de volgende keuzes:\n"
 
 #: src/dird/ua_select.c:159
 msgid "The defined Storage resources are:\n"
-msgstr ""
+msgstr "De gedefinieerde Opslag media zijn:\n"
 
-#: src/dird/ua_select.c:167 src/dird/ua_dotcmds.c:715 src/dird/ua_cmds.c:996
-#: src/dird/ua_run.c:237 src/wx-console/wxbrestorepanel.cpp:339
+#: src/dird/ua_select.c:167 src/dird/ua_dotcmds.c:734 src/dird/ua_cmds.c:995
+#: src/dird/ua_run.c:224 src/wx-console/wxbrestorepanel.cpp:339
 #: src/wx-console/wxbrestorepanel.cpp:355
 #: src/wx-console/wxbrestorepanel.cpp:479
 #: src/wx-console/wxbrestorepanel.cpp:480
@@ -125,35 +127,37 @@ msgstr ""
 #: src/wx-console/wxbrestorepanel.cpp:1845
 #: src/wx-console/wxbrestorepanel.cpp:1916
 msgid "Storage"
-msgstr ""
+msgstr "Opslag"
 
 #: src/dird/ua_select.c:167
 msgid "Select Storage resource"
-msgstr ""
+msgstr "Selecteer opslag medium"
 
 #: src/dird/ua_select.c:182 src/dird/ua_restore.c:1296
 msgid "The defined FileSet resources are:\n"
-msgstr ""
+msgstr "De gedefinieerde Fileset media zijn:\n"
 
-#: src/dird/ua_select.c:190 src/dird/ua_restore.c:1300 src/dird/ua_run.c:239
+#: src/dird/ua_select.c:190 src/dird/ua_restore.c:1300 src/dird/ua_run.c:226
 msgid "FileSet"
 msgstr ""
 
 #: src/dird/ua_select.c:190 src/dird/ua_restore.c:1300
 msgid "Select FileSet resource"
-msgstr ""
+msgstr "Selecteer FileSet bron"
 
-#: src/dird/ua_select.c:220 src/dird/ua_cmds.c:1983
+#: src/dird/ua_select.c:220 src/dird/ua_cmds.c:2029
 msgid "Could not find a Catalog resource\n"
-msgstr ""
+msgstr "Kan Catalog medium niet vinden\n"
 
 #: src/dird/ua_select.c:223
 msgid "You must specify a \"use <catalog-name>\" command before continuing.\n"
 msgstr ""
+"U diente een \"use <catalog-name>\" te specificeren alvorens te kunnen "
+"doorgaan.\n"
 
 #: src/dird/ua_select.c:229
 msgid "The defined Catalog resources are:\n"
-msgstr ""
+msgstr "De gedefinieerde Catalog media zijn:\n"
 
 #: src/dird/ua_select.c:237
 msgid "Catalog"
@@ -161,21 +165,21 @@ msgstr ""
 
 #: src/dird/ua_select.c:237
 msgid "Select Catalog resource"
-msgstr ""
+msgstr "Selecteer Catalog media"
 
 #: src/dird/ua_select.c:255 src/dird/ua_select.c:281
 msgid "The defined Job resources are:\n"
-msgstr ""
+msgstr "De gedefinieerde job resources zijn:\n"
 
 #: src/dird/ua_select.c:266 src/dird/ua_select.c:289 src/dird/ua_select.c:330
-#: src/dird/ua_select.c:1187 src/dird/dird_conf.c:650 src/dird/ua_prune.c:593
-#: src/dird/ua_run.c:238
+#: src/dird/ua_select.c:1186 src/dird/dird_conf.c:670 src/dird/ua_prune.c:601
+#: src/dird/ua_run.c:225
 msgid "Job"
-msgstr ""
+msgstr "Job"
 
 #: src/dird/ua_select.c:266 src/dird/ua_select.c:289
 msgid "Select Job resource"
-msgstr ""
+msgstr "Selecteer Job media:"
 
 #: src/dird/ua_select.c:308
 #, c-format
@@ -188,14 +192,14 @@ msgstr ""
 
 #: src/dird/ua_select.c:330
 msgid "Select Restore Job"
-msgstr ""
+msgstr "Selecteer Job om terug te zetten"
 
 #: src/dird/ua_select.c:347
 msgid "The defined Client resources are:\n"
-msgstr ""
+msgstr "De gedefinieerde Clients zijn:\n"
 
-#: src/dird/ua_select.c:355 src/dird/ua_select.c:464 src/dird/ua_dotcmds.c:716
-#: src/dird/ua_cmds.c:997 src/dird/ua_run.c:243
+#: src/dird/ua_select.c:355 src/dird/ua_select.c:464 src/dird/ua_dotcmds.c:735
+#: src/dird/ua_cmds.c:996 src/dird/ua_run.c:230
 #: src/wx-console/wxbrestorepanel.cpp:336
 #: src/wx-console/wxbrestorepanel.cpp:354
 #: src/wx-console/wxbrestorepanel.cpp:431
@@ -211,26 +215,26 @@ msgstr ""
 #: src/wx-console/wxbrestorepanel.cpp:1914
 #: src/wx-console/wxbrestorepanel.cpp:1970
 msgid "Client"
-msgstr ""
+msgstr "Client"
 
 #: src/dird/ua_select.c:355
 msgid "Select Client (File daemon) resource"
-msgstr ""
+msgstr "Selecteer een Client (File daemon)"
 
 #: src/dird/ua_select.c:382
 #, c-format
 msgid "Error: Client resource %s does not exist.\n"
-msgstr ""
+msgstr "Fout: Client %s bestaat niet.\n"
 
 #: src/dird/ua_select.c:407
 #, c-format
 msgid "Could not find Client %s: ERR=%s"
-msgstr ""
+msgstr "Kan Client niet vinden %s: ERR=%s"
 
 #: src/dird/ua_select.c:417 src/dird/ua_select.c:471
 #, c-format
 msgid "Could not find Client \"%s\": ERR=%s"
-msgstr ""
+msgstr "Kan Client niet vinden \"%s\": ERR=%s"
 
 #: src/dird/ua_select.c:446
 #, c-format
@@ -243,18 +247,18 @@ msgstr ""
 
 #: src/dird/ua_select.c:454
 msgid "Defined Clients:\n"
-msgstr ""
+msgstr "Gedefinieerde Clients:\n"
 
 #: src/dird/ua_select.c:464
 msgid "Select the Client"
-msgstr ""
+msgstr "Selecteer Client"
 
 #: src/dird/ua_select.c:497 src/dird/ua_select.c:521 src/dird/ua_select.c:566
 #, c-format
 msgid "Could not find Pool \"%s\": ERR=%s"
 msgstr ""
 
-#: src/dird/ua_select.c:532 src/dird/ua_output.c:474 src/dird/ua_update.c:437
+#: src/dird/ua_select.c:532 src/dird/ua_output.c:476 src/dird/ua_update.c:436
 #, c-format
 msgid "Error obtaining pool ids. ERR=%s\n"
 msgstr ""
@@ -265,197 +269,201 @@ msgstr ""
 
 #: src/dird/ua_select.c:540
 msgid "Defined Pools:\n"
-msgstr ""
+msgstr "Gedefinieerde Pools:\n"
 
-#: src/dird/ua_select.c:542 src/dird/ua_select.c:562 src/dird/ua_update.c:364
-#: src/baconfig.h:80
+#: src/dird/ua_select.c:542 src/dird/ua_select.c:562 src/dird/ua_update.c:365
+#: src/baconfig.h:88
 msgid "*None*"
-msgstr ""
+msgstr "*Geen*"
 
-#: src/dird/ua_select.c:553 src/dird/ua_select.c:667 src/dird/ua_update.c:615
-#: src/dird/ua_run.c:251 src/wx-console/wxbrestorepanel.cpp:338
+#: src/dird/ua_select.c:553 src/dird/ua_select.c:666 src/dird/ua_update.c:616
+#: src/dird/ua_run.c:238 src/wx-console/wxbrestorepanel.cpp:338
 #: src/wx-console/wxbrestorepanel.cpp:527
 #: src/wx-console/wxbrestorepanel.cpp:537
 #: src/wx-console/wxbrestorepanel.cpp:1834
 msgid "Pool"
-msgstr ""
+msgstr "Pool"
 
 #: src/dird/ua_select.c:553
 msgid "Select the Pool"
-msgstr ""
+msgstr "Selecteer Pool"
 
 #: src/dird/ua_select.c:591
 #, c-format
 msgid "No access to Pool \"%s\"\n"
-msgstr ""
+msgstr "Geen toegang tot Pool \"%s\"\n"
 
-#: src/dird/ua_select.c:624
+#: src/dird/ua_select.c:623
 msgid "Enter *MediaId or Volume name: "
-msgstr ""
+msgstr "Voer *MediaId of Volume naam in:"
 
-#: src/dird/ua_select.c:659
+#: src/dird/ua_select.c:658
 msgid "The defined Pool resources are:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:667
+#: src/dird/ua_select.c:666
 msgid "Select Pool resource"
-msgstr ""
+msgstr "Selecteer Pool"
 
-#: src/dird/ua_select.c:691 src/dird/ua_restore.c:555
+#: src/dird/ua_select.c:690 src/dird/ua_restore.c:555
 #, c-format
 msgid "Error: Pool resource \"%s\" does not exist.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:702
+#: src/dird/ua_select.c:701
 msgid "Enter the JobId to select: "
-msgstr ""
+msgstr "Voer de gekozen Job in:"
 
-#: src/dird/ua_select.c:740
+#: src/dird/ua_select.c:739
 #, c-format
 msgid "Could not find Job \"%s\": ERR=%s"
-msgstr ""
+msgstr "Kan Job niet vinden \"%s\": ERR=%s"
 
-#: src/dird/ua_select.c:820
+#: src/dird/ua_select.c:819
 #, c-format
 msgid "Automatically selected %s: %s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:831
+#: src/dird/ua_select.c:830
 #, c-format
 msgid ""
 "Your request has multiple choices for \"%s\". Selection is not possible in "
 "batch mode.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:849
+#: src/dird/ua_select.c:848
 #, c-format
 msgid "Selection list for \"%s\" is empty!\n"
 msgstr ""
 
-#: src/dird/ua_select.c:855
+#: src/dird/ua_select.c:854
 #, c-format
 msgid "Automatically selected: %s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:867
+#: src/dird/ua_select.c:866
 msgid "Selection aborted, nothing done.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:872
+#: src/dird/ua_select.c:871
 #, c-format
 msgid "Please enter a number between 1 and %d\n"
-msgstr ""
+msgstr "Voer een nummer in tussen 1 en %d\n"
 
-#: src/dird/ua_select.c:921
+#: src/dird/ua_select.c:920
 msgid "Storage name given twice.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:938
+#: src/dird/ua_select.c:937
 #, c-format
 msgid "Expecting jobid=nn command, got: %s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:942
+#: src/dird/ua_select.c:941
 #, c-format
 msgid "JobId %s is not running.\n"
-msgstr ""
+msgstr "JobID %s is niet in uitvoering.\n"
 
-#: src/dird/ua_select.c:952
+#: src/dird/ua_select.c:951
 #, c-format
 msgid "Expecting job=xxx, got: %s.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:956 src/dird/ua_select.c:968
+#: src/dird/ua_select.c:955 src/dird/ua_select.c:967
 #, c-format
 msgid "Job \"%s\" is not running.\n"
-msgstr ""
+msgstr "Job \"%s\" is niet in uitvoering.\n"
 
-#: src/dird/ua_select.c:964
+#: src/dird/ua_select.c:963
 #, c-format
 msgid "Expecting ujobid=xxx, got: %s.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:984
+#: src/dird/ua_select.c:983
 #, c-format
 msgid "Storage resource \"%s\": not found\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1016
+#: src/dird/ua_select.c:1015
 msgid "Enter autochanger drive[0]: "
-msgstr ""
+msgstr "Voer autochanger drive[0] in: "
 
-#: src/dird/ua_select.c:1037
+#: src/dird/ua_select.c:1036
 msgid "Enter autochanger slot: "
-msgstr ""
+msgstr "Voer autochanger slot in:"
 
-#: src/dird/ua_select.c:1067
+#: src/dird/ua_select.c:1066
 msgid "Media Types defined in conf file:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1073
+#: src/dird/ua_select.c:1072
 msgid "Media Type"
-msgstr ""
+msgstr "Type media"
 
-#: src/dird/ua_select.c:1073
+#: src/dird/ua_select.c:1072
 msgid "Select the Media Type"
-msgstr ""
+msgstr "Selecteer media type"
 
-#: src/dird/ua_select.c:1112
+#: src/dird/ua_select.c:1111
 #, c-format
 msgid "JobId %s is not running. Use Job name to %s inactive jobs.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1121 src/dird/ua_select.c:1131
+#: src/dird/ua_select.c:1120 src/dird/ua_select.c:1130
 #, c-format
 msgid "Warning Job %s is not running. Continuing anyway ...\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1141 src/dird/ua_cmds.c:693 src/dird/ua_cmds.c:739
+#: src/dird/ua_select.c:1140 src/dird/ua_cmds.c:692 src/dird/ua_cmds.c:738
 msgid "Unauthorized command from this console.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1166 src/stored/status.c:473 src/filed/status.c:241
+#: src/dird/ua_select.c:1165 src/stored/status.c:538 src/filed/status.c:241
 msgid "No Jobs running.\n"
-msgstr ""
+msgstr "Geen Jobs in uitvoering.\n"
 
-#: src/dird/ua_select.c:1168
+#: src/dird/ua_select.c:1167
 msgid "None of your jobs are running.\n"
-msgstr ""
+msgstr "Geen van uw opdrachten zijn in uitvoering.\n"
 
-#: src/dird/ua_select.c:1173
+#: src/dird/ua_select.c:1172
 msgid "Select Job:\n"
-msgstr ""
+msgstr "Selecteer Job:\n"
 
-#: src/dird/ua_select.c:1182
+#: src/dird/ua_select.c:1181
 #, c-format
 msgid "JobId=%s Job=%s"
 msgstr ""
 
-#: src/dird/ua_select.c:1186
+#: src/dird/ua_select.c:1185
 #, c-format
 msgid "Choose Job to %s"
 msgstr ""
 
-#: src/dird/ua_select.c:1193
+#: src/dird/ua_select.c:1192
 #, c-format
 msgid ""
 "Cancel: %s\n"
 "\n"
 "%s"
 msgstr ""
+"Anuleer: %s\n"
+"\n"
+"%s"
 
-#: src/dird/ua_select.c:1194
+#: src/dird/ua_select.c:1193
 msgid "Confirm cancel?"
-msgstr ""
+msgstr "Bevestig annulering?"
 
-#: src/dird/ua_select.c:1200
+#: src/dird/ua_select.c:1199
+#, fuzzy
 msgid "Confirm cancel (yes/no): "
-msgstr ""
+msgstr "Bevestig annulering (yes/no)"
 
-#: src/dird/ua_select.c:1209 src/dird/ua_cmds.c:734 src/dird/ua_cmds.c:1101
+#: src/dird/ua_select.c:1208 src/dird/ua_cmds.c:733 src/dird/ua_cmds.c:1100
 #, c-format
 msgid "Job \"%s\" not found.\n"
-msgstr ""
+msgstr "Job \"%s\" niet gevonden.\n"
 
 #: src/dird/bsr.c:173
 #, c-format
@@ -478,7 +486,7 @@ msgstr ""
 
 #: src/dird/bsr.c:245
 msgid "Error writing bsr file.\n"
-msgstr ""
+msgstr "Fout bij schrijven van bsr bestand.\n"
 
 #: src/dird/bsr.c:250
 #, c-format
@@ -494,13 +502,15 @@ msgstr ""
 
 #: src/dird/bsr.c:317
 msgid "No Volumes found to restore.\n"
-msgstr ""
+msgstr "Geen Volumes gevonden om terug te zetten.\n"
 
 #: src/dird/bsr.c:319
 msgid ""
 "\n"
 "Volumes marked with \"*\" are online.\n"
 msgstr ""
+"\n"
+"Volumes gemarkeerd met \"*\" staan online.\n"
 
 #: src/dird/ua_server.c:69
 #, c-format
@@ -509,7 +519,7 @@ msgstr ""
 
 #: src/dird/ua_server.c:159
 msgid "You have messages.\n"
-msgstr ""
+msgstr "U heeft berichten.\n"
 
 #: src/dird/verify.c:86 src/dird/verify.c:318
 #, c-format
@@ -558,11 +568,11 @@ msgstr ""
 
 #: src/dird/verify.c:421
 msgid "Verify OK"
-msgstr ""
+msgstr "Controle OK"
 
 #: src/dird/verify.c:425
 msgid "*** Verify Error ***"
-msgstr ""
+msgstr "*** Fout bij controleren ***"
 
 #: src/dird/verify.c:429
 msgid "Verify warnings"
@@ -635,54 +645,54 @@ msgstr ""
 #: src/dird/verify.c:612
 #, c-format
 msgid "New file: %s\n"
-msgstr ""
+msgstr "Nieuw bestand: %s\n"
 
 #: src/dird/verify.c:613
 #, c-format
 msgid "File not in catalog: %s\n"
-msgstr ""
+msgstr "Bestand niet in catalog: %s\n"
 
 #: src/dird/verify.c:637
 #, c-format
 msgid "      st_ino   differ. Cat: %s File: %s\n"
-msgstr ""
+msgstr "      st_ino   verschil. Cat: %s Bestand: %s\n"
 
 #: src/dird/verify.c:646
 #, c-format
 msgid "      st_mode  differ. Cat: %x File: %x\n"
-msgstr ""
+msgstr "      st_mode  verschil. Cat: %x Bestand: %x\n"
 
 #: src/dird/verify.c:654
 #, c-format
 msgid "      st_nlink differ. Cat: %d File: %d\n"
-msgstr ""
+msgstr "      st_nlink verschil. Cat: %d Bestand: %d\n"
 
 #: src/dird/verify.c:662
 #, c-format
 msgid "      st_uid   differ. Cat: %u File: %u\n"
-msgstr ""
+msgstr "      st_uid   verschil. Cat: %u Bestand: %u\n"
 
 #: src/dird/verify.c:670
 #, c-format
 msgid "      st_gid   differ. Cat: %u File: %u\n"
-msgstr ""
+msgstr "      st_gid   verschil. Cat: %u Bestand: %u\n"
 
 #: src/dird/verify.c:678
 #, c-format
 msgid "      st_size  differ. Cat: %s File: %s\n"
-msgstr ""
+msgstr "      st_size  verschil. Cat: %s Bestand: %s\n"
 
 #: src/dird/verify.c:687
 msgid "      st_atime differs\n"
-msgstr ""
+msgstr "      st_atime verschilt\n"
 
 #: src/dird/verify.c:694
 msgid "      st_mtime differs\n"
-msgstr ""
+msgstr "      st_mtime verschilt\n"
 
 #: src/dird/verify.c:701
 msgid "      st_ctime differs\n"
-msgstr ""
+msgstr "      st_ctime verschilt\n"
 
 #: src/dird/verify.c:708
 #, c-format
@@ -712,33 +722,33 @@ msgstr ""
 #: src/dird/verify.c:811 src/tools/testfind.c:420
 #, c-format
 msgid "File: %s\n"
-msgstr ""
+msgstr "Bestand: %s\n"
 
-#: src/dird/admin.c:66
+#: src/dird/admin.c:65
 #, c-format
 msgid "Start Admin JobId %d, Job=%s\n"
 msgstr ""
 
-#: src/dird/admin.c:92 src/dird/vbackup.c:304 src/dird/migrate.c:1226
-#: src/dird/backup.c:618
+#: src/dird/admin.c:90 src/dird/vbackup.c:306 src/dird/migrate.c:1227
+#: src/dird/backup.c:628
 #, c-format
 msgid "Error getting Job record for Job report: ERR=%s"
 msgstr ""
 
-#: src/dird/admin.c:100
+#: src/dird/admin.c:98
 msgid "Admin OK"
 msgstr ""
 
-#: src/dird/admin.c:104
+#: src/dird/admin.c:102
 msgid "*** Admin Error ***"
-msgstr ""
+msgstr "*** Admin Fout ***"
 
-#: src/dird/admin.c:108
+#: src/dird/admin.c:106
 msgid "Admin Canceled"
-msgstr ""
+msgstr "Admin geannuleerd"
 
-#: src/dird/admin.c:112 src/dird/vbackup.c:354 src/dird/backup.c:674
-#: src/dird/restore.c:591
+#: src/dird/admin.c:110 src/dird/vbackup.c:356 src/dird/backup.c:684
+#: src/dird/restore.c:594
 #, c-format
 msgid "Inappropriate term code: %c\n"
 msgstr ""
@@ -747,13 +757,13 @@ msgstr ""
 msgid "Bacula "
 msgstr ""
 
-#: src/dird/dird.c:112
-#, c-format
+#: src/dird/dird.c:150
+#, fuzzy, c-format
 msgid ""
 "\n"
 "Version: %s (%s)\n"
 "\n"
-"Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
+"Usage: bacula-dir [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
 "       -c <file>   set configuration file to file\n"
 "       -d <nn>     set debug level to <nn>\n"
 "       -dt         print timestamp in debug output\n"
@@ -768,67 +778,77 @@ msgid ""
 "       -?          print this message.\n"
 "\n"
 msgstr ""
+"\n"
+"Versie: %s (%s) %s %s %s\n"
+"\n"
+"Specificatie: tray-monitor [-c configuratiebestand] [-d debug_level]\n"
+"       -c <file>     gebruik configuratiebestand\n"
+"       -d <nn>       instellen debug level op <nn>\n"
+"       -dt           weergeven tijd in debug output\n"
+"       -t            test - lees configuratie en stop\n"
+"       -?            geef deze melding.\n"
+"\n"
 
-#: src/dird/dird.c:258 src/stored/stored.c:227 src/console/console.c:1109
+#: src/dird/dird.c:296 src/stored/stored.c:227 src/console/console.c:1109
 #: src/filed/filed.c:218 src/qt-console/main.cpp:165
 msgid "Cryptography library initialization failed.\n"
 msgstr ""
 
-#: src/dird/dird.c:262 src/dird/dird.c:292 src/dird/dird.c:538
-#: src/dird/dird.c:541 src/stored/stored.c:231 src/console/console.c:1113
+#: src/dird/dird.c:300 src/dird/dird.c:328 src/dird/dird.c:560
+#: src/dird/dird.c:563 src/stored/stored.c:231 src/console/console.c:1113
 #: src/filed/filed.c:223 src/qt-console/main.cpp:169
 #, c-format
 msgid "Please correct configuration file: %s\n"
 msgstr ""
 
-#: src/dird/dird.c:524
+#: src/dird/dird.c:546
 msgid "Too many open reload requests. Request ignored.\n"
 msgstr ""
 
-#: src/dird/dird.c:539
+#: src/dird/dird.c:561
 msgid "Out of reload table entries. Giving up.\n"
 msgstr ""
 
-#: src/dird/dird.c:542
+#: src/dird/dird.c:564
 msgid "Resetting previous configuration.\n"
 msgstr ""
 
-#: src/dird/dird.c:606
+#: src/dird/dird.c:628
 #, c-format
 msgid ""
 "No Director resource defined in %s\n"
 "Without that I don't know who I am :-(\n"
 msgstr ""
 
-#: src/dird/dird.c:614 src/filed/filed.c:350
+#: src/dird/dird.c:636 src/filed/filed.c:350
 #, c-format
 msgid "No Messages resource defined in %s\n"
 msgstr ""
 
-#: src/dird/dird.c:619
+#: src/dird/dird.c:641
 #, c-format
 msgid "Only one Director resource permitted in %s\n"
 msgstr ""
 
-#: src/dird/dird.c:628 src/dird/dird.c:834 src/dird/dird.c:889
-#: src/dird/dird.c:1056 src/stored/stored.c:354 src/console/console.c:1296
+#: src/dird/dird.c:650 src/dird/dird.c:856 src/dird/dird.c:911
+#: src/dird/dird.c:950 src/stored/stored.c:354 src/console/console.c:1296
 #: src/console/console.c:1326 src/filed/filed.c:357 src/filed/filed.c:516
 #: src/wx-console/console_thread.cpp:118 src/wx-console/console_thread.cpp:144
 #: src/qt-console/main.cpp:224 src/qt-console/main.cpp:254
 msgid "TLS required but not configured in Bacula.\n"
 msgstr ""
 
-#: src/dird/dird.c:636 src/stored/stored.c:410 src/filed/filed.c:526
+#: src/dird/dird.c:658 src/stored/stored.c:410 src/filed/filed.c:526
 #, c-format
 msgid "\"TLS Certificate\" file not defined for Director \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:642 src/stored/stored.c:416 src/filed/filed.c:532
+#: src/dird/dird.c:664 src/stored/stored.c:416 src/filed/filed.c:532
 #, c-format
 msgid "\"TLS Key\" file not defined for Director \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:649 src/stored/stored.c:422 src/filed/filed.c:538
+#: src/dird/dird.c:671 src/stored/stored.c:422 src/filed/filed.c:538
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
@@ -836,46 +856,46 @@ msgid ""
 "using \"TLS Verify Peer\".\n"
 msgstr ""
 
-#: src/dird/dird.c:668 src/stored/stored.c:441 src/filed/filed.c:557
+#: src/dird/dird.c:690 src/stored/stored.c:441 src/filed/filed.c:557
 #, c-format
 msgid "Failed to initialize TLS context for Director \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:676
+#: src/dird/dird.c:698
 #, c-format
 msgid "No Job records defined in %s\n"
 msgstr ""
 
-#: src/dird/dird.c:734 src/dird/dird.c:747
+#: src/dird/dird.c:756 src/dird/dird.c:769
 #, c-format
 msgid "Hey something is wrong. p=0x%lu\n"
 msgstr ""
 
-#: src/dird/dird.c:808
+#: src/dird/dird.c:830
 #, c-format
 msgid "\"%s\" directive in Job \"%s\" resource is required, but not found.\n"
 msgstr ""
 
-#: src/dird/dird.c:815
+#: src/dird/dird.c:837
 msgid "Too many items in Job resource\n"
 msgstr ""
 
-#: src/dird/dird.c:819
+#: src/dird/dird.c:841
 #, c-format
 msgid "No storage specified in Job \"%s\" nor in Pool.\n"
 msgstr ""
 
-#: src/dird/dird.c:843
+#: src/dird/dird.c:865
 #, c-format
 msgid "\"TLS Certificate\" file not defined for Console \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:849
+#: src/dird/dird.c:871
 #, c-format
 msgid "\"TLS Key\" file not defined for Console \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:856
+#: src/dird/dird.c:878
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
@@ -883,48 +903,53 @@ msgid ""
 "using \"TLS Verify Peer\".\n"
 msgstr ""
 
-#: src/dird/dird.c:873 src/dird/dird.c:913 src/filed/filed.c:382
+#: src/dird/dird.c:895 src/dird/dird.c:935 src/filed/filed.c:382
 #, c-format
 msgid "Failed to initialize TLS context for File daemon \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:896
+#: src/dird/dird.c:918
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
 "File daemon \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:953 src/dird/dird.c:955
+#: src/dird/dird.c:959
+#, c-format
+msgid ""
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Storage \"%s\" in %s.\n"
+msgstr ""
+
+#: src/dird/dird.c:975 src/stored/stored.c:394
+#, c-format
+msgid "Failed to initialize TLS context for Storage \"%s\" in %s.\n"
+msgstr ""
+
+#: src/dird/dird.c:1014 src/dird/dird.c:1016
 #, c-format
 msgid "Could not open Catalog \"%s\", database \"%s\".\n"
 msgstr ""
 
-#: src/dird/dird.c:958 src/tools/cats_test.c:377
+#: src/dird/dird.c:1019 src/tools/cats_test.c:377
 #, c-format
 msgid "%s"
 msgstr ""
 
-#: src/dird/dird.c:1037
+#: src/dird/dird.c:1098
 #, c-format
 msgid "Could not create storage record for %s\n"
 msgstr ""
 
-#: src/dird/dird.c:1045
+#: src/dird/dird.c:1106
 #, c-format
 msgid "Could not update storage record for %s\n"
 msgstr ""
 
-#: src/dird/dird.c:1064
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Storage \"%s\" in %s.\n"
-msgstr ""
-
-#: src/dird/dird.c:1080 src/stored/stored.c:394
+#: src/dird/dird.c:1181 src/dird/migrate.c:1072 src/stored/stored.c:491
 #, c-format
-msgid "Failed to initialize TLS context for Storage \"%s\" in %s.\n"
+msgid "Could not compile regex pattern \"%s\" ERR=%s\n"
 msgstr ""
 
 #: src/dird/inc_conf.c:312
@@ -941,18 +966,18 @@ msgstr ""
 msgid "Old style Include/Exclude not supported\n"
 msgstr ""
 
-#: src/dird/inc_conf.c:393 src/dird/inc_conf.c:739 src/dird/dird_conf.c:1993
+#: src/dird/inc_conf.c:393 src/dird/inc_conf.c:739 src/dird/dird_conf.c:2022
 #, c-format
 msgid "Expecting keyword, got: %s\n"
 msgstr ""
 
-#: src/dird/inc_conf.c:401 src/dird/inc_conf.c:745 src/dird/dird_conf.c:1999
+#: src/dird/inc_conf.c:401 src/dird/inc_conf.c:745 src/dird/dird_conf.c:2028
 #: src/lib/parse_conf.c:976
 #, c-format
 msgid "expected an equals, got: %s"
 msgstr ""
 
-#: src/dird/inc_conf.c:411 src/dird/inc_conf.c:754 src/dird/dird_conf.c:2010
+#: src/dird/inc_conf.c:411 src/dird/inc_conf.c:754 src/dird/dird_conf.c:2039
 #, c-format
 msgid "Keyword %s not permitted in this resource"
 msgstr ""
@@ -1004,7 +1029,7 @@ msgstr ""
 msgid "Options section not permitted in Exclude\n"
 msgstr ""
 
-#: src/dird/inc_conf.c:724 src/dird/dird_conf.c:1979
+#: src/dird/inc_conf.c:724 src/dird/dird_conf.c:2008
 #, c-format
 msgid "Expecting open brace. Got %s"
 msgstr ""
@@ -1060,29 +1085,30 @@ msgstr ""
 msgid "End query mode.\n"
 msgstr ""
 
-#: src/dird/newvol.c:91
+#: src/dird/newvol.c:90
 #, c-format
 msgid "Illegal character in Volume name \"%s\"\n"
-msgstr ""
+msgstr "Onjuist karakter in Volume naam \"%s\"\n"
 
 #: src/dird/newvol.c:104
 #, c-format
 msgid "Created new Volume \"%s\" in catalog.\n"
-msgstr ""
+msgstr "Nieuw volume \"%s\" aangemaakt in catalogus.\n"
 
 #: src/dird/newvol.c:131
 #, c-format
 msgid "SQL failed, but ignored. ERR=%s\n"
 msgstr ""
 
-#: src/dird/newvol.c:142
+#: src/dird/newvol.c:141
 #, c-format
 msgid "Wanted to create Volume \"%s\", but it already exists. Trying again.\n"
 msgstr ""
+"Geprobeerd om \"%s\" aan te maken, maar deze bestaat al. Probeer opnieuw.\n"
 
-#: src/dird/newvol.c:151
+#: src/dird/newvol.c:150
 msgid "Too many failures. Giving up creating Volume name.\n"
-msgstr ""
+msgstr "Teveel mislukte pogingen. Aanmaken volume naam gestopt.\n"
 
 #: src/dird/expand.c:255
 #, c-format
@@ -1119,7 +1145,7 @@ msgstr ""
 msgid "Cannot destroy var context: ERR=%s\n"
 msgstr ""
 
-#: src/dird/recycle.c:65
+#: src/dird/recycle.c:69
 #, c-format
 msgid "Recycled volume \"%s\"\n"
 msgstr ""
@@ -1184,26 +1210,26 @@ msgid ""
 "There are no more Jobs associated with Volume \"%s\". Marking it purged.\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:556 src/dird/ua_label.c:759
+#: src/dird/ua_purge.c:556 src/dird/ua_label.c:774
 #, c-format
 msgid "Connecting to Storage daemon %s at %s:%d ...\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:559 src/dird/ua_dotcmds.c:606 src/dird/ua_cmds.c:772
-#: src/dird/ua_cmds.c:1531 src/dird/ua_label.c:762 src/dird/job.c:448
+#: src/dird/ua_purge.c:559 src/dird/ua_dotcmds.c:625 src/dird/ua_cmds.c:771
+#: src/dird/ua_cmds.c:1577 src/dird/ua_label.c:777 src/dird/job.c:448
 msgid "Failed to connect to Storage daemon.\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:622
+#: src/dird/ua_purge.c:623
 msgid "Can't update volume size in the catalog\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:624
+#: src/dird/ua_purge.c:625
 #, c-format
 msgid "The volume \"%s\" has been truncated\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:626
+#: src/dird/ua_purge.c:627
 #, c-format
 msgid "Unable to truncate volume \"%s\"\n"
 msgstr ""
@@ -1213,17 +1239,17 @@ msgstr ""
 msgid "No Volumes found to perform %s action.\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:785
+#: src/dird/ua_purge.c:786
 #, c-format
 msgid "Unable move recycled Volume in full Pool \"%s\" MaxVols=%d\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:799
+#: src/dird/ua_purge.c:800
 #, c-format
 msgid "All records pruned from Volume \"%s\"; marking it \"Purged\"\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:804
+#: src/dird/ua_purge.c:805
 #, c-format
 msgid "Cannot purge Volume with VolStatus=%s\n"
 msgstr ""
@@ -1233,8 +1259,8 @@ msgid "Could not get or create a Pool record.\n"
 msgstr ""
 
 #: src/dird/vbackup.c:89 src/dird/migrate.c:227 src/dird/migrate.c:228
-#: src/dird/backup.c:93 src/dird/job.c:185 src/dird/job.c:868
-#: src/dird/job.c:1123 src/dird/job.c:1169 src/dird/job.c:1183
+#: src/dird/backup.c:93 src/dird/job.c:185 src/dird/job.c:871
+#: src/dird/job.c:1126 src/dird/job.c:1172 src/dird/job.c:1186
 msgid "Pool resource"
 msgstr ""
 
@@ -1265,34 +1291,34 @@ msgstr ""
 msgid "Could not get or create the FileSet record.\n"
 msgstr ""
 
-#: src/dird/vbackup.c:311 src/dird/backup.c:625
+#: src/dird/vbackup.c:313 src/dird/backup.c:635
 #, c-format
 msgid "Error getting Client record for Job report: ERR=%s"
 msgstr ""
 
-#: src/dird/vbackup.c:317 src/dird/migrate.c:1256 src/dird/backup.c:631
+#: src/dird/vbackup.c:319 src/dird/migrate.c:1257 src/dird/backup.c:641
 #, c-format
 msgid "Error getting Media record for Volume \"%s\": ERR=%s"
 msgstr ""
 
-#: src/dird/vbackup.c:327 src/dird/backup.c:641 src/dird/backup.c:650
-#: src/stored/bscan.c:1210
+#: src/dird/vbackup.c:329 src/dird/backup.c:651 src/dird/backup.c:660
+#: src/stored/bscan.c:1214
 msgid "Backup OK -- with warnings"
-msgstr ""
+msgstr "Backup OK -- met waarschuwingen"
 
-#: src/dird/vbackup.c:329 src/dird/backup.c:643 src/stored/bscan.c:1207
+#: src/dird/vbackup.c:331 src/dird/backup.c:653 src/stored/bscan.c:1211
 msgid "Backup OK"
 msgstr ""
 
-#: src/dird/vbackup.c:334 src/dird/backup.c:654 src/stored/bscan.c:1214
+#: src/dird/vbackup.c:336 src/dird/backup.c:664 src/stored/bscan.c:1218
 msgid "*** Backup Error ***"
-msgstr ""
+msgstr "*** Backup Fout ***"
 
-#: src/dird/vbackup.c:344 src/dird/backup.c:664 src/stored/bscan.c:1217
+#: src/dird/vbackup.c:346 src/dird/backup.c:674 src/stored/bscan.c:1221
 msgid "Backup Canceled"
-msgstr ""
+msgstr "Backup geannuleerd"
 
-#: src/dird/vbackup.c:391
+#: src/dird/vbackup.c:393
 #, c-format
 msgid ""
 "%s %s %s (%s):\n"
@@ -1339,93 +1365,93 @@ msgstr ""
 msgid "disabled"
 msgstr ""
 
-#: src/dird/ua_output.c:208
+#: src/dird/ua_output.c:211
 msgid "Keywords for the show command are:\n"
 msgstr ""
 
-#: src/dird/ua_output.c:214
+#: src/dird/ua_output.c:217
 #, c-format
 msgid "%s resource %s not found.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:217
+#: src/dird/ua_output.c:220
 #, c-format
 msgid "Resource %s not found\n"
 msgstr ""
 
-#: src/dird/ua_output.c:288
+#: src/dird/ua_output.c:290
 msgid "Hey! DB is NULL\n"
 msgstr ""
 
-#: src/dird/ua_output.c:445
+#: src/dird/ua_output.c:447
 #, c-format
 msgid "Jobid %d used %d Volume(s): %s\n"
 msgstr ""
 
-#: src/dird/ua_output.c:463
+#: src/dird/ua_output.c:465
 msgid "No Pool specified.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:484
+#: src/dird/ua_output.c:486
 #, c-format
 msgid "Pool: %s\n"
 msgstr ""
 
-#: src/dird/ua_output.c:500
+#: src/dird/ua_output.c:502
 msgid "Ignoring invalid value for days. Max is 50.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:522
+#: src/dird/ua_output.c:524
 #, c-format
 msgid "Unknown list keyword: %s\n"
 msgstr ""
 
-#: src/dird/ua_output.c:548
+#: src/dird/ua_output.c:549
 #, c-format
 msgid "%s is not a job name.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:562
+#: src/dird/ua_output.c:563
 #, c-format
 msgid "Could not find Pool for Job %s\n"
 msgstr ""
 
-#: src/dird/ua_output.c:575
+#: src/dird/ua_output.c:576
 #, c-format
 msgid "Could not find next Volume for Job %s (Pool=%s, Level=%s).\n"
 msgstr ""
 
-#: src/dird/ua_output.c:579
+#: src/dird/ua_output.c:580
 #, c-format
 msgid ""
 "The next Volume to be used by Job \"%s\" (Pool=%s, Level=%s) will be %s\n"
 msgstr ""
 
-#: src/dird/ua_output.c:592
+#: src/dird/ua_output.c:593
 #, c-format
 msgid "Could not find next Volume for Job %s.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:719 src/dird/job.c:133 src/tools/cats_test.c:375
+#: src/dird/ua_output.c:720 src/dird/job.c:133 src/tools/cats_test.c:375
 #, c-format
 msgid "Could not open database \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_output.c:732
+#: src/dird/ua_output.c:733
 #, c-format
 msgid "Pool %s not in database. %s"
 msgstr ""
 
-#: src/dird/ua_output.c:740
+#: src/dird/ua_output.c:741
 #, c-format
 msgid "Pool %s created in database.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:793
+#: src/dird/ua_output.c:794
 msgid "You have no messages.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:873
+#: src/dird/ua_output.c:874
 msgid "Message too long to display.\n"
 msgstr ""
 
@@ -1438,188 +1464,188 @@ msgstr ""
 msgid ": is an invalid command.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:540 src/dird/ua_restore.c:780
+#: src/dird/ua_dotcmds.c:553 src/dird/ua_restore.c:780
 #: src/dird/ua_restore.c:823
 #, c-format
 msgid "Unable to get Job record for JobId=%s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:600 src/dird/ua_cmds.c:766 src/dird/ua_cmds.c:1520
+#: src/dird/ua_dotcmds.c:619 src/dird/ua_cmds.c:765 src/dird/ua_cmds.c:1566
 #: src/dird/ua_status.c:352 src/dird/job.c:147 src/dird/job.c:153
-#: src/dird/job.c:1157 src/dird/job.c:1161
+#: src/dird/job.c:1160 src/dird/job.c:1164
 msgid "unknown source"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:603 src/dird/ua_cmds.c:769 src/dird/ua_status.c:355
+#: src/dird/ua_dotcmds.c:622 src/dird/ua_cmds.c:768 src/dird/ua_status.c:355
 #, c-format
 msgid "Connecting to Storage daemon %s at %s:%d\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:609 src/dird/ua_cmds.c:775 src/dird/ua_status.c:366
+#: src/dird/ua_dotcmds.c:628 src/dird/ua_cmds.c:774 src/dird/ua_status.c:366
 msgid "Connected to storage daemon\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:629 src/dird/ua_cmds.c:804 src/dird/ua_cmds.c:1202
+#: src/dird/ua_dotcmds.c:648 src/dird/ua_cmds.c:803 src/dird/ua_cmds.c:1208
 #: src/dird/ua_status.c:397
 #, c-format
 msgid "Connecting to Client %s at %s:%d\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:632 src/dird/ua_cmds.c:807 src/dird/ua_cmds.c:1205
+#: src/dird/ua_dotcmds.c:651 src/dird/ua_cmds.c:806 src/dird/ua_cmds.c:1211
 msgid "Failed to connect to Client.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:675 src/dird/ua_dotcmds.c:769
+#: src/dird/ua_dotcmds.c:694 src/dird/ua_dotcmds.c:788
 #, c-format
 msgid "Unknown command: %s\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:713 src/dird/ua_cmds.c:994
+#: src/dird/ua_dotcmds.c:732 src/dird/ua_cmds.c:993
 msgid "Available daemons are: \n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:714 src/dird/ua_cmds.c:995
+#: src/dird/ua_dotcmds.c:733 src/dird/ua_cmds.c:994
 msgid "Director"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:717
+#: src/dird/ua_dotcmds.c:736
 msgid "Select daemon type to make die"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:743
+#: src/dird/ua_dotcmds.c:762
 msgid "The Director will generate a deadlock.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:747
+#: src/dird/ua_dotcmds.c:766
 msgid "The Director will segment fault.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:936
+#: src/dird/ua_dotcmds.c:955
 msgid "Access to specified Client or FileSet not allowed.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:941 src/dird/ua_dotcmds.c:985
+#: src/dird/ua_dotcmds.c:960 src/dird/ua_dotcmds.c:1004
 #: src/dird/ua_restore.c:941 src/dird/ua_restore.c:969
 #: src/dird/ua_restore.c:990
 #, c-format
 msgid "Query failed: %s. ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:980
+#: src/dird/ua_dotcmds.c:999
 msgid "query keyword not found.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:1007
+#: src/dird/ua_dotcmds.c:1026
 #, c-format
 msgid "List MediaType failed: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:1021
+#: src/dird/ua_dotcmds.c:1040
 #, c-format
 msgid "List Media failed: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:1035
+#: src/dird/ua_dotcmds.c:1054
 #, c-format
 msgid "List Location failed: ERR=%s\n"
 msgstr ""
 
-#: src/dird/next_vol.c:149
+#: src/dird/next_vol.c:166
 #, c-format
 msgid "Purging oldest volume \"%s\"\n"
 msgstr ""
 
-#: src/dird/next_vol.c:155
+#: src/dird/next_vol.c:172
 #, c-format
 msgid "Pruning oldest volume \"%s\"\n"
 msgstr ""
 
-#: src/dird/next_vol.c:174
+#: src/dird/next_vol.c:191
 msgid "We seem to be looping trying to find the next volume. I give up.\n"
 msgstr ""
 
-#: src/dird/next_vol.c:201
+#: src/dird/next_vol.c:218
 #, c-format
 msgid "Max Volume bytes=%s exceeded. Marking Volume \"%s\" as Full.\n"
 msgstr ""
 
-#: src/dird/next_vol.c:209
+#: src/dird/next_vol.c:226
 #, c-format
 msgid "Volume used once. Marking Volume \"%s\" as Used.\n"
 msgstr ""
 
-#: src/dird/next_vol.c:216
+#: src/dird/next_vol.c:233
 #, c-format
 msgid "Max Volume jobs=%s exceeded. Marking Volume \"%s\" as Used.\n"
 msgstr ""
 
-#: src/dird/next_vol.c:226
+#: src/dird/next_vol.c:243
 #, c-format
 msgid "Max Volume files=%s exceeded. Marking Volume \"%s\" as Used.\n"
 msgstr ""
 
-#: src/dird/next_vol.c:237
+#: src/dird/next_vol.c:254
 #, c-format
 msgid ""
 "Max configured use duration=%s sec. exceeded. Marking Volume \"%s\" as "
 "Used.\n"
 msgstr ""
 
-#: src/dird/next_vol.c:249
+#: src/dird/next_vol.c:267
 #, c-format
 msgid "Catalog error updating volume \"%s\". ERR=%s"
 msgstr ""
 
-#: src/dird/next_vol.c:271
+#: src/dird/next_vol.c:289
 msgid "volume has expired"
 msgstr ""
 
-#: src/dird/next_vol.c:289 src/dird/next_vol.c:333
+#: src/dird/next_vol.c:307 src/dird/next_vol.c:351
 #, c-format
 msgid "Recycled current volume \"%s\"\n"
 msgstr ""
 
-#: src/dird/next_vol.c:294
+#: src/dird/next_vol.c:312
 msgid "and recycling of current volume failed"
 msgstr ""
 
-#: src/dird/next_vol.c:300
+#: src/dird/next_vol.c:318
 msgid "but should be Append, Purged or Recycle"
 msgstr ""
 
-#: src/dird/next_vol.c:309
+#: src/dird/next_vol.c:327
 msgid "volume has recycling disabled"
 msgstr ""
 
-#: src/dird/next_vol.c:336
+#: src/dird/next_vol.c:354
 msgid ""
 "but should be Append, Purged or Recycle (recycling of the current volume "
 "failed)"
 msgstr ""
 
-#: src/dird/next_vol.c:340
+#: src/dird/next_vol.c:358
 msgid ""
 "but should be Append, Purged or Recycle (cannot automatically recycle "
 "current volume, as it still contains unpruned data or the Volume Retention "
 "time has not expired.)"
 msgstr ""
 
-#: src/dird/next_vol.c:402
+#: src/dird/next_vol.c:421
 #, c-format
 msgid "Unable to get Pool record: ERR=%s"
 msgstr ""
 
-#: src/dird/next_vol.c:409
+#: src/dird/next_vol.c:428
 #, c-format
 msgid "Unable add Scratch Volume, Pool \"%s\" full MaxVols=%d\n"
 msgstr ""
 
-#: src/dird/next_vol.c:428
+#: src/dird/next_vol.c:448
 #, c-format
 msgid "Failed to move Scratch Volume. ERR=%s\n"
 msgstr ""
 
-#: src/dird/next_vol.c:433
+#: src/dird/next_vol.c:453
 #, c-format
 msgid "Using Volume \"%s\" from 'Scratch' pool.\n"
 msgstr ""
@@ -1801,165 +1827,165 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:307
+#: src/dird/ua_cmds.c:306
 #, c-format
 msgid "Pool already has maximum volumes=%d\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:308
+#: src/dird/ua_cmds.c:307
 msgid "Enter new maximum (zero for unlimited): "
 msgstr ""
 
-#: src/dird/ua_cmds.c:328
+#: src/dird/ua_cmds.c:327
 #, c-format
 msgid "Enter number of Volumes to create. 0=>fixed name. Max=%d: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:334
+#: src/dird/ua_cmds.c:333
 #, c-format
 msgid "The number must be between 0 and %d\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:342
+#: src/dird/ua_cmds.c:341
 msgid "Enter Volume name: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:346
+#: src/dird/ua_cmds.c:345
 msgid "Enter base volume name: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:355 src/dird/ua_label.c:648
+#: src/dird/ua_cmds.c:354 src/dird/ua_label.c:663
 msgid "Volume name too long.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:359 src/dird/ua_label.c:654 src/lib/edit.c:501
+#: src/dird/ua_cmds.c:358 src/dird/ua_label.c:669 src/lib/edit.c:501
 msgid "Volume name must be at least one character long.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:370
+#: src/dird/ua_cmds.c:369
 msgid "Enter the starting number: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:375
+#: src/dird/ua_cmds.c:374
 msgid "Start number must be greater than zero.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:386
+#: src/dird/ua_cmds.c:385
 msgid "Enter slot (0 for none): "
 msgstr ""
 
-#: src/dird/ua_cmds.c:390
+#: src/dird/ua_cmds.c:389
 msgid "InChanger? yes/no: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:415
+#: src/dird/ua_cmds.c:414
 #, c-format
 msgid "%d Volumes created in pool %s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:431 src/dird/ua_cmds.c:1033
+#: src/dird/ua_cmds.c:430 src/dird/ua_cmds.c:1032
 msgid "Turn on or off? "
 msgstr ""
 
-#: src/dird/ua_cmds.c:545
+#: src/dird/ua_cmds.c:544
 #, c-format
 msgid ""
 "Can't set %s RecyclePool to %s, %s is not in database.\n"
 "Try to update it with 'update pool=%s'\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:563
+#: src/dird/ua_cmds.c:562
 #, c-format
 msgid ""
 "Can't set %s ScratchPool to %s, %s is not in database.\n"
 "Try to update it with 'update pool=%s'\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:632
+#: src/dird/ua_cmds.c:631
 #, c-format
 msgid ""
 "Error: Pool %s already exists.\n"
 "Use update to change it.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:643
+#: src/dird/ua_cmds.c:642
 #, c-format
 msgid "Pool %s created.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:673
+#: src/dird/ua_cmds.c:672
 msgid "Python interpreter restarted.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:676 src/dird/ua_cmds.c:1331
+#: src/dird/ua_cmds.c:675 src/dird/ua_cmds.c:1337
 msgid "Nothing done.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:700 src/dird/ua_cmds.c:1084 src/dird/ua_run.c:1582
+#: src/dird/ua_cmds.c:699 src/dird/ua_cmds.c:1083 src/dird/ua_run.c:1588
 #, c-format
 msgid "Client \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:709
+#: src/dird/ua_cmds.c:708
 #, c-format
 msgid "Client \"%s\" address set to %s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:743
+#: src/dird/ua_cmds.c:742
 #, c-format
 msgid "Job \"%s\" %sabled\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:921
+#: src/dird/ua_cmds.c:920
 msgid "Enter new debug level: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:998
+#: src/dird/ua_cmds.c:997
 msgid "All"
 msgstr ""
 
-#: src/dird/ua_cmds.c:999
+#: src/dird/ua_cmds.c:998
 msgid "Select daemon type to set debug level"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1088 src/dird/ua_cmds.c:1926
+#: src/dird/ua_cmds.c:1087 src/dird/ua_cmds.c:1972
 #, c-format
 msgid "No authorization for Client \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1093
+#: src/dird/ua_cmds.c:1092
 msgid "Client name missing.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1105 src/dird/ua_cmds.c:1166 src/dird/ua_cmds.c:1948
+#: src/dird/ua_cmds.c:1104 src/dird/ua_cmds.c:1171 src/dird/ua_cmds.c:1994
 #, c-format
 msgid "No authorization for Job \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1110
+#: src/dird/ua_cmds.c:1109
 msgid "Job name missing.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1119
+#: src/dird/ua_cmds.c:1118
 #, c-format
 msgid "Fileset \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1123
+#: src/dird/ua_cmds.c:1122
 #, c-format
 msgid "No authorization for FileSet \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1128
+#: src/dird/ua_cmds.c:1127
 msgid "Fileset name missing.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1139 src/dird/ua_run.c:563
+#: src/dird/ua_cmds.c:1138 src/dird/ua_run.c:550
 #, c-format
 msgid "Level \"%s\" not valid.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1143
+#: src/dird/ua_cmds.c:1142
 msgid "Level value missing.\n"
 msgstr ""
 
@@ -1967,39 +1993,63 @@ msgstr ""
 msgid "Invalid value for accurate. It must be yes or no.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1162
+#: src/dird/ua_cmds.c:1154
+msgid "Accurate value missing.\n"
+msgstr ""
+
+#: src/dird/ua_cmds.c:1167
 msgid "No job specified.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1210
+#: src/dird/ua_cmds.c:1227
 msgid "Error sending include list.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1215
+#: src/dird/ua_cmds.c:1232
 msgid "Error sending exclude list.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1317
+#: src/dird/ua_cmds.c:1323
 msgid ""
 "In general it is not a good idea to delete either a\n"
 "Pool or a Volume since they may contain data.\n"
 "\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1320
+#: src/dird/ua_cmds.c:1326
 msgid "Choose catalog item to delete"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1384
+#: src/dird/ua_cmds.c:1376 src/dird/ua_cmds.c:1391 src/dird/ua_cmds.c:1401
+#, c-format
+msgid "Illegal JobId %s ignored\n"
+msgstr ""
+
+#: src/dird/ua_cmds.c:1404
 msgid "Enter JobId to delete: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:1423
+#: src/dird/ua_cmds.c:1440
+#, c-format
+msgid "Are you sure you want to delete %d JobIds ? (yes/no): "
+msgstr ""
+
+#: src/dird/ua_cmds.c:1450
+#, c-format
+msgid "Illegal JobId range %s - %s should define increasing JobIds, ignored\n"
+msgstr ""
+
+#: src/dird/ua_cmds.c:1454
+#, c-format
+msgid "Illegal JobId range %s - %s, ignored\n"
+msgstr ""
+
+#: src/dird/ua_cmds.c:1469
 #, c-format
-msgid "Job %s and associated records deleted from the catalog.\n"
+msgid "Jobid %s and associated records deleted from the catalog.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1438
+#: src/dird/ua_cmds.c:1484
 #, c-format
 msgid ""
 "\n"
@@ -2007,44 +2057,44 @@ msgid ""
 "and all Jobs saved on that volume from the Catalog\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1445
+#: src/dird/ua_cmds.c:1491
 #, c-format
 msgid "Are you sure you want to delete Volume \"%s\"? (yes/no): "
 msgstr ""
 
-#: src/dird/ua_cmds.c:1458
+#: src/dird/ua_cmds.c:1504
 msgid "Can't list jobs on this volume\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1483
+#: src/dird/ua_cmds.c:1529
 #, c-format
 msgid "Are you sure you want to delete Pool \"%s\"? (yes/no): "
 msgstr ""
 
-#: src/dird/ua_cmds.c:1598
+#: src/dird/ua_cmds.c:1644
 #, c-format
 msgid "Using Catalog name=%s DB=%s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1666
+#: src/dird/ua_cmds.c:1712
 msgid "ERR: Can't open db\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1713
+#: src/dird/ua_cmds.c:1759
 msgid "Wait on mount timed out\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1723
+#: src/dird/ua_cmds.c:1769
 msgid "ERR: Job was not found\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1799
+#: src/dird/ua_cmds.c:1845
 msgid ""
 "  Command       Description\n"
 "  =======       ===========\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1803
+#: src/dird/ua_cmds.c:1849
 #, c-format
 msgid ""
 "  %-13s %s\n"
@@ -2053,12 +2103,12 @@ msgid ""
 "\t%s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1808
+#: src/dird/ua_cmds.c:1854
 #, c-format
 msgid "  %-13s %s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1812
+#: src/dird/ua_cmds.c:1858
 #, c-format
 msgid ""
 "\n"
@@ -2066,29 +2116,29 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1814
+#: src/dird/ua_cmds.c:1860
 msgid ""
 "\n"
 "When at a prompt, entering a period cancels the command.\n"
 "\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1850 src/filed/status.c:85
+#: src/dird/ua_cmds.c:1896 src/filed/status.c:85
 #, c-format
 msgid "%s Version: %s (%s) %s %s %s %s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1909 src/dird/ua_cmds.c:1936 src/dird/ua_cmds.c:1958
+#: src/dird/ua_cmds.c:1955 src/dird/ua_cmds.c:1982 src/dird/ua_cmds.c:2004
 #, c-format
 msgid "No authorization for Catalog \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:2003
+#: src/dird/ua_cmds.c:2049
 #, c-format
 msgid "Could not open catalog database \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:2013
+#: src/dird/ua_cmds.c:2059
 #, c-format
 msgid "Using Catalog \"%s\"\n"
 msgstr ""
@@ -2183,7 +2233,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:129 src/dird/ua_tree.c:827
+#: src/dird/ua_tree.c:129 src/dird/ua_tree.c:831
 #, c-format
 msgid "cwd is: %s\n"
 msgstr ""
@@ -2193,142 +2243,150 @@ msgstr ""
 msgid "Invalid command \"%s\". Enter \"done\" to exit.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:370 src/dird/ua_tree.c:382 src/dird/ua_tree.c:399
+#: src/dird/ua_tree.c:227
+#, c-format
+msgid ""
+"Something is wrong with the Delta sequence of %s, skiping new parts. Current "
+"sequence is %d\n"
+msgstr ""
+
+#: src/dird/ua_tree.c:373 src/dird/ua_tree.c:385 src/dird/ua_tree.c:402
 msgid "No files marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:384
+#: src/dird/ua_tree.c:387
 msgid "1 file marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:386
+#: src/dird/ua_tree.c:389
 #, c-format
 msgid "%s files marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:414
+#: src/dird/ua_tree.c:417
 msgid "No directories marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:416
+#: src/dird/ua_tree.c:419
 msgid "1 directory marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:418
+#: src/dird/ua_tree.c:421
 #, c-format
 msgid "%s directories marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:439
+#: src/dird/ua_tree.c:442
 #, c-format
 msgid "%s total files/dirs. %s marked to be restored.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:450
+#: src/dird/ua_tree.c:453
 msgid "No file specification given.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:671
+#: src/dird/ua_tree.c:674
 #, c-format
 msgid "Node %s has no children.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:764
+#: src/dird/ua_tree.c:767
 #, c-format
 msgid "%d total files; %d marked to be restored; %s bytes.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:775 src/stored/btape.c:2947
+#: src/dird/ua_tree.c:778 src/stored/btape.c:2949
 #, c-format
 msgid ""
 "  Command    Description\n"
 "  =======    ===========\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:798
+#: src/dird/ua_tree.c:801
 msgid "Too few or too many arguments. Try using double quotes.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:810
+#: src/dird/ua_tree.c:814
 msgid "Invalid path given.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:846 src/dird/ua_tree.c:858
+#: src/dird/ua_tree.c:850 src/dird/ua_tree.c:862
 msgid "No files unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:860
+#: src/dird/ua_tree.c:864
 msgid "1 file unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:863
+#: src/dird/ua_tree.c:867
 #, c-format
 msgid "%s files unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:874 src/dird/ua_tree.c:891
+#: src/dird/ua_tree.c:878 src/dird/ua_tree.c:895
 msgid "No directories unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:893
+#: src/dird/ua_tree.c:897
 msgid "1 directory unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:895
+#: src/dird/ua_tree.c:899
 #, c-format
 msgid "%d directories unmarked.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:559 src/tray-monitor/tray_conf.c:168
+#: src/dird/dird_conf.c:567 src/tray-monitor/tray_conf.c:168
 #: src/qt-console/tray-monitor/tray_conf.cpp:168
 #, c-format
 msgid "No %s resource defined\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:568
+#: src/dird/dird_conf.c:576
 #, c-format
 msgid "Director: name=%s MaxJobs=%d FDtimeout=%s SDtimeout=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:573
+#: src/dird/dird_conf.c:581
 #, c-format
 msgid "   query_file=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:576 src/dird/dird_conf.c:596 src/dird/dird_conf.c:610
-#: src/dird/dird_conf.c:669 src/dird/dird_conf.c:673 src/dird/dird_conf.c:677
-#: src/dird/dird_conf.c:710 src/dird/dird_conf.c:733 src/dird/dird_conf.c:737
-#: src/dird/dird_conf.c:741 src/dird/dird_conf.c:745 src/dird/dird_conf.c:749
-#: src/dird/dird_conf.c:762 src/dird/dird_conf.c:989 src/dird/dird_conf.c:996
+#: src/dird/dird_conf.c:584 src/dird/dird_conf.c:604 src/dird/dird_conf.c:621
+#: src/dird/dird_conf.c:689 src/dird/dird_conf.c:693 src/dird/dird_conf.c:697
+#: src/dird/dird_conf.c:730 src/dird/dird_conf.c:753 src/dird/dird_conf.c:757
+#: src/dird/dird_conf.c:761 src/dird/dird_conf.c:765 src/dird/dird_conf.c:769
+#: src/dird/dird_conf.c:782 src/dird/dird_conf.c:1018
+#: src/dird/dird_conf.c:1025
 msgid "  --> "
 msgstr ""
 
-#: src/dird/dird_conf.c:581
+#: src/dird/dird_conf.c:589
 #, c-format
 msgid "Console: name=%s SSL=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:586
+#: src/dird/dird_conf.c:594
 #, c-format
 msgid "Counter: name=%s min=%d max=%d cur=%d wrapcntr=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:591
+#: src/dird/dird_conf.c:599
 #, c-format
 msgid "Counter: name=%s min=%d max=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:602
+#: src/dird/dird_conf.c:613
 #, c-format
 msgid "Client: name=%s address=%s FDport=%d MaxJobs=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:605
+#: src/dird/dird_conf.c:616
 #, c-format
 msgid "      JobRetention=%s FileRetention=%s AutoPrune=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:618
+#: src/dird/dird_conf.c:629
 #, c-format
 msgid ""
 "Device: name=%s ok=%d num_writers=%d max_writers=%d\n"
@@ -2337,286 +2395,286 @@ msgid ""
 "      poolid=%s volname=%s MediaType=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:629
+#: src/dird/dird_conf.c:643
 #, c-format
 msgid ""
 "Storage: name=%s address=%s SDport=%d MaxJobs=%u\n"
 "      DeviceName=%s MediaType=%s StorageId=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:639
+#: src/dird/dird_conf.c:656
 #, c-format
 msgid ""
 "Catalog: name=%s address=%s DBport=%d db_name=%s\n"
 "      db_driver=%s db_user=%s MutliDBConn=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:649
+#: src/dird/dird_conf.c:669
 #, c-format
 msgid "%s: name=%s JobType=%d level=%s Priority=%d Enabled=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:650
+#: src/dird/dird_conf.c:670
 msgid "JobDefs"
 msgstr ""
 
-#: src/dird/dird_conf.c:654
+#: src/dird/dird_conf.c:674
 #, c-format
 msgid ""
 "     MaxJobs=%u Resched=%d Times=%d Interval=%s Spool=%d WritePartAfterJob="
 "%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:660
+#: src/dird/dird_conf.c:680
 #, c-format
 msgid "     SpoolSize=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:663
+#: src/dird/dird_conf.c:683
 #, c-format
 msgid "     Accurate=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:666
+#: src/dird/dird_conf.c:686
 #, c-format
 msgid "     SelectionType=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:681
+#: src/dird/dird_conf.c:701
 #, c-format
 msgid "  --> Where=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:684
+#: src/dird/dird_conf.c:704
 #, c-format
 msgid "  --> RegexWhere=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:687
+#: src/dird/dird_conf.c:707
 #, c-format
 msgid "  --> Bootstrap=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:690
+#: src/dird/dird_conf.c:710
 #, c-format
 msgid "  --> WriteBootstrap=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:693
+#: src/dird/dird_conf.c:713
 #, c-format
 msgid "  --> PluginOptions=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:696
+#: src/dird/dird_conf.c:716
 #, c-format
 msgid "  --> MaxRunTime=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:699
+#: src/dird/dird_conf.c:719
 #, c-format
 msgid "  --> MaxWaitTime=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:702
+#: src/dird/dird_conf.c:722
 #, c-format
 msgid "  --> MaxStartDelay=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:705
+#: src/dird/dird_conf.c:725
 #, c-format
 msgid "  --> MaxRunSchedTime=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:717
+#: src/dird/dird_conf.c:737
 #, c-format
 msgid "  --> Base %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:723 src/lib/runscript.c:297
+#: src/dird/dird_conf.c:743 src/lib/runscript.c:297
 msgid " --> RunScript\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:724 src/lib/runscript.c:298
+#: src/dird/dird_conf.c:744 src/lib/runscript.c:298
 #, c-format
 msgid "  --> Command=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:725 src/lib/runscript.c:299
+#: src/dird/dird_conf.c:745 src/lib/runscript.c:299
 #, c-format
 msgid "  --> Target=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:726 src/lib/runscript.c:300
+#: src/dird/dird_conf.c:746 src/lib/runscript.c:300
 #, c-format
 msgid "  --> RunOnSuccess=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:727 src/lib/runscript.c:301
+#: src/dird/dird_conf.c:747 src/lib/runscript.c:301
 #, c-format
 msgid "  --> RunOnFailure=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:728 src/lib/runscript.c:302
+#: src/dird/dird_conf.c:748 src/lib/runscript.c:302
 #, c-format
 msgid "  --> FailJobOnError=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:729 src/lib/runscript.c:303
+#: src/dird/dird_conf.c:749 src/lib/runscript.c:303
 #, c-format
 msgid "  --> RunWhen=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:755
+#: src/dird/dird_conf.c:775
 #, c-format
 msgid "  --> Run=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:759
+#: src/dird/dird_conf.c:779
 #, c-format
 msgid "  --> SelectionPattern=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:770
+#: src/dird/dird_conf.c:793
 #, c-format
 msgid "FileSet: name=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:861 src/dird/dird_conf.c:940
+#: src/dird/dird_conf.c:887 src/dird/dird_conf.c:966
 #, c-format
 msgid "Schedule: name=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:866
+#: src/dird/dird_conf.c:892
 #, c-format
 msgid "  --> Run Level=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:867
+#: src/dird/dird_conf.c:893
 msgid "      hour="
 msgstr ""
 
-#: src/dird/dird_conf.c:876
+#: src/dird/dird_conf.c:902
 msgid "      mday="
 msgstr ""
 
-#: src/dird/dird_conf.c:885
+#: src/dird/dird_conf.c:911
 msgid "      month="
 msgstr ""
 
-#: src/dird/dird_conf.c:894
+#: src/dird/dird_conf.c:920
 msgid "      wday="
 msgstr ""
 
-#: src/dird/dird_conf.c:903
+#: src/dird/dird_conf.c:929
 msgid "      wom="
 msgstr ""
 
-#: src/dird/dird_conf.c:912
+#: src/dird/dird_conf.c:938
 msgid "      woy="
 msgstr ""
 
-#: src/dird/dird_conf.c:921
+#: src/dird/dird_conf.c:947
 #, c-format
 msgid "      mins=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:923 src/dird/dird_conf.c:927 src/dird/dird_conf.c:931
+#: src/dird/dird_conf.c:949 src/dird/dird_conf.c:953 src/dird/dird_conf.c:957
 msgid "     --> "
 msgstr ""
 
-#: src/dird/dird_conf.c:945
+#: src/dird/dird_conf.c:974
 #, c-format
 msgid "Pool: name=%s PoolType=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:947
+#: src/dird/dird_conf.c:976
 #, c-format
 msgid "      use_cat=%d use_once=%d cat_files=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:950
+#: src/dird/dird_conf.c:979
 #, c-format
 msgid "      max_vols=%d auto_prune=%d VolRetention=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:953
+#: src/dird/dird_conf.c:982
 #, c-format
 msgid "      VolUse=%s recycle=%d LabelFormat=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:957
+#: src/dird/dird_conf.c:986
 #, c-format
 msgid "      CleaningPrefix=%s LabelType=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:959
+#: src/dird/dird_conf.c:988
 #, c-format
 msgid "      RecyleOldest=%d PurgeOldest=%d ActionOnPurge=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:963
+#: src/dird/dird_conf.c:992
 #, c-format
 msgid "      MaxVolJobs=%d MaxVolFiles=%d MaxVolBytes=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:967
+#: src/dird/dird_conf.c:996
 #, c-format
 msgid "      MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:971
+#: src/dird/dird_conf.c:1000
 #, c-format
 msgid "      JobRetention=%s FileRetention=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:975
+#: src/dird/dird_conf.c:1004
 #, c-format
 msgid "      NextPool=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:978
+#: src/dird/dird_conf.c:1007
 #, c-format
 msgid "      RecyclePool=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:981
+#: src/dird/dird_conf.c:1010
 #, c-format
 msgid "      ScratchPool=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:984
+#: src/dird/dird_conf.c:1013
 #, c-format
 msgid "      Catalog=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1004
+#: src/dird/dird_conf.c:1033
 #, c-format
 msgid "Messages: name=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1006
+#: src/dird/dird_conf.c:1035
 #, c-format
 msgid "      mailcmd=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1008
+#: src/dird/dird_conf.c:1037
 #, c-format
 msgid "      opcmd=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1012 src/tray-monitor/tray_conf.c:199
+#: src/dird/dird_conf.c:1041 src/tray-monitor/tray_conf.c:199
 #: src/qt-console/tray-monitor/tray_conf.cpp:199
 #, c-format
 msgid "Unknown resource type %d in dump_resource.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1343 src/tray-monitor/tray_conf.c:257
+#: src/dird/dird_conf.c:1372 src/tray-monitor/tray_conf.c:257
 #: src/qt-console/tray-monitor/tray_conf.cpp:257
 #, c-format
 msgid "Unknown resource type %d in free_resource.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1375 src/dird/dird_conf.c:1390
+#: src/dird/dird_conf.c:1404 src/dird/dird_conf.c:1419
 #: src/tray-monitor/tray_conf.c:288 src/wx-console/console_conf.c:265
 #: src/console/console_conf.c:259 src/filed/filed_conf.c:361
 #: src/qt-console/tray-monitor/tray_conf.cpp:288
@@ -2625,54 +2683,54 @@ msgstr ""
 msgid "%s item is required in %s resource, but not found.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1381 src/tray-monitor/tray_conf.c:294
+#: src/dird/dird_conf.c:1410 src/tray-monitor/tray_conf.c:294
 #: src/lib/parse_conf.c:225 src/qt-console/tray-monitor/tray_conf.cpp:294
 #, c-format
 msgid "Too many items in %s resource\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1421
+#: src/dird/dird_conf.c:1450
 #, c-format
 msgid "Cannot find Pool resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1432
+#: src/dird/dird_conf.c:1461
 #, c-format
 msgid "Cannot find Console resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1438 src/stored/stored_conf.c:611
+#: src/dird/dird_conf.c:1467 src/stored/stored_conf.c:611
 #: src/filed/filed_conf.c:381
 #, c-format
 msgid "Cannot find Director resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1445 src/stored/stored_conf.c:617
+#: src/dird/dird_conf.c:1474 src/stored/stored_conf.c:617
 #, c-format
 msgid "Cannot find Storage resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1454
+#: src/dird/dird_conf.c:1483
 #, c-format
 msgid "Cannot find Job resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1504
+#: src/dird/dird_conf.c:1533
 #, c-format
 msgid "Cannot find Counter resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1512 src/filed/filed_conf.c:387
+#: src/dird/dird_conf.c:1541 src/filed/filed_conf.c:387
 #, c-format
 msgid "Cannot find Client resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1525
+#: src/dird/dird_conf.c:1554
 #, c-format
 msgid "Cannot find Schedule resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1530 src/dird/dird_conf.c:1590
+#: src/dird/dird_conf.c:1559 src/dird/dird_conf.c:1619
 #: src/tray-monitor/tray_conf.c:314 src/tray-monitor/tray_conf.c:352
 #: src/qt-console/tray-monitor/tray_conf.cpp:314
 #: src/qt-console/tray-monitor/tray_conf.cpp:352
@@ -2680,12 +2738,12 @@ msgstr ""
 msgid "Unknown resource type %d in save_resource.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1605
+#: src/dird/dird_conf.c:1634
 #, c-format
 msgid "Name item is required in %s resource, but not found.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1613 src/tray-monitor/tray_conf.c:372
+#: src/dird/dird_conf.c:1642 src/tray-monitor/tray_conf.c:372
 #: src/wx-console/console_conf.c:328 src/console/console_conf.c:322
 #: src/filed/filed_conf.c:446 src/qt-console/tray-monitor/tray_conf.cpp:372
 #: src/qt-console/bat_conf.cpp:334
@@ -2693,43 +2751,43 @@ msgstr ""
 msgid "Attempt to define second %s resource named \"%s\" is not permitted.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1618
+#: src/dird/dird_conf.c:1647
 #, c-format
 msgid "Inserting %s res: %s index=%d pass=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1631
+#: src/dird/dird_conf.c:1660
 #, c-format
 msgid "Expected one of: %s, got: %s"
 msgstr ""
 
-#: src/dird/dird_conf.c:1703
+#: src/dird/dird_conf.c:1732
 #, c-format
 msgid "Expected a Migration Job Type keyword, got: %s"
 msgstr ""
 
-#: src/dird/dird_conf.c:1729
+#: src/dird/dird_conf.c:1758
 #, c-format
 msgid "Expected a Job Type keyword, got: %s"
 msgstr ""
 
-#: src/dird/dird_conf.c:1753
+#: src/dird/dird_conf.c:1782
 #, c-format
 msgid "Expected a Job Level keyword, got: %s"
 msgstr ""
 
-#: src/dird/dird_conf.c:1773
+#: src/dird/dird_conf.c:1802
 #, c-format
 msgid "Expected a Restore replacement option, got: %s"
 msgstr ""
 
-#: src/dird/dird_conf.c:1823 src/dird/dird_conf.c:1939
-#: src/lib/parse_conf.c:761 src/lib/parse_conf.c:777
+#: src/dird/dird_conf.c:1852 src/dird/dird_conf.c:1968
+#: src/lib/parse_conf.c:761 src/lib/parse_conf.c:777 src/lib/ini.c:593
 #, c-format
 msgid "Expect %s, got: %s"
 msgstr ""
 
-#: src/dird/dird_conf.c:1845 src/lib/parse_conf.c:478
+#: src/dird/dird_conf.c:1874 src/lib/parse_conf.c:478
 #, c-format
 msgid "Could not find config Resource %s referenced on line %d : %s\n"
 msgstr ""
@@ -2857,7 +2915,7 @@ msgstr ""
 msgid "Select full restore to a specified Job date"
 msgstr ""
 
-#: src/dird/ua_restore.c:446 src/dird/ua_status.c:863 src/stored/status.c:546
+#: src/dird/ua_restore.c:446 src/dird/ua_status.c:862 src/stored/status.c:611
 #: src/filed/status.c:373 src/wx-console/wxbconfigpanel.cpp:220
 msgid "Cancel"
 msgstr ""
@@ -2867,7 +2925,7 @@ msgstr ""
 msgid "Unknown keyword: %s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:520 src/dird/ua_update.c:955
+#: src/dird/ua_restore.c:520 src/dird/ua_update.c:957
 #, c-format
 msgid "Improper date format: %s\n"
 msgstr ""
@@ -3101,12 +3159,17 @@ msgstr ""
 msgid "Warning default storage overridden by \"%s\" on command line.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1533
+#: src/dird/ua_restore.c:1534
+#, c-format
+msgid "Using Storage \"%s\" from MediaType \"%s\".\n"
+msgstr ""
+
+#: src/dird/ua_restore.c:1537
 #, c-format
 msgid "Storage \"%s\" not found, using Storage \"%s\" from MediaType \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1541
+#: src/dird/ua_restore.c:1546
 #, c-format
 msgid ""
 "\n"
@@ -3168,7 +3231,7 @@ msgid ""
 "resource.\n"
 msgstr ""
 
-#: src/dird/fd_cmds.c:500 src/filed/job.c:858
+#: src/dird/fd_cmds.c:500 src/filed/job.c:854
 #, c-format
 msgid "Cannot run program: %s. ERR=%s\n"
 msgstr ""
@@ -3210,9 +3273,9 @@ msgid ""
 "msglen=%d msg=%s\n"
 msgstr ""
 
-#: src/dird/fd_cmds.c:825 src/dird/fd_cmds.c:884 src/dird/catreq.c:443
-#: src/cats/sqlite.c:374 src/cats/ingres.c:451 src/cats/postgresql.c:441
-#: src/cats/dbi.c:552 src/cats/mysql.c:358
+#: src/dird/fd_cmds.c:825 src/dird/fd_cmds.c:884 src/cats/sqlite.c:387
+#: src/cats/ingres.c:464 src/cats/postgresql.c:454 src/cats/dbi.c:565
+#: src/cats/mysql.c:371
 #, c-format
 msgid "Attribute create error. %s"
 msgstr ""
@@ -3231,19 +3294,19 @@ msgstr ""
 msgid "Negative numbers not permitted\n"
 msgstr ""
 
-#: src/dird/ua_label.c:110
+#: src/dird/ua_label.c:110 src/lib/sellist.c:76
 msgid "Range end is not integer.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:115
+#: src/dird/ua_label.c:115 src/lib/sellist.c:81
 msgid "Range start is not an integer.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:121
+#: src/dird/ua_label.c:121 src/lib/sellist.c:87
 msgid "Range end not bigger than start.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:127
+#: src/dird/ua_label.c:127 src/lib/sellist.c:94
 msgid "Input value is not an integer.\n"
 msgstr ""
 
@@ -3255,179 +3318,179 @@ msgstr ""
 msgid "Slot too large.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:187 src/dird/ua_label.c:352 src/dird/ua_label.c:1214
-#: src/dird/ua_run.c:1557
+#: src/dird/ua_label.c:189 src/dird/ua_label.c:366 src/dird/ua_label.c:1228
+#: src/dird/ua_run.c:1563
 msgid "command line"
 msgstr ""
 
-#: src/dird/ua_label.c:205 src/dird/ua_label.c:516 src/dird/ua_label.c:1221
+#: src/dird/ua_label.c:207 src/dird/ua_label.c:531 src/dird/ua_label.c:1235
 msgid "No slots in changer to scan.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:217 src/dird/ua_label.c:527
+#: src/dird/ua_label.c:219 src/dird/ua_label.c:542
 msgid "No Volumes found to label, or no barcodes.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:227 src/dird/ua_label.c:1242
+#: src/dird/ua_label.c:229 src/dird/ua_label.c:1256
 #, c-format
 msgid "Slot %d greater than max %d ignored.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:256
+#: src/dird/ua_label.c:267
 #, c-format
 msgid "No VolName for Slot=%d InChanger set to zero.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:274
+#: src/dird/ua_label.c:288
 #, c-format
 msgid "Catalog record for Volume \"%s\" updated to reference slot %d.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:278
+#: src/dird/ua_label.c:292
 #, c-format
 msgid "Catalog record for Volume \"%s\" is up to date.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:284
+#: src/dird/ua_label.c:298
 #, c-format
 msgid "Volume \"%s\" not found in catalog. Slot=%d InChanger set to zero.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:381
+#: src/dird/ua_label.c:394
 #, c-format
 msgid ""
 "Volume \"%s\" has VolStatus %s. It must be Purged or Recycled before "
 "relabeling.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:397
+#: src/dird/ua_label.c:410
 msgid "Enter new Volume name: "
 msgstr ""
 
-#: src/dird/ua_label.c:410
+#: src/dird/ua_label.c:425
 #, c-format
 msgid "Media record for new Volume \"%s\" already exists.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:428
+#: src/dird/ua_label.c:443
 msgid "Enter slot (0 or Enter for none): "
 msgstr ""
 
-#: src/dird/ua_label.c:456
+#: src/dird/ua_label.c:471
 #, c-format
 msgid "Delete of Volume \"%s\" failed. ERR=%s"
 msgstr ""
 
-#: src/dird/ua_label.c:459
+#: src/dird/ua_label.c:474
 #, c-format
 msgid "Old volume \"%s\" deleted from catalog.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:470
+#: src/dird/ua_label.c:485
 #, c-format
 msgid "Requesting to mount %s ...\n"
 msgstr ""
 
-#: src/dird/ua_label.c:492
+#: src/dird/ua_label.c:507
 msgid "Do not forget to mount the drive!!!\n"
 msgstr ""
 
-#: src/dird/ua_label.c:532
+#: src/dird/ua_label.c:547
 msgid ""
 "The following Volumes will be labeled:\n"
 "Slot  Volume\n"
 "==============\n"
 msgstr ""
 
-#: src/dird/ua_label.c:541
+#: src/dird/ua_label.c:556
 msgid "Do you want to label these Volumes? (yes|no): "
 msgstr ""
 
-#: src/dird/ua_label.c:562
+#: src/dird/ua_label.c:576
 #, c-format
 msgid "Media record for Slot %d Volume \"%s\" already exists.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:568
+#: src/dird/ua_label.c:582
 #, c-format
 msgid "Error setting InChanger: ERR=%s"
 msgstr ""
 
-#: src/dird/ua_label.c:591
+#: src/dird/ua_label.c:605
 #, c-format
 msgid "Maximum pool Volumes=%d reached.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:598
+#: src/dird/ua_label.c:613
 #, c-format
 msgid "Catalog record for cleaning tape \"%s\" successfully created.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:605
+#: src/dird/ua_label.c:620
 #, c-format
 msgid "Catalog error on cleaning tape: %s"
 msgstr ""
 
-#: src/dird/ua_label.c:641
+#: src/dird/ua_label.c:656
 #, c-format
 msgid "Illegal character \"%c\" in a volume name.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:688
+#: src/dird/ua_label.c:703
 #, c-format
 msgid "Sending relabel command from \"%s\" to \"%s\" ...\n"
 msgstr ""
 
-#: src/dird/ua_label.c:695
+#: src/dird/ua_label.c:710
 #, c-format
 msgid "Sending label command for Volume \"%s\" Slot %d ...\n"
 msgstr ""
 
-#: src/dird/ua_label.c:736
+#: src/dird/ua_label.c:751
 #, c-format
 msgid "Catalog record for Volume \"%s\", Slot %d  successfully created.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:749
+#: src/dird/ua_label.c:764
 #, c-format
 msgid "Label command failed for Volume %s.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:787
+#: src/dird/ua_label.c:802
 msgid "Could not open SD socket.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:859 src/dird/ua_label.c:869
+#: src/dird/ua_label.c:874 src/dird/ua_label.c:884
 #, c-format
 msgid "Invalid Slot number: %s\n"
 msgstr ""
 
-#: src/dird/ua_label.c:878
+#: src/dird/ua_label.c:893
 #, c-format
 msgid "Invalid Volume name: %s\n"
 msgstr ""
 
-#: src/dird/ua_label.c:972
+#: src/dird/ua_label.c:987
 #, c-format
 msgid "Device \"%s\" has %d slots.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:1018
+#: src/dird/ua_label.c:1033
 #, c-format
 msgid "Pool \"%s\" resource not found for volume \"%s\"!\n"
 msgstr ""
 
-#: src/dird/ua_label.c:1233
+#: src/dird/ua_label.c:1247
 msgid "No Volumes found, or no barcodes.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:1236
+#: src/dird/ua_label.c:1250
 msgid ""
 " Slot |   Volume Name    |   Status  |     Media Type       |      "
 "Pool          |\n"
 msgstr ""
 
-#: src/dird/ua_label.c:1237
+#: src/dird/ua_label.c:1251
 msgid ""
 "------+------------------+-----------+----------------------"
 "+--------------------|\n"
@@ -3647,16 +3710,16 @@ msgstr ""
 msgid "New Recycle flag is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:257 src/dird/ua_update.c:277 src/dird/ua_update.c:698
-#: src/dird/ua_run.c:180 src/dird/backup.c:778 src/dird/backup.c:779
-#: src/dird/backup.c:780 src/dird/ua_input.c:131 src/stored/parse_bsr.c:864
+#: src/dird/ua_update.c:257 src/dird/ua_update.c:277 src/dird/ua_update.c:699
+#: src/dird/ua_run.c:180 src/dird/backup.c:788 src/dird/backup.c:789
+#: src/dird/backup.c:790 src/dird/ua_input.c:131 src/stored/parse_bsr.c:863
 #: src/tools/dbcheck.c:1352
 msgid "yes"
 msgstr ""
 
-#: src/dird/ua_update.c:257 src/dird/ua_update.c:277 src/dird/ua_update.c:698
-#: src/dird/backup.c:778 src/dird/backup.c:779 src/dird/backup.c:780
-#: src/dird/ua_input.c:135 src/stored/parse_bsr.c:864
+#: src/dird/ua_update.c:257 src/dird/ua_update.c:277 src/dird/ua_update.c:699
+#: src/dird/ua_run.c:200 src/dird/backup.c:788 src/dird/backup.c:789
+#: src/dird/backup.c:790 src/dird/ua_input.c:135 src/stored/parse_bsr.c:863
 msgid "no"
 msgstr ""
 
@@ -3670,47 +3733,47 @@ msgstr ""
 msgid "Invalid slot, it must be between 0 and MaxVols=%d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:303 src/dird/ua_update.c:726
+#: src/dird/ua_update.c:304 src/dird/ua_update.c:728
 #, c-format
 msgid "Error updating media record Slot: ERR=%s"
 msgstr ""
 
-#: src/dird/ua_update.c:305
+#: src/dird/ua_update.c:306
 #, c-format
 msgid "New Slot is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:330
+#: src/dird/ua_update.c:331
 #, c-format
 msgid "New Pool is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:373
+#: src/dird/ua_update.c:374
 #, c-format
 msgid "New RecyclePool is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:393
+#: src/dird/ua_update.c:394
 #, c-format
 msgid "Error updating Volume record: ERR=%s"
 msgstr ""
 
-#: src/dird/ua_update.c:395
+#: src/dird/ua_update.c:396
 #, c-format
 msgid "Volume defaults updated from \"%s\" Pool record.\n"
 msgstr ""
 
-#: src/dird/ua_update.c:419 src/dird/ua_update.c:452
+#: src/dird/ua_update.c:419 src/dird/ua_update.c:451
 #, c-format
 msgid "Error updating Volume records: ERR=%s"
 msgstr ""
 
-#: src/dird/ua_update.c:421 src/dird/ua_update.c:454
+#: src/dird/ua_update.c:421 src/dird/ua_update.c:453
 #, c-format
 msgid "All Volume defaults updated from \"%s\" Pool record.\n"
 msgstr ""
 
-#: src/dird/ua_update.c:444
+#: src/dird/ua_update.c:443
 #, c-format
 msgid "Updating all pools, but skipped PoolId=%d. ERR=%s\n"
 msgstr ""
@@ -3725,276 +3788,276 @@ msgstr ""
 msgid "New Enabled is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:486
+#: src/dird/ua_update.c:487
 #, c-format
 msgid "Error updating media record ActionOnPurge: ERR=%s"
 msgstr ""
 
-#: src/dird/ua_update.c:489
+#: src/dird/ua_update.c:490
 #, c-format
 msgid "New ActionOnPurge is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:604 src/dird/ua_run.c:235
+#: src/dird/ua_update.c:605 src/dird/ua_run.c:222
 msgid "Parameters to modify:\n"
 msgstr ""
 
-#: src/dird/ua_update.c:605
+#: src/dird/ua_update.c:606
 msgid "Volume Status"
 msgstr ""
 
-#: src/dird/ua_update.c:606
+#: src/dird/ua_update.c:607
 msgid "Volume Retention Period"
 msgstr ""
 
-#: src/dird/ua_update.c:607
+#: src/dird/ua_update.c:608
 msgid "Volume Use Duration"
 msgstr ""
 
-#: src/dird/ua_update.c:608
+#: src/dird/ua_update.c:609
 msgid "Maximum Volume Jobs"
 msgstr ""
 
-#: src/dird/ua_update.c:609
+#: src/dird/ua_update.c:610
 msgid "Maximum Volume Files"
 msgstr ""
 
-#: src/dird/ua_update.c:610
+#: src/dird/ua_update.c:611
 msgid "Maximum Volume Bytes"
 msgstr ""
 
-#: src/dird/ua_update.c:611
+#: src/dird/ua_update.c:612
 msgid "Recycle Flag"
 msgstr ""
 
-#: src/dird/ua_update.c:612
+#: src/dird/ua_update.c:613
 msgid "Slot"
 msgstr ""
 
-#: src/dird/ua_update.c:613
+#: src/dird/ua_update.c:614
 msgid "InChanger Flag"
 msgstr ""
 
-#: src/dird/ua_update.c:614
+#: src/dird/ua_update.c:615
 msgid "Volume Files"
 msgstr ""
 
-#: src/dird/ua_update.c:616
+#: src/dird/ua_update.c:617
 msgid "Volume from Pool"
 msgstr ""
 
-#: src/dird/ua_update.c:617
+#: src/dird/ua_update.c:618
 msgid "All Volumes from Pool"
 msgstr ""
 
-#: src/dird/ua_update.c:618
+#: src/dird/ua_update.c:619
 msgid "All Volumes from all Pools"
 msgstr ""
 
-#: src/dird/ua_update.c:619
+#: src/dird/ua_update.c:620
 msgid "Enabled"
 msgstr ""
 
-#: src/dird/ua_update.c:620
+#: src/dird/ua_update.c:621
 msgid "RecyclePool"
 msgstr ""
 
-#: src/dird/ua_update.c:621
+#: src/dird/ua_update.c:622
 msgid "Action On Purge"
 msgstr ""
 
-#: src/dird/ua_update.c:622
+#: src/dird/ua_update.c:623
 msgid "Done"
 msgstr ""
 
-#: src/dird/ua_update.c:623 src/dird/ua_run.c:265 src/dird/ua_run.c:594
+#: src/dird/ua_update.c:624 src/dird/ua_run.c:252 src/dird/ua_run.c:600
 msgid "Select parameter to modify"
 msgstr ""
 
-#: src/dird/ua_update.c:631
+#: src/dird/ua_update.c:632
 #, c-format
 msgid "Updating Volume \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_update.c:636
+#: src/dird/ua_update.c:637
 #, c-format
 msgid "Current Volume status is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:637
+#: src/dird/ua_update.c:638
 msgid "Possible Values are:\n"
 msgstr ""
 
-#: src/dird/ua_update.c:648
+#: src/dird/ua_update.c:649
 msgid "Choose new Volume Status"
 msgstr ""
 
-#: src/dird/ua_update.c:654
+#: src/dird/ua_update.c:655
 #, c-format
 msgid "Current retention period is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:656
+#: src/dird/ua_update.c:657
 msgid "Enter Volume Retention period: "
 msgstr ""
 
-#: src/dird/ua_update.c:663
+#: src/dird/ua_update.c:664
 #, c-format
 msgid "Current use duration is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:665
+#: src/dird/ua_update.c:666
 msgid "Enter Volume Use Duration: "
 msgstr ""
 
-#: src/dird/ua_update.c:672
+#: src/dird/ua_update.c:673
 #, c-format
 msgid "Current max jobs is: %u\n"
 msgstr ""
 
-#: src/dird/ua_update.c:673
+#: src/dird/ua_update.c:674
 msgid "Enter new Maximum Jobs: "
 msgstr ""
 
-#: src/dird/ua_update.c:680
+#: src/dird/ua_update.c:681
 #, c-format
 msgid "Current max files is: %u\n"
 msgstr ""
 
-#: src/dird/ua_update.c:681
+#: src/dird/ua_update.c:682
 msgid "Enter new Maximum Files: "
 msgstr ""
 
-#: src/dird/ua_update.c:688
+#: src/dird/ua_update.c:689
 #, c-format
 msgid "Current value is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:689
+#: src/dird/ua_update.c:690
 msgid "Enter new Maximum Bytes: "
 msgstr ""
 
-#: src/dird/ua_update.c:697
+#: src/dird/ua_update.c:698
 #, c-format
 msgid "Current recycle flag is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:699
+#: src/dird/ua_update.c:700
 msgid "Enter new Recycle status: "
 msgstr ""
 
-#: src/dird/ua_update.c:706
+#: src/dird/ua_update.c:707
 #, c-format
 msgid "Current Slot is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:707
+#: src/dird/ua_update.c:708
 msgid "Enter new Slot: "
 msgstr ""
 
-#: src/dird/ua_update.c:714
+#: src/dird/ua_update.c:715
 #, c-format
 msgid "Current InChanger flag is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:715
+#: src/dird/ua_update.c:716
 #, c-format
 msgid "Set InChanger flag for Volume \"%s\": yes/no: "
 msgstr ""
 
-#: src/dird/ua_update.c:728
+#: src/dird/ua_update.c:730
 #, c-format
 msgid "New InChanger flag is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:735
+#: src/dird/ua_update.c:737
 msgid ""
 "Warning changing Volume Files can result\n"
 "in loss of data on your Volume\n"
 "\n"
 msgstr ""
 
-#: src/dird/ua_update.c:737
+#: src/dird/ua_update.c:739
 #, c-format
 msgid "Current Volume Files is: %u\n"
 msgstr ""
 
-#: src/dird/ua_update.c:738
+#: src/dird/ua_update.c:740
 msgid "Enter new number of Files for Volume: "
 msgstr ""
 
-#: src/dird/ua_update.c:743
+#: src/dird/ua_update.c:745
 msgid "Normally, you should only increase Volume Files by one!\n"
 msgstr ""
 
-#: src/dird/ua_update.c:744
+#: src/dird/ua_update.c:746
 msgid "Increase Volume Files? (yes/no): "
 msgstr ""
 
-#: src/dird/ua_update.c:754
+#: src/dird/ua_update.c:756
 #, c-format
 msgid "New Volume Files is: %u\n"
 msgstr ""
 
-#: src/dird/ua_update.c:766
+#: src/dird/ua_update.c:768
 #, c-format
 msgid "Current Pool is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:767
+#: src/dird/ua_update.c:769
 msgid "Enter new Pool name: "
 msgstr ""
 
-#: src/dird/ua_update.c:788
+#: src/dird/ua_update.c:790
 #, c-format
 msgid "Current Enabled is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:789
+#: src/dird/ua_update.c:791
 msgid "Enter new Enabled: "
 msgstr ""
 
-#: src/dird/ua_update.c:808
+#: src/dird/ua_update.c:810
 #, c-format
 msgid "Current RecyclePool is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:810
+#: src/dird/ua_update.c:812
 msgid "No current RecyclePool\n"
 msgstr ""
 
-#: src/dird/ua_update.c:820
+#: src/dird/ua_update.c:822
 #, c-format
 msgid "Current ActionOnPurge is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:822
+#: src/dird/ua_update.c:824
 msgid "Enter new ActionOnPurge (one of: Truncate, None): "
 msgstr ""
 
-#: src/dird/ua_update.c:830
+#: src/dird/ua_update.c:832
 msgid "Selection terminated.\n"
 msgstr ""
 
-#: src/dird/ua_update.c:850
+#: src/dird/ua_update.c:852
 #, c-format
 msgid "Updating %i job(s).\n"
 msgstr ""
 
-#: src/dird/ua_update.c:882
+#: src/dird/ua_update.c:884
 #, c-format
 msgid "db_update_pool_record returned %d. ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:889
+#: src/dird/ua_update.c:891
 msgid "Pool DB record updated from resource.\n"
 msgstr ""
 
-#: src/dird/ua_update.c:916
+#: src/dird/ua_update.c:918
 msgid "Expect JobId keyword, not found.\n"
 msgstr ""
 
-#: src/dird/ua_update.c:941
+#: src/dird/ua_update.c:943
 msgid "Neither Client nor StartTime specified.\n"
 msgstr ""
 
@@ -4036,7 +4099,7 @@ msgstr ""
 msgid "Pool resource \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/migrate.c:316 src/dird/migrate.c:896
+#: src/dird/migrate.c:316 src/dird/migrate.c:898
 #, c-format
 msgid "Could not get job record for JobId %s to %s. ERR=%s"
 msgstr ""
@@ -4051,145 +4114,140 @@ msgstr ""
 msgid "Start %s JobId %s, Job=%s\n"
 msgstr ""
 
-#: src/dird/migrate.c:710
+#: src/dird/migrate.c:712
 #, c-format
 msgid "No %s SQL selection pattern specified.\n"
 msgstr ""
 
-#: src/dird/migrate.c:717 src/dird/migrate.c:736 src/dird/migrate.c:757
-#: src/dird/migrate.c:793 src/dird/migrate.c:820 src/dird/migrate.c:954
-#: src/dird/migrate.c:987 src/dird/migrate.c:1116
+#: src/dird/migrate.c:719 src/dird/migrate.c:738 src/dird/migrate.c:759
+#: src/dird/migrate.c:795 src/dird/migrate.c:822 src/dird/migrate.c:956
+#: src/dird/migrate.c:989 src/dird/migrate.c:1118
 #, c-format
 msgid "SQL failed. ERR=%s\n"
 msgstr ""
 
-#: src/dird/migrate.c:740 src/dird/migrate.c:747 src/dird/migrate.c:761
-#: src/dird/migrate.c:824
+#: src/dird/migrate.c:742 src/dird/migrate.c:749 src/dird/migrate.c:763
+#: src/dird/migrate.c:826
 #, c-format
 msgid "No Volumes found to %s.\n"
 msgstr ""
 
-#: src/dird/migrate.c:775 src/dird/migrate.c:864 src/dird/migrate.c:884
+#: src/dird/migrate.c:777 src/dird/migrate.c:866 src/dird/migrate.c:886
 msgid "Invalid JobId found.\n"
 msgstr ""
 
-#: src/dird/migrate.c:835
+#: src/dird/migrate.c:837
 #, c-format
 msgid "Unknown %s Selection Type.\n"
 msgstr ""
 
-#: src/dird/migrate.c:846 src/dird/migrate.c:867 src/dird/migrate.c:887
+#: src/dird/migrate.c:848 src/dird/migrate.c:869 src/dird/migrate.c:889
 #, c-format
 msgid "No JobIds found to %s.\n"
 msgstr ""
 
-#: src/dird/migrate.c:850
+#: src/dird/migrate.c:852
 #, c-format
 msgid "The following %u JobId%s chosen to be %s: %s\n"
 msgstr ""
 
-#: src/dird/migrate.c:851
+#: src/dird/migrate.c:853
 msgid " was"
 msgstr ""
 
-#: src/dird/migrate.c:851
+#: src/dird/migrate.c:853
 msgid "s were"
 msgstr ""
 
-#: src/dird/migrate.c:903
+#: src/dird/migrate.c:905
 #, c-format
 msgid "%s using JobId=%s Job=%s\n"
 msgstr ""
 
-#: src/dird/migrate.c:937
+#: src/dird/migrate.c:939
 msgid "Could not start migration job.\n"
 msgstr ""
 
-#: src/dird/migrate.c:939
+#: src/dird/migrate.c:941
 #, c-format
 msgid "%s JobId %d started.\n"
 msgstr ""
 
-#: src/dird/migrate.c:958
+#: src/dird/migrate.c:960
 #, c-format
 msgid "No %s found to %s.\n"
 msgstr ""
 
-#: src/dird/migrate.c:962
+#: src/dird/migrate.c:964
 #, c-format
 msgid "SQL error. Expected 1 MediaId got %d\n"
 msgstr ""
 
-#: src/dird/migrate.c:991 src/dird/migrate.c:1121
+#: src/dird/migrate.c:993 src/dird/migrate.c:1123
 #, c-format
 msgid "No %ss found to %s.\n"
 msgstr ""
 
-#: src/dird/migrate.c:1013
+#: src/dird/migrate.c:1015
 msgid "Selection Type 'pooluncopiedjobs' only applies to Copy Jobs"
 msgstr ""
 
-#: src/dird/migrate.c:1022
+#: src/dird/migrate.c:1024
 #, c-format
 msgid "SQL to get uncopied jobs failed. ERR=%s\n"
 msgstr ""
 
-#: src/dird/migrate.c:1045
+#: src/dird/migrate.c:1047
 #, c-format
 msgid "No %s %s selection pattern specified.\n"
 msgstr ""
 
-#: src/dird/migrate.c:1056
+#: src/dird/migrate.c:1058
 #, c-format
 msgid "SQL to get %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/dird/migrate.c:1061
+#: src/dird/migrate.c:1063
 #, c-format
 msgid "Query of Pool \"%s\" returned no Jobs to %s.\n"
 msgstr ""
 
-#: src/dird/migrate.c:1070
-#, c-format
-msgid "Could not compile regex pattern \"%s\" ERR=%s\n"
-msgstr ""
-
-#: src/dird/migrate.c:1099
+#: src/dird/migrate.c:1101
 #, c-format
 msgid "Regex pattern matched no Jobs to %s.\n"
 msgstr ""
 
-#: src/dird/migrate.c:1264
+#: src/dird/migrate.c:1265
 #, c-format
 msgid "%s OK -- with warnings"
 msgstr ""
 
-#: src/dird/migrate.c:1266
+#: src/dird/migrate.c:1267
 #, c-format
 msgid "%s OK"
 msgstr ""
 
-#: src/dird/migrate.c:1271
+#: src/dird/migrate.c:1272
 #, c-format
 msgid "*** %s Error ***"
 msgstr ""
 
-#: src/dird/migrate.c:1281
+#: src/dird/migrate.c:1282
 #, c-format
 msgid "%s Canceled"
 msgstr ""
 
-#: src/dird/migrate.c:1290
+#: src/dird/migrate.c:1291
 #, c-format
 msgid "Inappropriate %s term code"
 msgstr ""
 
-#: src/dird/migrate.c:1300
+#: src/dird/migrate.c:1301
 #, c-format
 msgid "%s -- no files to %s"
 msgstr ""
 
-#: src/dird/migrate.c:1315
+#: src/dird/migrate.c:1316
 #, c-format
 msgid ""
 "%s %s %s (%s):\n"
@@ -4224,17 +4282,17 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/migrate.c:1426
+#: src/dird/migrate.c:1427
 #, c-format
 msgid "No Next Pool specification found in Pool \"%s\".\n"
 msgstr ""
 
-#: src/dird/migrate.c:1432
+#: src/dird/migrate.c:1433
 #, c-format
 msgid "No Storage specification found in Next Pool \"%s\".\n"
 msgstr ""
 
-#: src/dird/migrate.c:1438
+#: src/dird/migrate.c:1439
 msgid "Storage from Pool's NextPool resource"
 msgstr ""
 
@@ -4242,47 +4300,47 @@ msgstr ""
 msgid "Choose item to prune"
 msgstr ""
 
-#: src/dird/ua_prune.c:171
+#: src/dird/ua_prune.c:175
 #, c-format
 msgid "Cannot prune Volume \"%s\" because it is archived.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:213
+#: src/dird/ua_prune.c:217
 msgid "Pruned Jobs from JobHisto catalog.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:301
+#: src/dird/ua_prune.c:305
 msgid "Begin pruning Files.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:316
+#: src/dird/ua_prune.c:320
 msgid "No Files found to prune.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:339
+#: src/dird/ua_prune.c:343
 #, c-format
 msgid "Pruned Files from %s Jobs for client %s from catalog.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:481
+#: src/dird/ua_prune.c:489
 #, c-format
 msgid "Begin pruning Jobs older than %s.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:592
+#: src/dird/ua_prune.c:600
 #, c-format
 msgid "Pruned %d %s for client %s from catalog.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:593
+#: src/dird/ua_prune.c:601
 msgid "Jobs"
 msgstr ""
 
-#: src/dird/ua_prune.c:595
+#: src/dird/ua_prune.c:603
 msgid "No Jobs found to prune.\n"
 msgstr ""
 
-#: src/dird/autoprune.c:76
+#: src/dird/autoprune.c:75
 msgid ""
 "End auto prune.\n"
 "\n"
@@ -4301,50 +4359,58 @@ msgstr ""
 msgid "Job queued. JobId=%s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:202
+#: src/dird/ua_run.c:203
+#, c-format
+msgid ""
+"\n"
+"Bad response: %s. You must answer yes, mod, or no.\n"
+"\n"
+msgstr ""
+
+#: src/dird/ua_run.c:207
 msgid "Job not run.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:236
+#: src/dird/ua_run.c:223
 msgid "Level"
 msgstr ""
 
-#: src/dird/ua_run.c:241
+#: src/dird/ua_run.c:228
 msgid "Restore Client"
 msgstr ""
 
-#: src/dird/ua_run.c:245 src/wx-console/wxbrestorepanel.cpp:356
+#: src/dird/ua_run.c:232 src/wx-console/wxbrestorepanel.cpp:356
 #: src/wx-console/wxbrestorepanel.cpp:854
 #: src/wx-console/wxbrestorepanel.cpp:1918
 msgid "When"
 msgstr ""
 
-#: src/dird/ua_run.c:246 src/wx-console/wxbrestorepanel.cpp:357
+#: src/dird/ua_run.c:233 src/wx-console/wxbrestorepanel.cpp:357
 #: src/wx-console/wxbrestorepanel.cpp:1128
 #: src/wx-console/wxbrestorepanel.cpp:1921
 msgid "Priority"
 msgstr ""
 
-#: src/dird/ua_run.c:253
+#: src/dird/ua_run.c:240
 msgid "Verify Job"
 msgstr ""
 
-#: src/dird/ua_run.c:256 src/wx-console/wxbrestorepanel.cpp:349
+#: src/dird/ua_run.c:243 src/wx-console/wxbrestorepanel.cpp:349
 #: src/wx-console/wxbrestorepanel.cpp:1899
 msgid "Bootstrap"
 msgstr ""
 
-#: src/dird/ua_run.c:257 src/wx-console/wxbrestorepanel.cpp:350
+#: src/dird/ua_run.c:244 src/wx-console/wxbrestorepanel.cpp:350
 #: src/wx-console/wxbrestorepanel.cpp:1104
 #: src/wx-console/wxbrestorepanel.cpp:1901
 msgid "Where"
 msgstr ""
 
-#: src/dird/ua_run.c:258
+#: src/dird/ua_run.c:245
 msgid "File Relocation"
 msgstr ""
 
-#: src/dird/ua_run.c:259 src/wx-console/wxbrestorepanel.cpp:352
+#: src/dird/ua_run.c:246 src/wx-console/wxbrestorepanel.cpp:352
 #: src/wx-console/wxbrestorepanel.cpp:1112
 #: src/wx-console/wxbrestorepanel.cpp:1905
 #: src/wx-console/wxbrestorepanel.cpp:1906
@@ -4354,212 +4420,212 @@ msgstr ""
 msgid "Replace"
 msgstr ""
 
-#: src/dird/ua_run.c:260
+#: src/dird/ua_run.c:247
 msgid "JobId"
 msgstr ""
 
-#: src/dird/ua_run.c:263
+#: src/dird/ua_run.c:250
 msgid "Plugin Options"
 msgstr ""
 
-#: src/dird/ua_run.c:274 src/dird/ua_run.c:1563
+#: src/dird/ua_run.c:261 src/dird/ua_run.c:1569
 msgid "user selection"
 msgstr ""
 
-#: src/dird/ua_run.c:306
+#: src/dird/ua_run.c:293
 msgid ""
 "Please enter desired start time as YYYY-MM-DD HH:MM:SS (return for now): "
 msgstr ""
 
-#: src/dird/ua_run.c:314 src/dird/ua_run.c:490
+#: src/dird/ua_run.c:301 src/dird/ua_run.c:477
 msgid "Invalid time, using current time.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:321
+#: src/dird/ua_run.c:308
 msgid "Enter new Priority: "
 msgstr ""
 
-#: src/dird/ua_run.c:325
+#: src/dird/ua_run.c:312
 msgid "Priority must be a positive integer.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:346
+#: src/dird/ua_run.c:333
 msgid "Please enter the Bootstrap file name: "
 msgstr ""
 
-#: src/dird/ua_run.c:358
+#: src/dird/ua_run.c:345
 #, c-format
 msgid "Warning cannot open %s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:377
-msgid "Please enter path prefix for restore (/ for none): "
+#: src/dird/ua_run.c:364
+msgid "Please enter the full path prefix for restore (/ for none): "
 msgstr ""
 
-#: src/dird/ua_run.c:399
+#: src/dird/ua_run.c:386
 msgid "Replace:\n"
 msgstr ""
 
-#: src/dird/ua_run.c:403
+#: src/dird/ua_run.c:390
 msgid "Select replace option"
 msgstr ""
 
-#: src/dird/ua_run.c:414
+#: src/dird/ua_run.c:401
 msgid ""
 "You must set the bootstrap file to NULL to be able to specify a JobId.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:419
+#: src/dird/ua_run.c:406
 msgid "Please Plugin Options string: "
 msgstr ""
 
-#: src/dird/ua_run.c:457 src/dird/ua_run.c:466
+#: src/dird/ua_run.c:444 src/dird/ua_run.c:453
 msgid "User input"
 msgstr ""
 
-#: src/dird/ua_run.c:520
+#: src/dird/ua_run.c:507
 #, c-format
 msgid "Invalid replace option: %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:583
+#: src/dird/ua_run.c:589
 #, c-format
 msgid "strip_prefix=%s add_prefix=%s add_suffix=%s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:586
+#: src/dird/ua_run.c:592
 msgid "This will replace your current Where value\n"
 msgstr ""
 
-#: src/dird/ua_run.c:587
+#: src/dird/ua_run.c:593
 msgid "Strip prefix"
 msgstr ""
 
-#: src/dird/ua_run.c:588
+#: src/dird/ua_run.c:594
 msgid "Add prefix"
 msgstr ""
 
-#: src/dird/ua_run.c:589
+#: src/dird/ua_run.c:595
 msgid "Add file suffix"
 msgstr ""
 
-#: src/dird/ua_run.c:590
+#: src/dird/ua_run.c:596
 msgid "Enter a regexp"
 msgstr ""
 
-#: src/dird/ua_run.c:591
+#: src/dird/ua_run.c:597
 msgid "Test filename manipulation"
 msgstr ""
 
-#: src/dird/ua_run.c:592
+#: src/dird/ua_run.c:598
 msgid "Use this ?"
 msgstr ""
 
-#: src/dird/ua_run.c:597
-msgid "Please enter path prefix to strip: "
+#: src/dird/ua_run.c:603
+msgid "Please enter the path prefix to strip: "
 msgstr ""
 
-#: src/dird/ua_run.c:605
-msgid "Please enter path prefix to add (/ for none): "
+#: src/dird/ua_run.c:611
+msgid "Please enter the path prefix to add (/ for none): "
 msgstr ""
 
-#: src/dird/ua_run.c:616
-msgid "Please enter file suffix to add: "
+#: src/dird/ua_run.c:622
+msgid "Please enter the file suffix to add: "
 msgstr ""
 
-#: src/dird/ua_run.c:623
+#: src/dird/ua_run.c:629
 msgid "Please enter a valid regexp (!from!to!): "
 msgstr ""
 
-#: src/dird/ua_run.c:636
+#: src/dird/ua_run.c:642
 #, c-format
 msgid "regexwhere=%s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:642
+#: src/dird/ua_run.c:648
 #, c-format
 msgid "strip_prefix=%s add_prefix=%s add_suffix=%s result=%s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:649
+#: src/dird/ua_run.c:655
 msgid "Cannot use your regexp\n"
 msgstr ""
 
-#: src/dird/ua_run.c:652
+#: src/dird/ua_run.c:658
 msgid "Enter a period (.) to stop this test\n"
 msgstr ""
 
-#: src/dird/ua_run.c:653
+#: src/dird/ua_run.c:659
 msgid "Please enter filename to test: "
 msgstr ""
 
-#: src/dird/ua_run.c:655
+#: src/dird/ua_run.c:661
 #, c-format
 msgid "%s -> %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:699
+#: src/dird/ua_run.c:705
 msgid "Cannot use your regexp.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:712 src/dird/ua_run.c:742
+#: src/dird/ua_run.c:718 src/dird/ua_run.c:748
 msgid "Levels:\n"
 msgstr ""
 
-#: src/dird/ua_run.c:714 src/stored/status.c:600 src/lib/util.c:426
+#: src/dird/ua_run.c:720 src/stored/status.c:665 src/lib/util.c:426
 #: src/lib/util.c:472 src/filed/status.c:519
 msgid "Full"
 msgstr ""
 
-#: src/dird/ua_run.c:715 src/stored/status.c:603 src/lib/util.c:429
+#: src/dird/ua_run.c:721 src/stored/status.c:668 src/lib/util.c:429
 #: src/filed/status.c:522
 msgid "Incremental"
 msgstr ""
 
-#: src/dird/ua_run.c:716 src/stored/status.c:606 src/lib/util.c:432
+#: src/dird/ua_run.c:722 src/stored/status.c:671 src/lib/util.c:432
 #: src/filed/status.c:525
 msgid "Differential"
 msgstr ""
 
-#: src/dird/ua_run.c:717 src/stored/status.c:609 src/lib/util.c:435
+#: src/dird/ua_run.c:723 src/stored/status.c:674 src/lib/util.c:435
 #: src/filed/status.c:528
 msgid "Since"
 msgstr ""
 
-#: src/dird/ua_run.c:718
+#: src/dird/ua_run.c:724
 msgid "VirtualFull"
 msgstr ""
 
-#: src/dird/ua_run.c:719 src/dird/ua_run.c:748
+#: src/dird/ua_run.c:725 src/dird/ua_run.c:754
 msgid "Select level"
 msgstr ""
 
-#: src/dird/ua_run.c:743
+#: src/dird/ua_run.c:749
 msgid "Initialize Catalog"
 msgstr ""
 
-#: src/dird/ua_run.c:744 src/stored/status.c:612 src/lib/util.c:438
+#: src/dird/ua_run.c:750 src/stored/status.c:677 src/lib/util.c:438
 #: src/filed/status.c:531
 msgid "Verify Catalog"
 msgstr ""
 
-#: src/dird/ua_run.c:745 src/lib/util.c:444
+#: src/dird/ua_run.c:751 src/lib/util.c:444
 msgid "Verify Volume to Catalog"
 msgstr ""
 
-#: src/dird/ua_run.c:746 src/lib/util.c:447
+#: src/dird/ua_run.c:752 src/lib/util.c:447
 msgid "Verify Disk to Catalog"
 msgstr ""
 
-#: src/dird/ua_run.c:747
+#: src/dird/ua_run.c:753
 msgid "Verify Volume Data (not yet implemented)"
 msgstr ""
 
-#: src/dird/ua_run.c:768
+#: src/dird/ua_run.c:774
 msgid "Level not appropriate for this Job. Cannot be changed.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:799
+#: src/dird/ua_run.c:805
 #, c-format
 msgid ""
 "Run Admin Job\n"
@@ -4571,7 +4637,7 @@ msgid ""
 "Priority: %d\n"
 msgstr ""
 
-#: src/dird/ua_run.c:843
+#: src/dird/ua_run.c:849
 #, c-format
 msgid ""
 "Run Backup job\n"
@@ -4586,12 +4652,12 @@ msgid ""
 "%s%s%s"
 msgstr ""
 
-#: src/dird/ua_run.c:874
+#: src/dird/ua_run.c:880
 #, c-format
 msgid "Could not get job record for selected JobId. ERR=%s"
 msgstr ""
 
-#: src/dird/ua_run.c:913
+#: src/dird/ua_run.c:919
 #, c-format
 msgid ""
 "Run Verify Job\n"
@@ -4607,11 +4673,11 @@ msgid ""
 "Priority:    %d\n"
 msgstr ""
 
-#: src/dird/ua_run.c:942
+#: src/dird/ua_run.c:948
 msgid "Please enter a JobId for restore: "
 msgstr ""
 
-#: src/dird/ua_run.c:982
+#: src/dird/ua_run.c:988
 #, c-format
 msgid ""
 "Run Restore job\n"
@@ -4629,7 +4695,7 @@ msgid ""
 "Plugin Options:  %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1038
+#: src/dird/ua_run.c:1044
 #, c-format
 msgid ""
 "Run Restore job\n"
@@ -4647,7 +4713,7 @@ msgid ""
 "Plugin Options:  %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1069
+#: src/dird/ua_run.c:1075
 #, c-format
 msgid ""
 "Run Restore job\n"
@@ -4655,17 +4721,17 @@ msgid ""
 "Bootstrap:  %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1077
+#: src/dird/ua_run.c:1083
 #, c-format
 msgid "RegexWhere: %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1080
+#: src/dird/ua_run.c:1086
 #, c-format
 msgid "Where:      %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1084
+#: src/dird/ua_run.c:1090
 #, c-format
 msgid ""
 "Replace:         %s\n"
@@ -4678,245 +4744,245 @@ msgid ""
 "Plugin Options:  %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1139
+#: src/dird/ua_run.c:1145
 msgid "Run Copy job\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1141
+#: src/dird/ua_run.c:1147
 msgid "Run Migration job\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1170
+#: src/dird/ua_run.c:1176
 #, c-format
 msgid "Unknown Job Type=%d\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1239
+#: src/dird/ua_run.c:1245
 #, c-format
 msgid "Value missing for keyword %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1246
+#: src/dird/ua_run.c:1252
 msgid "Job name specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1254
+#: src/dird/ua_run.c:1260
 msgid "JobId specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1263 src/dird/ua_run.c:1403
+#: src/dird/ua_run.c:1269 src/dird/ua_run.c:1409
 msgid "Client specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1271
+#: src/dird/ua_run.c:1277
 msgid "FileSet specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1279
+#: src/dird/ua_run.c:1285
 msgid "Level specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1288
+#: src/dird/ua_run.c:1294
 msgid "Storage specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1296
+#: src/dird/ua_run.c:1302
 msgid "RegexWhere or Where specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1301
+#: src/dird/ua_run.c:1307
 msgid "No authorization for \"regexwhere\" specification.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1308
+#: src/dird/ua_run.c:1314
 msgid "Where or RegexWhere specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1313
+#: src/dird/ua_run.c:1319
 msgid "No authoriztion for \"where\" specification.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1320
+#: src/dird/ua_run.c:1326
 msgid "Bootstrap specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1328
+#: src/dird/ua_run.c:1334
 msgid "Replace specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1336
+#: src/dird/ua_run.c:1342
 msgid "When specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1344
+#: src/dird/ua_run.c:1350
 msgid "Priority specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1349
+#: src/dird/ua_run.c:1355
 msgid "Priority must be positive nonzero setting it to 10.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1359
+#: src/dird/ua_run.c:1365
 msgid "Verify Job specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1387
+#: src/dird/ua_run.c:1393
 msgid "Migration Job specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1395
+#: src/dird/ua_run.c:1401
 msgid "Pool specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1411
+#: src/dird/ua_run.c:1417
 msgid "Restore Client specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1418
+#: src/dird/ua_run.c:1424
 msgid "Plugin Options not yet implemented.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1421
+#: src/dird/ua_run.c:1427
 msgid "Plugin Options specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1426
+#: src/dird/ua_run.c:1432
 msgid "No authoriztion for \"PluginOptions\" specification.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1433
+#: src/dird/ua_run.c:1439
 msgid "Spool flag specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1440
+#: src/dird/ua_run.c:1446
 msgid "Invalid spooldata flag.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1449
+#: src/dird/ua_run.c:1455
 msgid "IgnoreDuplicateCheck flag specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1456
+#: src/dird/ua_run.c:1462
 msgid "Invalid ignoreduplicatecheck flag.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1461
+#: src/dird/ua_run.c:1467
 msgid "Accurate flag specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1468
+#: src/dird/ua_run.c:1474
 msgid "Invalid accurate flag.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1489
+#: src/dird/ua_run.c:1495
 #, c-format
 msgid "Invalid keyword: %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1504
+#: src/dird/ua_run.c:1510
 #, c-format
 msgid "Catalog \"%s\" not found\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1508
+#: src/dird/ua_run.c:1514
 #, c-format
 msgid "No authorization. Catalog \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1519
+#: src/dird/ua_run.c:1525
 #, c-format
 msgid "Job \"%s\" not found\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1526
+#: src/dird/ua_run.c:1532
 msgid "A job name must be specified.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1532
+#: src/dird/ua_run.c:1538
 #, c-format
 msgid "No authorization. Job \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1540
+#: src/dird/ua_run.c:1546
 #, c-format
 msgid "Pool \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1550
+#: src/dird/ua_run.c:1556
 #, c-format
 msgid "No authorization. Pool \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1560
+#: src/dird/ua_run.c:1566
 #, c-format
 msgid "Storage \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1569 src/dird/job.c:1242
+#: src/dird/ua_run.c:1575 src/dird/job.c:1245
 msgid "No storage specified.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1572
+#: src/dird/ua_run.c:1578
 #, c-format
 msgid "No authorization. Storage \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1592 src/dird/ua_run.c:1612
+#: src/dird/ua_run.c:1598 src/dird/ua_run.c:1618
 #, c-format
 msgid "No authorization. Client \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1602
+#: src/dird/ua_run.c:1608
 #, c-format
 msgid "Restore Client \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1621
+#: src/dird/ua_run.c:1627
 #, c-format
 msgid "FileSet \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1630
+#: src/dird/ua_run.c:1636
 #, c-format
 msgid "No authorization. FileSet \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1638
+#: src/dird/ua_run.c:1644
 #, c-format
 msgid "Verify Job \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1648
+#: src/dird/ua_run.c:1654
 #, c-format
 msgid "Migration Job \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:180 src/stored/sd_plugins.c:183
-#: src/filed/fd_plugins.c:973
+#: src/dird/dir_plugins.c:181 src/stored/sd_plugins.c:194
+#: src/filed/fd_plugins.c:1130
 #, c-format
 msgid "Loaded plugin: %s\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:200 src/stored/sd_plugins.c:203
-#: src/filed/fd_plugins.c:992
+#: src/dird/dir_plugins.c:201 src/stored/sd_plugins.c:214
+#: src/filed/fd_plugins.c:1151
 #, c-format
 msgid "Plugin magic wrong. Plugin=%s wanted=%s got=%s\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:208 src/stored/sd_plugins.c:211
-#: src/filed/fd_plugins.c:1000
+#: src/dird/dir_plugins.c:209 src/stored/sd_plugins.c:222
+#: src/filed/fd_plugins.c:1159
 #, c-format
 msgid "Plugin version incorrect. Plugin=%s wanted=%d got=%d\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:217 src/stored/sd_plugins.c:220
-#: src/filed/fd_plugins.c:1008
+#: src/dird/dir_plugins.c:218 src/stored/sd_plugins.c:231
+#: src/filed/fd_plugins.c:1167
 #, c-format
 msgid "Plugin license incompatible. Plugin=%s license=%s\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:225 src/stored/sd_plugins.c:228
-#: src/filed/fd_plugins.c:1016
+#: src/dird/dir_plugins.c:226 src/stored/sd_plugins.c:239
+#: src/filed/fd_plugins.c:1175
 #, c-format
 msgid "Plugin size incorrect. Plugin=%s wanted=%d got=%d\n"
 msgstr ""
@@ -4943,25 +5009,25 @@ msgstr ""
 msgid "Start Backup JobId %s, Job=%s\n"
 msgstr ""
 
-#: src/dird/backup.c:517
+#: src/dird/backup.c:521
 #, c-format
 msgid "Unexpected Client Job message: %s\n"
 msgstr ""
 
-#: src/dird/backup.c:530
+#: src/dird/backup.c:534
 #, c-format
 msgid "Network error with FD during %s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/backup.c:565
+#: src/dird/backup.c:569
 msgid "No Job status returned from FD.\n"
 msgstr ""
 
-#: src/dird/backup.c:647
+#: src/dird/backup.c:657
 msgid "Backup failed -- incomplete"
 msgstr ""
 
-#: src/dird/backup.c:720
+#: src/dird/backup.c:730
 #, c-format
 msgid ""
 "%s %s %s (%s):\n"
@@ -5000,19 +5066,19 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/backup.c:822
+#: src/dird/backup.c:832
 #, c-format
 msgid "Could not get Job Volume Parameters to update Bootstrap file. ERR=%s\n"
 msgstr ""
 
-#: src/dird/backup.c:858
+#: src/dird/backup.c:868
 #, c-format
 msgid ""
 "Could not open WriteBootstrap file:\n"
 "%s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/restore.c:137 src/dird/msgchan.c:463 src/filed/job.c:2409
+#: src/dird/restore.c:137 src/dird/msgchan.c:476
 #, c-format
 msgid "Could not open bootstrap file %s: ERR=%s\n"
 msgstr ""
@@ -5027,39 +5093,39 @@ msgstr ""
 msgid "Could not acquire read storage lock for \"%s\""
 msgstr ""
 
-#: src/dird/restore.c:502
+#: src/dird/restore.c:505
 msgid ""
 "Cannot restore without a bootstrap file.\n"
 "You probably ran a restore job directly. All restore jobs must\n"
 "be run using the restore command.\n"
 msgstr ""
 
-#: src/dird/restore.c:510
+#: src/dird/restore.c:513
 #, c-format
 msgid "Start Restore Job %s\n"
 msgstr ""
 
-#: src/dird/restore.c:561
+#: src/dird/restore.c:564
 msgid "Restore OK -- warning file count mismatch"
 msgstr ""
 
-#: src/dird/restore.c:563
+#: src/dird/restore.c:566
 msgid "Restore OK"
 msgstr ""
 
-#: src/dird/restore.c:567
+#: src/dird/restore.c:570
 msgid "Restore OK -- with warnings"
 msgstr ""
 
-#: src/dird/restore.c:571
+#: src/dird/restore.c:574
 msgid "*** Restore Error ***"
 msgstr ""
 
-#: src/dird/restore.c:581
+#: src/dird/restore.c:584
 msgid "Restore Canceled"
 msgstr ""
 
-#: src/dird/restore.c:608
+#: src/dird/restore.c:611
 #, c-format
 msgid ""
 "%s %s %s (%s):\n"
@@ -5088,7 +5154,7 @@ msgstr ""
 msgid "Select daemon type for status"
 msgstr ""
 
-#: src/dird/ua_status.c:294 src/stored/status.c:218
+#: src/dird/ua_status.c:294 src/stored/status.c:248
 #, c-format
 msgid "%s Version: %s (%s) %s %s %s\n"
 msgstr ""
@@ -5098,7 +5164,7 @@ msgstr ""
 msgid "Daemon started %s. Jobs: run=%d, running=%d mode=%d,%d\n"
 msgstr ""
 
-#: src/dird/ua_status.c:300 src/stored/status.c:228 src/filed/status.c:142
+#: src/dird/ua_status.c:300 src/stored/status.c:258 src/filed/status.c:142
 #, c-format
 msgid " Heap: heap=%s smbytes=%s max_bytes=%s bufs=%s max_bufs=%s\n"
 msgstr ""
@@ -5137,242 +5203,242 @@ msgstr ""
 msgid "===================================================================================\n"
 msgstr ""
 
-#: src/dird/ua_status.c:487
+#: src/dird/ua_status.c:486
 #, c-format
 msgid "%-14s\t%-8s\t%3d\t%-18s\t%-18s\t%s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:491
+#: src/dird/ua_status.c:490
 #, c-format
 msgid "%-14s %-8s %3d  %-18s %-18s %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:545
+#: src/dird/ua_status.c:544
 msgid "Ignoring invalid value for days. Max is 500.\n"
 msgstr ""
 
-#: src/dird/ua_status.c:588
+#: src/dird/ua_status.c:587
 msgid "No Scheduled Jobs.\n"
 msgstr ""
 
-#: src/dird/ua_status.c:605 src/stored/status.c:396 src/filed/status.c:183
+#: src/dird/ua_status.c:604 src/stored/status.c:450 src/filed/status.c:183
 msgid ""
 "\n"
 "Running Jobs:\n"
 msgstr ""
 
-#: src/dird/ua_status.c:613
+#: src/dird/ua_status.c:612
 #, c-format
 msgid "Console connected at %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:623
+#: src/dird/ua_status.c:622
 msgid ""
 "No Jobs running.\n"
 "====\n"
 msgstr ""
 
-#: src/dird/ua_status.c:629
+#: src/dird/ua_status.c:628
 msgid " JobId Level   Name                       Status\n"
 msgstr ""
 
-#: src/dird/ua_status.c:630 src/filed/status.c:342
+#: src/dird/ua_status.c:629 src/filed/status.c:342
 msgid "======================================================================\n"
 msgstr ""
 
-#: src/dird/ua_status.c:639
+#: src/dird/ua_status.c:638
 msgid "is waiting execution"
 msgstr ""
 
-#: src/dird/ua_status.c:642
+#: src/dird/ua_status.c:641
 msgid "is running"
 msgstr ""
 
-#: src/dird/ua_status.c:645
+#: src/dird/ua_status.c:644
 msgid "is blocked"
 msgstr ""
 
-#: src/dird/ua_status.c:648
+#: src/dird/ua_status.c:647
 msgid "has terminated"
 msgstr ""
 
-#: src/dird/ua_status.c:651
+#: src/dird/ua_status.c:650
 msgid "has terminated with warnings"
 msgstr ""
 
-#: src/dird/ua_status.c:654
+#: src/dird/ua_status.c:653
 msgid "has erred"
 msgstr ""
 
-#: src/dird/ua_status.c:657
+#: src/dird/ua_status.c:656
 msgid "has errors"
 msgstr ""
 
-#: src/dird/ua_status.c:660
+#: src/dird/ua_status.c:659
 msgid "has a fatal error"
 msgstr ""
 
-#: src/dird/ua_status.c:663
+#: src/dird/ua_status.c:662
 msgid "has verify differences"
 msgstr ""
 
-#: src/dird/ua_status.c:666
+#: src/dird/ua_status.c:665
 msgid "has been canceled"
 msgstr ""
 
-#: src/dird/ua_status.c:671
+#: src/dird/ua_status.c:670
 msgid "is waiting on Client"
 msgstr ""
 
-#: src/dird/ua_status.c:673
+#: src/dird/ua_status.c:672
 #, c-format
 msgid "is waiting on Client %s"
 msgstr ""
 
-#: src/dird/ua_status.c:681 src/dird/ua_status.c:683
+#: src/dird/ua_status.c:680 src/dird/ua_status.c:682
 #, c-format
 msgid "is waiting on Storage \"%s\""
 msgstr ""
 
-#: src/dird/ua_status.c:685
+#: src/dird/ua_status.c:684
 msgid "is waiting on Storage"
 msgstr ""
 
-#: src/dird/ua_status.c:691
+#: src/dird/ua_status.c:690
 msgid "is waiting on max Storage jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:694
+#: src/dird/ua_status.c:693
 msgid "is waiting on max Client jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:697
+#: src/dird/ua_status.c:696
 msgid "is waiting on max Job jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:700
+#: src/dird/ua_status.c:699
 msgid "is waiting on max total jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:703
+#: src/dird/ua_status.c:702
 msgid "is waiting for its start time"
 msgstr ""
 
-#: src/dird/ua_status.c:706
+#: src/dird/ua_status.c:705
 msgid "is waiting for higher priority jobs to finish"
 msgstr ""
 
-#: src/dird/ua_status.c:709 src/dird/ua_status.c:760 src/lib/util.c:241
+#: src/dird/ua_status.c:708 src/dird/ua_status.c:759 src/lib/util.c:241
 msgid "SD committing Data"
 msgstr ""
 
-#: src/dird/ua_status.c:712 src/dird/ua_status.c:763 src/lib/util.c:244
+#: src/dird/ua_status.c:711 src/dird/ua_status.c:762 src/lib/util.c:244
 msgid "SD despooling Data"
 msgstr ""
 
-#: src/dird/ua_status.c:715 src/dird/ua_status.c:766 src/lib/util.c:247
+#: src/dird/ua_status.c:714 src/dird/ua_status.c:765 src/lib/util.c:247
 msgid "SD despooling Attributes"
 msgstr ""
 
-#: src/dird/ua_status.c:718 src/dird/ua_status.c:769 src/lib/util.c:250
+#: src/dird/ua_status.c:717 src/dird/ua_status.c:768 src/lib/util.c:250
 msgid "Dir inserting Attributes"
 msgstr ""
 
-#: src/dird/ua_status.c:723
+#: src/dird/ua_status.c:722
 #, c-format
 msgid "is in unknown state %c"
 msgstr ""
 
-#: src/dird/ua_status.c:737
+#: src/dird/ua_status.c:736
 msgid "is waiting for a mount request"
 msgstr ""
 
-#: src/dird/ua_status.c:744
+#: src/dird/ua_status.c:743
 msgid "is waiting for an appendable Volume"
 msgstr ""
 
-#: src/dird/ua_status.c:752
+#: src/dird/ua_status.c:751
 msgid "is waiting for Client to connect to Storage daemon"
 msgstr ""
 
-#: src/dird/ua_status.c:754
+#: src/dird/ua_status.c:753
 #, c-format
 msgid "is waiting for Client %s to connect to Storage %s"
 msgstr ""
 
-#: src/dird/ua_status.c:785
+#: src/dird/ua_status.c:784
 #, c-format
 msgid "%6d\t%-6s\t%-20s\t%s\t%s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:789
+#: src/dird/ua_status.c:788
 #, c-format
 msgid "%6d %-6s  %-20s %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:793
+#: src/dird/ua_status.c:792
 #, c-format
 msgid "               %-30s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:813
+#: src/dird/ua_status.c:812
 msgid "No Terminated Jobs.\n"
 msgstr ""
 
-#: src/dird/ua_status.c:819 src/stored/status.c:507 src/filed/status.c:330
+#: src/dird/ua_status.c:818 src/stored/status.c:572 src/filed/status.c:330
 msgid ""
 "\n"
 "Terminated Jobs:\n"
 msgstr ""
 
-#: src/dird/ua_status.c:820 src/stored/status.c:514 src/filed/status.c:340
+#: src/dird/ua_status.c:819 src/stored/status.c:579 src/filed/status.c:340
 msgid " JobId  Level    Files      Bytes   Status   Finished        Name \n"
 msgstr ""
 
-#: src/dird/ua_status.c:821
+#: src/dird/ua_status.c:820
 msgid "====================================================================\n"
 msgstr ""
 
-#: src/dird/ua_status.c:853 src/stored/status.c:536 src/lib/util.c:180
+#: src/dird/ua_status.c:852 src/stored/status.c:601 src/lib/util.c:180
 #: src/filed/status.c:363
 msgid "Created"
 msgstr ""
 
-#: src/dird/ua_status.c:857 src/stored/status.c:540 src/lib/util.c:196
+#: src/dird/ua_status.c:856 src/stored/status.c:605 src/lib/util.c:196
 #: src/lib/util.c:331 src/lib/util.c:478 src/filed/status.c:367
 msgid "Error"
 msgstr ""
 
-#: src/dird/ua_status.c:860 src/stored/status.c:543 src/filed/status.c:370
+#: src/dird/ua_status.c:859 src/stored/status.c:608 src/filed/status.c:370
 msgid "Diffs"
 msgstr ""
 
-#: src/dird/ua_status.c:866 src/stored/status.c:549 src/stored/btape.c:1521
+#: src/dird/ua_status.c:865 src/stored/status.c:614 src/stored/btape.c:1523
 #: src/lib/util.c:189 src/lib/util.c:324 src/filed/status.c:376
 #: src/wx-console/wxbconfigpanel.cpp:209
 msgid "OK"
 msgstr ""
 
-#: src/dird/ua_status.c:869 src/stored/status.c:552 src/lib/util.c:202
+#: src/dird/ua_status.c:868 src/stored/status.c:617 src/lib/util.c:202
 #: src/lib/util.c:327
 msgid "OK -- with warnings"
 msgstr ""
 
-#: src/dird/ua_status.c:872 src/stored/status.c:555 src/filed/status.c:379
+#: src/dird/ua_status.c:871 src/stored/status.c:620 src/filed/status.c:379
 msgid "Other"
 msgstr ""
 
-#: src/dird/ua_status.c:876 src/stored/status.c:567 src/filed/status.c:391
+#: src/dird/ua_status.c:875 src/stored/status.c:632 src/filed/status.c:391
 #, c-format
 msgid "%6d\t%-6s\t%8s\t%10s\t%-7s\t%-8s\t%s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:884 src/stored/status.c:575 src/filed/status.c:399
+#: src/dird/ua_status.c:883 src/stored/status.c:640 src/filed/status.c:399
 #, c-format
 msgid "%6d  %-6s %8s %10s  %-7s  %-8s %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:893
+#: src/dird/ua_status.c:892
 msgid "\n"
 msgstr ""
 
@@ -5449,8 +5515,8 @@ msgid "Could not add job queue: ERR=%s\n"
 msgstr ""
 
 #: src/dird/job.c:183 src/dird/job.c:433 src/dird/job.c:435 src/dird/job.c:485
-#: src/dird/job.c:487 src/dird/job.c:1126 src/dird/job.c:1167
-#: src/dird/job.c:1176
+#: src/dird/job.c:487 src/dird/job.c:1129 src/dird/job.c:1170
+#: src/dird/job.c:1179
 msgid "Job resource"
 msgstr ""
 
@@ -5498,77 +5564,77 @@ msgstr ""
 msgid "Created database record for Pool \"%s\".\n"
 msgstr ""
 
-#: src/dird/job.c:765 src/dird/job.c:806
+#: src/dird/job.c:766 src/dird/job.c:809
 #, c-format
 msgid "JobId %d already running. Duplicate job not allowed.\n"
 msgstr ""
 
-#: src/dird/job.c:796
+#: src/dird/job.c:797
 #, c-format
 msgid "Cancelling duplicate JobId=%d.\n"
 msgstr ""
 
-#: src/dird/job.c:825 src/dird/job.c:1113
+#: src/dird/job.c:828 src/dird/job.c:1116
 msgid "Run pool override"
 msgstr ""
 
-#: src/dird/job.c:836
+#: src/dird/job.c:839
 msgid "Run FullPool override"
 msgstr ""
 
-#: src/dird/job.c:838
+#: src/dird/job.c:841
 msgid "Job FullPool override"
 msgstr ""
 
-#: src/dird/job.c:847
+#: src/dird/job.c:850
 msgid "Run IncPool override"
 msgstr ""
 
-#: src/dird/job.c:849
+#: src/dird/job.c:852
 msgid "Job IncPool override"
 msgstr ""
 
-#: src/dird/job.c:858
+#: src/dird/job.c:861
 msgid "Run DiffPool override"
 msgstr ""
 
-#: src/dird/job.c:860
+#: src/dird/job.c:863
 msgid "Job DiffPool override"
 msgstr ""
 
-#: src/dird/job.c:890 src/stored/bscan.c:1052
+#: src/dird/job.c:893 src/stored/bscan.c:1056
 #, c-format
 msgid "Could not create Client record. ERR=%s\n"
 msgstr ""
 
-#: src/dird/job.c:926
+#: src/dird/job.c:929
 msgid "FileSet MD5 digest not found.\n"
 msgstr ""
 
-#: src/dird/job.c:931
+#: src/dird/job.c:934
 #, c-format
 msgid "Could not create FileSet \"%s\" record. ERR=%s\n"
 msgstr ""
 
-#: src/dird/job.c:973
+#: src/dird/job.c:976
 #, c-format
 msgid "Error updating job record. %s"
 msgstr ""
 
-#: src/dird/job.c:1118
+#: src/dird/job.c:1121
 msgid "Run storage override"
 msgstr ""
 
-#: src/dird/job.c:1186
+#: src/dird/job.c:1189
 msgid "Client resource"
 msgstr ""
 
-#: src/dird/job.c:1403
+#: src/dird/job.c:1406
 #, c-format
 msgid "Could not start clone job: \"%s\".\n"
 msgstr ""
 
-#: src/dird/job.c:1406
+#: src/dird/job.c:1409
 #, c-format
 msgid "Clone JobId %d started.\n"
 msgstr ""
@@ -5720,90 +5786,91 @@ msgstr ""
 msgid "1000 OK: %s Version: %s (%s)\n"
 msgstr ""
 
-#: src/dird/catreq.c:129 src/dird/catreq.c:356
+#: src/dird/catreq.c:128 src/dird/catreq.c:355
 #, c-format
 msgid "1990 Invalid Catalog Request: %s"
 msgstr ""
 
-#: src/dird/catreq.c:130
+#: src/dird/catreq.c:129
 #, c-format
 msgid "Invalid Catalog request; DB not open: %s"
 msgstr ""
 
-#: src/dird/catreq.c:155
+#: src/dird/catreq.c:154
 msgid "1901 No Media.\n"
 msgstr ""
 
-#: src/dird/catreq.c:183
+#: src/dird/catreq.c:182
 msgid "not in Pool"
 msgstr ""
 
-#: src/dird/catreq.c:185
+#: src/dird/catreq.c:184
 msgid "not correct MediaType"
 msgstr ""
 
-#: src/dird/catreq.c:195
+#: src/dird/catreq.c:194
 msgid "is not Enabled"
 msgstr ""
 
-#: src/dird/catreq.c:204
+#: src/dird/catreq.c:203
 #, c-format
 msgid "1998 Volume \"%s\" catalog status is %s, %s.\n"
 msgstr ""
 
-#: src/dird/catreq.c:209
+#: src/dird/catreq.c:208
 #, c-format
 msgid "1997 Volume \"%s\" not in catalog.\n"
 msgstr ""
 
-#: src/dird/catreq.c:231
+#: src/dird/catreq.c:230
 #, c-format
 msgid "Unable to get Media record for Volume %s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/catreq.c:233
+#: src/dird/catreq.c:232
 #, c-format
 msgid "1991 Catalog Request for vol=%s failed: %s"
 msgstr ""
 
-#: src/dird/catreq.c:260
+#: src/dird/catreq.c:259
 #, c-format
 msgid ""
 "Volume Files at %u being set to %u for Volume \"%s\". This is incorrect.\n"
 msgstr ""
 
-#: src/dird/catreq.c:263
+#: src/dird/catreq.c:262
 #, c-format
 msgid "1992 Update Media error. VolFiles=%u, CatFiles=%u\n"
 msgstr ""
 
-#: src/dird/catreq.c:288
-msgid "Attempt to set StorageId to zero.\n"
-msgstr ""
-
-#: src/dird/catreq.c:319
+#: src/dird/catreq.c:318
 #, c-format
 msgid "Catalog error updating Media record. %s"
 msgstr ""
 
-#: src/dird/catreq.c:321
+#: src/dird/catreq.c:320
 msgid "1993 Update Media error\n"
 msgstr ""
 
-#: src/dird/catreq.c:345
+#: src/dird/catreq.c:344
 #, c-format
 msgid "Catalog error creating JobMedia record. %s"
 msgstr ""
 
-#: src/dird/catreq.c:347
+#: src/dird/catreq.c:346
 msgid "1992 Create JobMedia error\n"
 msgstr ""
 
-#: src/dird/catreq.c:357
+#: src/dird/catreq.c:356
 #, c-format
 msgid "Invalid Catalog request: %s"
 msgstr ""
 
+#: src/dird/catreq.c:443
+#, c-format
+msgid "Attribute create error: ERR=%s"
+msgstr ""
+
 #: src/dird/catreq.c:538
 #, c-format
 msgid "Restore object create error. %s"
@@ -5811,41 +5878,41 @@ msgstr ""
 
 #: src/dird/catreq.c:544
 #, c-format
-msgid "Got %s but not same File as attributes\n"
+msgid "%s not same File=%d as attributes=%d\n"
 msgstr ""
 
-#: src/dird/catreq.c:570
+#: src/dird/catreq.c:571
 #, c-format
 msgid "Catalog error updating file digest. Unsupported digest stream type: %d"
 msgstr ""
 
-#: src/dird/catreq.c:585
+#: src/dird/catreq.c:586
 #, c-format
 msgid "attribute create error. %s"
 msgstr ""
 
-#: src/dird/catreq.c:591
+#: src/dird/catreq.c:592
 #, c-format
 msgid "Catalog error updating file digest. %s"
 msgstr ""
 
-#: src/dird/catreq.c:614
+#: src/dird/catreq.c:615
 #, c-format
 msgid "1994 Invalid Catalog Update: %s"
 msgstr ""
 
-#: src/dird/catreq.c:615
+#: src/dird/catreq.c:616
 #, c-format
 msgid "Invalid Catalog Update; DB not open: %s"
 msgstr ""
 
-#: src/dird/catreq.c:670 src/dird/catreq.c:685 src/lib/bsock.c:605
+#: src/dird/catreq.c:671 src/dird/catreq.c:686 src/lib/bsock.c:645
 #, c-format
 msgid "fread attr spool error. ERR=%s\n"
 msgstr ""
 
 #: src/dird/msgchan.c:106 src/tray-monitor/tray-monitor.c:952
-#: src/filed/job.c:1771 src/qt-console/tray-monitor/tray-monitor.cpp:375
+#: src/filed/job.c:1775 src/qt-console/tray-monitor/tray-monitor.cpp:375
 msgid "Storage daemon"
 msgstr ""
 
@@ -5859,7 +5926,17 @@ msgstr ""
 msgid "<stored: bad response to Job command: %s\n"
 msgstr ""
 
-#: src/dird/msgchan.c:312
+#: src/dird/msgchan.c:273
+#, c-format
+msgid "Using Device \"%s\" to read.\n"
+msgstr ""
+
+#: src/dird/msgchan.c:311
+#, c-format
+msgid "Using Device \"%s\" to write.\n"
+msgstr ""
+
+#: src/dird/msgchan.c:318
 #, c-format
 msgid ""
 "\n"
@@ -5867,21 +5944,20 @@ msgid ""
 "     %s"
 msgstr ""
 
-#: src/dird/msgchan.c:316
+#: src/dird/msgchan.c:322
 #, c-format
 msgid ""
 "\n"
 "     Storage daemon didn't accept Device \"%s\" command.\n"
 msgstr ""
 
-#: src/dird/msgchan.c:321
+#: src/dird/msgchan.c:345 src/dird/msgchan.c:542
 #, c-format
-msgid "Using Device \"%s\"\n"
+msgid "Cannot create message thread: %s\n"
 msgstr ""
 
-#: src/dird/msgchan.c:341 src/dird/msgchan.c:529
-#, c-format
-msgid "Cannot create message thread: %s\n"
+#: src/dird/msgchan.c:417
+msgid "Director's comm line to SD dropped.\n"
 msgstr ""
 
 #: src/tray-monitor/tray_conf.c:177
@@ -6161,14 +6237,14 @@ msgstr ""
 
 #: src/tray-monitor/tray-monitor.c:937
 #: src/qt-console/tray-monitor/tray-monitor.cpp:359
-#: src/qt-console/bcomm/dircomm.cpp:101
+#: src/qt-console/bcomm/dircomm.cpp:103
 #, c-format
 msgid "Connecting to Director %s:%d"
 msgstr ""
 
 #: src/tray-monitor/tray-monitor.c:938 src/wx-console/console_thread.cpp:428
 #: src/qt-console/tray-monitor/tray-monitor.cpp:361
-#: src/qt-console/bcomm/dircomm.cpp:171
+#: src/qt-console/bcomm/dircomm.cpp:173
 msgid "Director daemon"
 msgstr ""
 
@@ -6325,7 +6401,7 @@ msgid ""
 "Please see "
 msgstr ""
 
-#: src/stored/reserve.c:86
+#: src/stored/reserve.c:87
 #, c-format
 msgid "Unable to initialize reservation lock. ERR=%s\n"
 msgstr ""
@@ -6335,21 +6411,21 @@ msgstr ""
 msgid "Hey! num_writers=%d!!!!\n"
 msgstr ""
 
-#: src/stored/reserve.c:255
+#: src/stored/reserve.c:256
 msgid "3939 Could not get dcr\n"
 msgstr ""
 
-#: src/stored/reserve.c:357
+#: src/stored/reserve.c:364
 #, c-format
 msgid "Device reservation failed for JobId=%d: %s\n"
 msgstr ""
 
-#: src/stored/reserve.c:366
+#: src/stored/reserve.c:373
 #, c-format
 msgid "Failed command: %s\n"
 msgstr ""
 
-#: src/stored/reserve.c:625 src/stored/dircmd.c:618
+#: src/stored/reserve.c:632 src/stored/dircmd.c:633
 #, c-format
 msgid ""
 "\n"
@@ -6357,85 +6433,85 @@ msgid ""
 "does not exist.\n"
 msgstr ""
 
-#: src/stored/reserve.c:629 src/stored/dircmd.c:596
+#: src/stored/reserve.c:636 src/stored/dircmd.c:611
 #, c-format
 msgid ""
 "\n"
 "     Device \"%s\" requested by DIR could not be opened or does not exist.\n"
 msgstr ""
 
-#: src/stored/reserve.c:645
+#: src/stored/reserve.c:652
 #, c-format
 msgid "3926 Could not get dcr for device: %s\n"
 msgstr ""
 
-#: src/stored/reserve.c:771
+#: src/stored/reserve.c:778
 #, c-format
 msgid "3601 JobId=%u device %s is BLOCKED due to user unmount.\n"
 msgstr ""
 
-#: src/stored/reserve.c:781
+#: src/stored/reserve.c:788
 #, c-format
 msgid "3602 JobId=%u device %s is busy (already reading/writing).\n"
 msgstr ""
 
-#: src/stored/reserve.c:833
+#: src/stored/reserve.c:840
 #, c-format
 msgid "3603 JobId=%u device %s is busy reading.\n"
 msgstr ""
 
-#: src/stored/reserve.c:842
+#: src/stored/reserve.c:849
 #, c-format
 msgid "3604 JobId=%u device %s is BLOCKED due to user unmount.\n"
 msgstr ""
 
-#: src/stored/reserve.c:884
+#: src/stored/reserve.c:891
 #, c-format
 msgid ""
 "3608 JobId=%u wants Pool=\"%s\" but have Pool=\"%s\" nreserve=%d on drive "
 "%s.\n"
 msgstr ""
 
-#: src/stored/reserve.c:907
+#: src/stored/reserve.c:914
 #, c-format
 msgid "3609 JobId=%u Max concurrent jobs exceeded on drive %s.\n"
 msgstr ""
 
-#: src/stored/reserve.c:919
+#: src/stored/reserve.c:926
 #, c-format
 msgid "3610 JobId=%u Volume max jobs exceeded on drive %s.\n"
 msgstr ""
 
-#: src/stored/reserve.c:971
+#: src/stored/reserve.c:978
 #, c-format
 msgid "3605 JobId=%u wants free drive but device %s is busy.\n"
 msgstr ""
 
-#: src/stored/reserve.c:980
+#: src/stored/reserve.c:987
 #, c-format
 msgid "3606 JobId=%u prefers mounted drives, but drive %s has no Volume.\n"
 msgstr ""
 
-#: src/stored/reserve.c:1002
+#: src/stored/reserve.c:1009
 #, c-format
 msgid "3607 JobId=%u wants Vol=\"%s\" drive has Vol=\"%s\" on drive %s.\n"
 msgstr ""
 
-#: src/stored/reserve.c:1057
+#: src/stored/reserve.c:1064
 #, c-format
 msgid "Logic error!!!! JobId=%u Should not get here.\n"
 msgstr ""
 
-#: src/stored/reserve.c:1058
+#: src/stored/reserve.c:1065
 #, c-format
 msgid "3910 JobId=%u Logic error!!!! drive %s Should not get here.\n"
 msgstr ""
 
-#: src/stored/reserve.c:1061
+#: src/stored/reserve.c:1068
 msgid "Logic error!!!! Should not get here.\n"
 msgstr ""
 
-#: src/stored/reserve.c:1064
+#: src/stored/reserve.c:1071
 #, c-format
 msgid "3911 JobId=%u failed reserve drive %s.\n"
 msgstr ""
@@ -6525,23 +6601,23 @@ msgstr ""
 msgid "FileIndex=%d VolSessionId=%d VolSessionTime=%d Stream=%d DataLen=%d\n"
 msgstr ""
 
-#: src/stored/bls.c:425 src/stored/read_record.c:414 src/stored/bcopy.c:332
+#: src/stored/bls.c:425 src/stored/read_record.c:414 src/stored/bcopy.c:330
 msgid "Fresh Volume Label"
 msgstr ""
 
-#: src/stored/bls.c:428 src/stored/read_record.c:417 src/stored/bcopy.c:335
+#: src/stored/bls.c:428 src/stored/read_record.c:417 src/stored/bcopy.c:333
 msgid "Volume Label"
 msgstr ""
 
-#: src/stored/bls.c:432 src/stored/label.c:1033 src/stored/bcopy.c:339
+#: src/stored/bls.c:432 src/stored/label.c:1028 src/stored/bcopy.c:337
 msgid "Begin Job Session"
 msgstr ""
 
-#: src/stored/bls.c:437 src/stored/label.c:1036 src/stored/bcopy.c:343
+#: src/stored/bls.c:437 src/stored/label.c:1031 src/stored/bcopy.c:341
 msgid "End Job Session"
 msgstr ""
 
-#: src/stored/bls.c:441 src/stored/bcopy.c:348
+#: src/stored/bls.c:441 src/stored/bcopy.c:346
 msgid "End of Medium"
 msgstr ""
 
@@ -6557,17 +6633,17 @@ msgstr ""
 msgid "End of object"
 msgstr ""
 
-#: src/stored/bls.c:453 src/stored/label.c:1045 src/stored/bcopy.c:351
+#: src/stored/bls.c:453 src/stored/label.c:1040 src/stored/bcopy.c:349
 msgid "Unknown"
 msgstr ""
 
-#: src/stored/bls.c:460 src/stored/read_record.c:435 src/stored/bcopy.c:357
+#: src/stored/bls.c:460 src/stored/read_record.c:435 src/stored/bcopy.c:355
 #, c-format
 msgid "%s Record: VolSessionId=%d VolSessionTime=%d JobId=%d DataLen=%d\n"
 msgstr ""
 
-#: src/stored/bls.c:479 src/stored/bextract.c:612 src/stored/bcopy.c:375
-#: src/stored/bscan.c:1370 src/stored/btape.c:3048
+#: src/stored/bls.c:479 src/stored/bextract.c:612 src/stored/bcopy.c:373
+#: src/stored/bscan.c:1374 src/stored/btape.c:3050
 #, c-format
 msgid "Mount Volume \"%s\" on device %s and press return when ready: "
 msgstr ""
@@ -6577,292 +6653,292 @@ msgstr ""
 msgid "Connection request from %s failed.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:165
+#: src/stored/dircmd.c:166
 #, c-format
 msgid "Invalid connection from %s. Len=%d\n"
 msgstr ""
 
-#: src/stored/dircmd.c:208 src/filed/authenticate.c:208
+#: src/stored/dircmd.c:210 src/filed/authenticate.c:208
 msgid "Unable to authenticate Director\n"
 msgstr ""
 
-#: src/stored/dircmd.c:294
+#: src/stored/dircmd.c:299
 #, c-format
 msgid "3991 Bad setdebug command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:317
-#, c-format
-msgid "3904 Job %s not found.\n"
+#: src/stored/dircmd.c:326
+msgid "3903 Error scanning cancel command.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:345
+#: src/stored/dircmd.c:330
 #, c-format
-msgid "3000 JobId=%ld Job=\"%s\" marked to be canceled.\n"
+msgid "3904 Job %s not found.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:349
-msgid "3903 Error scanning cancel command.\n"
+#: src/stored/dircmd.c:358
+#, c-format
+msgid "3000 JobId=%ld Job=\"%s\" marked to be %s.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:425 src/stored/dircmd.c:791 src/stored/dircmd.c:883
-#: src/stored/dircmd.c:994 src/stored/dircmd.c:1116 src/stored/dircmd.c:1159
+#: src/stored/dircmd.c:437 src/stored/dircmd.c:812 src/stored/dircmd.c:904
+#: src/stored/dircmd.c:1015 src/stored/dircmd.c:1137 src/stored/dircmd.c:1179
 #, c-format
 msgid "3999 Device \"%s\" not found or could not be opened.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:430
+#: src/stored/dircmd.c:442
 #, c-format
 msgid "3903 Error scanning label command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:480
+#: src/stored/dircmd.c:492
 #, c-format
 msgid "3910 Unable to open device \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:497
+#: src/stored/dircmd.c:509
 #, c-format
 msgid "3920 Cannot label Volume because it is already labeled: \"%s\"\n"
 msgstr ""
 
-#: src/stored/dircmd.c:504
+#: src/stored/dircmd.c:516
 msgid "3921 Wrong volume mounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:508
+#: src/stored/dircmd.c:520
 msgid "3922 Cannot relabel an ANSI/IBM labeled Volume.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:516
+#: src/stored/dircmd.c:528
 #, c-format
 msgid "3912 Failed to label Volume: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:526
+#: src/stored/dircmd.c:538
 #, c-format
 msgid "3914 Failed to label Volume (no media): ERR=%s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:529
+#: src/stored/dircmd.c:541
 #, c-format
 msgid "3913 Cannot label Volume. Unknown status %d from read_volume_label()\n"
 msgstr ""
 
-#: src/stored/dircmd.c:563
+#: src/stored/dircmd.c:578
 #, c-format
 msgid "3001 Mounted Volume: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:567 src/stored/dircmd.c:1195
+#: src/stored/dircmd.c:582 src/stored/dircmd.c:1215
 #, c-format
 msgid ""
 "3902 Cannot mount Volume on Storage Device \"%s\" because:\n"
 "%s"
 msgstr ""
 
-#: src/stored/dircmd.c:680
+#: src/stored/dircmd.c:696
 msgid "Specified slot ignored. "
 msgstr ""
 
-#: src/stored/dircmd.c:695 src/stored/dircmd.c:752
+#: src/stored/dircmd.c:712 src/stored/dircmd.c:770
 #, c-format
 msgid "3901 Unable to open device \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:715 src/stored/dircmd.c:743
+#: src/stored/dircmd.c:732 src/stored/dircmd.c:761
 #, c-format
 msgid "3001 Device \"%s\" is mounted with Volume \"%s\"\n"
 msgstr ""
 
-#: src/stored/dircmd.c:718 src/stored/dircmd.c:746 src/stored/dircmd.c:761
+#: src/stored/dircmd.c:735 src/stored/dircmd.c:764 src/stored/dircmd.c:779
 #, c-format
 msgid ""
 "3905 Device \"%s\" open but no Bacula volume is mounted.\n"
 "If this is not a blank tape, try unmounting and remounting the Volume.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:728
+#: src/stored/dircmd.c:745
 #, c-format
 msgid "3001 Device \"%s\" is doing acquire.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:733 src/stored/dircmd.c:854
+#: src/stored/dircmd.c:750 src/stored/dircmd.c:875
 #, c-format
 msgid "3903 Device \"%s\" is being labeled.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:758
+#: src/stored/dircmd.c:776
 #, c-format
 msgid "3001 Device \"%s\" is already mounted with Volume \"%s\"\n"
 msgstr ""
 
-#: src/stored/dircmd.c:767
+#: src/stored/dircmd.c:788
 #, c-format
 msgid "3002 Device \"%s\" is mounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:769 src/stored/dircmd.c:826 src/stored/dircmd.c:842
-#: src/stored/dircmd.c:874
+#: src/stored/dircmd.c:790 src/stored/dircmd.c:847 src/stored/dircmd.c:863
+#: src/stored/dircmd.c:895
 #, c-format
 msgid "3907 %s"
 msgstr ""
 
-#: src/stored/dircmd.c:772
+#: src/stored/dircmd.c:793
 #, c-format
 msgid "3906 File device \"%s\" is always mounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:781
+#: src/stored/dircmd.c:802
 #, c-format
 msgid "3930 Device \"%s\" is being released.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:785
+#: src/stored/dircmd.c:806
 #, c-format
 msgid "3905 Unknown wait state %d\n"
 msgstr ""
 
-#: src/stored/dircmd.c:795
+#: src/stored/dircmd.c:816
 #, c-format
 msgid "3909 Error scanning mount command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:823 src/stored/dircmd.c:876
+#: src/stored/dircmd.c:844 src/stored/dircmd.c:897
 #, c-format
 msgid "3002 Device \"%s\" unmounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:830
+#: src/stored/dircmd.c:851
 #, c-format
 msgid "3901 Device \"%s\" is already unmounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:845
+#: src/stored/dircmd.c:866
 #, c-format
 msgid "3001 Device \"%s\" unmounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:850
+#: src/stored/dircmd.c:871
 #, c-format
 msgid "3902 Device \"%s\" is busy in acquire.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:888
+#: src/stored/dircmd.c:909
 #, c-format
 msgid "3907 Error scanning unmount command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:916
+#: src/stored/dircmd.c:937
 msgid "3916 Error scanning action_on_purge command\n"
 msgstr ""
 
-#: src/stored/dircmd.c:959
+#: src/stored/dircmd.c:980
 #, c-format
 msgid "3921 Device \"%s\" already released.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:966
+#: src/stored/dircmd.c:987
 #, c-format
 msgid "3922 Device \"%s\" waiting for sysop.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:972
+#: src/stored/dircmd.c:993
 #, c-format
 msgid "3922 Device \"%s\" waiting for mount.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:976
+#: src/stored/dircmd.c:997
 #, c-format
 msgid "3923 Device \"%s\" is busy in acquire.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:980
+#: src/stored/dircmd.c:1001
 #, c-format
 msgid "3914 Device \"%s\" is being labeled.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:988
+#: src/stored/dircmd.c:1009
 #, c-format
 msgid "3022 Device \"%s\" released.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:999
+#: src/stored/dircmd.c:1020
 #, c-format
 msgid "3927 Error scanning release command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1028 src/filed/job.c:1531
+#: src/stored/dircmd.c:1049 src/filed/job.c:1535
 #, c-format
 msgid "Could not create bootstrap file %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1041
+#: src/stored/dircmd.c:1062
 msgid "Error parsing bootstrap file.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1103
+#: src/stored/dircmd.c:1124
 #, c-format
-msgid "3995 Device \"%s\" is not an autochanger.\n"
+msgid "3998 Device \"%s\" is not an autochanger.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1120
+#: src/stored/dircmd.c:1141
 #, c-format
 msgid "3908 Error scanning autochanger drives/list/slots command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1163
+#: src/stored/dircmd.c:1183
 #, c-format
 msgid "3909 Error scanning readlabel command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1191
+#: src/stored/dircmd.c:1211
 #, c-format
 msgid "3001 Volume=%s Slot=%d\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1223
+#: src/stored/dircmd.c:1243
 #, c-format
 msgid "3931 Device \"%s\" is BLOCKED. user unmounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1227
+#: src/stored/dircmd.c:1247
 #, c-format
 msgid ""
 "3932 Device \"%s\" is BLOCKED. user unmounted during wait for media/mount.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1231
+#: src/stored/dircmd.c:1251
 #, c-format
 msgid "3933 Device \"%s\" is BLOCKED waiting for media.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1235
+#: src/stored/dircmd.c:1255
 #, c-format
 msgid "3934 Device \"%s\" is being initialized.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1239
+#: src/stored/dircmd.c:1259
 #, c-format
 msgid "3935 Device \"%s\" is blocked labeling a Volume.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1243
+#: src/stored/dircmd.c:1263
 #, c-format
 msgid "3935 Device \"%s\" is blocked for unknown reason.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1248
+#: src/stored/dircmd.c:1268
 #, c-format
 msgid "3936 Device \"%s\" is busy reading.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1251
+#: src/stored/dircmd.c:1271
 #, c-format
 msgid "3937 Device \"%s\" is busy with writers=%d reserved=%d.\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:123 src/stored/parse_bsr.c:127
+#: src/stored/parse_bsr.c:122 src/stored/parse_bsr.c:126
 #, c-format
 msgid ""
 "Bootstrap file error: %s\n"
@@ -6870,154 +6946,154 @@ msgid ""
 "%s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:149
+#: src/stored/parse_bsr.c:148
 #, c-format
 msgid "Cannot open bootstrap file %s: %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:280
+#: src/stored/parse_bsr.c:279
 #, c-format
 msgid "MediaType %s in bsr at inappropriate place.\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:312
+#: src/stored/parse_bsr.c:311
 #, c-format
 msgid "Device \"%s\" in bsr at inappropriate place.\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:485
+#: src/stored/parse_bsr.c:484
 #, c-format
 msgid "REGEX '%s' compile error. ERR=%s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:495
+#: src/stored/parse_bsr.c:494
 msgid "JobType not yet implemented\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:503
+#: src/stored/parse_bsr.c:502
 msgid "JobLevel not yet implemented\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:720
+#: src/stored/parse_bsr.c:719
 #, c-format
 msgid "Slot %d in bsr at inappropriate place.\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:744
+#: src/stored/parse_bsr.c:743
 #, c-format
 msgid "VolFile     : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:752
+#: src/stored/parse_bsr.c:751
 #, c-format
 msgid "VolBlock    : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:760
+#: src/stored/parse_bsr.c:759
 #, c-format
 msgid "VolAddr    : %llu-%llu\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:769
+#: src/stored/parse_bsr.c:768
 #, c-format
 msgid "FileIndex   : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:771
+#: src/stored/parse_bsr.c:770
 #, c-format
 msgid "FileIndex   : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:781
+#: src/stored/parse_bsr.c:780
 #, c-format
 msgid "JobId       : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:783
+#: src/stored/parse_bsr.c:782
 #, c-format
 msgid "JobId       : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:793
+#: src/stored/parse_bsr.c:792
 #, c-format
 msgid "SessId      : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:795
+#: src/stored/parse_bsr.c:794
 #, c-format
 msgid "SessId      : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:804
+#: src/stored/parse_bsr.c:803
 #, c-format
 msgid "VolumeName  : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:805
+#: src/stored/parse_bsr.c:804
 #, c-format
 msgid "  MediaType : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:806
+#: src/stored/parse_bsr.c:805
 #, c-format
 msgid "  Device    : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:807
+#: src/stored/parse_bsr.c:806
 #, c-format
 msgid "  Slot      : %d\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:816
+#: src/stored/parse_bsr.c:815
 #, c-format
 msgid "Client      : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:824
+#: src/stored/parse_bsr.c:823
 #, c-format
 msgid "Job          : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:832
+#: src/stored/parse_bsr.c:831
 #, c-format
 msgid "SessTime    : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:843
+#: src/stored/parse_bsr.c:842
 msgid "BSR is NULL\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:847
+#: src/stored/parse_bsr.c:846
 #, c-format
 msgid "Next        : 0x%x\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:848
+#: src/stored/parse_bsr.c:847
 #, c-format
 msgid "Root bsr    : 0x%x\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:860
+#: src/stored/parse_bsr.c:859
 #, c-format
 msgid "count       : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:861
+#: src/stored/parse_bsr.c:860
 #, c-format
 msgid "found       : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:864
+#: src/stored/parse_bsr.c:863
 #, c-format
 msgid "done        : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:865
+#: src/stored/parse_bsr.c:864
 #, c-format
 msgid "positioning : %d\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:866
+#: src/stored/parse_bsr.c:865
 #, c-format
 msgid "fast_reject : %d\n"
 msgstr ""
@@ -7101,76 +7177,69 @@ msgstr ""
 msgid "Unable to set network buffer size.\n"
 msgstr ""
 
-#: src/stored/append.c:96 src/stored/append.c:105 src/stored/append.c:117
-#: src/stored/append.c:297 src/stored/append.c:298 src/stored/askdir.c:339
-#: src/stored/askdir.c:340
+#: src/stored/append.c:95 src/stored/append.c:104 src/stored/append.c:116
+#: src/stored/askdir.c:340 src/stored/askdir.c:341
 msgid "NULL Volume name. This shouldn't happen!!!\n"
 msgstr ""
 
-#: src/stored/append.c:111 src/stored/btape.c:2233
+#: src/stored/append.c:110 src/stored/btape.c:2235
 #, c-format
 msgid "Write session label failed. ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:123
+#: src/stored/append.c:122
 #, c-format
 msgid "Network send error to FD. ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:160
+#: src/stored/append.c:159
 #, c-format
 msgid "Error reading data header from FD. ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:168
+#: src/stored/append.c:167
 #, c-format
 msgid "Malformed data header from FD: %s\n"
 msgstr ""
 
-#: src/stored/append.c:188
+#: src/stored/append.c:187
 #, c-format
 msgid "FI=%d from FD not positive or sequential=%d\n"
 msgstr ""
 
-#: src/stored/append.c:244
+#: src/stored/append.c:235
 #, c-format
 msgid "Network error reading from FD. ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:274
-#, c-format
-msgid ""
-"Job write elapsed time = %02d:%02d:%02d, Transfer rate = %s Bytes/second\n"
-msgstr ""
-
-#: src/stored/append.c:289 src/stored/btape.c:2352
+#: src/stored/append.c:265 src/stored/btape.c:2354
 #, c-format
 msgid "Error writing end session label. ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:305 src/stored/mac.c:126 src/stored/mac.c:247
+#: src/stored/append.c:277 src/stored/mac.c:126 src/stored/mac.c:261
 #: src/stored/spool.c:300
 #, c-format
 msgid "Fatal append error on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:307 src/stored/mac.c:128
+#: src/stored/append.c:279 src/stored/mac.c:128
 msgid "Set ok=FALSE after write_block_to_device.\n"
 msgstr ""
 
-#: src/stored/append.c:360
+#: src/stored/append.c:308 src/stored/mac.c:151
 #, c-format
-msgid "Error updating file attributes. ERR=%s\n"
+msgid "Elapsed time=%02d:%02d:%02d, Transfer rate=%s Bytes/second\n"
 msgstr ""
 
-#: src/stored/vol_mgr.c:93
+#: src/stored/append.c:345
 #, c-format
-msgid "Unable to initialize volume list lock. ERR=%s\n"
+msgid "Error updating file attributes. ERR=%s\n"
 msgstr ""
 
-#: src/stored/vol_mgr.c:491
+#: src/stored/vol_mgr.c:93
 #, c-format
-msgid "Device switch. New device %s chosen.\n"
+msgid "Unable to initialize volume list lock. ERR=%s\n"
 msgstr ""
 
 #: src/stored/label.c:93
@@ -7218,67 +7287,67 @@ msgstr ""
 msgid "Volume on %s has bad Bacula label type: %x\n"
 msgstr ""
 
-#: src/stored/label.c:236 src/stored/label.c:399 src/stored/mount.c:460
+#: src/stored/label.c:236 src/stored/label.c:397 src/stored/mount.c:463
 #, c-format
 msgid "Could not reserve volume %s on %s\n"
 msgstr ""
 
-#: src/stored/label.c:276
+#: src/stored/label.c:277
 #, c-format
 msgid "Cannot write Volume label to block for device %s\n"
 msgstr ""
 
-#: src/stored/label.c:328 src/stored/label.c:429 src/stored/mount.c:216
+#: src/stored/label.c:328 src/stored/label.c:426 src/stored/mount.c:218
 #, c-format
 msgid "Open device %s Volume \"%s\" failed: ERR=%s\n"
 msgstr ""
 
-#: src/stored/label.c:454
+#: src/stored/label.c:451
 #, c-format
 msgid "Rewind error on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/label.c:462
+#: src/stored/label.c:458
 #, c-format
 msgid "Truncate error on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/label.c:468
+#: src/stored/label.c:464
 #, c-format
 msgid "Failed to re-open DVD after truncate on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/label.c:491
+#: src/stored/label.c:487
 #, c-format
 msgid "Unable to write device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/label.c:522
+#: src/stored/label.c:518
 #, c-format
 msgid "Recycled volume \"%s\" on device %s, all previous data lost.\n"
 msgstr ""
 
-#: src/stored/label.c:525
+#: src/stored/label.c:521
 #, c-format
 msgid "Wrote label to prelabeled Volume \"%s\" on device %s\n"
 msgstr ""
 
-#: src/stored/label.c:726
+#: src/stored/label.c:721
 #, c-format
 msgid "Bad Volume session label = %d\n"
 msgstr ""
 
-#: src/stored/label.c:781
+#: src/stored/label.c:776
 #, c-format
 msgid "Expecting Volume Label, got FI=%s Stream=%s len=%d\n"
 msgstr ""
 
-#: src/stored/label.c:908
+#: src/stored/label.c:903
 #, c-format
 msgid "Unknown %d"
 msgstr ""
 
-#: src/stored/label.c:912
+#: src/stored/label.c:907
 #, c-format
 msgid ""
 "\n"
@@ -7295,17 +7364,17 @@ msgid ""
 "HostName          : %s\n"
 msgstr ""
 
-#: src/stored/label.c:934
+#: src/stored/label.c:929
 #, c-format
 msgid "Date label written: %s\n"
 msgstr ""
 
-#: src/stored/label.c:940
+#: src/stored/label.c:935
 #, c-format
 msgid "Date label written: %04d-%02d-%02d at %02d:%02d\n"
 msgstr ""
 
-#: src/stored/label.c:960
+#: src/stored/label.c:955
 #, c-format
 msgid ""
 "\n"
@@ -7318,7 +7387,7 @@ msgid ""
 "ClientName        : %s\n"
 msgstr ""
 
-#: src/stored/label.c:973
+#: src/stored/label.c:968
 #, c-format
 msgid ""
 "Job (unique name) : %s\n"
@@ -7327,7 +7396,7 @@ msgid ""
 "JobLevel          : %c\n"
 msgstr ""
 
-#: src/stored/label.c:982
+#: src/stored/label.c:977
 #, c-format
 msgid ""
 "JobFiles          : %s\n"
@@ -7340,52 +7409,52 @@ msgid ""
 "JobStatus         : %c\n"
 msgstr ""
 
-#: src/stored/label.c:1003
+#: src/stored/label.c:998
 #, c-format
 msgid "Date written      : %s\n"
 msgstr ""
 
-#: src/stored/label.c:1008
+#: src/stored/label.c:1003
 #, c-format
 msgid "Date written      : %04d-%02d-%02d at %02d:%02d\n"
 msgstr ""
 
-#: src/stored/label.c:1027
+#: src/stored/label.c:1022
 msgid "Fresh Volume"
 msgstr ""
 
-#: src/stored/label.c:1030
+#: src/stored/label.c:1025
 msgid "Volume"
 msgstr ""
 
-#: src/stored/label.c:1039 src/stored/read_record.c:428
+#: src/stored/label.c:1034 src/stored/read_record.c:428
 msgid "End of Media"
 msgstr ""
 
-#: src/stored/label.c:1042
+#: src/stored/label.c:1037
 msgid "End of Tape"
 msgstr ""
 
-#: src/stored/label.c:1062 src/stored/label.c:1070 src/stored/label.c:1103
+#: src/stored/label.c:1057 src/stored/label.c:1065 src/stored/label.c:1098
 #, c-format
 msgid "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d DataLen=%d\n"
 msgstr ""
 
-#: src/stored/label.c:1067
+#: src/stored/label.c:1062
 msgid "End of physical tape.\n"
 msgstr ""
 
-#: src/stored/label.c:1082 src/stored/label.c:1091
+#: src/stored/label.c:1077 src/stored/label.c:1086
 #, c-format
 msgid "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d\n"
 msgstr ""
 
-#: src/stored/label.c:1084
+#: src/stored/label.c:1079
 #, c-format
 msgid "   Job=%s Date=%s Level=%c Type=%c\n"
 msgstr ""
 
-#: src/stored/label.c:1093
+#: src/stored/label.c:1088
 #, c-format
 msgid "   Date=%s Level=%c Type=%c Files=%s Bytes=%s Errors=%d Status=%c\n"
 msgstr ""
@@ -7394,82 +7463,101 @@ msgstr ""
 msgid "Used Volume status:\n"
 msgstr ""
 
-#: src/stored/status.c:107 src/stored/status.c:109
+#: src/stored/status.c:117
 msgid ""
-"====\n"
 "\n"
+"SD Resources:\n"
 msgstr ""
 
-#: src/stored/status.c:128
+#: src/stored/status.c:153
 msgid ""
 "\n"
 "Device status:\n"
 msgstr ""
 
-#: src/stored/status.c:132
+#: src/stored/status.c:157
 #, c-format
 msgid "Autochanger \"%s\" with devices:\n"
 msgstr ""
 
-#: src/stored/status.c:150
+#: src/stored/status.c:177
 #, c-format
 msgid ""
-"Device %s is mounted with:\n"
+"\n"
+"Device %s is %s:\n"
 "    Volume:      %s\n"
 "    Pool:        %s\n"
 "    Media type:  %s\n"
 msgstr ""
 
-#: src/stored/status.c:160
+#: src/stored/status.c:182
+msgid "waiting for"
+msgstr ""
+
+#: src/stored/status.c:182
+msgid "mounted with"
+msgstr ""
+
+#: src/stored/status.c:184
+msgid "*unknown*"
+msgstr ""
+
+#: src/stored/status.c:188
 #, c-format
-msgid "Device %s open but no Bacula volume is currently mounted.\n"
+msgid ""
+"\n"
+"Device %s open but no Bacula volume is currently mounted.\n"
 msgstr ""
 
-#: src/stored/status.c:171
+#: src/stored/status.c:199
 #, c-format
 msgid "    Total Bytes=%s Blocks=%s Bytes/block=%s\n"
 msgstr ""
 
-#: src/stored/status.c:186
+#: src/stored/status.c:214
 #, c-format
 msgid "    Total Bytes Read=%s Blocks Read=%s Bytes/block=%s\n"
 msgstr ""
 
-#: src/stored/status.c:192
+#: src/stored/status.c:220
 #, c-format
 msgid "    Positioned at File=%s Block=%s\n"
 msgstr ""
 
-#: src/stored/status.c:199
+#: src/stored/status.c:227
 #, c-format
-msgid "Device %s is not open.\n"
+msgid ""
+"\n"
+"Device %s is not open.\n"
 msgstr ""
 
-#: src/stored/status.c:203
+#: src/stored/status.c:231
 #, c-format
-msgid "Device \"%s\" is not open or does not exist.\n"
+msgid ""
+"\n"
+"Device \"%s\" is not open or does not exist.\n"
 msgstr ""
 
-#: src/stored/status.c:225
+#: src/stored/status.c:255
 #, c-format
 msgid "Daemon started %s. Jobs: run=%d, running=%d.\n"
 msgstr ""
 
-#: src/stored/status.c:248
+#: src/stored/status.c:293
 msgid ""
 "No DEVICE structure.\n"
 "\n"
 msgstr ""
 
-#: src/stored/status.c:254
+#: src/stored/status.c:299
 msgid "    Device is BLOCKED. User unmounted.\n"
 msgstr ""
 
-#: src/stored/status.c:258
+#: src/stored/status.c:303
 msgid "    Device is BLOCKED. User unmounted during wait for media/mount.\n"
 msgstr ""
 
-#: src/stored/status.c:270
+#: src/stored/status.c:313
 #, c-format
 msgid ""
 "    Device is BLOCKED waiting for mount of volume \"%s\",\n"
@@ -7477,7 +7565,7 @@ msgid ""
 "       Media type:  %s\n"
 msgstr ""
 
-#: src/stored/status.c:279
+#: src/stored/status.c:322
 #, c-format
 msgid ""
 "    Device is BLOCKED waiting to create a volume for:\n"
@@ -7485,172 +7573,165 @@ msgid ""
 "       Media type:  %s\n"
 msgstr ""
 
-#: src/stored/status.c:291
+#: src/stored/status.c:333
 msgid "    Device is BLOCKED waiting for media.\n"
 msgstr ""
 
-#: src/stored/status.c:297
+#: src/stored/status.c:339
 msgid "    Device is being initialized.\n"
 msgstr ""
 
-#: src/stored/status.c:301
+#: src/stored/status.c:343
 msgid "    Device is blocked labeling a Volume.\n"
 msgstr ""
 
-#: src/stored/status.c:310
+#: src/stored/status.c:352
 #, c-format
-msgid "    Slot %d is loaded in drive %d.\n"
+msgid "    Slot %d %s loaded in drive %d.\n"
 msgstr ""
 
-#: src/stored/status.c:314
+#: src/stored/status.c:356
 #, c-format
 msgid "    Drive %d is not loaded.\n"
 msgstr ""
 
-#: src/stored/status.c:317
-#, c-format
-msgid "    Drive %d status unknown.\n"
-msgstr ""
-
-#: src/stored/status.c:331 src/stored/btape.c:688
+#: src/stored/status.c:371 src/stored/btape.c:688
 #, c-format
 msgid "Configured device capabilities:\n"
 msgstr ""
 
-#: src/stored/status.c:349
+#: src/stored/status.c:389
 msgid "Device state:\n"
 msgstr ""
 
-#: src/stored/status.c:367
+#: src/stored/status.c:405
 #, c-format
-msgid ""
-"num_writers=%d reserved=%d block=%d\n"
-"\n"
+msgid "  num_writers=%d reserves=%d block=%d\n"
+msgstr ""
+
+#: src/stored/status.c:409
+msgid "Attached Jobs: "
 msgstr ""
 
-#: src/stored/status.c:371 src/stored/btape.c:720
+#: src/stored/status.c:427 src/stored/btape.c:720
 #, c-format
 msgid "Device parameters:\n"
 msgstr ""
 
-#: src/stored/status.c:374
+#: src/stored/status.c:429
 #, c-format
-msgid "Archive name: %s Device name: %s\n"
+msgid "  Archive name: %s Device name: %s\n"
 msgstr ""
 
-#: src/stored/status.c:378
+#: src/stored/status.c:432
 #, c-format
-msgid "File=%u block=%u\n"
+msgid "  File=%u block=%u\n"
 msgstr ""
 
-#: src/stored/status.c:381
+#: src/stored/status.c:434
 #, c-format
-msgid "Min block=%u Max block=%u\n"
+msgid "  Min block=%u Max block=%u\n"
 msgstr ""
 
-#: src/stored/status.c:401
+#: src/stored/status.c:455
 #, c-format
 msgid "%s Job %s waiting for Client connection.\n"
 msgstr ""
 
-#: src/stored/status.c:417
+#: src/stored/status.c:471
 #, c-format
 msgid ""
 "Reading: %s %s job %s JobId=%d Volume=\"%s\"\n"
 "    pool=\"%s\" device=%s\n"
 msgstr ""
 
-#: src/stored/status.c:430
+#: src/stored/status.c:484
 #, c-format
 msgid ""
 "Writing: %s %s job %s JobId=%d Volume=\"%s\"\n"
 "    pool=\"%s\" device=%s\n"
 msgstr ""
 
-#: src/stored/status.c:441
+#: src/stored/status.c:495
 #, c-format
 msgid "    spooling=%d despooling=%d despool_wait=%d\n"
 msgstr ""
 
-#: src/stored/status.c:450
+#: src/stored/status.c:511
 #, c-format
-msgid "    Files=%s Bytes=%s Bytes/sec=%s\n"
+msgid "    Files=%s Bytes=%s AveBytes/sec=%s LastBytes/sec=%s\n"
 msgstr ""
 
-#: src/stored/status.c:458
+#: src/stored/status.c:523
 #, c-format
 msgid "    FDReadSeqNo=%s in_msg=%u out_msg=%d fd=%d\n"
 msgstr ""
 
-#: src/stored/status.c:464
+#: src/stored/status.c:529
 msgid "    FDSocket closed\n"
 msgstr ""
 
-#: src/stored/status.c:485
+#: src/stored/status.c:550
 msgid ""
 "\n"
 "Jobs waiting to reserve a drive:\n"
 msgstr ""
 
-#: src/stored/status.c:516
+#: src/stored/status.c:581
 msgid "===================================================================\n"
 msgstr ""
 
-#: src/stored/status.c:598 src/lib/util.c:423 src/filed/status.c:517
+#: src/stored/status.c:663 src/lib/util.c:423 src/filed/status.c:517
 msgid "Base"
 msgstr ""
 
-#: src/stored/status.c:615 src/filed/status.c:534
+#: src/stored/status.c:680 src/filed/status.c:534
 msgid "Init Catalog"
 msgstr ""
 
-#: src/stored/status.c:618 src/filed/status.c:537
+#: src/stored/status.c:683 src/filed/status.c:537
 msgid "Volume to Catalog"
 msgstr ""
 
-#: src/stored/status.c:621 src/filed/status.c:540
+#: src/stored/status.c:686 src/filed/status.c:540
 msgid "Disk to Catalog"
 msgstr ""
 
-#: src/stored/status.c:624 src/filed/status.c:543
+#: src/stored/status.c:689 src/filed/status.c:543
 msgid "Data"
 msgstr ""
 
-#: src/stored/status.c:630 src/lib/util.c:459 src/filed/status.c:549
+#: src/stored/status.c:695 src/lib/util.c:459 src/filed/status.c:549
 msgid "Unknown Job Level"
 msgstr ""
 
-#: src/stored/status.c:698 src/stored/status.c:744 src/filed/status.c:463
-#: src/filed/status.c:496
+#: src/stored/status.c:763
 #, c-format
-msgid "Bad .status command: %s\n"
-msgstr ""
-
-#: src/stored/status.c:699
-msgid "3900 Bad .status command, missing argument.\n"
+msgid "3900 No arg in .status command: %s\n"
 msgstr ""
 
-#: src/stored/status.c:745
-msgid "3900 Bad .status command, wrong argument.\n"
+#: src/stored/status.c:811
+#, c-format
+msgid "3900 Unknown arg in .status command: %s\n"
 msgstr ""
 
-#: src/stored/status.c:760
+#: src/stored/status.c:826
 msgid "Bacula Storage: Idle"
 msgstr ""
 
-#: src/stored/status.c:771
+#: src/stored/status.c:837
 msgid "Bacula Storage: Running"
 msgstr ""
 
-#: src/stored/status.c:785
+#: src/stored/status.c:851
 msgid "Bacula Storage: Last Job Canceled"
 msgstr ""
 
-#: src/stored/status.c:789
+#: src/stored/status.c:855
 msgid "Bacula Storage: Last Job Failed"
 msgstr ""
 
-#: src/stored/status.c:793
+#: src/stored/status.c:859
 msgid "Bacula Storage: Last Job had Warnings"
 msgstr ""
 
@@ -7719,7 +7800,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/bextract.c:196 src/stored/bcopy.c:163 src/stored/bscan.c:248
+#: src/stored/bextract.c:196 src/stored/bcopy.c:161 src/stored/bscan.c:248
 #: src/tools/bvfs_test.c:201 src/tools/bbatch.c:190 src/tools/ing_test.c:185
 #: src/tools/cats_test.c:321
 msgid "Wrong number of arguments: \n"
@@ -7751,7 +7832,7 @@ msgid "%u files restored.\n"
 msgstr ""
 
 #: src/stored/bextract.c:284 src/stored/bextract.c:290
-#: src/filed/restore.c:1474
+#: src/filed/restore.c:1480
 #, c-format
 msgid "Write error on %s: %s\n"
 msgstr ""
@@ -7760,7 +7841,7 @@ msgstr ""
 msgid "Logic error output file should be open but is not.\n"
 msgstr ""
 
-#: src/stored/bextract.c:335 src/filed/restore.c:566
+#: src/stored/bextract.c:335 src/filed/restore.c:569
 #, c-format
 msgid "%s stream not supported on this Client.\n"
 msgstr ""
@@ -7776,7 +7857,7 @@ msgid "Seek error on %s: %s\n"
 msgstr ""
 
 #: src/stored/bextract.c:429 src/stored/bextract.c:494
-#: src/filed/restore.c:1329
+#: src/filed/restore.c:1335
 #, c-format
 msgid "Seek to %s error on %s: ERR=%s\n"
 msgstr ""
@@ -7786,16 +7867,16 @@ msgstr ""
 msgid "Uncompression error. ERR=%d\n"
 msgstr ""
 
-#: src/stored/bextract.c:462 src/filed/restore.c:1444
+#: src/stored/bextract.c:462 src/filed/restore.c:1450
 msgid "GZIP data stream found, but GZIP not configured!\n"
 msgstr ""
 
-#: src/stored/bextract.c:517 src/filed/restore.c:1370
+#: src/stored/bextract.c:517 src/filed/restore.c:1376
 #, c-format
 msgid "Compressed header version error. version=0x%x\n"
 msgstr ""
 
-#: src/stored/bextract.c:522 src/filed/restore.c:1375
+#: src/stored/bextract.c:522 src/filed/restore.c:1381
 #, c-format
 msgid "Compressed header size error. comp_len=%d, msglen=%d\n"
 msgstr ""
@@ -7805,7 +7886,7 @@ msgstr ""
 msgid "LZO uncompression error. ERR=%d\n"
 msgstr ""
 
-#: src/stored/bextract.c:556 src/filed/restore.c:1408
+#: src/stored/bextract.c:556 src/filed/restore.c:1414
 #, c-format
 msgid "Compression algorithm 0x%x found, but not supported!\n"
 msgstr ""
@@ -7814,12 +7895,12 @@ msgstr ""
 msgid "Got Program Name or Data Stream. Ignored.\n"
 msgstr ""
 
-#: src/stored/bextract.c:592 src/filed/restore.c:325 src/filed/restore.c:1027
+#: src/stored/bextract.c:592 src/filed/restore.c:328 src/filed/restore.c:1033
 #, c-format
 msgid "Unknown stream=%d ignored. This shouldn't happen!\n"
 msgstr ""
 
-#: src/stored/bcopy.c:76
+#: src/stored/bcopy.c:74
 #, c-format
 msgid ""
 "\n"
@@ -7839,48 +7920,48 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/bcopy.c:204 src/stored/device.c:298 src/stored/btape.c:473
+#: src/stored/bcopy.c:202 src/stored/device.c:298 src/stored/btape.c:473
 #, c-format
 msgid "dev open failed: %s\n"
 msgstr ""
 
-#: src/stored/bcopy.c:219
+#: src/stored/bcopy.c:217
 msgid "Write of last block failed.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:223
+#: src/stored/bcopy.c:221
 #, c-format
 msgid "%u Jobs copied. %u records copied.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:240 src/stored/bscan.c:428
+#: src/stored/bcopy.c:238 src/stored/bscan.c:428
 #, c-format
 msgid "Record: SessId=%u SessTim=%u FileIndex=%d Stream=%d len=%u\n"
 msgstr ""
 
-#: src/stored/bcopy.c:256
+#: src/stored/bcopy.c:254
 msgid "Volume is prelabeled. This volume cannot be copied.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:259
+#: src/stored/bcopy.c:257
 msgid "Volume label not copied.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:265
+#: src/stored/bcopy.c:263
 msgid "Copy skipped. Record does not match BSR filter.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:282 src/stored/bcopy.c:290 src/stored/bcopy.c:318
-#: src/stored/btape.c:2754
+#: src/stored/bcopy.c:280 src/stored/bcopy.c:288 src/stored/bcopy.c:316
+#: src/stored/btape.c:2756
 #, c-format
 msgid "Cannot fixup device error. %s\n"
 msgstr ""
 
-#: src/stored/bcopy.c:296
+#: src/stored/bcopy.c:294
 msgid "EOM label not copied.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:299
+#: src/stored/bcopy.c:297
 msgid "EOT label not copied.\n"
 msgstr ""
 
@@ -7918,19 +7999,14 @@ msgstr ""
 msgid "Next Volume part already exists on DVD. Cannot continue: %s\n"
 msgstr ""
 
-#: src/stored/dvd.c:377
-#, c-format
-msgid "open_next_part can't unlink existing part %s, ERR=%s\n"
-msgstr ""
-
-#: src/stored/dvd.c:583
+#: src/stored/dvd.c:563
 #, c-format
 msgid ""
 "Error writing. Current part less than total number of parts (%d/%d, device="
 "%s)\n"
 msgstr ""
 
-#: src/stored/dvd.c:590
+#: src/stored/dvd.c:570
 #, c-format
 msgid "Unable to write last on %s: ERR=%s\n"
 msgstr ""
@@ -8009,125 +8085,125 @@ msgstr ""
 msgid "Unexpected Tape is Off-line\n"
 msgstr ""
 
-#: src/stored/acquire.c:70
+#: src/stored/acquire.c:74
 #, c-format
 msgid "Acquire read: num_writers=%d not zero. Job %d canceled.\n"
 msgstr ""
 
-#: src/stored/acquire.c:79
+#: src/stored/acquire.c:83
 #, c-format
 msgid "No volumes specified for reading. Job %s canceled.\n"
 msgstr ""
 
-#: src/stored/acquire.c:88
+#: src/stored/acquire.c:92
 #, c-format
 msgid "Logic error: no next volume to read. Numvol=%d Curvol=%d\n"
 msgstr ""
 
-#: src/stored/acquire.c:95 src/stored/acquire.c:163 src/stored/acquire.c:431
-msgid "generate_plugin_event(bsdEventDeviceOpen) Failed\n"
-msgstr ""
-
-#: src/stored/acquire.c:119
+#: src/stored/acquire.c:118
 #, c-format
 msgid ""
 "Changing read device. Want Media Type=\"%s\" have=\"%s\"\n"
 "  device=%s\n"
 msgstr ""
 
-#: src/stored/acquire.c:159
+#: src/stored/acquire.c:162
 #, c-format
 msgid "Media Type change.  New read device %s chosen.\n"
 msgstr ""
 
-#: src/stored/acquire.c:175
+#: src/stored/acquire.c:174
 #, c-format
 msgid "No suitable device found to read Volume \"%s\"\n"
 msgstr ""
 
-#: src/stored/acquire.c:214
+#: src/stored/acquire.c:213
 #, c-format
 msgid "Job %s canceled.\n"
 msgstr ""
 
-#: src/stored/acquire.c:232
+#: src/stored/acquire.c:231
 #, c-format
 msgid "Read open device %s Volume \"%s\" failed: ERR=%s\n"
 msgstr ""
 
-#: src/stored/acquire.c:322
+#: src/stored/acquire.c:321
 #, c-format
 msgid "Too many errors trying to mount device %s for reading.\n"
 msgstr ""
 
-#: src/stored/acquire.c:330
+#: src/stored/acquire.c:329
 #, c-format
 msgid "Ready to read from volume \"%s\" on device %s.\n"
 msgstr ""
 
-#: src/stored/acquire.c:383
+#: src/stored/acquire.c:381
 #, c-format
 msgid "Want to append, but device %s is busy reading.\n"
 msgstr ""
 
-#: src/stored/acquire.c:416
+#: src/stored/acquire.c:414
 #, c-format
 msgid "Could not ready device %s for append.\n"
 msgstr ""
 
-#: src/stored/acquire.c:508 src/stored/spool.c:321 src/stored/block.c:368
-#: src/stored/block.c:738 src/stored/block.c:812
+#: src/stored/acquire.c:501 src/stored/spool.c:321 src/stored/block.c:386
+#: src/stored/block.c:769 src/stored/block.c:847
 #, c-format
 msgid "Could not create JobMedia record for Volume=\"%s\" Job=%s\n"
 msgstr ""
 
-#: src/stored/acquire.c:559
+#: src/stored/acquire.c:552
 #, c-format
 msgid "Alert: %s"
 msgstr ""
 
-#: src/stored/acquire.c:567
+#: src/stored/acquire.c:560
 #, c-format
 msgid "3997 Bad alert command: %s: ERR=%s.\n"
 msgstr ""
 
-#: src/stored/acquire.c:637 src/stored/dev.c:263 src/stored/dev.c:281
-#: src/stored/dev.c:287 src/stored/dev.c:298 src/lib/openssl.c:122
-#: src/lib/openssl.c:181
+#: src/stored/acquire.c:629 src/stored/dev.c:270 src/stored/dev.c:311
+#: src/lib/openssl.c:122 src/lib/openssl.c:181
 #, c-format
 msgid "Unable to init mutex: ERR=%s\n"
 msgstr ""
 
-#: src/stored/askdir.c:178
+#: src/stored/acquire.c:635
+#, fuzzy, c-format
+msgid "Unable to init r_mutex: ERR=%s\n"
+msgstr "Kan job cond variabele niet initialiseren: ERR=%s\n"
+
+#: src/stored/askdir.c:179
 msgid "Network error on bnet_recv in req_vol_info.\n"
 msgstr ""
 
-#: src/stored/askdir.c:196
+#: src/stored/askdir.c:197
 #, c-format
 msgid "Error getting Volume info: %s"
 msgstr ""
 
-#: src/stored/askdir.c:374
+#: src/stored/askdir.c:376
 #, c-format
 msgid "Didn't get vol info vol=%s: ERR=%s"
 msgstr ""
 
-#: src/stored/askdir.c:429
+#: src/stored/askdir.c:432
 #, c-format
 msgid "Error creating JobMedia record: ERR=%s\n"
 msgstr ""
 
-#: src/stored/askdir.c:436
+#: src/stored/askdir.c:439
 #, c-format
 msgid "Error creating JobMedia record: %s\n"
 msgstr ""
 
-#: src/stored/askdir.c:519
+#: src/stored/askdir.c:522
 #, c-format
 msgid "Job %s canceled while waiting for mount on Storage Device \"%s\".\n"
 msgstr ""
 
-#: src/stored/askdir.c:530
+#: src/stored/askdir.c:533
 #, c-format
 msgid ""
 "Job %s is waiting. Cannot find any appendable volumes.\n"
@@ -8137,38 +8213,38 @@ msgid ""
 "    Media type:   %s\n"
 msgstr ""
 
-#: src/stored/askdir.c:556 src/stored/askdir.c:658
+#: src/stored/askdir.c:558 src/stored/askdir.c:658
 #, c-format
 msgid "Max time exceeded waiting to mount Storage Device %s for Job %s\n"
 msgstr ""
 
-#: src/stored/askdir.c:566
+#: src/stored/askdir.c:568
 msgid "pthread error in mount_next_volume.\n"
 msgstr ""
 
-#: src/stored/askdir.c:600
+#: src/stored/askdir.c:601
 msgid "Cannot request another volume: no volume name given.\n"
 msgstr ""
 
-#: src/stored/askdir.c:606
+#: src/stored/askdir.c:607
 #, c-format
 msgid "Job %s canceled while waiting for mount on Storage Device %s.\n"
 msgstr ""
 
-#: src/stored/askdir.c:623
+#: src/stored/askdir.c:624
 #, c-format
 msgid ""
-"Please mount Volume \"%s\" or label a new one for:\n"
+"Please mount append Volume \"%s\" or label a new one for:\n"
 "    Job:          %s\n"
 "    Storage:      %s\n"
 "    Pool:         %s\n"
 "    Media type:   %s\n"
 msgstr ""
 
-#: src/stored/askdir.c:629
+#: src/stored/askdir.c:630
 #, c-format
 msgid ""
-"Please mount Volume \"%s\" for:\n"
+"Please mount read Volume \"%s\" for:\n"
 "    Job:          %s\n"
 "    Storage:      %s\n"
 "    Pool:         %s\n"
@@ -8184,11 +8260,11 @@ msgstr ""
 msgid "unknown: %d"
 msgstr ""
 
-#: src/stored/record.c:424
+#: src/stored/record.c:392
 msgid "Damaged buffer\n"
 msgstr ""
 
-#: src/stored/record.c:600
+#: src/stored/record.c:670
 #, c-format
 msgid "Sanity check failed. maxlen=%d datalen=%d. Block discarded.\n"
 msgstr ""
@@ -8222,117 +8298,111 @@ msgstr ""
 msgid "No Changer Command given for device %s. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:84
-#, c-format
-msgid ""
-"Media Type not the same for all devices in changer %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:154
+#: src/stored/autochanger.c:139
 #, c-format
 msgid "No slot defined in catalog (slot=%d) for Volume \"%s\" on %s.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:156
+#: src/stored/autochanger.c:141
 msgid "Cartridge change or \"update slots\" may be required.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:162
+#: src/stored/autochanger.c:147
 #, c-format
 msgid "No \"Changer Device\" for %s. Manual load of Volume may be required.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:169
+#: src/stored/autochanger.c:154
 #, c-format
 msgid "No \"Changer Command\" for %s. Manual load of Volume may be requird.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:200
+#: src/stored/autochanger.c:185
 #, c-format
 msgid "3304 Issuing autochanger \"load slot %d, drive %d\" command.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:208
+#: src/stored/autochanger.c:193
 #, c-format
 msgid "3305 Autochanger \"load slot %d, drive %d\", status is OK.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:217
+#: src/stored/autochanger.c:206
 #, c-format
 msgid ""
 "3992 Bad autochanger \"load slot %d, drive %d\": ERR=%s.\n"
 "Results=%s\n"
 msgstr ""
 
-#: src/stored/autochanger.c:280
+#: src/stored/autochanger.c:268
 #, c-format
 msgid "3301 Issuing autochanger \"loaded? drive %d\" command.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:292
+#: src/stored/autochanger.c:280
 #, c-format
 msgid "3302 Autochanger \"loaded? drive %d\", result is Slot %d.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:299
+#: src/stored/autochanger.c:287
 #, c-format
 msgid "3302 Autochanger \"loaded? drive %d\", result: nothing loaded.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:311
+#: src/stored/autochanger.c:299
 #, c-format
 msgid ""
 "3991 Bad autochanger \"loaded? drive %d\" command: ERR=%s.\n"
 "Results=%s\n"
 msgstr ""
 
-#: src/stored/autochanger.c:328
+#: src/stored/autochanger.c:316
 #, c-format
 msgid "Lock failure on autochanger. ERR=%s\n"
 msgstr ""
 
-#: src/stored/autochanger.c:342
+#: src/stored/autochanger.c:330
 #, c-format
 msgid "Unlock failure on autochanger. ERR=%s\n"
 msgstr ""
 
-#: src/stored/autochanger.c:386 src/stored/autochanger.c:508
+#: src/stored/autochanger.c:374 src/stored/autochanger.c:523
 #, c-format
 msgid "3307 Issuing autochanger \"unload slot %d, drive %d\" command.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:399
+#: src/stored/autochanger.c:387
 #, c-format
 msgid ""
 "3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s\n"
 "Results=%s\n"
 msgstr ""
 
-#: src/stored/autochanger.c:465
+#: src/stored/autochanger.c:473
 #, c-format
 msgid "Volume \"%s\" wanted on %s is in use by device %s\n"
 msgstr ""
 
-#: src/stored/autochanger.c:526
+#: src/stored/autochanger.c:541
 #, c-format
-msgid "3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
+msgid "3997 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:570
+#: src/stored/autochanger.c:585
 #, c-format
 msgid "3993 Device %s not an autochanger device.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:591
+#: src/stored/autochanger.c:612
 #, c-format
 msgid "3306 Issuing autochanger \"%s\" command.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:594
+#: src/stored/autochanger.c:615
 msgid "3996 Open bpipe failed.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:621 src/console/console.c:1458
+#: src/stored/autochanger.c:642 src/console/console.c:1458
 #, c-format
 msgid "Autochanger error: ERR=%s\n"
 msgstr ""
@@ -8343,7 +8413,7 @@ msgid ""
 "\n"
 "Version: %s (%s)\n"
 "\n"
-"Usage: stored [options] [-c config_file] [config_file]\n"
+"Usage: bacula-sd [options] [-c config_file] [config_file]\n"
 "        -c <file>   use <file> as configuration file\n"
 "        -d <nn>     set debug level to <nn>\n"
 "        -dt         print timestamp in debug output\n"
@@ -8426,17 +8496,17 @@ msgid ""
 "using \"TLS Verify Peer\".\n"
 msgstr ""
 
-#: src/stored/stored.c:511
+#: src/stored/stored.c:568
 #, c-format
 msgid "Could not initialize %s\n"
 msgstr ""
 
-#: src/stored/stored.c:525
+#: src/stored/stored.c:582
 #, c-format
 msgid "Could not open device %s\n"
 msgstr ""
 
-#: src/stored/stored.c:539
+#: src/stored/stored.c:596
 #, c-format
 msgid "Could not mount device %s\n"
 msgstr ""
@@ -8466,7 +8536,7 @@ msgstr ""
 msgid "Catastrophic error. Cannot write overflow block to device %s. ERR=%s"
 msgstr ""
 
-#: src/stored/device.c:327 src/stored/dev.c:499
+#: src/stored/device.c:327 src/stored/dev.c:512
 #, c-format
 msgid "Unable to open device %s: ERR=%s\n"
 msgstr ""
@@ -8514,32 +8584,32 @@ msgstr ""
 msgid "Attempt to open read on non-open session.\n"
 msgstr ""
 
-#: src/stored/mount.c:96
+#: src/stored/mount.c:98
 #, c-format
 msgid "Too many errors trying to mount device %s.\n"
 msgstr ""
 
-#: src/stored/mount.c:104
+#: src/stored/mount.c:106
 #, c-format
 msgid "Job %d canceled.\n"
 msgstr ""
 
-#: src/stored/mount.c:280
+#: src/stored/mount.c:282
 #, c-format
 msgid "Volume \"%s\" previously written, moving to end of data.\n"
 msgstr ""
 
-#: src/stored/mount.c:286
+#: src/stored/mount.c:288
 #, c-format
 msgid "Unable to position to end of data on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/mount.c:408 src/stored/mount.c:730
+#: src/stored/mount.c:411 src/stored/mount.c:737
 #, c-format
 msgid "Volume \"%s\" not on device %s.\n"
 msgstr ""
 
-#: src/stored/mount.c:441
+#: src/stored/mount.c:444
 #, c-format
 msgid ""
 "Director wanted Volume \"%s\".\n"
@@ -8547,24 +8617,24 @@ msgid ""
 "    %s"
 msgstr ""
 
-#: src/stored/mount.c:596
+#: src/stored/mount.c:603
 #, c-format
 msgid "Ready to append to end of Volume \"%s\" part=%d size=%s\n"
 msgstr ""
 
-#: src/stored/mount.c:600
+#: src/stored/mount.c:607
 #, c-format
 msgid ""
 "Bacula cannot write on DVD Volume \"%s\" because: The sizes do not match! "
 "Volume=%s Catalog=%s\n"
 msgstr ""
 
-#: src/stored/mount.c:614
+#: src/stored/mount.c:621
 #, c-format
 msgid "Ready to append to end of Volume \"%s\" at file=%d.\n"
 msgstr ""
 
-#: src/stored/mount.c:617
+#: src/stored/mount.c:624
 #, c-format
 msgid ""
 "For Volume \"%s\":\n"
@@ -8572,23 +8642,23 @@ msgid ""
 "Correcting Catalog\n"
 msgstr ""
 
-#: src/stored/mount.c:624 src/stored/mount.c:652
+#: src/stored/mount.c:631 src/stored/mount.c:659
 msgid "Error updating Catalog\n"
 msgstr ""
 
-#: src/stored/mount.c:629
+#: src/stored/mount.c:636
 #, c-format
 msgid ""
 "Bacula cannot write on tape Volume \"%s\" because:\n"
 "The number of files mismatch! Volume=%u Catalog=%u\n"
 msgstr ""
 
-#: src/stored/mount.c:640
+#: src/stored/mount.c:647
 #, c-format
 msgid "Ready to append to end of Volume \"%s\" size=%s\n"
 msgstr ""
 
-#: src/stored/mount.c:644
+#: src/stored/mount.c:651
 #, c-format
 msgid ""
 "For Volume \"%s\":\n"
@@ -8596,46 +8666,46 @@ msgid ""
 "Correcting Catalog\n"
 msgstr ""
 
-#: src/stored/mount.c:657
+#: src/stored/mount.c:664
 #, c-format
 msgid ""
 "Bacula cannot write on disk Volume \"%s\" because: The sizes do not match! "
 "Volume=%s Catalog=%s\n"
 msgstr ""
 
-#: src/stored/mount.c:720
+#: src/stored/mount.c:727
 #, c-format
 msgid "Labeled new Volume \"%s\" on device %s.\n"
 msgstr ""
 
-#: src/stored/mount.c:725
+#: src/stored/mount.c:732
 #, c-format
 msgid "Device %s not configured to autolabel Volumes.\n"
 msgstr ""
 
-#: src/stored/mount.c:744
+#: src/stored/mount.c:751
 #, c-format
 msgid "Marking Volume \"%s\" in Error in Catalog.\n"
 msgstr ""
 
-#: src/stored/mount.c:761
+#: src/stored/mount.c:768
 #, c-format
 msgid ""
 "Autochanger Volume \"%s\" not found in slot %d.\n"
 "    Setting InChanger to zero in catalog.\n"
 msgstr ""
 
-#: src/stored/mount.c:780
+#: src/stored/mount.c:787
 msgid "Hey!!!!! WroteVol non-zero !!!!!\n"
 msgstr ""
 
-#: src/stored/mount.c:827
+#: src/stored/mount.c:834
 #, c-format
 msgid ""
 "Invalid tape position on volume \"%s\" on device %s. Expected %d, got %d\n"
 msgstr ""
 
-#: src/stored/mount.c:864 src/stored/btape.c:3120
+#: src/stored/mount.c:875 src/stored/btape.c:3122
 #, c-format
 msgid "Cannot open Dev=%s, Vol=%s\n"
 msgstr ""
@@ -8721,7 +8791,7 @@ msgid ""
 "Despooling elapsed time = %02d:%02d:%02d, Transfer rate = %s Bytes/second\n"
 msgstr ""
 
-#: src/stored/spool.c:348 src/stored/spool.c:546 src/stored/spool.c:592
+#: src/stored/spool.c:348 src/stored/spool.c:549 src/stored/spool.c:595
 #, c-format
 msgid "Ftruncate spool file failed: ERR=%s\n"
 msgstr ""
@@ -8751,77 +8821,86 @@ msgstr ""
 msgid "Spool data read error. Wanted %u bytes, got %d\n"
 msgstr ""
 
-#: src/stored/spool.c:487
-msgid "User specified spool size reached.\n"
+#: src/stored/spool.c:480
+#, c-format
+msgid ""
+"User specified Job spool size reached: JobSpoolSize=%s MaxJobSpoolSize=%s\n"
+msgstr ""
+
+#: src/stored/spool.c:485
+#, c-format
+msgid ""
+"User specified Device spool size reached: DevSpoolSize=%s MaxDevSpoolSize="
+"%s\n"
 msgstr ""
 
-#: src/stored/spool.c:489
+#: src/stored/spool.c:492
 msgid "Bad return from despool in write_block.\n"
 msgstr ""
 
-#: src/stored/spool.c:497
+#: src/stored/spool.c:500
 msgid "Spooling data again ...\n"
 msgstr ""
 
-#: src/stored/spool.c:529
+#: src/stored/spool.c:532
 #, c-format
 msgid "Error writing header to spool file. ERR=%s\n"
 msgstr ""
 
-#: src/stored/spool.c:534
+#: src/stored/spool.c:537
 #, c-format
 msgid ""
 "Error writing header to spool file. Disk probably full. Attempting recovery. "
 "Wanted to write=%d got=%d\n"
 msgstr ""
 
-#: src/stored/spool.c:552 src/stored/spool.c:598
+#: src/stored/spool.c:555 src/stored/spool.c:601
 msgid "Fatal despooling error."
 msgstr ""
 
-#: src/stored/spool.c:560
+#: src/stored/spool.c:563
 msgid "Retrying after header spooling error failed.\n"
 msgstr ""
 
-#: src/stored/spool.c:576
+#: src/stored/spool.c:579
 #, c-format
 msgid "Error writing data to spool file. ERR=%s\n"
 msgstr ""
 
-#: src/stored/spool.c:609
+#: src/stored/spool.c:612
 msgid "Retrying after data spooling error failed.\n"
 msgstr ""
 
-#: src/stored/spool.c:679
+#: src/stored/spool.c:682
 msgid "Network error on BlastAttributes.\n"
 msgstr ""
 
-#: src/stored/spool.c:703 src/stored/spool.c:727
+#: src/stored/spool.c:706 src/stored/spool.c:730
 #, c-format
 msgid "Fseek on attributes file failed: ERR=%s\n"
 msgstr ""
 
-#: src/stored/spool.c:715
+#: src/stored/spool.c:718
 #, c-format
 msgid "Truncate on attributes file failed: ERR=%s\n"
 msgstr ""
 
-#: src/stored/spool.c:739
+#: src/stored/spool.c:742
 #, c-format
 msgid "Sending spooled attrs to the Director. Despooling %s bytes ...\n"
 msgstr ""
 
-#: src/stored/spool.c:765
+#: src/stored/spool.c:768
 #, c-format
 msgid "fopen attr spool file %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/stored/lock.c:235
+#: src/stored/lock.c:405
 #, c-format
 msgid "pthread_cond_wait failure. ERR=%s\n"
 msgstr ""
 
-#: src/stored/lock.c:335
+#: src/stored/lock.c:504
 msgid "unknown blocked code"
 msgstr ""
 
@@ -8890,252 +8969,267 @@ msgid ""
 "Attempt to define second \"%s\" resource named \"%s\" is not permitted.\n"
 msgstr ""
 
-#: src/stored/dev.c:119
+#: src/stored/dev.c:127
 #, c-format
 msgid "Unable to stat device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:137
+#: src/stored/dev.c:145
 #, c-format
 msgid ""
 "%s is an unknown device type. Must be tape or directory\n"
 " or have RequiresMount=yes for DVD. st_mode=%x\n"
 msgstr ""
 
-#: src/stored/dev.c:147
+#: src/stored/dev.c:155
 msgid "DVD support is now deprecated\n"
 msgstr ""
 
-#: src/stored/dev.c:224
+#: src/stored/dev.c:231
 #, c-format
 msgid "Unable to stat mount point %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:229
+#: src/stored/dev.c:236
 msgid ""
 "Mount and unmount commands must defined for a device which requires mount.\n"
 msgstr ""
 
-#: src/stored/dev.c:240
+#: src/stored/dev.c:247
 #, c-format
 msgid "Min block size > max on device %s\n"
 msgstr ""
 
-#: src/stored/dev.c:244
+#: src/stored/dev.c:251
 #, c-format
 msgid "Block size %u on device %s is too large, using default %u\n"
 msgstr ""
 
-#: src/stored/dev.c:249
+#: src/stored/dev.c:256
 #, c-format
 msgid "Max block size %u not multiple of device %s block size=%d.\n"
 msgstr ""
 
-#: src/stored/dev.c:253
+#: src/stored/dev.c:260
 #, c-format
 msgid "Max Vol Size < 8 * Max Block Size for device %s\n"
 msgstr ""
 
-#: src/stored/dev.c:269 src/stored/dev.c:275
+#: src/stored/dev.c:276 src/stored/dev.c:282
 #, c-format
 msgid "Unable to init cond variable: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:403
+#: src/stored/dev.c:288
+#, fuzzy, c-format
+msgid "Unable to init spool mutex: ERR=%s\n"
+msgstr "Kan job cond variabele niet initialiseren: ERR=%s\n"
+
+#: src/stored/dev.c:294
+#, fuzzy, c-format
+msgid "Unable to init acquire mutex: ERR=%s\n"
+msgstr "Kan job cond variabele niet initialiseren: ERR=%s\n"
+
+#: src/stored/dev.c:300
+#, fuzzy, c-format
+msgid "Unable to init read acquire mutex: ERR=%s\n"
+msgstr "Kan job cond variabele niet initialiseren: ERR=%s\n"
+
+#: src/stored/dev.c:416
 msgid "Illegal mode given to open dev.\n"
 msgstr ""
 
-#: src/stored/dev.c:538
+#: src/stored/dev.c:551
 #, c-format
 msgid "Could not open file device %s. No Volume name given.\n"
 msgstr ""
 
-#: src/stored/dev.c:561
+#: src/stored/dev.c:574
 #, c-format
 msgid "Could not open: %s, ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:626
+#: src/stored/dev.c:639
 #, c-format
 msgid "No tape loaded or drive offline on %s.\n"
 msgstr ""
 
-#: src/stored/dev.c:636
+#: src/stored/dev.c:649
 #, c-format
 msgid "Rewind error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:646 src/stored/dev.c:724 src/stored/dev.c:865
-#: src/stored/dev.c:1454
+#: src/stored/dev.c:659 src/stored/dev.c:737 src/stored/dev.c:878
+#: src/stored/dev.c:1469
 #, c-format
 msgid "lseek error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:695
+#: src/stored/dev.c:708
 #, c-format
 msgid "Bad call to eod. Device %s not open\n"
 msgstr ""
 
-#: src/stored/dev.c:762
+#: src/stored/dev.c:775
 #, c-format
 msgid "ioctl MTEOM error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:772 src/stored/dev.c:906
+#: src/stored/dev.c:785 src/stored/dev.c:919
 #, c-format
 msgid "ioctl MTIOCGET error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:852
+#: src/stored/dev.c:865
 msgid "Bad device call. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:864
+#: src/stored/dev.c:877
 #, c-format
 msgid "Seek error: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:901
+#: src/stored/dev.c:914
 msgid " Bacula status:"
 msgstr ""
 
-#: src/stored/dev.c:902 src/stored/dev.c:985 src/stored/dev.c:987
+#: src/stored/dev.c:915 src/stored/dev.c:998 src/stored/dev.c:1000
 #, c-format
 msgid " file=%d block=%d\n"
 msgstr ""
 
-#: src/stored/dev.c:910
+#: src/stored/dev.c:923
 msgid " Device status:"
 msgstr ""
 
-#: src/stored/dev.c:1009
+#: src/stored/dev.c:1022
 msgid "Bad call to load_dev. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1020 src/stored/dev.c:1033
+#: src/stored/dev.c:1033 src/stored/dev.c:1046
 #, c-format
 msgid "ioctl MTLOAD error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1064
+#: src/stored/dev.c:1077
 #, c-format
 msgid "ioctl MTOFFL error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1105
+#: src/stored/dev.c:1118
 msgid "Bad call to fsf. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1116 src/stored/dev.c:1243
+#: src/stored/dev.c:1129 src/stored/dev.c:1256
 #, c-format
 msgid "Device %s at End of Tape.\n"
 msgstr ""
 
-#: src/stored/dev.c:1147 src/stored/dev.c:1223
+#: src/stored/dev.c:1160 src/stored/dev.c:1236
 #, c-format
 msgid "ioctl MTFSF error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1194 src/stored/btape.c:1975
+#: src/stored/dev.c:1207 src/stored/btape.c:1977
 #, c-format
 msgid "read error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1272
+#: src/stored/dev.c:1285
 msgid "Bad call to bsf. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1278
+#: src/stored/dev.c:1291
 #, c-format
 msgid "Device %s cannot BSF because it is not a tape.\n"
 msgstr ""
 
-#: src/stored/dev.c:1295
+#: src/stored/dev.c:1308
 #, c-format
 msgid "ioctl MTBSF error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1314
+#: src/stored/dev.c:1327
 msgid "Bad call to fsr. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1324
+#: src/stored/dev.c:1337
 #, c-format
 msgid "ioctl MTFSR not permitted on %s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1352
+#: src/stored/dev.c:1365
 #, c-format
 msgid "ioctl MTFSR %d error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1370
+#: src/stored/dev.c:1383
 msgid "Bad call to bsr_dev. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1380
+#: src/stored/dev.c:1393
 #, c-format
 msgid "ioctl MTBSR not permitted on %s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1394
+#: src/stored/dev.c:1407
 #, c-format
 msgid "ioctl MTBSR error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1443
+#: src/stored/dev.c:1458
 msgid "Bad call to reposition. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1522
+#: src/stored/dev.c:1537
 msgid "Bad call to weof_dev. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1532
+#: src/stored/dev.c:1547
 msgid "Attempt to WEOF on non-appendable Volume\n"
 msgstr ""
 
-#: src/stored/dev.c:1550
+#: src/stored/dev.c:1565
 #, c-format
 msgid "ioctl MTWEOF error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1649
+#: src/stored/dev.c:1664
 #, c-format
 msgid "unknown func code %d"
 msgstr ""
 
-#: src/stored/dev.c:1655
+#: src/stored/dev.c:1670
 #, c-format
 msgid "I/O function \"%s\" not supported on this device.\n"
 msgstr ""
 
-#: src/stored/dev.c:1824
+#: src/stored/dev.c:1844
 #, c-format
 msgid "Unable to truncate device %s. ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:1841
+#: src/stored/dev.c:1861
 #, c-format
 msgid "Unable to stat device %s. ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:1855
+#: src/stored/dev.c:1875
 #, c-format
 msgid "Device %s doesn't support ftruncate(). Recreating file %s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1867
+#: src/stored/dev.c:1887
 #, c-format
 msgid "Could not reopen: %s, ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:1989 src/stored/dev.c:2060
+#: src/stored/dev.c:2010 src/stored/dev.c:2081
 #, c-format
 msgid "Device %s cannot be %smounted. ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:2456
+#: src/stored/dev.c:2481
 #, c-format
 msgid "Unable to set eotmodel on device %s: ERR=%s\n"
 msgstr ""
@@ -9289,7 +9383,7 @@ msgstr ""
 msgid "SOS_LABEL: PoolId mismatch for JobId=%u. DB=%d Vol=%d\n"
 msgstr ""
 
-#: src/stored/bscan.c:601 src/stored/bscan.c:1157
+#: src/stored/bscan.c:601 src/stored/bscan.c:1161
 #, c-format
 msgid "Could not find SessId=%d SessTime=%d for EOS record.\n"
 msgstr ""
@@ -9347,107 +9441,107 @@ msgstr ""
 msgid "Got Prog Data Stream record.\n"
 msgstr ""
 
-#: src/stored/bscan.c:858
+#: src/stored/bscan.c:862
 #, c-format
 msgid "Unknown stream type!!! stream=%d len=%i\n"
 msgstr ""
 
-#: src/stored/bscan.c:926
+#: src/stored/bscan.c:930
 #, c-format
 msgid "Could not create File Attributes record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:932
+#: src/stored/bscan.c:936
 #, c-format
 msgid "Created File record: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:977
+#: src/stored/bscan.c:981
 #, c-format
 msgid "Could not create media record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:981 src/stored/bscan.c:1002
+#: src/stored/bscan.c:985 src/stored/bscan.c:1006
 #, c-format
 msgid "Could not update media record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:985
+#: src/stored/bscan.c:989
 #, c-format
 msgid "Created Media record for Volume: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1006
+#: src/stored/bscan.c:1010
 #, c-format
 msgid "Updated Media record at end of Volume: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1023
+#: src/stored/bscan.c:1027
 #, c-format
 msgid "Could not create pool record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1027
+#: src/stored/bscan.c:1031
 #, c-format
 msgid "Created Pool record for Pool: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1046
+#: src/stored/bscan.c:1050
 #, c-format
 msgid "Could not get Client record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1056
+#: src/stored/bscan.c:1060
 #, c-format
 msgid "Created Client record for Client: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1073
+#: src/stored/bscan.c:1077
 #, c-format
 msgid "Fileset \"%s\" already exists.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1077
+#: src/stored/bscan.c:1081
 #, c-format
 msgid "Could not create FileSet record \"%s\". ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1082
+#: src/stored/bscan.c:1086
 #, c-format
 msgid "Created FileSet record \"%s\"\n"
 msgstr ""
 
-#: src/stored/bscan.c:1129
+#: src/stored/bscan.c:1133
 #, c-format
 msgid "Could not create JobId record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1135
+#: src/stored/bscan.c:1139
 #, c-format
 msgid "Could not update job start record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1138
+#: src/stored/bscan.c:1142
 #, c-format
 msgid "Created new JobId=%u record for original JobId=%u\n"
 msgstr ""
 
-#: src/stored/bscan.c:1191
+#: src/stored/bscan.c:1195
 #, c-format
 msgid "Could not update JobId=%u record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1196
+#: src/stored/bscan.c:1200
 #, c-format
 msgid "Updated Job termination record for JobId=%u Level=%s TermStat=%c\n"
 msgstr ""
 
-#: src/stored/bscan.c:1221
+#: src/stored/bscan.c:1225
 #, c-format
 msgid "Job Termination code: %d"
 msgstr ""
 
-#: src/stored/bscan.c:1226
+#: src/stored/bscan.c:1230
 #, c-format
 msgid ""
 "%s\n"
@@ -9467,45 +9561,45 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/bscan.c:1284
+#: src/stored/bscan.c:1288
 #, c-format
 msgid "Could not create JobMedia record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1288
+#: src/stored/bscan.c:1292
 #, c-format
 msgid "Created JobMedia record JobId %d, MediaId %d\n"
 msgstr ""
 
-#: src/stored/bscan.c:1304
+#: src/stored/bscan.c:1308
 #, c-format
 msgid "Could not find SessId=%d SessTime=%d for MD5/SHA1 record.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1318
+#: src/stored/bscan.c:1322
 #, c-format
 msgid "Could not add MD5/SHA1 to File record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1323
+#: src/stored/bscan.c:1327
 msgid "Updated MD5/SHA1 record\n"
 msgstr ""
 
-#: src/stored/job.c:231
+#: src/stored/job.c:234
 #, c-format
 msgid "FD connect failed: Job name not found: %s\n"
 msgstr ""
 
-#: src/stored/job.c:241
+#: src/stored/job.c:244
 #, c-format
 msgid "Hey!!!! JobId %u Job %s already authenticated.\n"
 msgstr ""
 
-#: src/stored/job.c:258
+#: src/stored/job.c:261
 msgid "Unable to authenticate File daemon\n"
 msgstr ""
 
-#: src/stored/job.c:387
+#: src/stored/job.c:390
 msgid "In free_jcr(), but still attached to device!!!!\n"
 msgstr ""
 
@@ -9623,18 +9717,18 @@ msgstr ""
 msgid "Loaded %s\n"
 msgstr ""
 
-#: src/stored/btape.c:576 src/stored/btape.c:1137 src/stored/btape.c:1210
-#: src/stored/btape.c:1290 src/stored/btape.c:1561
+#: src/stored/btape.c:576 src/stored/btape.c:1139 src/stored/btape.c:1212
+#: src/stored/btape.c:1292 src/stored/btape.c:1563
 #, c-format
 msgid "Bad status from rewind. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:579 src/stored/btape.c:1569
+#: src/stored/btape.c:579 src/stored/btape.c:1571
 #, c-format
 msgid "Rewound %s\n"
 msgstr ""
 
-#: src/stored/btape.c:605 src/stored/btape.c:1573
+#: src/stored/btape.c:605 src/stored/btape.c:1575
 #, c-format
 msgid "Bad status from weof. ERR=%s\n"
 msgstr ""
@@ -9696,20 +9790,20 @@ msgstr ""
 msgid "Do you want to continue? (y/n): "
 msgstr ""
 
-#: src/stored/btape.c:748 src/stored/btape.c:2198
+#: src/stored/btape.c:748 src/stored/btape.c:2200
 msgid "Command aborted.\n"
 msgstr ""
 
-#: src/stored/btape.c:764
+#: src/stored/btape.c:765
 #, c-format
 msgid "Block %d i=%d\n"
 msgstr ""
 
-#: src/stored/btape.c:790
+#: src/stored/btape.c:792
 msgid "Skipping read backwards test because BSR turned off.\n"
 msgstr ""
 
-#: src/stored/btape.c:794
+#: src/stored/btape.c:796
 msgid ""
 "\n"
 "=== Write, backup, and re-read test ===\n"
@@ -9723,73 +9817,73 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:807 src/stored/btape.c:818 src/stored/btape.c:829
-#: src/stored/btape.c:1147 src/stored/btape.c:1163 src/stored/btape.c:1905
-#: src/stored/btape.c:2821
+#: src/stored/btape.c:809 src/stored/btape.c:820 src/stored/btape.c:831
+#: src/stored/btape.c:1149 src/stored/btape.c:1165 src/stored/btape.c:1907
+#: src/stored/btape.c:2823
 msgid "Error writing record to block.\n"
 msgstr ""
 
-#: src/stored/btape.c:811 src/stored/btape.c:822 src/stored/btape.c:833
-#: src/stored/btape.c:1151 src/stored/btape.c:1167 src/stored/btape.c:1909
-#: src/stored/btape.c:2825
+#: src/stored/btape.c:813 src/stored/btape.c:824 src/stored/btape.c:835
+#: src/stored/btape.c:1153 src/stored/btape.c:1169 src/stored/btape.c:1911
+#: src/stored/btape.c:2827
 msgid "Error writing block to device.\n"
 msgstr ""
 
-#: src/stored/btape.c:814
+#: src/stored/btape.c:816
 #, c-format
 msgid "Wrote first record of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:825
+#: src/stored/btape.c:827
 #, c-format
 msgid "Wrote second record of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:836
+#: src/stored/btape.c:838
 #, c-format
 msgid "Wrote third record of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:843 src/stored/btape.c:848
+#: src/stored/btape.c:845 src/stored/btape.c:850
 #, c-format
 msgid "Backspace file failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:852
+#: src/stored/btape.c:854
 msgid "Backspaced over EOF OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:854
+#: src/stored/btape.c:856
 #, c-format
 msgid "Backspace record failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:857
+#: src/stored/btape.c:859
 msgid "Backspace record OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:860 src/stored/btape.c:866
+#: src/stored/btape.c:862 src/stored/btape.c:868
 #, c-format
 msgid "Read block failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:871
+#: src/stored/btape.c:873
 msgid "Bad data in record. Test failed!\n"
 msgstr ""
 
-#: src/stored/btape.c:875
+#: src/stored/btape.c:877
 msgid ""
 "\n"
 "Block re-read correct. Test succeeded!\n"
 msgstr ""
 
-#: src/stored/btape.c:876
+#: src/stored/btape.c:878
 msgid ""
 "=== End Write, backup, and re-read test ===\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:883
+#: src/stored/btape.c:885
 msgid ""
 "This is not terribly serious since Bacula only uses\n"
 "this function to verify the last block written to the\n"
@@ -9801,50 +9895,50 @@ msgid ""
 "to your Storage daemon's Device resource definition.\n"
 msgstr ""
 
-#: src/stored/btape.c:905
+#: src/stored/btape.c:907
 #, c-format
 msgid "Begin writing %i files of %sB with raw blocks of %u bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:926 src/stored/btape.c:2877
+#: src/stored/btape.c:928 src/stored/btape.c:2879
 #, c-format
 msgid "Write failed at block %u. stat=%d ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:960
+#: src/stored/btape.c:962
 #, c-format
 msgid "Begin writing %i files of %sB with blocks of %u bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:969
+#: src/stored/btape.c:971
 msgid ""
 "\n"
 "Error writing record to block.\n"
 msgstr ""
 
-#: src/stored/btape.c:973
+#: src/stored/btape.c:975
 msgid ""
 "\n"
 "Error writing block to device.\n"
 msgstr ""
 
-#: src/stored/btape.c:1028
+#: src/stored/btape.c:1030
 msgid "The file_size is too big, stop this test with Ctrl-c.\n"
 msgstr ""
 
-#: src/stored/btape.c:1056
+#: src/stored/btape.c:1058
 msgid "Test with zero data, should give the maximum throughput.\n"
 msgstr ""
 
-#: src/stored/btape.c:1068 src/stored/btape.c:1094
+#: src/stored/btape.c:1070 src/stored/btape.c:1096
 msgid "Test with random data, should give the minimum throughput.\n"
 msgstr ""
 
-#: src/stored/btape.c:1083
+#: src/stored/btape.c:1085
 msgid "Test with zero data and bacula block structure.\n"
 msgstr ""
 
-#: src/stored/btape.c:1123
+#: src/stored/btape.c:1125
 #, c-format
 msgid ""
 "\n"
@@ -9858,66 +9952,66 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1155 src/stored/btape.c:1171
+#: src/stored/btape.c:1157 src/stored/btape.c:1173
 #, c-format
 msgid "Wrote %d blocks of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:1213 src/stored/btape.c:1293
+#: src/stored/btape.c:1215 src/stored/btape.c:1295
 msgid "Rewind OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:1226 src/stored/btape.c:1345
+#: src/stored/btape.c:1228 src/stored/btape.c:1347
 msgid "Got EOF on tape.\n"
 msgstr ""
 
-#: src/stored/btape.c:1231
+#: src/stored/btape.c:1233
 #, c-format
 msgid "Read block %d failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1237
+#: src/stored/btape.c:1239
 #, c-format
 msgid "Read record failed. Block %d! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1243 src/stored/btape.c:1375
+#: src/stored/btape.c:1245 src/stored/btape.c:1377
 #, c-format
 msgid "Bad data in record. Expected %d, got %d at byte %d. Test failed!\n"
 msgstr ""
 
-#: src/stored/btape.c:1250
+#: src/stored/btape.c:1252
 #, c-format
 msgid "%d blocks re-read correctly.\n"
 msgstr ""
 
-#: src/stored/btape.c:1253 src/stored/btape.c:1382
+#: src/stored/btape.c:1255 src/stored/btape.c:1384
 msgid ""
 "=== Test Succeeded. End Write, rewind, and re-read test ===\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1281
+#: src/stored/btape.c:1283
 msgid "Block position test\n"
 msgstr ""
 
-#: src/stored/btape.c:1336
+#: src/stored/btape.c:1338
 #, c-format
 msgid "Reposition to file:block %d:%d\n"
 msgstr ""
 
-#: src/stored/btape.c:1338
+#: src/stored/btape.c:1340
 msgid "Reposition error.\n"
 msgstr ""
 
-#: src/stored/btape.c:1351
+#: src/stored/btape.c:1353
 #, c-format
 msgid ""
 "Read block %d failed! file=%d blk=%d. ERR=%s\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1353
+#: src/stored/btape.c:1355
 msgid ""
 "This may be because the tape drive block size is not\n"
 " set to variable blocking as normally used by Bacula.\n"
@@ -9931,17 +10025,17 @@ msgid ""
 " in your Device resource.\n"
 msgstr ""
 
-#: src/stored/btape.c:1369
+#: src/stored/btape.c:1371
 #, c-format
 msgid "Read record failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1380
+#: src/stored/btape.c:1382
 #, c-format
 msgid "Block %d re-read correctly.\n"
 msgstr ""
 
-#: src/stored/btape.c:1401
+#: src/stored/btape.c:1403
 msgid ""
 "\n"
 "\n"
@@ -9955,58 +10049,58 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1425
+#: src/stored/btape.c:1427
 msgid "Now moving to end of medium.\n"
 msgstr ""
 
-#: src/stored/btape.c:1427 src/stored/btape.c:1656
+#: src/stored/btape.c:1429 src/stored/btape.c:1658
 #, c-format
 msgid "We should be in file 3. I am at file %d. %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1428 src/stored/btape.c:1446 src/stored/btape.c:1645
-#: src/stored/btape.c:1657 src/stored/btape.c:1670 src/stored/btape.c:1687
+#: src/stored/btape.c:1430 src/stored/btape.c:1448 src/stored/btape.c:1647
+#: src/stored/btape.c:1659 src/stored/btape.c:1672 src/stored/btape.c:1689
 msgid "This is correct!"
 msgstr ""
 
-#: src/stored/btape.c:1428 src/stored/btape.c:1446 src/stored/btape.c:1645
-#: src/stored/btape.c:1657 src/stored/btape.c:1670 src/stored/btape.c:1687
+#: src/stored/btape.c:1430 src/stored/btape.c:1448 src/stored/btape.c:1647
+#: src/stored/btape.c:1659 src/stored/btape.c:1672 src/stored/btape.c:1689
 msgid "This is NOT correct!!!!"
 msgstr ""
 
-#: src/stored/btape.c:1434
+#: src/stored/btape.c:1436
 msgid ""
 "\n"
 "Now the important part, I am going to attempt to append to the tape.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1441
+#: src/stored/btape.c:1443
 msgid ""
 "Done appending, there should be no I/O errors\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1442
+#: src/stored/btape.c:1444
 msgid "Doing Bacula scan of blocks:\n"
 msgstr ""
 
-#: src/stored/btape.c:1444
+#: src/stored/btape.c:1446
 msgid "End scanning the tape.\n"
 msgstr ""
 
-#: src/stored/btape.c:1445 src/stored/btape.c:1669
+#: src/stored/btape.c:1447 src/stored/btape.c:1671
 #, c-format
 msgid "We should be in file 4. I am at file %d. %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1470
+#: src/stored/btape.c:1472
 msgid ""
 "\n"
 "Autochanger enabled, but no name or no command device specified.\n"
 msgstr ""
 
-#: src/stored/btape.c:1474
+#: src/stored/btape.c:1476
 msgid ""
 "\n"
 "Ah, I see you have an autochanger configured.\n"
@@ -10014,13 +10108,13 @@ msgid ""
 " that I can write on in Slot 1.\n"
 msgstr ""
 
-#: src/stored/btape.c:1477
+#: src/stored/btape.c:1479
 msgid ""
 "\n"
 "Do you wish to continue with the Autochanger test? (y/n): "
 msgstr ""
 
-#: src/stored/btape.c:1484
+#: src/stored/btape.c:1486
 msgid ""
 "\n"
 "\n"
@@ -10028,74 +10122,74 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1493
+#: src/stored/btape.c:1495
 msgid "3301 Issuing autochanger \"loaded\" command.\n"
 msgstr ""
 
-#: src/stored/btape.c:1502
+#: src/stored/btape.c:1504
 #, c-format
 msgid "3991 Bad autochanger command: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1503
+#: src/stored/btape.c:1505
 #, c-format
 msgid "3991 result=\"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1507
+#: src/stored/btape.c:1509
 #, c-format
 msgid "Slot %d loaded. I am going to unload it.\n"
 msgstr ""
 
-#: src/stored/btape.c:1509
+#: src/stored/btape.c:1511
 msgid "Nothing loaded in the drive. OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:1516
+#: src/stored/btape.c:1518
 #, c-format
 msgid "3302 Issuing autochanger \"unload %d %d\" command.\n"
 msgstr ""
 
-#: src/stored/btape.c:1521
+#: src/stored/btape.c:1523
 #, c-format
 msgid "unload status=%s %d\n"
 msgstr ""
 
-#: src/stored/btape.c:1521
+#: src/stored/btape.c:1523
 msgid "Bad"
 msgstr ""
 
-#: src/stored/btape.c:1524
+#: src/stored/btape.c:1526
 #, c-format
 msgid "3992 Bad autochanger command: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1525
+#: src/stored/btape.c:1527
 #, c-format
 msgid "3992 result=\"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1535
+#: src/stored/btape.c:1537
 #, c-format
 msgid "3303 Issuing autochanger \"load %d %d\" command.\n"
 msgstr ""
 
-#: src/stored/btape.c:1543
+#: src/stored/btape.c:1545
 #, c-format
 msgid "3303 Autochanger \"load %d %d\" status is OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:1547
+#: src/stored/btape.c:1549
 #, c-format
 msgid "3993 Bad autochanger command: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1548
+#: src/stored/btape.c:1550
 #, c-format
 msgid "3993 result=\"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1563
+#: src/stored/btape.c:1565
 msgid ""
 "\n"
 "The test failed, probably because you need to put\n"
@@ -10103,12 +10197,12 @@ msgid ""
 "Adding a 30 second sleep and trying again ...\n"
 msgstr ""
 
-#: src/stored/btape.c:1576
+#: src/stored/btape.c:1578
 #, c-format
 msgid "Wrote EOF to %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1580
+#: src/stored/btape.c:1582
 #, c-format
 msgid ""
 "\n"
@@ -10120,18 +10214,18 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1585
+#: src/stored/btape.c:1587
 msgid ""
 "\n"
 "The test autochanger worked!!\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1596
+#: src/stored/btape.c:1598
 msgid "You must correct this error or the Autochanger will not work.\n"
 msgstr ""
 
-#: src/stored/btape.c:1614
+#: src/stored/btape.c:1616
 msgid ""
 "\n"
 "\n"
@@ -10143,30 +10237,30 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1639
+#: src/stored/btape.c:1641
 msgid "Now forward spacing 1 file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1641 src/stored/btape.c:1653 src/stored/btape.c:1666
-#: src/stored/btape.c:1684 src/stored/btape.c:1860
+#: src/stored/btape.c:1643 src/stored/btape.c:1655 src/stored/btape.c:1668
+#: src/stored/btape.c:1686 src/stored/btape.c:1862
 #, c-format
 msgid "Bad status from fsr. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1644
+#: src/stored/btape.c:1646
 #, c-format
 msgid "We should be in file 1. I am at file %d. %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1651
+#: src/stored/btape.c:1653
 msgid "Now forward spacing 2 files.\n"
 msgstr ""
 
-#: src/stored/btape.c:1664
+#: src/stored/btape.c:1666
 msgid "Now forward spacing 4 files.\n"
 msgstr ""
 
-#: src/stored/btape.c:1676
+#: src/stored/btape.c:1678
 msgid ""
 "The test worked this time. Please add:\n"
 "\n"
@@ -10175,35 +10269,35 @@ msgid ""
 "to your Device resource for this drive.\n"
 msgstr ""
 
-#: src/stored/btape.c:1682
+#: src/stored/btape.c:1684
 msgid "Now forward spacing 1 more file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1686
+#: src/stored/btape.c:1688
 #, c-format
 msgid "We should be in file 5. I am at file %d. %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1691
+#: src/stored/btape.c:1693
 msgid ""
 "\n"
 "=== End Forward space files test ===\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1695
+#: src/stored/btape.c:1697
 msgid ""
 "\n"
 "The forward space file test failed.\n"
 msgstr ""
 
-#: src/stored/btape.c:1697
+#: src/stored/btape.c:1699
 msgid ""
 "You have Fast Forward Space File enabled.\n"
 "I am turning it off then retrying the test.\n"
 msgstr ""
 
-#: src/stored/btape.c:1703
+#: src/stored/btape.c:1705
 msgid ""
 "You must correct this error or Bacula will not work.\n"
 "Some systems, e.g. OpenBSD, require you to set\n"
@@ -10211,7 +10305,7 @@ msgid ""
 "in your device resource. Use with caution.\n"
 msgstr ""
 
-#: src/stored/btape.c:1737
+#: src/stored/btape.c:1739
 msgid ""
 "\n"
 "Append test failed. Attempting again.\n"
@@ -10221,7 +10315,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1745
+#: src/stored/btape.c:1747
 msgid ""
 "\n"
 "\n"
@@ -10233,14 +10327,14 @@ msgid ""
 "to your Device resource in the Storage conf file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1752
+#: src/stored/btape.c:1754
 msgid ""
 "\n"
 "\n"
 "That appears *NOT* to have corrected the problem.\n"
 msgstr ""
 
-#: src/stored/btape.c:1757
+#: src/stored/btape.c:1759
 msgid ""
 "\n"
 "\n"
@@ -10248,7 +10342,7 @@ msgid ""
 "Setting \"BSF at EOM = yes\" and retrying append test.\n"
 msgstr ""
 
-#: src/stored/btape.c:1762
+#: src/stored/btape.c:1764
 msgid ""
 "\n"
 "\n"
@@ -10261,7 +10355,7 @@ msgid ""
 "to your Device resource in the Storage conf file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1773
+#: src/stored/btape.c:1775
 msgid ""
 "\n"
 "Append test failed.\n"
@@ -10288,7 +10382,7 @@ msgid ""
 "in your device resource. Use with caution.\n"
 msgstr ""
 
-#: src/stored/btape.c:1795
+#: src/stored/btape.c:1797
 msgid ""
 "\n"
 "The above Bacula scan should have output identical to what follows.\n"
@@ -10312,111 +10406,111 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1838
+#: src/stored/btape.c:1840
 #, c-format
 msgid "Bad status from fsf. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1842
+#: src/stored/btape.c:1844
 msgid "Forward spaced 1 file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1845
+#: src/stored/btape.c:1847
 #, c-format
 msgid "Forward spaced %d files.\n"
 msgstr ""
 
-#: src/stored/btape.c:1864
+#: src/stored/btape.c:1866
 msgid "Forward spaced 1 record.\n"
 msgstr ""
 
-#: src/stored/btape.c:1867
+#: src/stored/btape.c:1869
 #, c-format
 msgid "Forward spaced %d records.\n"
 msgstr ""
 
-#: src/stored/btape.c:1912
+#: src/stored/btape.c:1914
 #, c-format
 msgid "Wrote one record of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:1914
+#: src/stored/btape.c:1916
 msgid "Wrote block to device.\n"
 msgstr ""
 
-#: src/stored/btape.c:1928
+#: src/stored/btape.c:1930
 msgid "Enter length to read: "
 msgstr ""
 
-#: src/stored/btape.c:1933
+#: src/stored/btape.c:1935
 msgid "Bad length entered, using default of 1024 bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:1942
+#: src/stored/btape.c:1944
 #, c-format
 msgid "Read of %d bytes gives stat=%d. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1965 src/stored/btape.c:2014
+#: src/stored/btape.c:1967 src/stored/btape.c:2016
 #, c-format
 msgid "End of tape\n"
 msgstr ""
 
-#: src/stored/btape.c:1970
+#: src/stored/btape.c:1972
 #, c-format
 msgid "Starting scan at file %u\n"
 msgstr ""
 
-#: src/stored/btape.c:1977
+#: src/stored/btape.c:1979
 #, c-format
 msgid "Bad status from read %d. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1980 src/stored/btape.c:1994 src/stored/btape.c:2058
-#: src/stored/btape.c:2070 src/stored/btape.c:2083 src/stored/btape.c:2099
+#: src/stored/btape.c:1982 src/stored/btape.c:1996 src/stored/btape.c:2060
+#: src/stored/btape.c:2072 src/stored/btape.c:2085 src/stored/btape.c:2101
 #, c-format
 msgid "1 block of %d bytes in file %d\n"
 msgstr ""
 
-#: src/stored/btape.c:1983 src/stored/btape.c:1997 src/stored/btape.c:2061
-#: src/stored/btape.c:2073 src/stored/btape.c:2086 src/stored/btape.c:2102
+#: src/stored/btape.c:1985 src/stored/btape.c:1999 src/stored/btape.c:2063
+#: src/stored/btape.c:2075 src/stored/btape.c:2088 src/stored/btape.c:2104
 #, c-format
 msgid "%d blocks of %d bytes in file %d\n"
 msgstr ""
 
-#: src/stored/btape.c:2005 src/stored/btape.c:2077
+#: src/stored/btape.c:2007 src/stored/btape.c:2079
 #, c-format
 msgid "End of File mark.\n"
 msgstr ""
 
-#: src/stored/btape.c:2026 src/stored/btape.c:2130
+#: src/stored/btape.c:2028 src/stored/btape.c:2132
 #, c-format
 msgid "Total files=%d, blocks=%d, bytes = %s\n"
 msgstr ""
 
-#: src/stored/btape.c:2090
+#: src/stored/btape.c:2092
 #, c-format
 msgid "Short block read.\n"
 msgstr ""
 
-#: src/stored/btape.c:2093
+#: src/stored/btape.c:2095
 #, c-format
 msgid "Error reading block. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2117
+#: src/stored/btape.c:2119
 #, c-format
 msgid ""
 "Block=%u file,blk=%u,%u blen=%u First rec FI=%s SessId=%u SessTim=%u Strm=%s "
 "rlen=%d\n"
 msgstr ""
 
-#: src/stored/btape.c:2139
+#: src/stored/btape.c:2141
 #, c-format
 msgid "Device status: %u. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2171
+#: src/stored/btape.c:2173
 #, c-format
 msgid ""
 "\n"
@@ -10442,79 +10536,79 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2189
+#: src/stored/btape.c:2191
 msgid ""
 "Do you want to run the simplified test (s) with one tape\n"
 "or the complete multiple tape (m) test: (s/m) "
 msgstr ""
 
-#: src/stored/btape.c:2192
+#: src/stored/btape.c:2194
 msgid "Simple test (single tape) selected.\n"
 msgstr ""
 
-#: src/stored/btape.c:2195
+#: src/stored/btape.c:2197
 msgid "Multiple tape test selected.\n"
 msgstr ""
 
-#: src/stored/btape.c:2237
+#: src/stored/btape.c:2239
 msgid "Wrote Start of Session label.\n"
 msgstr ""
 
-#: src/stored/btape.c:2256
+#: src/stored/btape.c:2258
 #, c-format
 msgid "%s Begin writing Bacula records to tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2258
+#: src/stored/btape.c:2260
 #, c-format
 msgid "%s Begin writing Bacula records to first tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2284
+#: src/stored/btape.c:2286
 msgid "Flush block failed.\n"
 msgstr ""
 
-#: src/stored/btape.c:2298
+#: src/stored/btape.c:2300
 #, c-format
 msgid "Wrote block=%u, file,blk=%u,%u VolBytes=%s rate=%sB/s\n"
 msgstr ""
 
-#: src/stored/btape.c:2309
+#: src/stored/btape.c:2311
 #, c-format
 msgid "%s Flush block, write EOF\n"
 msgstr ""
 
-#: src/stored/btape.c:2318
+#: src/stored/btape.c:2320
 msgid "Wrote 1000 blocks on second tape. Done.\n"
 msgstr ""
 
-#: src/stored/btape.c:2323
+#: src/stored/btape.c:2325
 msgid "Not OK\n"
 msgstr ""
 
-#: src/stored/btape.c:2347
+#: src/stored/btape.c:2349
 msgid "Job canceled.\n"
 msgstr ""
 
-#: src/stored/btape.c:2358
+#: src/stored/btape.c:2360
 msgid "Set ok=false after write_block_to_device.\n"
 msgstr ""
 
-#: src/stored/btape.c:2362
+#: src/stored/btape.c:2364
 msgid "Wrote End of Session label.\n"
 msgstr ""
 
-#: src/stored/btape.c:2386
+#: src/stored/btape.c:2388
 #, c-format
 msgid "Wrote state file last_block_num1=%d last_block_num2=%d\n"
 msgstr ""
 
-#: src/stored/btape.c:2390
+#: src/stored/btape.c:2392
 #, c-format
 msgid "Could not create state file: %s ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2401
+#: src/stored/btape.c:2403
 #, c-format
 msgid ""
 "\n"
@@ -10522,7 +10616,7 @@ msgid ""
 "%s Done filling tape at %d:%d. Now beginning re-read of tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2404
+#: src/stored/btape.c:2406
 #, c-format
 msgid ""
 "\n"
@@ -10530,23 +10624,23 @@ msgid ""
 "%s Done filling tapes at %d:%d. Now beginning re-read of first tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2410
+#: src/stored/btape.c:2412
 msgid "do_unfill failed.\n"
 msgstr ""
 
-#: src/stored/btape.c:2415
+#: src/stored/btape.c:2417
 #, c-format
 msgid "%s: Error during test.\n"
 msgstr ""
 
-#: src/stored/btape.c:2450
+#: src/stored/btape.c:2452
 msgid ""
 "\n"
 "The state file level has changed. You must redo\n"
 "the fill command.\n"
 msgstr ""
 
-#: src/stored/btape.c:2457
+#: src/stored/btape.c:2459
 #, c-format
 msgid ""
 "\n"
@@ -10554,95 +10648,95 @@ msgid ""
 "You must redo the fill command.\n"
 msgstr ""
 
-#: src/stored/btape.c:2523
+#: src/stored/btape.c:2525
 msgid "Mount first tape. Press enter when ready: "
 msgstr ""
 
-#: src/stored/btape.c:2539
+#: src/stored/btape.c:2541
 msgid "Rewinding.\n"
 msgstr ""
 
-#: src/stored/btape.c:2544
+#: src/stored/btape.c:2546
 #, c-format
 msgid "Reading the first 10000 records from %u:%u.\n"
 msgstr ""
 
-#: src/stored/btape.c:2548 src/stored/btape.c:2616
+#: src/stored/btape.c:2550 src/stored/btape.c:2618
 #, c-format
 msgid "Reposition from %u:%u to %u:%u\n"
 msgstr ""
 
-#: src/stored/btape.c:2551 src/stored/btape.c:2603 src/stored/btape.c:2619
+#: src/stored/btape.c:2553 src/stored/btape.c:2605 src/stored/btape.c:2621
 #, c-format
 msgid "Reposition error. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2554
+#: src/stored/btape.c:2556
 #, c-format
 msgid "Reading block %u.\n"
 msgstr ""
 
-#: src/stored/btape.c:2556 src/stored/btape.c:2608 src/stored/btape.c:2624
+#: src/stored/btape.c:2558 src/stored/btape.c:2610 src/stored/btape.c:2626
 #, c-format
 msgid "Error reading block: ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2561
+#: src/stored/btape.c:2563
 msgid ""
 "\n"
 "The last block on the tape matches. Test succeeded.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2564
+#: src/stored/btape.c:2566
 msgid ""
 "\n"
 "The last block of the first tape matches.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2588
+#: src/stored/btape.c:2590
 msgid "Mount second tape. Press enter when ready: "
 msgstr ""
 
-#: src/stored/btape.c:2601
+#: src/stored/btape.c:2603
 #, c-format
 msgid "Reposition from %u:%u to 0:1\n"
 msgstr ""
 
-#: src/stored/btape.c:2606 src/stored/btape.c:2622
+#: src/stored/btape.c:2608 src/stored/btape.c:2624
 #, c-format
 msgid "Reading block %d.\n"
 msgstr ""
 
-#: src/stored/btape.c:2612
+#: src/stored/btape.c:2614
 msgid ""
 "\n"
 "The first block on the second tape matches.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2628
+#: src/stored/btape.c:2630
 msgid ""
 "\n"
 "The last block on the second tape matches. Test succeeded.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2645
+#: src/stored/btape.c:2647
 #, c-format
 msgid "10000 records read now at %d:%d\n"
 msgstr ""
 
-#: src/stored/btape.c:2671 src/stored/btape.c:2682 src/stored/btape.c:2727
+#: src/stored/btape.c:2673 src/stored/btape.c:2684 src/stored/btape.c:2729
 msgid "Last block written"
 msgstr ""
 
-#: src/stored/btape.c:2673 src/stored/btape.c:2683
+#: src/stored/btape.c:2675 src/stored/btape.c:2685
 msgid "Block read back"
 msgstr ""
 
-#: src/stored/btape.c:2674
+#: src/stored/btape.c:2676
 #, c-format
 msgid ""
 "\n"
@@ -10650,7 +10744,7 @@ msgid ""
 "The blocks differ at byte %u\n"
 msgstr ""
 
-#: src/stored/btape.c:2675
+#: src/stored/btape.c:2677
 msgid ""
 "\n"
 "\n"
@@ -10660,172 +10754,172 @@ msgid ""
 "to write multi-tape Volumes.!!!!\n"
 msgstr ""
 
-#: src/stored/btape.c:2711
+#: src/stored/btape.c:2713
 #, c-format
 msgid "Last block at: %u:%u this_dev_block_num=%d\n"
 msgstr ""
 
-#: src/stored/btape.c:2725
+#: src/stored/btape.c:2727
 #, c-format
 msgid "Block not written: FileIndex=%u blk_block=%u Size=%u\n"
 msgstr ""
 
-#: src/stored/btape.c:2729
+#: src/stored/btape.c:2731
 msgid "Block not written"
 msgstr ""
 
-#: src/stored/btape.c:2744
+#: src/stored/btape.c:2746
 #, c-format
 msgid "End of tape %d:%d. Volume Bytes=%s. Write rate = %sB/s\n"
 msgstr ""
 
-#: src/stored/btape.c:2795
+#: src/stored/btape.c:2797
 msgid "Test writing blocks of 64512 bytes to tape.\n"
 msgstr ""
 
-#: src/stored/btape.c:2797
+#: src/stored/btape.c:2799
 msgid "How many blocks do you want to write? (1000): "
 msgstr ""
 
-#: src/stored/btape.c:2814
+#: src/stored/btape.c:2816
 #, c-format
 msgid "Begin writing %d Bacula blocks to tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2857
+#: src/stored/btape.c:2859
 #, c-format
 msgid "Begin writing raw blocks of %u bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:2888
+#: src/stored/btape.c:2890
 msgid "test autochanger"
 msgstr ""
 
-#: src/stored/btape.c:2889
+#: src/stored/btape.c:2891
 msgid "backspace file"
 msgstr ""
 
-#: src/stored/btape.c:2890
+#: src/stored/btape.c:2892
 msgid "backspace record"
 msgstr ""
 
-#: src/stored/btape.c:2891
+#: src/stored/btape.c:2893
 msgid "list device capabilities"
 msgstr ""
 
-#: src/stored/btape.c:2892
+#: src/stored/btape.c:2894
 msgid "clear tape errors"
 msgstr ""
 
-#: src/stored/btape.c:2893
+#: src/stored/btape.c:2895
 msgid "go to end of Bacula data for append"
 msgstr ""
 
-#: src/stored/btape.c:2894
+#: src/stored/btape.c:2896
 msgid "go to the physical end of medium"
 msgstr ""
 
-#: src/stored/btape.c:2895
+#: src/stored/btape.c:2897
 msgid "fill tape, write onto second volume"
 msgstr ""
 
-#: src/stored/btape.c:2896
+#: src/stored/btape.c:2898
 msgid "read filled tape"
 msgstr ""
 
-#: src/stored/btape.c:2897
+#: src/stored/btape.c:2899
 msgid "forward space a file"
 msgstr ""
 
-#: src/stored/btape.c:2898
+#: src/stored/btape.c:2900
 msgid "forward space a record"
 msgstr ""
 
-#: src/stored/btape.c:2899
+#: src/stored/btape.c:2901
 msgid "print this command"
 msgstr ""
 
-#: src/stored/btape.c:2900
+#: src/stored/btape.c:2902
 msgid "write a Bacula label to the tape"
 msgstr ""
 
-#: src/stored/btape.c:2901
+#: src/stored/btape.c:2903
 msgid "load a tape"
 msgstr ""
 
-#: src/stored/btape.c:2902
+#: src/stored/btape.c:2904
 msgid "quit btape"
 msgstr ""
 
-#: src/stored/btape.c:2903
+#: src/stored/btape.c:2905
 msgid "use write() to fill tape"
 msgstr ""
 
-#: src/stored/btape.c:2904
+#: src/stored/btape.c:2906
 msgid "read and print the Bacula tape label"
 msgstr ""
 
-#: src/stored/btape.c:2905
+#: src/stored/btape.c:2907
 msgid "test record handling functions"
 msgstr ""
 
-#: src/stored/btape.c:2906
+#: src/stored/btape.c:2908
 msgid "rewind the tape"
 msgstr ""
 
-#: src/stored/btape.c:2907
+#: src/stored/btape.c:2909
 msgid "read() tape block by block to EOT and report"
 msgstr ""
 
-#: src/stored/btape.c:2908
+#: src/stored/btape.c:2910
 msgid "Bacula read block by block to EOT and report"
 msgstr ""
 
-#: src/stored/btape.c:2909
+#: src/stored/btape.c:2911
 msgid ""
 "[file_size=n(GB)|nb_file=3|skip_zero|skip_random|skip_raw|skip_block] report "
 "drive speed"
 msgstr ""
 
-#: src/stored/btape.c:2910
+#: src/stored/btape.c:2912
 msgid "print tape status"
 msgstr ""
 
-#: src/stored/btape.c:2911
+#: src/stored/btape.c:2913
 msgid "General test Bacula tape functions"
 msgstr ""
 
-#: src/stored/btape.c:2912
+#: src/stored/btape.c:2914
 msgid "write an EOF on the tape"
 msgstr ""
 
-#: src/stored/btape.c:2913
+#: src/stored/btape.c:2915
 msgid "write a single Bacula block"
 msgstr ""
 
-#: src/stored/btape.c:2914
+#: src/stored/btape.c:2916
 msgid "read a single record"
 msgstr ""
 
-#: src/stored/btape.c:2915
+#: src/stored/btape.c:2917
 msgid "read a single Bacula block"
 msgstr ""
 
-#: src/stored/btape.c:2916
+#: src/stored/btape.c:2918
 msgid "quick fill command"
 msgstr ""
 
-#: src/stored/btape.c:2937
+#: src/stored/btape.c:2939
 #, c-format
 msgid "\"%s\" is an invalid command\n"
 msgstr ""
 
-#: src/stored/btape.c:2946
+#: src/stored/btape.c:2948
 #, c-format
 msgid "Interactive commands:\n"
 msgstr ""
 
-#: src/stored/btape.c:2957
+#: src/stored/btape.c:2959
 #, c-format
 msgid ""
 "\n"
@@ -10843,22 +10937,22 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:3045
+#: src/stored/btape.c:3047
 #, c-format
 msgid "Mount second Volume on device %s and press return when ready: "
 msgstr ""
 
-#: src/stored/btape.c:3073
+#: src/stored/btape.c:3075
 #, c-format
 msgid "Mount blank Volume on device %s and press return when ready: "
 msgstr ""
 
-#: src/stored/btape.c:3093
+#: src/stored/btape.c:3095
 #, c-format
 msgid "End of Volume \"%s\" %d records.\n"
 msgstr ""
 
-#: src/stored/btape.c:3107
+#: src/stored/btape.c:3109
 #, c-format
 msgid "Read block=%u, VolBytes=%s rate=%sB/s\n"
 msgstr ""
@@ -10930,220 +11024,244 @@ msgstr ""
 msgid "JobId=%s, Job %s waiting to reserve a device.\n"
 msgstr ""
 
-#: src/stored/block.c:89
+#: src/stored/block.c:102
 #, c-format
 msgid ""
 "Dump block %s %x: size=%d BlkNum=%d\n"
 "               Hdrcksum=%x cksum=%x\n"
 msgstr ""
 
-#: src/stored/block.c:102
+#: src/stored/block.c:115
 #, c-format
 msgid "   Rec: VId=%u VT=%u FI=%s Strm=%s len=%d p=%x\n"
 msgstr ""
 
-#: src/stored/block.c:158
+#: src/stored/block.c:171
 #, c-format
 msgid "%d block read errors not printed.\n"
 msgstr ""
 
-#: src/stored/block.c:248 src/stored/block.c:264 src/stored/block.c:274
+#: src/stored/block.c:264 src/stored/block.c:280 src/stored/block.c:290
 #, c-format
 msgid ""
 "Volume data error at %u:%u! Wanted ID: \"%s\", got \"%s\". Buffer "
 "discarded.\n"
 msgstr ""
 
-#: src/stored/block.c:289
+#: src/stored/block.c:305
 #, c-format
 msgid ""
 "Volume data error at %u:%u! Block length %u is insane (too large), probably "
 "due to a bad archive.\n"
 msgstr ""
 
-#: src/stored/block.c:315
+#: src/stored/block.c:331
 #, c-format
 msgid ""
 "Volume data error at %u:%u!\n"
 "Block checksum mismatch in block=%u len=%d: calc=%x blk=%x\n"
 msgstr ""
 
-#: src/stored/block.c:434
+#: src/stored/block.c:452
 #, c-format
 msgid "Cannot write block. Device at EOM. dev=%s\n"
 msgstr ""
 
-#: src/stored/block.c:439
+#: src/stored/block.c:458
 #, c-format
 msgid "Attempt to write on read-only Volume. dev=%s\n"
 msgstr ""
 
-#: src/stored/block.c:444
+#: src/stored/block.c:464
 #, c-format
 msgid "Attempt to write on closed device=%s\n"
 msgstr ""
 
-#: src/stored/block.c:491
+#: src/stored/block.c:513
 #, c-format
 msgid "User defined maximum volume capacity %s exceeded on device %s.\n"
 msgstr ""
 
-#: src/stored/block.c:506
+#: src/stored/block.c:528
 #, c-format
 msgid "Unable to write EOF. ERR=%s\n"
 msgstr ""
 
-#: src/stored/block.c:532 src/stored/block.c:557
+#: src/stored/block.c:554 src/stored/block.c:588
 msgid "Write block header zeroed.\n"
 msgstr ""
 
-#: src/stored/block.c:576
+#: src/stored/block.c:580
+#, c-format
+msgid "Block checksum changed during write: before=%ud after=%ud\n"
+msgstr ""
+
+#: src/stored/block.c:607
 #, c-format
 msgid "Write error at %u:%u on device %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/block.c:583
+#: src/stored/block.c:614
 #, c-format
 msgid "End of Volume \"%s\" at %u:%u on device %s. Write of %u bytes got %d.\n"
 msgstr ""
 
-#: src/stored/block.c:664 src/stored/block.c:670
+#: src/stored/block.c:695 src/stored/block.c:701
 #, c-format
 msgid "Backspace file at EOT failed. ERR=%s\n"
 msgstr ""
 
-#: src/stored/block.c:677
+#: src/stored/block.c:708
 #, c-format
 msgid "Backspace record at EOT failed. ERR=%s\n"
 msgstr ""
 
-#: src/stored/block.c:694
+#: src/stored/block.c:725
 #, c-format
 msgid "Re-read last block at EOT failed. ERR=%s"
 msgstr ""
 
-#: src/stored/block.c:704
+#: src/stored/block.c:735
 #, c-format
 msgid ""
 "Re-read of last block: block numbers differ by more than one.\n"
 "Probable tape misconfiguration and data loss. Read block=%u Want block=%u.\n"
 msgstr ""
 
-#: src/stored/block.c:709
+#: src/stored/block.c:740
 #, c-format
 msgid ""
 "Re-read of last block OK, but block numbers differ. Read block=%u Want block="
 "%u.\n"
 msgstr ""
 
-#: src/stored/block.c:713
+#: src/stored/block.c:744
 msgid "Re-read of last block succeeded.\n"
 msgstr ""
 
-#: src/stored/block.c:745
+#: src/stored/block.c:777
 #, c-format
 msgid ""
 "Error writing final EOF to tape. This Volume may not be readable.\n"
 "%s"
 msgstr ""
 
-#: src/stored/block.c:759
+#: src/stored/block.c:791
 #, c-format
 msgid ""
 "Error writing final part to DVD. This Volume may not be readable.\n"
 "%s"
 msgstr ""
 
-#: src/stored/block.c:861
+#: src/stored/block.c:801
+#, fuzzy
+msgid "Error sending Volume info to Director.\n"
+msgstr "Geen Volumes gevonden om terug te zetten.\n"
+
+#: src/stored/block.c:896
 #, c-format
 msgid ""
 "Error while writing, current part number is less than the total number of "
 "parts (%d/%d, device=%s)\n"
 msgstr ""
 
-#: src/stored/block.c:869
+#: src/stored/block.c:904
 #, c-format
 msgid "Unable to open device next part %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/block.c:889
+#: src/stored/block.c:924
 #, c-format
 msgid ""
 "End of Volume \"%s\" at %u:%u on device %s (part_size=%s, free_space=%s, "
 "free_space_errno=%d, errmsg=%s).\n"
 msgstr ""
 
-#: src/stored/block.c:902
+#: src/stored/block.c:937
 #, c-format
 msgid ""
 "End of Volume \"%s\" at %u:%u on device %s (part_size=%s, free_space=%s, "
 "free_space_errno=%d).\n"
 msgstr ""
 
-#: src/stored/block.c:962
+#: src/stored/block.c:980
+#, fuzzy
+msgid "Job failed or canceled.\n"
+msgstr "Terugzetten geannuleerd.\n"
+
+#: src/stored/block.c:986
+msgid "Attempt to read past end of tape or file.\n"
+msgstr ""
+
+#: src/stored/block.c:995
+#, c-format
+msgid "Attempt to read closed device: fd=%d at file:blk %u:%u on device %s\n"
+msgstr ""
+
+#: src/stored/block.c:1005
 #, c-format
 msgid "Block buffer size looping problem on device %s\n"
 msgstr ""
 
-#: src/stored/block.c:974
+#: src/stored/block.c:1017
 #, c-format
 msgid "Unable to open device part=%d %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/block.c:1000
+#: src/stored/block.c:1044
 #, c-format
 msgid "Read error on fd=%d at file:blk %u:%u on device %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/block.c:1013
+#: src/stored/block.c:1057
 #, c-format
 msgid "Read zero bytes at %u:%u on device %s.\n"
 msgstr ""
 
-#: src/stored/block.c:1037
+#: src/stored/block.c:1081
 #, c-format
 msgid ""
 "Volume data error at %u:%u! Very short block of %d bytes on device %s "
 "discarded.\n"
 msgstr ""
 
-#: src/stored/block.c:1062
+#: src/stored/block.c:1107
 #, c-format
 msgid "Block length %u is greater than buffer %u. Attempting recovery.\n"
 msgstr ""
 
-#: src/stored/block.c:1081
+#: src/stored/block.c:1127
 #, c-format
 msgid "Setting block buffer size to %u bytes.\n"
 msgstr ""
 
-#: src/stored/block.c:1096
+#: src/stored/block.c:1142
 #, c-format
 msgid ""
 "Volume data error at %u:%u! Short block of %d bytes on device %s discarded.\n"
 msgstr ""
 
-#: src/lib/plugins.c:112
+#: src/lib/plugins.c:117
 #, c-format
 msgid "Failed to open Plugin directory %s: ERR=%s\n"
 msgstr ""
 
-#: src/lib/plugins.c:129
+#: src/lib/plugins.c:134
 #, c-format
 msgid "Failed to find any plugins in %s\n"
 msgstr ""
 
-#: src/lib/plugins.c:163
+#: src/lib/plugins.c:168
 #, c-format
 msgid "dlopen plugin %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/plugins.c:174
+#: src/lib/plugins.c:179
 #, c-format
 msgid "Lookup of loadPlugin in plugin %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/plugins.c:183
+#: src/lib/plugins.c:188
 #, c-format
 msgid "Lookup of unloadPlugin in plugin %s failed: ERR=%s\n"
 msgstr ""
@@ -11313,56 +11431,73 @@ msgstr ""
 msgid "Damaged buffer:  %6u bytes allocated at line %d of %s %s\n"
 msgstr ""
 
-#: src/lib/rwlock.c:302
-msgid "rwl_writeunlock called too many times.\n"
+#: src/lib/sellist.c:69
+msgid "Negative numbers not permitted.\n"
+msgstr ""
+
+#: src/lib/sellist.c:106
+msgid "Selection items must be be greater than zero.\n"
+msgstr ""
+
+#: src/lib/sellist.c:110
+#, fuzzy
+msgid "Selection item too large.\n"
+msgstr "Selecteer Pool"
+
+#: src/lib/sellist.c:167
+msgid "No input string given.\n"
 msgstr ""
 
 #: src/lib/rwlock.c:307
+msgid "rwl_writeunlock called too many times.\n"
+msgstr ""
+
+#: src/lib/rwlock.c:312
 msgid "rwl_writeunlock by non-owner.\n"
 msgstr ""
 
-#: src/lib/rwlock.c:432 src/lib/save/devlock.c:501 src/lib/devlock.c:501
+#: src/lib/rwlock.c:437 src/lib/save/devlock.c:501 src/lib/devlock.c:501
 #, c-format
 msgid "Thread %d found unchanged elements %d times\n"
 msgstr ""
 
-#: src/lib/rwlock.c:502 src/lib/save/devlock.c:571 src/lib/devlock.c:571
+#: src/lib/rwlock.c:507 src/lib/save/devlock.c:571 src/lib/devlock.c:571
 #, c-format
 msgid "%02d: interval %d, writes %d, reads %d\n"
 msgstr ""
 
-#: src/lib/rwlock.c:512 src/lib/save/devlock.c:581 src/lib/devlock.c:581
+#: src/lib/rwlock.c:517 src/lib/save/devlock.c:581 src/lib/devlock.c:581
 #, c-format
 msgid "data %02d: value %d, %d writes\n"
 msgstr ""
 
-#: src/lib/rwlock.c:517 src/lib/save/devlock.c:586 src/lib/devlock.c:586
+#: src/lib/rwlock.c:522 src/lib/save/devlock.c:586 src/lib/devlock.c:586
 #, c-format
 msgid "Total: %d thread writes, %d data writes\n"
 msgstr ""
 
-#: src/lib/rwlock.c:589 src/lib/save/devlock.c:658 src/lib/devlock.c:658
+#: src/lib/rwlock.c:594 src/lib/save/devlock.c:658 src/lib/devlock.c:658
 msgid "Try write lock"
 msgstr ""
 
-#: src/lib/rwlock.c:595 src/lib/save/devlock.c:664 src/lib/devlock.c:664
+#: src/lib/rwlock.c:600 src/lib/save/devlock.c:664 src/lib/devlock.c:664
 msgid "Try read lock"
 msgstr ""
 
-#: src/lib/rwlock.c:651 src/lib/save/devlock.c:720 src/lib/devlock.c:720
+#: src/lib/rwlock.c:656 src/lib/save/devlock.c:720 src/lib/devlock.c:720
 msgid "Create thread"
 msgstr ""
 
-#: src/lib/rwlock.c:661 src/lib/save/devlock.c:730 src/lib/devlock.c:730
+#: src/lib/rwlock.c:666 src/lib/save/devlock.c:730 src/lib/devlock.c:730
 msgid "Join thread"
 msgstr ""
 
-#: src/lib/rwlock.c:663 src/lib/save/devlock.c:732 src/lib/devlock.c:732
+#: src/lib/rwlock.c:668 src/lib/save/devlock.c:732 src/lib/devlock.c:732
 #, c-format
 msgid "%02d: interval %d, updates %d, r_collisions %d, w_collisions %d\n"
 msgstr ""
 
-#: src/lib/rwlock.c:675 src/lib/save/devlock.c:744 src/lib/devlock.c:744
+#: src/lib/rwlock.c:680 src/lib/save/devlock.c:744 src/lib/devlock.c:744
 #, c-format
 msgid "data %02d: value %d, %d updates\n"
 msgstr ""
@@ -11376,158 +11511,153 @@ msgstr ""
 msgid "bget_msg: unknown signal %d\n"
 msgstr ""
 
-#: src/lib/bsock.c:126
+#: src/lib/bsock.c:131
 #, c-format
 msgid ""
 "Could not connect to %s on %s:%d. ERR=%s\n"
 "Retrying ...\n"
 msgstr ""
 
-#: src/lib/bsock.c:132
+#: src/lib/bsock.c:137
 #, c-format
 msgid "Unable to connect to %s on %s:%d. ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:202
+#: src/lib/bsock.c:207
 #, c-format
-msgid "gethostbyname() for host \"%s\" failed: ERR=%s\n"
+msgid "bnet_host2ipaddrs() for host \"%s\" failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:222
+#: src/lib/bsock.c:260
 #, c-format
 msgid "Socket open error. proto=%d port=%d. ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:233
+#: src/lib/bsock.c:273
 #, c-format
 msgid "Source address bind error. proto=%d. ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:244 src/lib/bsock.c:280 src/lib/bnet_server.c:201
+#: src/lib/bsock.c:284 src/lib/bsock.c:320 src/lib/bnet_server.c:218
 #, c-format
 msgid "Cannot set SO_KEEPALIVE on socket: %s\n"
 msgstr ""
 
-#: src/lib/bsock.c:252
+#: src/lib/bsock.c:292
 #, c-format
-msgid "Cannot set SO_KEEPIDLE on socket: %s\n"
+msgid "Cannot set TCP_KEEPIDLE on socket: %s\n"
 msgstr ""
 
-#: src/lib/bsock.c:299
+#: src/lib/bsock.c:339
 #, c-format
 msgid "Could not init bsock mutex. ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:334
+#: src/lib/bsock.c:374
 #, c-format
 msgid "Socket has errors=%d on call to %s:%s:%d\n"
 msgstr ""
 
-#: src/lib/bsock.c:341
+#: src/lib/bsock.c:381
 #, c-format
 msgid "Socket is terminated=%d on call to %s:%s:%d\n"
 msgstr ""
 
-#: src/lib/bsock.c:349
+#: src/lib/bsock.c:389
 #, c-format
 msgid "Socket has insane msglen=%d on call to %s:%s:%d\n"
 msgstr ""
 
-#: src/lib/bsock.c:387
+#: src/lib/bsock.c:427
 #, c-format
 msgid "Write error sending %d bytes to %s:%s:%d: ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:393
+#: src/lib/bsock.c:433
 #, c-format
 msgid "Wrote %d bytes to %s:%s:%d, but only %d accepted.\n"
 msgstr ""
 
-#: src/lib/bsock.c:482 src/lib/bsock.c:543
+#: src/lib/bsock.c:522 src/lib/bsock.c:583
 #, c-format
 msgid "Read expected %d got %d from %s:%s:%d\n"
 msgstr ""
 
-#: src/lib/bsock.c:502
+#: src/lib/bsock.c:542
 #, c-format
 msgid "Packet size too big from \"%s:%s:%d. Terminating connection.\n"
 msgstr ""
 
-#: src/lib/bsock.c:532
+#: src/lib/bsock.c:572
 #, c-format
 msgid "Read error from %s:%s:%d: ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:623
+#: src/lib/bsock.c:663
 msgid "fread attr spool I/O error.\n"
 msgstr ""
 
-#: src/lib/bsock.c:684
+#: src/lib/bsock.c:724
 msgid "Could not malloc BSOCK data buffer\n"
 msgstr ""
 
-#: src/lib/bsock.c:702 src/lib/bsock.c:726
+#: src/lib/bsock.c:742 src/lib/bsock.c:761
 #, c-format
 msgid "sockopt error: %s\n"
 msgstr ""
 
-#: src/lib/bsock.c:708 src/lib/bsock.c:732
+#: src/lib/bsock.c:748 src/lib/bsock.c:767
 #, c-format
 msgid "Warning network buffer = %d bytes not max size.\n"
 msgstr ""
 
-#: src/lib/bsock.c:712 src/lib/bsock.c:736
-#, c-format
-msgid "Network buffer size %d not multiple of tape block size.\n"
-msgstr ""
-
-#: src/lib/bsock.c:757 src/lib/bsock.c:791
+#: src/lib/bsock.c:787 src/lib/bsock.c:821
 #, c-format
 msgid "fcntl F_GETFL error. ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:763 src/lib/bsock.c:797 src/lib/bsock.c:829
+#: src/lib/bsock.c:793 src/lib/bsock.c:827 src/lib/bsock.c:859
 #, c-format
 msgid "fcntl F_SETFL error. ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:1002 src/qt-console/bcomm/dircomm_auth.cpp:112
+#: src/lib/bsock.c:1032 src/qt-console/bcomm/dircomm_auth.cpp:112
 #, c-format
 msgid "Director authorization problem at \"%s:%d\"\n"
 msgstr ""
 
-#: src/lib/bsock.c:1009 src/qt-console/bcomm/dircomm_auth.cpp:119
+#: src/lib/bsock.c:1039 src/qt-console/bcomm/dircomm_auth.cpp:119
 #, c-format
 msgid ""
 "Authorization problem: Remote server at \"%s:%d\" did not advertise required "
 "TLS support.\n"
 msgstr ""
 
-#: src/lib/bsock.c:1017 src/qt-console/bcomm/dircomm_auth.cpp:127
+#: src/lib/bsock.c:1047 src/qt-console/bcomm/dircomm_auth.cpp:127
 #, c-format
 msgid ""
 "Authorization problem with Director at \"%s:%d\": Remote server requires "
 "TLS.\n"
 msgstr ""
 
-#: src/lib/bsock.c:1029 src/qt-console/bcomm/dircomm_auth.cpp:138
+#: src/lib/bsock.c:1059 src/qt-console/bcomm/dircomm_auth.cpp:138
 #, c-format
 msgid "TLS negotiation failed with Director at \"%s:%d\"\n"
 msgstr ""
 
-#: src/lib/bsock.c:1039 src/qt-console/bcomm/dircomm_auth.cpp:150
+#: src/lib/bsock.c:1069 src/qt-console/bcomm/dircomm_auth.cpp:150
 #, c-format
 msgid ""
 "Bad response to Hello command: ERR=%s\n"
 "The Director at \"%s:%d\" is probably not running.\n"
 msgstr ""
 
-#: src/lib/bsock.c:1048 src/qt-console/bcomm/dircomm_auth.cpp:159
+#: src/lib/bsock.c:1078 src/qt-console/bcomm/dircomm_auth.cpp:159
 #, c-format
 msgid "Director at \"%s:%d\" rejected Hello command\n"
 msgstr ""
 
-#: src/lib/bsock.c:1058 src/qt-console/bcomm/dircomm_auth.cpp:171
+#: src/lib/bsock.c:1088 src/qt-console/bcomm/dircomm_auth.cpp:171
 #, c-format
 msgid ""
 "Authorization problem with Director at \"%s:%d\"\n"
@@ -11537,40 +11667,40 @@ msgid ""
 "Please see "
 msgstr ""
 
-#: src/lib/message.c:340 src/lib/message.c:350
+#: src/lib/message.c:362 src/lib/message.c:372
 #, c-format
 msgid "Could not open console message file %s: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:355
+#: src/lib/message.c:377
 #, c-format
 msgid "Could not get con mutex: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:460
+#: src/lib/message.c:482
 msgid "Bacula Message"
 msgstr ""
 
-#: src/lib/message.c:464
+#: src/lib/message.c:486
 #, c-format
 msgid "open mail pipe %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:532
+#: src/lib/message.c:577
 msgid "open mail pipe failed.\n"
 msgstr ""
 
-#: src/lib/message.c:544
+#: src/lib/message.c:590
 #, c-format
 msgid "close error: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:555
+#: src/lib/message.c:601
 #, c-format
 msgid "Mail prog: %s"
 msgstr ""
 
-#: src/lib/message.c:564
+#: src/lib/message.c:610
 #, c-format
 msgid ""
 "Mail program terminated in error.\n"
@@ -11578,12 +11708,16 @@ msgid ""
 "ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:662
+#: src/lib/message.c:713
 #, c-format
 msgid "fopen %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:835
+#: src/lib/message.c:835 src/lib/message.c:838
+msgid "Msg delivery error: Unable to store data in database.\n"
+msgstr ""
+
+#: src/lib/message.c:890
 #, c-format
 msgid ""
 "Msg delivery error: Operator mail program terminated in error.\n"
@@ -11591,126 +11725,126 @@ msgid ""
 "ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:856
+#: src/lib/message.c:911
 #, c-format
 msgid "Msg delivery error: fopen %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:1175
+#: src/lib/message.c:1230
 #, c-format
 msgid "%s: ABORTING due to ERROR in %s:%d\n"
 msgstr ""
 
-#: src/lib/message.c:1179
+#: src/lib/message.c:1234
 #, c-format
 msgid "%s: ERROR TERMINATION at %s:%d\n"
 msgstr ""
 
-#: src/lib/message.c:1184
+#: src/lib/message.c:1239
 #, c-format
 msgid "%s: Fatal Error because: "
 msgstr ""
 
-#: src/lib/message.c:1186
+#: src/lib/message.c:1241
 #, c-format
 msgid "%s: Fatal Error at %s:%d because:\n"
 msgstr ""
 
-#: src/lib/message.c:1190
+#: src/lib/message.c:1245
 #, c-format
 msgid "%s: ERROR: "
 msgstr ""
 
-#: src/lib/message.c:1192
+#: src/lib/message.c:1247
 #, c-format
 msgid "%s: ERROR in %s:%d "
 msgstr ""
 
-#: src/lib/message.c:1195
+#: src/lib/message.c:1250
 #, c-format
 msgid "%s: Warning: "
 msgstr ""
 
-#: src/lib/message.c:1198
+#: src/lib/message.c:1253
 #, c-format
 msgid "%s: Security violation: "
 msgstr ""
 
-#: src/lib/message.c:1286
+#: src/lib/message.c:1341
 #, c-format
 msgid "%s ABORTING due to ERROR\n"
 msgstr ""
 
-#: src/lib/message.c:1289
+#: src/lib/message.c:1344
 #, c-format
 msgid "%s ERROR TERMINATION\n"
 msgstr ""
 
-#: src/lib/message.c:1292
+#: src/lib/message.c:1347
 #, c-format
 msgid "%s JobId %u: Fatal error: "
 msgstr ""
 
-#: src/lib/message.c:1301
+#: src/lib/message.c:1356
 #, c-format
 msgid "%s JobId %u: Error: "
 msgstr ""
 
-#: src/lib/message.c:1307
+#: src/lib/message.c:1362
 #, c-format
 msgid "%s JobId %u: Warning: "
 msgstr ""
 
-#: src/lib/message.c:1313
+#: src/lib/message.c:1368
 #, c-format
 msgid "%s JobId %u: Security violation: "
 msgstr ""
 
-#: src/lib/bnet_server.c:108
+#: src/lib/bnet_server.c:125
 #, c-format
 msgid "Cannot open stream socket. ERR=%s. Current %s All %s\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:121
+#: src/lib/bnet_server.c:138
 #, c-format
 msgid "Cannot set SO_REUSEADDR on socket: %s\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:130
+#: src/lib/bnet_server.c:147
 #, c-format
 msgid "Cannot bind port %d: ERR=%s: Retrying ...\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:135
+#: src/lib/bnet_server.c:152
 #, c-format
 msgid "Cannot bind port %d: ERR=%s.\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:146
+#: src/lib/bnet_server.c:163
 #, c-format
 msgid "Could not init client queue: ERR=%s\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:165
+#: src/lib/bnet_server.c:182
 #, c-format
 msgid "Error in select: %s\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:186
+#: src/lib/bnet_server.c:203
 #, c-format
 msgid "Connection from %s:%d refused by hosts.access\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:212
+#: src/lib/bnet_server.c:229
 msgid "Could not create client BSOCK.\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:219
+#: src/lib/bnet_server.c:236
 #, c-format
 msgid "Could not add job to client queue: ERR=%s\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:236
+#: src/lib/bnet_server.c:253
 #, c-format
 msgid "Could not destroy client queue: ERR=%s\n"
 msgstr ""
@@ -12164,7 +12298,7 @@ msgstr ""
 msgid "Truncate"
 msgstr ""
 
-#: src/lib/util.c:409 src/filed/restore.c:1158
+#: src/lib/util.c:409 src/filed/restore.c:1164
 msgid "None"
 msgstr ""
 
@@ -12214,7 +12348,7 @@ msgstr ""
 
 #: src/lib/util.c:753 src/lib/util.c:763 src/lib/util.c:771 src/lib/util.c:778
 #: src/lib/util.c:785 src/lib/util.c:799 src/lib/util.c:809 src/lib/util.c:822
-#: src/lib/util.c:833 src/filed/restore.c:1174
+#: src/lib/util.c:833 src/filed/restore.c:1180
 msgid "*none*"
 msgstr ""
 
@@ -12240,7 +12374,7 @@ msgstr ""
 msgid "writeunlock by non-owner.\n"
 msgstr ""
 
-#: src/lib/daemon.c:64
+#: src/lib/daemon.c:65
 #, c-format
 msgid "Cannot fork to become daemon: ERR=%s\n"
 msgstr ""
@@ -12426,20 +12560,20 @@ msgstr ""
 msgid "pthread_setspecific failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/jcr.c:1097
+#: src/lib/jcr.c:1103
 #, c-format
 msgid ""
 "Watchdog sending kill after %d secs to thread stalled reading Storage "
 "daemon.\n"
 msgstr ""
 
-#: src/lib/jcr.c:1109
+#: src/lib/jcr.c:1115
 #, c-format
 msgid ""
 "Watchdog sending kill after %d secs to thread stalled reading File daemon.\n"
 msgstr ""
 
-#: src/lib/jcr.c:1121
+#: src/lib/jcr.c:1127
 #, c-format
 msgid ""
 "Watchdog sending kill after %d secs to thread stalled reading Director.\n"
@@ -12659,31 +12793,31 @@ msgstr ""
 msgid "TLS enable but not configured.\n"
 msgstr ""
 
-#: src/lib/bnet.c:423
+#: src/lib/bnet.c:481
 msgid "No problem."
 msgstr ""
 
-#: src/lib/bnet.c:426
+#: src/lib/bnet.c:484
 msgid "Authoritative answer for host not found."
 msgstr ""
 
-#: src/lib/bnet.c:429
+#: src/lib/bnet.c:487
 msgid "Non-authoritative for host not found, or ServerFail."
 msgstr ""
 
-#: src/lib/bnet.c:432
+#: src/lib/bnet.c:490
 msgid "Non-recoverable errors, FORMERR, REFUSED, or NOTIMP."
 msgstr ""
 
-#: src/lib/bnet.c:435
+#: src/lib/bnet.c:493
 msgid "Valid name, no data record of resquested type."
 msgstr ""
 
-#: src/lib/bnet.c:438
+#: src/lib/bnet.c:496
 msgid "Unknown error."
 msgstr ""
 
-#: src/lib/bnet.c:697
+#: src/lib/bnet.c:755
 #, c-format
 msgid "Unknown sig %d"
 msgstr ""
@@ -12692,247 +12826,270 @@ msgstr ""
 msgid "Invalid signal number"
 msgstr ""
 
-#: src/lib/signal.c:151 src/lib/signal.c:153
+#: src/lib/signal.c:152 src/lib/signal.c:154
 #, c-format
 msgid "Bacula interrupted by signal %d: %s\n"
 msgstr ""
 
-#: src/lib/signal.c:166
+#: src/lib/signal.c:167
 #, c-format
 msgid "Kaboom! %s, %s got signal %d - %s. Attempting traceback.\n"
 msgstr ""
 
-#: src/lib/signal.c:168
+#: src/lib/signal.c:169
 #, c-format
 msgid "Kaboom! exepath=%s\n"
 msgstr ""
 
-#: src/lib/signal.c:202
+#: src/lib/signal.c:210
 #, c-format
 msgid "Fork error: ERR=%s\n"
 msgstr ""
 
-#: src/lib/signal.c:210
+#: src/lib/signal.c:218
 #, c-format
 msgid "Calling: %s %s %s %s\n"
 msgstr ""
 
-#: src/lib/signal.c:214
+#: src/lib/signal.c:222
 #, c-format
 msgid "execv: %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/signal.c:235
+#: src/lib/signal.c:244
+#, c-format
+msgid "It looks like the traceback worked...\n"
+msgstr ""
+
+#: src/lib/signal.c:246
 #, c-format
-msgid "It looks like the traceback worked ...\n"
+msgid "The btraceback call returned %d\n"
 msgstr ""
 
-#: src/lib/signal.c:289
+#: src/lib/signal.c:306
 #, c-format
 msgid "BA_NSIG too small (%d) should be (%d)\n"
 msgstr ""
 
-#: src/lib/signal.c:295
+#: src/lib/signal.c:312
 msgid "UNKNOWN SIGNAL"
 msgstr ""
 
-#: src/lib/signal.c:296
+#: src/lib/signal.c:313
 msgid "Hangup"
 msgstr ""
 
-#: src/lib/signal.c:297
+#: src/lib/signal.c:314
 msgid "Interrupt"
 msgstr ""
 
-#: src/lib/signal.c:298
+#: src/lib/signal.c:315
 msgid "Quit"
 msgstr ""
 
-#: src/lib/signal.c:299
+#: src/lib/signal.c:316
 msgid "Illegal instruction"
 msgstr ""
 
-#: src/lib/signal.c:300
+#: src/lib/signal.c:317
 msgid "Trace/Breakpoint trap"
 msgstr ""
 
-#: src/lib/signal.c:301
+#: src/lib/signal.c:318
 msgid "Abort"
 msgstr ""
 
-#: src/lib/signal.c:303
+#: src/lib/signal.c:320
 msgid "EMT instruction (Emulation Trap)"
 msgstr ""
 
-#: src/lib/signal.c:306
+#: src/lib/signal.c:323
 msgid "IOT trap"
 msgstr ""
 
-#: src/lib/signal.c:308
+#: src/lib/signal.c:325
 msgid "BUS error"
 msgstr ""
 
-#: src/lib/signal.c:309
+#: src/lib/signal.c:326
 msgid "Floating-point exception"
 msgstr ""
 
-#: src/lib/signal.c:310
+#: src/lib/signal.c:327
 msgid "Kill, unblockable"
 msgstr ""
 
-#: src/lib/signal.c:311
+#: src/lib/signal.c:328
 msgid "User-defined signal 1"
 msgstr ""
 
-#: src/lib/signal.c:312
+#: src/lib/signal.c:329
 msgid "Segmentation violation"
 msgstr ""
 
-#: src/lib/signal.c:313
+#: src/lib/signal.c:330
 msgid "User-defined signal 2"
 msgstr ""
 
-#: src/lib/signal.c:314
+#: src/lib/signal.c:331
 msgid "Broken pipe"
 msgstr ""
 
-#: src/lib/signal.c:315
+#: src/lib/signal.c:332
 msgid "Alarm clock"
 msgstr ""
 
-#: src/lib/signal.c:316
+#: src/lib/signal.c:333
 msgid "Termination"
 msgstr ""
 
-#: src/lib/signal.c:318
+#: src/lib/signal.c:335
 msgid "Stack fault"
 msgstr ""
 
-#: src/lib/signal.c:320
+#: src/lib/signal.c:337
 msgid "Child status has changed"
 msgstr ""
 
-#: src/lib/signal.c:321
+#: src/lib/signal.c:338
 msgid "Continue"
 msgstr ""
 
-#: src/lib/signal.c:322
+#: src/lib/signal.c:339
 msgid "Stop, unblockable"
 msgstr ""
 
-#: src/lib/signal.c:323
+#: src/lib/signal.c:340
 msgid "Keyboard stop"
 msgstr ""
 
-#: src/lib/signal.c:324
+#: src/lib/signal.c:341
 msgid "Background read from tty"
 msgstr ""
 
-#: src/lib/signal.c:325
+#: src/lib/signal.c:342
 msgid "Background write to tty"
 msgstr ""
 
-#: src/lib/signal.c:326
+#: src/lib/signal.c:343
 msgid "Urgent condition on socket"
 msgstr ""
 
-#: src/lib/signal.c:327
+#: src/lib/signal.c:344
 msgid "CPU limit exceeded"
 msgstr ""
 
-#: src/lib/signal.c:328
+#: src/lib/signal.c:345
 msgid "File size limit exceeded"
 msgstr ""
 
-#: src/lib/signal.c:329
+#: src/lib/signal.c:346
 msgid "Virtual alarm clock"
 msgstr ""
 
-#: src/lib/signal.c:330
+#: src/lib/signal.c:347
 msgid "Profiling alarm clock"
 msgstr ""
 
-#: src/lib/signal.c:331
+#: src/lib/signal.c:348
 msgid "Window size change"
 msgstr ""
 
-#: src/lib/signal.c:332
+#: src/lib/signal.c:349
 msgid "I/O now possible"
 msgstr ""
 
-#: src/lib/signal.c:334
+#: src/lib/signal.c:351
 msgid "Power failure restart"
 msgstr ""
 
-#: src/lib/signal.c:337
+#: src/lib/signal.c:354
 msgid "No runnable lwp"
 msgstr ""
 
-#: src/lib/signal.c:340
+#: src/lib/signal.c:357
 msgid "SIGLWP special signal used by thread library"
 msgstr ""
 
-#: src/lib/signal.c:343
+#: src/lib/signal.c:360
 msgid "Checkpoint Freeze"
 msgstr ""
 
-#: src/lib/signal.c:346
+#: src/lib/signal.c:363
 msgid "Checkpoint Thaw"
 msgstr ""
 
-#: src/lib/signal.c:349
+#: src/lib/signal.c:366
 msgid "Thread Cancellation"
 msgstr ""
 
-#: src/lib/signal.c:352
+#: src/lib/signal.c:369
 msgid "Resource Lost (e.g. record-lock lost)"
 msgstr ""
 
+#: src/lib/ini.c:106 src/lib/ini.c:118
+#, c-format
+msgid ""
+"Config file error: %s\n"
+"            : Line %d, col %d of file %s\n"
+"%s\n"
+msgstr ""
+
+#: src/lib/ini.c:308 src/lib/ini.c:383
+#, c-format
+msgid "Cannot open config file %s: %s\n"
+msgstr ""
+
 #: src/lib/btimers.c:265
 msgid "stop_btimer called with NULL btimer_id\n"
 msgstr ""
 
-#: src/lib/bsys.c:215 src/lib/bsys.c:232 src/lib/bsys.c:256 src/lib/bsys.c:269
+#: src/lib/bsys.c:72
+#, c-format
+msgid "safe_unlink could not compile regex pattern \"%s\" ERR=%s\n"
+msgstr ""
+
+#: src/lib/bsys.c:261 src/lib/bsys.c:278 src/lib/bsys.c:302 src/lib/bsys.c:315
 #, c-format
 msgid "Out of memory: ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsys.c:311
+#: src/lib/bsys.c:357
 msgid "Buffer overflow.\n"
 msgstr ""
 
-#: src/lib/bsys.c:377
+#: src/lib/bsys.c:423
 msgid "Bad errno"
 msgstr ""
 
-#: src/lib/bsys.c:392
+#: src/lib/bsys.c:438
 #, c-format
 msgid "Memset for %d bytes at %s:%d\n"
 msgstr ""
 
-#: src/lib/bsys.c:422
+#: src/lib/bsys.c:468
 #, c-format
 msgid "Cannot open pid file. %s ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsys.c:437
+#: src/lib/bsys.c:483
 #, c-format
 msgid ""
 "%s is already running. pid=%d\n"
 "Check file %s\n"
 msgstr ""
 
-#: src/lib/bsys.c:451
+#: src/lib/bsys.c:497
 #, c-format
 msgid "Could not open pid file. %s ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsys.c:562
+#: src/lib/bsys.c:608
 #, c-format
 msgid "Could not create state file. %s ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsys.c:581
+#: src/lib/bsys.c:627
 #, c-format
 msgid "Write final hdr error: ERR=%s\n"
 msgstr ""
@@ -12980,98 +13137,98 @@ msgstr ""
 msgid "Close of NULL file\n"
 msgstr ""
 
-#: src/lib/lex.c:224
+#: src/lib/lex.c:226
 msgid ""
 "get_char: called after EOF. You may have a open double quote without the "
 "closing double quote.\n"
 msgstr ""
 
-#: src/lib/lex.c:267
+#: src/lib/lex.c:268
 #, c-format
 msgid "Config token too long, file: %s, line %d, begins at line %d\n"
 msgstr ""
 
-#: src/lib/lex.c:291
+#: src/lib/lex.c:292
 msgid "none"
 msgstr ""
 
-#: src/lib/lex.c:292
+#: src/lib/lex.c:293
 msgid "comment"
 msgstr ""
 
-#: src/lib/lex.c:293
+#: src/lib/lex.c:294
 msgid "number"
 msgstr ""
 
-#: src/lib/lex.c:294
+#: src/lib/lex.c:295
 msgid "ip_addr"
 msgstr ""
 
-#: src/lib/lex.c:295
+#: src/lib/lex.c:296
 msgid "identifier"
 msgstr ""
 
-#: src/lib/lex.c:296
+#: src/lib/lex.c:297
 msgid "string"
 msgstr ""
 
-#: src/lib/lex.c:297
+#: src/lib/lex.c:298
 msgid "quoted_string"
 msgstr ""
 
-#: src/lib/lex.c:298
+#: src/lib/lex.c:299
 msgid "include"
 msgstr ""
 
-#: src/lib/lex.c:299
+#: src/lib/lex.c:300
 msgid "include_quoted_string"
 msgstr ""
 
-#: src/lib/lex.c:300
+#: src/lib/lex.c:301
 msgid "UTF-8 Byte Order Mark"
 msgstr ""
 
-#: src/lib/lex.c:301
+#: src/lib/lex.c:302
 msgid "UTF-16le Byte Order Mark"
 msgstr ""
 
-#: src/lib/lex.c:339 src/lib/lex.c:345 src/lib/lex.c:356 src/lib/lex.c:362
+#: src/lib/lex.c:340 src/lib/lex.c:346 src/lib/lex.c:357 src/lib/lex.c:363
 #, c-format
 msgid "expected a positive integer number, got: %s"
 msgstr ""
 
-#: src/lib/lex.c:478
+#: src/lib/lex.c:479
 msgid ""
 "This config file appears to be in an unsupported Unicode format (UTF-16be). "
 "Please resave as UTF-8\n"
 msgstr ""
 
-#: src/lib/lex.c:617 src/lib/lex.c:645
+#: src/lib/lex.c:625 src/lib/lex.c:653
 #, c-format
 msgid "Cannot open included config file %s: %s\n"
 msgstr ""
 
-#: src/lib/lex.c:704 src/lib/lex.c:761
+#: src/lib/lex.c:712 src/lib/lex.c:769
 #, c-format
 msgid "expected an integer or a range, got %s: %s"
 msgstr ""
 
-#: src/lib/lex.c:718 src/lib/lex.c:726 src/lib/lex.c:737 src/lib/lex.c:745
+#: src/lib/lex.c:726 src/lib/lex.c:734 src/lib/lex.c:745 src/lib/lex.c:753
 #, c-format
 msgid "expected an integer number, got %s: %s"
 msgstr ""
 
-#: src/lib/lex.c:775
+#: src/lib/lex.c:783
 #, c-format
 msgid "expected a name, got %s: %s"
 msgstr ""
 
-#: src/lib/lex.c:779
+#: src/lib/lex.c:787
 #, c-format
 msgid "name %s length %d too long, max is %d\n"
 msgstr ""
 
-#: src/lib/lex.c:787
+#: src/lib/lex.c:795
 #, c-format
 msgid "expected a string, got %s: %s"
 msgstr ""
@@ -13501,7 +13658,7 @@ msgstr ""
 msgid "bpkt already open fid=%d\n"
 msgstr ""
 
-#: src/findlib/create_file.c:226 src/filed/fd_plugins.c:890
+#: src/findlib/create_file.c:226 src/filed/fd_plugins.c:1009
 #, c-format
 msgid "Could not create %s: ERR=%s\n"
 msgstr ""
@@ -13745,86 +13902,98 @@ msgid "FreeBSD Specific NFSv4/ZFS ACL attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:191
-msgid "IRIX Specific Extended attribs"
+msgid "GNU Hurd Specific Default ACL attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:193
-msgid "TRU64 Specific Extended attribs"
+msgid "GNU Hurd Specific Access ACL attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:195
-msgid "AIX Specific Extended attribs"
+msgid "GNU Hurd Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:197
-msgid "OpenBSD Specific Extended attribs"
+msgid "IRIX Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:199
-msgid "Solaris Specific Extensible attribs or System Extended attribs"
+msgid "TRU64 Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:201
-msgid "Solaris Specific Extended attribs"
+msgid "AIX Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:203
-msgid "Darwin Specific Extended attribs"
+msgid "OpenBSD Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:205
-msgid "FreeBSD Specific Extended attribs"
+msgid "Solaris Specific Extensible attribs or System Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:207
-msgid "Linux Specific Extended attribs"
+msgid "Solaris Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:209
+msgid "Darwin Specific Extended attribs"
+msgstr ""
+
+#: src/findlib/bfile.c:211
+msgid "FreeBSD Specific Extended attribs"
+msgstr ""
+
+#: src/findlib/bfile.c:213
+msgid "Linux Specific Extended attribs"
+msgstr ""
+
+#: src/findlib/bfile.c:215
 msgid "NetBSD Specific Extended attribs"
 msgstr ""
 
-#: src/findlib/find.c:226
+#: src/findlib/find.c:237
 #, c-format
 msgid "Plugin: \"%s\" not found.\n"
 msgstr ""
 
-#: src/findlib/match.c:210 src/tools/testfind.c:654 src/filed/job.c:1456
+#: src/findlib/match.c:210 src/tools/testfind.c:654 src/filed/job.c:1460
 #, c-format
 msgid "Unknown include/exclude option: %c\n"
 msgstr ""
 
-#: src/findlib/find_one.c:223
+#: src/findlib/find_one.c:227
 #, c-format
 msgid "     NODUMP flag set - will not process %s\n"
 msgstr ""
 
-#: src/findlib/find_one.c:244
+#: src/findlib/find_one.c:248
 #, c-format
 msgid "Cannot stat file %s: ERR=%s\n"
 msgstr ""
 
-#: src/findlib/find_one.c:250
+#: src/findlib/find_one.c:253
 #, c-format
 msgid "%s mtime changed during backup.\n"
 msgstr ""
 
-#: src/findlib/find_one.c:256
+#: src/findlib/find_one.c:260
 #, c-format
 msgid "%s ctime changed during backup.\n"
 msgstr ""
 
-#: src/findlib/find_one.c:262 src/findlib/find_one.c:269
+#: src/findlib/find_one.c:268 src/findlib/find_one.c:276
 #, c-format
 msgid "%s size changed during backup.\n"
 msgstr ""
 
-#: src/findlib/find_one.c:398
+#: src/findlib/find_one.c:403
 #, c-format
 msgid "Top level directory \"%s\" has unlisted fstype \"%s\"\n"
 msgstr ""
 
-#: src/findlib/find_one.c:413
+#: src/findlib/find_one.c:418
 #, c-format
 msgid "Top level directory \"%s\" has an unlisted drive type \"%s\"\n"
 msgstr ""
@@ -13914,24 +14083,24 @@ msgstr ""
 msgid "Create DB Client record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:588 src/cats/sql_get.c:251
+#: src/cats/sql_create.c:589 src/cats/sql_get.c:251
 #, c-format
 msgid "More than one Path!: %s for path: %s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:595 src/cats/sql_get.c:205 src/cats/sql_get.c:258
-#: src/cats/sql_get.c:640 src/cats/sql_get.c:722 src/cats/sql_get.c:1041
-#: src/cats/sql.c:340 src/cats/sql.c:347 src/cats/postgresql.c:158
+#: src/cats/sql_create.c:596 src/cats/sql_get.c:205 src/cats/sql_get.c:258
+#: src/cats/sql_get.c:640 src/cats/sql_get.c:722 src/cats/sql_get.c:1039
+#: src/cats/sql.c:340 src/cats/sql.c:347 src/cats/postgresql.c:165
 #, c-format
 msgid "error fetching row: %s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:620
+#: src/cats/sql_create.c:621
 #, c-format
 msgid "Create db Path record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:665
+#: src/cats/sql_create.c:666
 #, c-format
 msgid "Create DB Counters record %s failed. ERR=%s\n"
 msgstr ""
@@ -13951,40 +14120,40 @@ msgstr ""
 msgid "Create DB FileSet record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:994
+#: src/cats/sql_create.c:989
 #, c-format
 msgid "Create db File record %s failed. ERR=%s"
 msgstr ""
 
-#: src/cats/sql_create.c:1019
+#: src/cats/sql_create.c:1015
 #, c-format
 msgid "More than one Filename! %s for file: %s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:1025
+#: src/cats/sql_create.c:1021
 #, c-format
 msgid "Error fetching row for file=%s: ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:1042
+#: src/cats/sql_create.c:1038
 #, c-format
 msgid "Create db Filename record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:1061
+#: src/cats/sql_create.c:1058
 #, c-format
 msgid "Attempt to put non-attributes into catalog. Stream=%d\n"
 msgstr ""
 
 #: src/cats/sql_create.c:1074
-msgid "Cannot Copy/Migrate job using BaseJob"
+msgid "Cannot Copy/Migrate job using BaseJob.\n"
 msgstr ""
 
-#: src/cats/sql_create.c:1165 src/cats/sql_get.c:1138
+#: src/cats/sql_create.c:1166 src/cats/sql_get.c:1136
 msgid "ERR=JobIds are empty\n"
 msgstr ""
 
-#: src/cats/sql_create.c:1218
+#: src/cats/sql_create.c:1219
 #, c-format
 msgid "Create db Object record %s failed. ERR=%s"
 msgstr ""
@@ -14091,66 +14260,66 @@ msgstr ""
 msgid "Client record not found in Catalog.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:767
+#: src/cats/sql_get.c:765
 #, c-format
 msgid "More than one Counter!: %d\n"
 msgstr ""
 
-#: src/cats/sql_get.c:772
+#: src/cats/sql_get.c:770
 #, c-format
 msgid "error fetching Counter row: %s\n"
 msgstr ""
 
-#: src/cats/sql_get.c:792
+#: src/cats/sql_get.c:790
 #, c-format
 msgid "Counter record: %s not found in Catalog.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:832
+#: src/cats/sql_get.c:830
 #, c-format
 msgid "Error got %s FileSets but expected only one!\n"
 msgstr ""
 
-#: src/cats/sql_get.c:837
+#: src/cats/sql_get.c:835
 #, c-format
 msgid "FileSet record \"%s\" not found.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:847
+#: src/cats/sql_get.c:845
 msgid "FileSet record not found in Catalog.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:943
+#: src/cats/sql_get.c:941
 #, c-format
 msgid "Media id select failed: ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_get.c:981
+#: src/cats/sql_get.c:979
 #, c-format
 msgid "query dbids failed: ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_get.c:1036
+#: src/cats/sql_get.c:1034
 #, c-format
 msgid "More than one Volume!: %s\n"
 msgstr ""
 
-#: src/cats/sql_get.c:1092
+#: src/cats/sql_get.c:1090
 #, c-format
 msgid "Media record MediaId=%s not found.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:1095
+#: src/cats/sql_get.c:1093
 #, c-format
 msgid "Media record for Volume \"%s\" not found.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:1102
+#: src/cats/sql_get.c:1100
 #, c-format
 msgid "Media record for MediaId=%u not found in Catalog.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:1105
+#: src/cats/sql_get.c:1103
 #, c-format
 msgid "Media record for Vol=%s not found in Catalog.\n"
 msgstr ""
@@ -14203,29 +14372,29 @@ msgstr ""
 msgid "No Volume record found for item %d.\n"
 msgstr ""
 
-#: src/cats/sqlite.c:159 src/cats/ingres.c:248 src/cats/postgresql.c:203
-#: src/cats/dbi.c:221 src/cats/mysql.c:157
+#: src/cats/sqlite.c:166 src/cats/ingres.c:255 src/cats/postgresql.c:210
+#: src/cats/dbi.c:228 src/cats/mysql.c:164
 #, c-format
 msgid "Unable to initialize DB lock. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sqlite.c:174
+#: src/cats/sqlite.c:181
 #, c-format
 msgid "Database %s does not exist, please create it.\n"
 msgstr ""
 
-#: src/cats/sqlite.c:196
+#: src/cats/sqlite.c:203
 #, c-format
 msgid "Unable to open Database=%s. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sqlite.c:197
+#: src/cats/sqlite.c:204
 msgid "unknown"
 msgstr ""
 
-#: src/cats/sqlite.c:449 src/cats/ingres.c:483 src/cats/postgresql.c:493
-#: src/cats/postgresql.c:540 src/cats/dbi.c:618 src/cats/cats.c:147
-#: src/cats/mysql.c:380
+#: src/cats/sqlite.c:462 src/cats/ingres.c:496 src/cats/postgresql.c:506
+#: src/cats/postgresql.c:553 src/cats/dbi.c:631 src/cats/cats.c:149
+#: src/cats/mysql.c:393
 #, c-format
 msgid "Query failed: %s: ERR=%s\n"
 msgstr ""
@@ -14238,7 +14407,7 @@ msgstr ""
 msgid "Failed to allocate space for query filters.\n"
 msgstr ""
 
-#: src/cats/ingres.c:260
+#: src/cats/ingres.c:267
 #, c-format
 msgid ""
 "Unable to connect to Ingres server.\n"
@@ -14246,7 +14415,7 @@ msgid ""
 "It is probably not running or your password is incorrect.\n"
 msgstr ""
 
-#: src/cats/ingres.c:1074
+#: src/cats/ingres.c:1087
 msgid "A user name for Ingres must be supplied.\n"
 msgstr ""
 
@@ -14305,21 +14474,22 @@ msgstr ""
 msgid "No results to list.\n"
 msgstr ""
 
-#: src/cats/sql.c:724
-msgid "Could not init database batch connection"
-msgstr ""
+#: src/cats/sql.c:721
+#, fuzzy
+msgid "Could not init database batch connection\n"
+msgstr "Data parser kon niet geregistreerd worden!"
 
-#: src/cats/sql.c:730
+#: src/cats/sql.c:727
 #, c-format
 msgid "Could not open database \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/cats/postgresql.c:174
+#: src/cats/postgresql.c:181
 #, c-format
 msgid "Encoding error for database \"%s\". Wanted SQL_ASCII, got %s\n"
 msgstr ""
 
-#: src/cats/postgresql.c:239
+#: src/cats/postgresql.c:246
 #, c-format
 msgid ""
 "Unable to connect to PostgreSQL server. Database=%s User=%s\n"
@@ -14327,39 +14497,39 @@ msgid ""
 "exceeded.\n"
 msgstr ""
 
-#: src/cats/postgresql.c:337
+#: src/cats/postgresql.c:350
 msgid "PQescapeStringConn returned non-zero.\n"
 msgstr ""
 
-#: src/cats/postgresql.c:355
+#: src/cats/postgresql.c:368
 msgid "PQescapeByteaConn returned NULL.\n"
 msgstr ""
 
-#: src/cats/postgresql.c:386
+#: src/cats/postgresql.c:399
 msgid "PQunescapeByteaConn returned NULL.\n"
 msgstr ""
 
-#: src/cats/postgresql.c:800
+#: src/cats/postgresql.c:813
 #, c-format
 msgid "error fetching currval: %s\n"
 msgstr ""
 
-#: src/cats/postgresql.c:991 src/cats/dbi.c:1264
+#: src/cats/postgresql.c:1004 src/cats/dbi.c:1277
 #, c-format
 msgid "error starting batch mode: %s"
 msgstr ""
 
-#: src/cats/postgresql.c:1021 src/cats/postgresql.c:1028
+#: src/cats/postgresql.c:1034 src/cats/postgresql.c:1041
 #, c-format
 msgid "error ending batch mode: %s"
 msgstr ""
 
-#: src/cats/postgresql.c:1075
+#: src/cats/postgresql.c:1088
 #, c-format
 msgid "error copying in batch mode: %s"
 msgstr ""
 
-#: src/cats/postgresql.c:1097
+#: src/cats/postgresql.c:1110
 msgid "A user name for PostgreSQL must be supplied.\n"
 msgstr ""
 
@@ -14381,14 +14551,14 @@ msgstr ""
 msgid "Unknown database type: %s\n"
 msgstr ""
 
-#: src/cats/dbi.c:235
+#: src/cats/dbi.c:242
 #, c-format
 msgid ""
 "Unable to locate the DBD drivers to DBI interface in: \n"
 "db_driverdir=%s. It is probaly not found any drivers\n"
 msgstr ""
 
-#: src/cats/dbi.c:292
+#: src/cats/dbi.c:299
 #, c-format
 msgid ""
 "Unable to connect to DBI interface. Type=%s Database=%s User=%s\n"
@@ -14396,20 +14566,20 @@ msgid ""
 "exceeded.\n"
 msgstr ""
 
-#: src/cats/dbi.c:1426
+#: src/cats/dbi.c:1439
 #, c-format
 msgid "error inserting batch mode: %s"
 msgstr ""
 
-#: src/cats/dbi.c:1443
+#: src/cats/dbi.c:1456
 msgid "Driver type not specified in Catalog resource.\n"
 msgstr ""
 
-#: src/cats/dbi.c:1447
+#: src/cats/dbi.c:1460
 msgid "Invalid driver type, must be \"dbi:<type>\"\n"
 msgstr ""
 
-#: src/cats/dbi.c:1451
+#: src/cats/dbi.c:1464
 msgid "A user name for DBI must be supplied.\n"
 msgstr ""
 
@@ -14432,7 +14602,7 @@ msgstr ""
 msgid "Error fetching row %s\n"
 msgstr ""
 
-#: src/cats/mysql.c:200
+#: src/cats/mysql.c:207
 #, c-format
 msgid ""
 "Unable to connect to MySQL server.\n"
@@ -14441,7 +14611,7 @@ msgid ""
 "incorrect.\n"
 msgstr ""
 
-#: src/cats/mysql.c:639
+#: src/cats/mysql.c:692
 msgid "A user name for MySQL must be supplied.\n"
 msgstr ""
 
@@ -14579,13 +14749,13 @@ msgid "You must enter a number between 1 and %d\n"
 msgstr ""
 
 #: src/console/console.c:1160 src/wx-console/console_thread.cpp:399
-#: src/qt-console/bcomm/dircomm.cpp:129
+#: src/qt-console/bcomm/dircomm.cpp:131
 #, c-format
 msgid "Failed to initialize TLS context for Console \"%s\".\n"
 msgstr ""
 
 #: src/console/console.c:1180 src/wx-console/console_thread.cpp:420
-#: src/qt-console/bcomm/dircomm.cpp:152
+#: src/qt-console/bcomm/dircomm.cpp:154
 #, c-format
 msgid "Failed to initialize TLS context for Director \"%s\".\n"
 msgstr ""
@@ -14943,22 +15113,25 @@ msgstr ""
 msgid "Could not open, database \"%s\".\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:145
+#: src/tools/bsmtp.c:151
 #, c-format
 msgid "Fatal malformed reply from %s: %s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:153
+#: src/tools/bsmtp.c:159
 #, c-format
 msgid "Fatal fgets error: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:186
+#: src/tools/bsmtp.c:192
 #, c-format
 msgid ""
 "\n"
 "Usage: %s [-f from] [-h mailhost] [-s subject] [-c copy] [recipient ...]\n"
+"       -4          forces bsmtp to use IPv4 addresses only.\n"
+"       -6          forces bsmtp to use IPv6 addresses only.\n"
 "       -8          set charset to UTF-8\n"
+"       -a          use any ip protocol for address resolution\n"
 "       -c          set the Cc: field\n"
 "       -d <nn>     set debug level to <nn>\n"
 "       -dt         print a timestamp in debug output\n"
@@ -14972,56 +15145,66 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:343
+#: src/tools/bsmtp.c:379
 msgid "Fatal error: no recipient given.\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:372
+#: src/tools/bsmtp.c:407
 #, c-format
 msgid "Fatal gethostname error: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:376
+#: src/tools/bsmtp.c:418
+#, c-format
+msgid "Fatal getaddrinfo for myself failed \"%s\": ERR=%s\n"
+msgstr ""
+
+#: src/tools/bsmtp.c:426
 #, c-format
 msgid "Fatal gethostbyname for myself failed \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:412
+#: src/tools/bsmtp.c:486 src/tools/bsmtp.c:521
 #, c-format
 msgid "Error unknown mail host \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:415
+#: src/tools/bsmtp.c:489 src/tools/bsmtp.c:524
 msgid "Retrying connection using \"localhost\".\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:423
+#: src/tools/bsmtp.c:514
+#, fuzzy, c-format
+msgid "Failed to connect to mailhost %s\n"
+msgstr "Verbinden met de director mislukt\n"
+
+#: src/tools/bsmtp.c:532
 #, c-format
 msgid "Fatal error: Unknown address family for smtp host: %d\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:432 src/tools/bsmtp.c:437
+#: src/tools/bsmtp.c:541 src/tools/bsmtp.c:546
 #, c-format
 msgid "Fatal socket error: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:442
+#: src/tools/bsmtp.c:551
 #, c-format
 msgid "Fatal connect error to %s: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:450
+#: src/tools/bsmtp.c:560
 #, c-format
 msgid "Fatal _open_osfhandle error: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:457 src/tools/bsmtp.c:461 src/tools/bsmtp.c:470
-#: src/tools/bsmtp.c:474
+#: src/tools/bsmtp.c:567 src/tools/bsmtp.c:571 src/tools/bsmtp.c:580
+#: src/tools/bsmtp.c:584
 #, c-format
 msgid "Fatal fdopen error: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:466
+#: src/tools/bsmtp.c:576
 #, c-format
 msgid "Fatal dup error: ERR=%s\n"
 msgstr ""
@@ -15485,7 +15668,7 @@ msgstr ""
 msgid "Network error in send to Director: ERR=%s\n"
 msgstr ""
 
-#: src/filed/verify.c:247 src/filed/accurate.c:428 src/filed/backup.c:503
+#: src/filed/verify.c:247 src/filed/accurate.c:429 src/filed/backup.c:506
 #, c-format
 msgid "%s digest initialization failed\n"
 msgstr ""
@@ -15510,12 +15693,12 @@ msgstr ""
 msgid "Space saved with Base jobs: %lld MB\n"
 msgstr ""
 
-#: src/filed/accurate.c:399
+#: src/filed/accurate.c:400
 #, c-format
 msgid "Cannot verify checksum for %s\n"
 msgstr ""
 
-#: src/filed/accurate.c:507
+#: src/filed/accurate.c:508
 msgid "2991 Bad accurate command\n"
 msgstr ""
 
@@ -15571,6 +15754,11 @@ msgstr ""
 msgid " SDSocket=closed\n"
 msgstr ""
 
+#: src/filed/status.c:463 src/filed/status.c:496
+#, c-format
+msgid "Bad .status command: %s\n"
+msgstr ""
+
 #: src/filed/status.c:464
 msgid "2900 Bad .status command, missing argument.\n"
 msgstr ""
@@ -15599,316 +15787,317 @@ msgstr ""
 msgid "Bacula Client: Last Job had Warnings"
 msgstr ""
 
-#: src/filed/xattr.c:96 src/filed/xattr.c:111 src/filed/xattr.c:119
-#: src/filed/fd_plugins.c:696 src/filed/fd_plugins.c:710 src/filed/acl.c:105
-#: src/filed/acl.c:120 src/filed/acl.c:128 src/filed/backup.c:993
-#: src/filed/backup.c:1189 src/filed/backup.c:1226 src/filed/backup.c:1239
-#: src/filed/backup.c:1315 src/filed/backup.c:1413
+#: src/filed/xattr.c:97 src/filed/xattr.c:112 src/filed/xattr.c:120
+#: src/filed/fd_plugins.c:789 src/filed/fd_plugins.c:805 src/filed/acl.c:108
+#: src/filed/acl.c:123 src/filed/acl.c:131 src/filed/backup.c:999
+#: src/filed/backup.c:1199 src/filed/backup.c:1236 src/filed/backup.c:1249
+#: src/filed/backup.c:1325 src/filed/backup.c:1424
 #, c-format
 msgid "Network send error to SD. ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:244
+#: src/filed/xattr.c:245
 #, c-format
 msgid "Illegal xattr stream, no XATTR_MAGIC on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:258
+#: src/filed/xattr.c:259
 #, c-format
 msgid "Illegal xattr stream, xattr name length <= 0 on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:376 src/filed/xattr.c:408
+#: src/filed/xattr.c:381 src/filed/xattr.c:417
 #, c-format
 msgid "llistea error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:472 src/filed/xattr.c:500
+#: src/filed/xattr.c:467 src/filed/xattr.c:520
 #, c-format
 msgid "lgetea error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:519 src/filed/xattr.c:807 src/filed/xattr.c:1249
-#: src/filed/xattr.c:1702 src/filed/xattr.c:2064 src/filed/xattr.c:2843
+#: src/filed/xattr.c:556 src/filed/xattr.c:877 src/filed/xattr.c:1352
+#: src/filed/xattr.c:1820 src/filed/xattr.c:2176 src/filed/xattr.c:2968
 #, c-format
 msgid "Xattr stream on file \"%s\" exceeds maximum size of %d bytes\n"
 msgstr ""
 
-#: src/filed/xattr.c:550 src/filed/xattr.c:841 src/filed/xattr.c:1280
-#: src/filed/xattr.c:1743 src/filed/xattr.c:2089
+#: src/filed/xattr.c:576 src/filed/xattr.c:903 src/filed/xattr.c:1372
+#: src/filed/xattr.c:1850 src/filed/xattr.c:2193
 #, c-format
 msgid "Failed to serialize extended attributes on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:624
+#: src/filed/xattr.c:643
 #, c-format
 msgid "lsetea error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:710 src/filed/xattr.c:777 src/filed/xattr.c:789
+#: src/filed/xattr.c:731 src/filed/xattr.c:769 src/filed/xattr.c:832
+#: src/filed/xattr.c:844
 #, c-format
 msgid "attr_list error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:916
+#: src/filed/xattr.c:968
 #, c-format
 msgid "Received illegal xattr named %s on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:947 src/filed/xattr.c:957
+#: src/filed/xattr.c:1001 src/filed/xattr.c:1011
 #, c-format
 msgid "attr_set error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:1092 src/filed/xattr.c:1123
+#: src/filed/xattr.c:1161 src/filed/xattr.c:1196
 #, c-format
 msgid "llistxattr error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:1204 src/filed/xattr.c:1231
+#: src/filed/xattr.c:1264 src/filed/xattr.c:1316
 #, c-format
 msgid "lgetxattr error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:1350
+#: src/filed/xattr.c:1435
 #, c-format
 msgid "lsetxattr error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:1507 src/filed/xattr.c:1539
+#: src/filed/xattr.c:1593 src/filed/xattr.c:1628
 #, c-format
 msgid "extattr_list_link error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:1558
+#: src/filed/xattr.c:1648
 #, c-format
 msgid "Failed to convert %d into namespace on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:1653 src/filed/xattr.c:1682
+#: src/filed/xattr.c:1728 src/filed/xattr.c:1783
 #, c-format
 msgid "extattr_get_link error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:1809
+#: src/filed/xattr.c:1907
 #, c-format
 msgid "Failed to split %s into namespace and name part on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:1822
+#: src/filed/xattr.c:1920
 #, c-format
 msgid "Failed to convert %s into namespace on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:1841
+#: src/filed/xattr.c:1941
 #, c-format
 msgid "extattr_set_link error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:1943 src/filed/xattr.c:1965
+#: src/filed/xattr.c:2044 src/filed/xattr.c:2069
 #, c-format
 msgid "getproplist error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2169
+#: src/filed/xattr.c:2262
 #, c-format
 msgid "Unable create proper proplist to restore xattrs on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:2196
+#: src/filed/xattr.c:2291
 #, c-format
 msgid "setproplist error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2496 src/filed/xattr.c:2547
+#: src/filed/xattr.c:2609 src/filed/xattr.c:2662
 #, c-format
 msgid "Unable to get acl on xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2562
+#: src/filed/xattr.c:2679
 #, c-format
 msgid "Unable to get acl text on xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2632
+#: src/filed/xattr.c:2753
 #, c-format
 msgid "Unable to get status on xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2763
+#: src/filed/xattr.c:2886
 #, c-format
 msgid "Unable to open xattr %s on \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2784
+#: src/filed/xattr.c:2909
 #, c-format
 msgid "Unable to read symlin %s on \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2859
+#: src/filed/xattr.c:2984
 #, c-format
 msgid "Unable to read content of xattr %s on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:2897
+#: src/filed/xattr.c:3024
 #, c-format
 msgid "Unable to chdir to xattr space of file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2953 src/filed/xattr.c:3193
+#: src/filed/xattr.c:3081 src/filed/xattr.c:3330
 #, c-format
 msgid "Unable to open file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2979 src/filed/xattr.c:3246
+#: src/filed/xattr.c:3109 src/filed/xattr.c:3391
 #, c-format
 msgid "Unable to open xattr space %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2993 src/filed/xattr.c:3214
+#: src/filed/xattr.c:3125 src/filed/xattr.c:3355
 #, c-format
 msgid "Unable to chdir to xattr space on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3012
+#: src/filed/xattr.c:3146
 #, c-format
 msgid "Unable to list the xattr space on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3105
+#: src/filed/xattr.c:3238
 #, c-format
 msgid "Unable to convert acl from text on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:3113 src/filed/xattr.c:3135
+#: src/filed/xattr.c:3248 src/filed/xattr.c:3271
 #, c-format
 msgid "Unable to restore acl of xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3205
+#: src/filed/xattr.c:3344
 #, c-format
 msgid "Unable to open xattr space on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3231 src/filed/xattr.c:3379
+#: src/filed/xattr.c:3374 src/filed/xattr.c:3536
 #, c-format
 msgid "Unable to open xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3261
+#: src/filed/xattr.c:3408
 #, c-format
 msgid "Unable to chdir to xattr space %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3299
+#: src/filed/xattr.c:3448
 #, c-format
 msgid "Unable to mkfifo xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3315
+#: src/filed/xattr.c:3466
 #, c-format
 msgid "Unable to mknod xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3331
+#: src/filed/xattr.c:3484
 #, c-format
 msgid "Unable to mkdir xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3349
+#: src/filed/xattr.c:3504
 #, c-format
 msgid "Unable to link xattr %s to %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3400
+#: src/filed/xattr.c:3557
 #, c-format
 msgid ""
 "Unable to restore data of xattr %s on file \"%s\": Not all data available in "
 "xattr stream\n"
 msgstr ""
 
-#: src/filed/xattr.c:3411
+#: src/filed/xattr.c:3570
 #, c-format
 msgid "Unable to restore data of xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3432
+#: src/filed/xattr.c:3593
 #, c-format
 msgid "Unable to symlink xattr %s to %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3466
+#: src/filed/xattr.c:3629
 #, c-format
 msgid "Unable to restore owner of xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3492
+#: src/filed/xattr.c:3657
 #, c-format
 msgid "Unable to restore filetimes of xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3508
+#: src/filed/xattr.c:3673
 #, c-format
 msgid "Illegal xattr stream, failed to parse xattr stream on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:3570
+#: src/filed/xattr.c:3734
 #, c-format
 msgid "Failed to restore extensible attributes on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:3583
+#: src/filed/xattr.c:3747
 #, c-format
 msgid "Failed to restore extended attributes on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:3672 src/filed/acl.c:2109
+#: src/filed/xattr.c:3841 src/filed/acl.c:2265
 #, c-format
 msgid "Unable to stat file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3719
+#: src/filed/xattr.c:3891
 #, c-format
 msgid ""
 "Can't restore Extended Attributes of %s - incompatible xattr stream "
 "encountered - %d\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:480 src/filed/fd_plugins.c:619
+#: src/filed/fd_plugins.c:550 src/filed/fd_plugins.c:694
 #, c-format
 msgid "Command plugin \"%s\": no type in startBackupFile packet.\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:493
+#: src/filed/fd_plugins.c:563
 #, c-format
 msgid "Command plugin \"%s\": no object_name in startBackupFile packet.\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:505 src/filed/fd_plugins.c:626
+#: src/filed/fd_plugins.c:576 src/filed/fd_plugins.c:701
 #, c-format
 msgid "Command plugin \"%s\": no fname in startBackupFile packet.\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:683
+#: src/filed/fd_plugins.c:775
 msgid "Plugin save packet not found.\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:806
+#: src/filed/fd_plugins.c:910
 #, c-format
 msgid "Plugin=%s not found.\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:863
+#: src/filed/fd_plugins.c:977
 #, c-format
 msgid "Plugin createFile call failed. Stat=%d file=%s\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:874
+#: src/filed/fd_plugins.c:982
 #, c-format
 msgid "Plugin createFile call failed. Returned CF_ERROR file=%s\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:1621
+#: src/filed/fd_plugins.c:1859
 msgid "Command plugin: no fname in baculaCheckChanges packet.\n"
 msgstr ""
 
@@ -16006,179 +16195,189 @@ msgstr ""
 msgid "No Director resource defined in %s\n"
 msgstr ""
 
-#: src/filed/acl.c:225 src/filed/acl.c:248
+#: src/filed/acl.c:229 src/filed/acl.c:254
 #, c-format
 msgid "aclx_get error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:274
+#: src/filed/acl.c:280
 #, c-format
 msgid "Unknown acl type encountered on file \"%s\": %ld\n"
 msgstr ""
 
-#: src/filed/acl.c:298 src/filed/acl.c:307
+#: src/filed/acl.c:304 src/filed/acl.c:313
 #, c-format
 msgid "Failed to convert acl into text on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/acl.c:381
+#: src/filed/acl.c:386
 #, c-format
 msgid ""
 "Trying to restore POSIX acl on file \"%s\" on filesystem without AIXC acl "
 "support\n"
 msgstr ""
 
-#: src/filed/acl.c:389
+#: src/filed/acl.c:394
 #, c-format
 msgid ""
 "Trying to restore NFSv4 acl on file \"%s\" on filesystem without NFS4 acl "
 "support\n"
 msgstr ""
 
-#: src/filed/acl.c:433 src/filed/acl.c:443
+#: src/filed/acl.c:442 src/filed/acl.c:452
 #, c-format
 msgid "aclx_scanStr error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:467
+#: src/filed/acl.c:478
 #, c-format
 msgid "aclx_put error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:809
+#: src/filed/acl.c:823
 #, c-format
 msgid "acl_to_text error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:837
+#: src/filed/acl.c:853
 #, c-format
 msgid "acl_get_file error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:889
+#: src/filed/acl.c:906
 #, c-format
 msgid ""
 "acl_delete_def_file error on file \"%s\": filesystem doesn't support ACLs\n"
 msgstr ""
 
-#: src/filed/acl.c:895
+#: src/filed/acl.c:912
 #, c-format
 msgid "acl_delete_def_file error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:904
+#: src/filed/acl.c:923
 #, c-format
 msgid "acl_from_text error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:918
+#: src/filed/acl.c:939
 #, c-format
 msgid "acl_valid error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:948
+#: src/filed/acl.c:971
 #, c-format
 msgid "acl_set_file error on file \"%s\": filesystem doesn't support ACLs\n"
 msgstr ""
 
-#: src/filed/acl.c:957
+#: src/filed/acl.c:980
 #, c-format
 msgid "acl_set_file error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1063 src/filed/acl.c:1089 src/filed/acl.c:1201
-#: src/filed/acl.c:1692 src/filed/acl.c:1795
+#: src/filed/acl.c:1087 src/filed/acl.c:1116 src/filed/acl.c:1230
+#: src/filed/acl.c:1738 src/filed/acl.c:1845
 #, c-format
 msgid "pathconf error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1216
+#: src/filed/acl.c:1246
 #, c-format
 msgid ""
 "Trying to restore acl on file \"%s\" on filesystem without %s acl support\n"
 msgstr ""
 
-#: src/filed/acl.c:1492
+#: src/filed/acl.c:1531
 #, c-format
 msgid "getacl error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1525
+#: src/filed/acl.c:1566
 #, c-format
 msgid "acltostr error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1546 src/filed/acl.c:1554
+#: src/filed/acl.c:1588 src/filed/acl.c:1598
 #, c-format
 msgid "strtoacl error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1582
+#: src/filed/acl.c:1627
 #, c-format
 msgid "setacl error on file \"%s\": filesystem doesn't support ACLs\n"
 msgstr ""
 
-#: src/filed/acl.c:1590
+#: src/filed/acl.c:1635
 #, c-format
 msgid "setacl error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1711
+#: src/filed/acl.c:1760
 #, c-format
 msgid "acl_get error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1786
+#: src/filed/acl.c:1834
 #, c-format
 msgid ""
 "Trying to restore acl on file \"%s\" on filesystem without acl support\n"
 msgstr ""
 
-#: src/filed/acl.c:1812
+#: src/filed/acl.c:1863
 #, c-format
 msgid ""
 "Trying to restore POSIX acl on file \"%s\" on filesystem without aclent acl "
 "support\n"
 msgstr ""
 
-#: src/filed/acl.c:1823
+#: src/filed/acl.c:1874
 #, c-format
 msgid ""
 "Trying to restore NFSv4 acl on file \"%s\" on filesystem without ace acl "
 "support\n"
 msgstr ""
 
-#: src/filed/acl.c:1839
+#: src/filed/acl.c:1890
 #, c-format
 msgid "acl_fromtext error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1853 src/filed/acl.c:1861
+#: src/filed/acl.c:1904 src/filed/acl.c:1912
 #, c-format
 msgid "wrong encoding of acl type in acl stream on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/acl.c:1886
+#: src/filed/acl.c:1937
 #, c-format
 msgid "acl_set error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1971
+#: src/filed/acl.c:2023
 #, c-format
 msgid "acltotext error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1993
+#: src/filed/acl.c:2046
 #, c-format
 msgid "aclfromtext error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:2011
+#: src/filed/acl.c:2066
 #, c-format
 msgid "acl(SETACL) error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:2181
+#: src/filed/acl.c:2132
+#, fuzzy, c-format
+msgid "pioctl VIOCGETAL error on file \"%s\": ERR=%s\n"
+msgstr "Lees fout op bestand %s. FOUT=%s\n"
+
+#: src/filed/acl.c:2160
+#, fuzzy, c-format
+msgid "pioctl VIOCSETAL error on file \"%s\": ERR=%s\n"
+msgstr "Lees fout op bestand %s. FOUT=%s\n"
+
+#: src/filed/acl.c:2363
 #, c-format
 msgid "Can't restore ACLs of %s - incompatible acl stream encountered - %d\n"
 msgstr ""
@@ -16187,17 +16386,17 @@ msgstr ""
 msgid "Storage command not issued before Verify.\n"
 msgstr ""
 
-#: src/filed/verify_vol.c:97 src/filed/restore.c:483
+#: src/filed/verify_vol.c:97 src/filed/restore.c:486
 #, c-format
 msgid "Record header scan error: %s\n"
 msgstr ""
 
-#: src/filed/verify_vol.c:106 src/filed/restore.c:495
+#: src/filed/verify_vol.c:106 src/filed/restore.c:498
 #, c-format
 msgid "Data record error. ERR=%s\n"
 msgstr ""
 
-#: src/filed/verify_vol.c:110 src/filed/restore.c:499
+#: src/filed/verify_vol.c:110 src/filed/restore.c:502
 #, c-format
 msgid "Actual data size %d not same as header %d\n"
 msgstr ""
@@ -16275,89 +16474,89 @@ msgstr ""
 msgid "     Could not open directory \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/backup.c:463
+#: src/filed/backup.c:466
 #, c-format
 msgid "     Unknown file type %d; not saved: %s\n"
 msgstr ""
 
-#: src/filed/backup.c:519
+#: src/filed/backup.c:522
 #, c-format
 msgid "%s signature digest initialization failed\n"
 msgstr ""
 
-#: src/filed/backup.c:624
+#: src/filed/backup.c:630
 #, c-format
 msgid "     Cannot open \"%s\": ERR=%s.\n"
 msgstr ""
 
-#: src/filed/backup.c:661
+#: src/filed/backup.c:667
 #, c-format
 msgid "     Cannot open resource fork for \"%s\": ERR=%s.\n"
 msgstr ""
 
-#: src/filed/backup.c:757
+#: src/filed/backup.c:763
 msgid "Failed to allocate memory for crypto signature.\n"
 msgstr ""
 
-#: src/filed/backup.c:762 src/filed/backup.c:768 src/filed/backup.c:783
+#: src/filed/backup.c:768 src/filed/backup.c:774 src/filed/backup.c:789
 msgid "An error occurred while signing the stream.\n"
 msgstr ""
 
-#: src/filed/backup.c:807
+#: src/filed/backup.c:813
 msgid "An error occurred finalizing signing the stream.\n"
 msgstr ""
 
-#: src/filed/backup.c:925
+#: src/filed/backup.c:931
 #, c-format
 msgid "Compression deflateParams error: %d\n"
 msgstr ""
 
-#: src/filed/backup.c:962
+#: src/filed/backup.c:968
 msgid "Encrypting sparse or offset data not supported.\n"
 msgstr ""
 
-#: src/filed/backup.c:969
+#: src/filed/backup.c:975
 msgid "Failed to initialize encryption context.\n"
 msgstr ""
 
-#: src/filed/backup.c:1079
+#: src/filed/backup.c:1085
 #, c-format
 msgid "Compression deflate error: %d\n"
 msgstr ""
 
-#: src/filed/backup.c:1086
+#: src/filed/backup.c:1092
 #, c-format
 msgid "Compression deflateReset error: %d\n"
 msgstr ""
 
-#: src/filed/backup.c:1116
+#: src/filed/backup.c:1126
 #, c-format
 msgid "Compression LZO error: %d\n"
-msgstr ""
+msgstr "Compressie LZO fout: %d\n"
 
-#: src/filed/backup.c:1161 src/filed/backup.c:1177
+#: src/filed/backup.c:1171 src/filed/backup.c:1187
 msgid "Encryption error\n"
-msgstr ""
+msgstr "Fout in versleuteling \n"
 
-#: src/filed/backup.c:1203
+#: src/filed/backup.c:1213
 #, c-format
 msgid "Read error on file %s. ERR=%s\n"
-msgstr ""
+msgstr "Lees fout op bestand %s. FOUT=%s\n"
 
-#: src/filed/backup.c:1206
+#: src/filed/backup.c:1216
 #, c-format
 msgid "Too many errors. JobErrors=%d.\n"
-msgstr ""
+msgstr "Te veel fouten. OpdrachtFouten=%d.\n"
 
-#: src/filed/backup.c:1216
+#: src/filed/backup.c:1226
 msgid "Encryption padding error\n"
 msgstr ""
 
-#: src/filed/backup.c:1280
+#: src/filed/backup.c:1290
 msgid "Invalid file flags, no supported data stream type.\n"
 msgstr ""
 
-#: src/filed/backup.c:1536
+#: src/filed/backup.c:1549
 #, c-format
 msgid "VSS Writer (BackupComplete): %s\n"
 msgstr ""
@@ -16377,434 +16576,436 @@ msgstr ""
 msgid "Could not set Finder Info on %s\n"
 msgstr ""
 
-#: src/filed/restore.c:415
+#: src/filed/restore.c:418
 msgid "LZO init failed\n"
-msgstr ""
+msgstr "Initialiseren LZO mislukt\n"
 
-#: src/filed/restore.c:657
+#: src/filed/restore.c:660
 msgid "Unexpected cryptographic session data stream.\n"
 msgstr ""
 
-#: src/filed/restore.c:667
+#: src/filed/restore.c:670
 msgid ""
 "No private decryption keys have been defined to decrypt encrypted backup "
 "data.\n"
 msgstr ""
 
-#: src/filed/restore.c:678
+#: src/filed/restore.c:681
 msgid "Could not create digest.\n"
 msgstr ""
 
-#: src/filed/restore.c:696
+#: src/filed/restore.c:699
 msgid "Missing private key required to decrypt encrypted backup data.\n"
 msgstr ""
 
-#: src/filed/restore.c:699
+#: src/filed/restore.c:702
 msgid "Decrypt of the session key failed.\n"
 msgstr ""
 
-#: src/filed/restore.c:705
+#: src/filed/restore.c:708
 #, c-format
 msgid "An error occurred while decoding encrypted session data stream: %s\n"
 msgstr ""
 
-#: src/filed/restore.c:772 src/filed/restore.c:825
+#: src/filed/restore.c:775 src/filed/restore.c:828
 #, c-format
 msgid "Missing encryption session data stream for %s\n"
 msgstr ""
 
-#: src/filed/restore.c:780 src/filed/restore.c:832
+#: src/filed/restore.c:783 src/filed/restore.c:835
 #, c-format
 msgid "Failed to initialize decryption context for %s\n"
 msgstr ""
 
-#: src/filed/restore.c:844
+#: src/filed/restore.c:847
 #, c-format
 msgid "Cannot open resource fork for %s.\n"
 msgstr ""
 
-#: src/filed/restore.c:986
+#: src/filed/restore.c:992
 msgid "Unexpected cryptographic signature data stream.\n"
 msgstr ""
 
-#: src/filed/restore.c:994
+#: src/filed/restore.c:1000
 #, c-format
 msgid "Failed to decode message signature for %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1058
+#: src/filed/restore.c:1064
 #, c-format
 msgid "Encountered %ld acl errors while doing restore\n"
 msgstr ""
 
-#: src/filed/restore.c:1062
+#: src/filed/restore.c:1068
 #, c-format
 msgid "Encountered %ld xattr errors while doing restore\n"
 msgstr ""
 
-#: src/filed/restore.c:1066
+#: src/filed/restore.c:1072
 #, c-format
 msgid ""
 "%d non-supported data streams and %d non-supported attrib streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1070
+#: src/filed/restore.c:1076
 #, c-format
 msgid "%d non-supported resource fork streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1073
+#: src/filed/restore.c:1079
 #, c-format
 msgid "%d non-supported Finder Info streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1076
+#: src/filed/restore.c:1082
 #, c-format
 msgid "%d non-supported acl streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1079
+#: src/filed/restore.c:1085
 #, c-format
 msgid "%d non-supported crypto streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1082
+#: src/filed/restore.c:1088
 #, c-format
 msgid "%d non-supported xattr streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1162
+#: src/filed/restore.c:1168
 msgid "Zlib errno"
-msgstr ""
+msgstr "Zlib foutnr."
 
-#: src/filed/restore.c:1164
+#: src/filed/restore.c:1170
 msgid "Zlib stream error"
-msgstr ""
+msgstr "Zlib datastroom fout"
 
-#: src/filed/restore.c:1166
+#: src/filed/restore.c:1172
 msgid "Zlib data error"
-msgstr ""
+msgstr "Zlib data fout"
 
-#: src/filed/restore.c:1168
+#: src/filed/restore.c:1174
 msgid "Zlib memory error"
-msgstr ""
+msgstr "Zlib geheugen fout"
 
-#: src/filed/restore.c:1170
+#: src/filed/restore.c:1176
 msgid "Zlib buffer error"
-msgstr ""
+msgstr "Zlib buffer fout"
 
-#: src/filed/restore.c:1172
+#: src/filed/restore.c:1178
 msgid "Zlib version error"
-msgstr ""
+msgstr "Zlib versie fout"
 
-#: src/filed/restore.c:1212
+#: src/filed/restore.c:1218
 #, c-format
 msgid "Missing cryptographic signature for %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1245 src/filed/restore.c:1274
+#: src/filed/restore.c:1251 src/filed/restore.c:1280
 #, c-format
 msgid "Signature validation failed for file %s: ERR=%s\n"
 msgstr ""
 
-#: src/filed/restore.c:1262
+#: src/filed/restore.c:1268
 #, c-format
 msgid "Digest one file failed for file: %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1301
+#: src/filed/restore.c:1307
 #, c-format
 msgid "Signature validation failed for %s: %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1398
+#: src/filed/restore.c:1404
 #, c-format
 msgid "LZO uncompression error on file %s. ERR=%d\n"
 msgstr ""
 
-#: src/filed/restore.c:1435
+#: src/filed/restore.c:1441
 #, c-format
 msgid "Uncompression error on file %s. ERR=%s\n"
 msgstr ""
 
-#: src/filed/restore.c:1468
+#: src/filed/restore.c:1474
 #, c-format
 msgid "Write error in Win32 Block Decomposition on %s: %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1527
+#: src/filed/restore.c:1533
 msgid "Decryption error\n"
 msgstr ""
 
-#: src/filed/restore.c:1620
+#: src/filed/restore.c:1626
 msgid "Logic error: output file should be open\n"
 msgstr ""
 
-#: src/filed/restore.c:1658
+#: src/filed/restore.c:1664
 msgid "Logic error: output file should not be open\n"
 msgstr ""
 
-#: src/filed/restore.c:1692
+#: src/filed/restore.c:1698
 #, c-format
 msgid "Decryption error. buf_len=%d decrypt_len=%d on file %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1813
+#: src/filed/restore.c:1819
 msgid "Open File Manager paused\n"
 msgstr ""
 
-#: src/filed/restore.c:1817
+#: src/filed/restore.c:1823
 msgid "FAILED to pause Open File Manager\n"
 msgstr ""
 
-#: src/filed/restore.c:1825
+#: src/filed/restore.c:1831
 #, c-format
 msgid "Running as '%s'. Privmask=%#08x\n"
 msgstr ""
 
-#: src/filed/restore.c:1827
+#: src/filed/restore.c:1833
 msgid "Failed to retrieve current UserName\n"
 msgstr ""
 
-#: src/filed/job.c:458
+#: src/filed/job.c:456
 #, c-format
 msgid "2901 Job %s not found.\n"
 msgstr ""
 
-#: src/filed/job.c:468
+#: src/filed/job.c:466
 #, c-format
 msgid "2001 Job %s marked to be canceled.\n"
 msgstr ""
 
-#: src/filed/job.c:471
+#: src/filed/job.c:469
 msgid "2902 Error scanning cancel command.\n"
 msgstr ""
 
-#: src/filed/job.c:494
+#: src/filed/job.c:492
 #, c-format
 msgid "2991 Bad setdebug command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:517
+#: src/filed/job.c:515
 #, c-format
 msgid "Bad estimate command: %s"
 msgstr ""
 
-#: src/filed/job.c:518
+#: src/filed/job.c:516
 msgid "2992 Bad estimate command.\n"
 msgstr ""
 
-#: src/filed/job.c:541
+#: src/filed/job.c:539
 #, c-format
 msgid "Bad Job Command: %s"
 msgstr ""
 
-#: src/filed/job.c:580
+#: src/filed/job.c:578
 #, c-format
 msgid "Bad RunBeforeJob command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:581 src/filed/job.c:600
+#: src/filed/job.c:579 src/filed/job.c:598
 msgid "2905 Bad RunBeforeJob command.\n"
 msgstr ""
 
-#: src/filed/job.c:611
+#: src/filed/job.c:609
 msgid "2905 Bad RunBeforeNow command.\n"
 msgstr ""
 
-#: src/filed/job.c:630
+#: src/filed/job.c:628
 #, c-format
 msgid "Bad RunAfter command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:631
+#: src/filed/job.c:629
 msgid "2905 Bad RunAfterJob command.\n"
 msgstr ""
 
-#: src/filed/job.c:667
+#: src/filed/job.c:665
 #, c-format
 msgid "Bad RunScript command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:668
+#: src/filed/job.c:666
 msgid "2905 Bad RunScript command.\n"
 msgstr ""
 
-#: src/filed/job.c:722
+#: src/filed/job.c:720
 #, c-format
 msgid "Bad RestoreObject command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:789
+#: src/filed/job.c:785
 msgid "2909 Bad RestoreObject command.\n"
 msgstr ""
 
-#: src/filed/job.c:828
+#: src/filed/job.c:824
 #, c-format
 msgid "Plugin Directory not defined. Cannot use plugin: \"%s\"\n"
 msgstr ""
 
-#: src/filed/job.c:870
+#: src/filed/job.c:866
 #, c-format
 msgid "Error running program: %s. stat=%d: ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:881
+#: src/filed/job.c:877
 #, c-format
 msgid "Cannot open FileSet input file: %s. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:1027
+#: src/filed/job.c:1031
 #, c-format
 msgid "REGEX %s compile error. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:1178
+#: src/filed/job.c:1182
 #, c-format
 msgid "Invalid FileSet command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:1651
+#: src/filed/job.c:1655
 #, c-format
 msgid ""
 "DIR and FD clocks differ by %lld seconds, FD automatically compensating.\n"
 msgstr ""
 
-#: src/filed/job.c:1660
+#: src/filed/job.c:1664
 #, c-format
 msgid "Unknown backup level: %s\n"
 msgstr ""
 
-#: src/filed/job.c:1673
+#: src/filed/job.c:1677
 #, c-format
 msgid "Bad level command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:1695
+#: src/filed/job.c:1699
 #, c-format
 msgid "Bad session command: %s"
 msgstr ""
 
-#: src/filed/job.c:1756
+#: src/filed/job.c:1760
 #, c-format
 msgid "Bad storage command: %s"
 msgstr ""
 
-#: src/filed/job.c:1777
+#: src/filed/job.c:1781
 #, c-format
 msgid "Failed to connect to Storage daemon: %s:%d\n"
 msgstr ""
 
-#: src/filed/job.c:1789
+#: src/filed/job.c:1793
 msgid "Failed to authenticate Storage daemon.\n"
 msgstr ""
 
-#: src/filed/job.c:1836
+#: src/filed/job.c:1840
 msgid "ACL support not configured for your machine.\n"
 msgstr ""
 
-#: src/filed/job.c:1840
+#: src/filed/job.c:1844
 msgid "XATTR support not configured for your machine.\n"
 msgstr ""
 
-#: src/filed/job.c:1849
+#: src/filed/job.c:1853
 msgid "Cannot contact Storage daemon\n"
 msgstr ""
 
-#: src/filed/job.c:1868
+#: src/filed/job.c:1872
 #, c-format
 msgid "Bad response to append open: %s\n"
 msgstr ""
 
-#: src/filed/job.c:1873
+#: src/filed/job.c:1877
 msgid "Bad response from stored to open command\n"
 msgstr ""
 
-#: src/filed/job.c:1904
+#: src/filed/job.c:1909
 #, c-format
 msgid "Generate VSS snapshots. Driver=\"%s\", Drive(s)=\"%s\"\n"
 msgstr ""
 
-#: src/filed/job.c:1906
-msgid "CreateSGenerate VSS snapshots failed.\n"
+#: src/filed/job.c:1912
+#, c-format
+msgid "CreateSGenerate VSS snapshots failed. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:1912
+#: src/filed/job.c:1919
 #, c-format
 msgid "Generate VSS snapshot of drive \"%c:\\\" failed.\n"
 msgstr ""
 
-#: src/filed/job.c:1918
+#: src/filed/job.c:1925
 #, c-format
 msgid "VSS Writer (PrepareForBackup): %s\n"
 msgstr ""
 
-#: src/filed/job.c:1923
+#: src/filed/job.c:1930
 msgid "No drive letters found for generating VSS snapshots.\n"
 msgstr ""
 
-#: src/filed/job.c:1926
-msgid "VSS was not initialized properly.\n"
+#: src/filed/job.c:1934
+#, c-format
+msgid "VSS was not initialized properly. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:1976
+#: src/filed/job.c:1985
 msgid "Append Close with SD failed.\n"
 msgstr ""
 
-#: src/filed/job.c:1980
+#: src/filed/job.c:1989
 #, c-format
 msgid "Bad status %d returned from Storage Daemon.\n"
 msgstr ""
 
-#: src/filed/job.c:2010
+#: src/filed/job.c:2019
 #, c-format
 msgid "2994 Bad verify command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:2025 src/filed/job.c:2066
+#: src/filed/job.c:2034 src/filed/job.c:2075
 #, c-format
 msgid "2994 Bad verify level: %s\n"
 msgstr ""
 
-#: src/filed/job.c:2138
+#: src/filed/job.c:2146
 #, c-format
 msgid "Bad replace command. CMD=%s\n"
 msgstr ""
 
-#: src/filed/job.c:2161
+#: src/filed/job.c:2169
 #, c-format
 msgid "Bad where regexp. where=%s\n"
 msgstr ""
 
-#: src/filed/job.c:2199
+#: src/filed/job.c:2207
 #, c-format
 msgid "VSS was not initialized properly. VSS support is disabled. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:2244
+#: src/filed/job.c:2252
 #, c-format
 msgid "VSS Writer (RestoreComplete): %s\n"
 msgstr ""
 
-#: src/filed/job.c:2292
+#: src/filed/job.c:2302
 msgid "Improper calling sequence.\n"
 msgstr ""
 
-#: src/filed/job.c:2312
+#: src/filed/job.c:2322
 #, c-format
 msgid "Bad response to SD read open: %s\n"
 msgstr ""
 
-#: src/filed/job.c:2317
+#: src/filed/job.c:2327
 msgid "Bad response from stored to read open command\n"
 msgstr ""
 
-#: src/filed/job.c:2385
+#: src/filed/job.c:2391
 #, c-format
 msgid "Comm error with SD. bad response to %s. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:2388
+#: src/filed/job.c:2394
 #, c-format
 msgid "Bad response to %s command. Wanted %s, got %s\n"
 msgstr ""
@@ -16838,8 +17039,12 @@ msgid ""
 "\n"
 "Version: "
 msgstr ""
+"Copyright (C) 2005 Christian Masopust\n"
+"Gemaakt door Christian Masopust (2005)\n"
+"\n"
+"Versie: "
 
-#: src/baconfig.h:72 src/baconfig.h:73
+#: src/baconfig.h:72 src/baconfig.h:73 src/baconfig.h:78 src/baconfig.h:79
 #, c-format
 msgid "Failed ASSERT: %s\n"
 msgstr ""
@@ -16850,6 +17055,9 @@ msgid ""
 "\n"
 "Bacula ERROR: "
 msgstr ""
+"\n"
+"\n"
+"Bacula FOUT: "
 
 #: src/win32/libwin32/service.cpp:107
 msgid "RegisterServiceCtlHandler failed"
@@ -16869,7 +17077,7 @@ msgstr ""
 
 #: src/win32/libwin32/service.cpp:179
 msgid "KERNEL32.DLL not found: Bacula service not started"
-msgstr ""
+msgstr "KERNEL32.DLL niet gevonden. Bacula service niet gestart"
 
 #: src/win32/libwin32/service.cpp:189
 msgid "Registry service not found: Bacula service not started"
@@ -16885,15 +17093,15 @@ msgstr ""
 
 #: src/win32/libwin32/service.cpp:243
 msgid "Unable to install the service"
-msgstr ""
+msgstr "Kan de service niet installeren"
 
 #: src/win32/libwin32/service.cpp:251
 msgid "Service command length too long"
-msgstr ""
+msgstr "Lengte service commando te lang"
 
 #: src/win32/libwin32/service.cpp:252
 msgid "Service command length too long. Service not registered."
-msgstr ""
+msgstr "Lengte service commando te lang. Service niet geregistreerd"
 
 #: src/win32/libwin32/service.cpp:265
 msgid ""
@@ -16905,7 +17113,7 @@ msgstr ""
 #: src/win32/libwin32/service.cpp:365 src/win32/libwin32/service.cpp:373
 #: src/win32/libwin32/service.cpp:377
 msgid "The Bacula service: "
-msgstr ""
+msgstr "De Bacula service:"
 
 #: src/win32/libwin32/service.cpp:295
 msgid ""
@@ -16925,15 +17133,15 @@ msgstr ""
 
 #: src/win32/libwin32/service.cpp:316
 msgid "Cannot add Bacula key to System Registry"
-msgstr ""
+msgstr "Kan Bacula sleutel niet aan Systeem Register toevoegen"
 
 #: src/win32/libwin32/service.cpp:327
 msgid "The "
-msgstr ""
+msgstr "De"
 
 #: src/win32/libwin32/service.cpp:385
 msgid "An existing Bacula service: "
-msgstr ""
+msgstr "Een bestaande Bacula service:"
 
 #: src/win32/libwin32/service.cpp:394
 msgid ""
@@ -16953,11 +17161,11 @@ msgstr ""
 
 #: src/win32/libwin32/service.cpp:425
 msgid "Bacula could not be contacted, probably not running"
-msgstr ""
+msgstr "Bacula kan niet worden bereikt, waarschijnlijk niet opgestart"
 
 #: src/win32/libwin32/service.cpp:433
 msgid "The Bacula service has been removed"
-msgstr ""
+msgstr "De Bacula service is verwijderd"
 
 #: src/win32/libwin32/service.cpp:474
 msgid "SetServiceStatus failed"
@@ -16970,6 +17178,9 @@ msgid ""
 "\n"
 "%s error: %ld at %s:%d"
 msgstr ""
+"\n"
+"\n"
+"%s fout: %ld op %s:%d"
 
 #: src/win32/libwin32/service.cpp:576
 #, c-format
@@ -16987,28 +17198,30 @@ msgstr ""
 
 #: src/win32/libwin32/main.cpp:245
 msgid "Bad Command Line Option"
-msgstr ""
+msgstr "Onjuiste opdrachtregel optie"
 
 #: src/wx-console/wxbconfigfileeditor.cpp:65
+#, fuzzy
 msgid "Config file editor"
-msgstr ""
+msgstr "Configuratiebestand"
 
 #: src/wx-console/wxbconfigfileeditor.cpp:75
+#, fuzzy
 msgid "# Bacula bwx-console Configuration File\n"
-msgstr ""
+msgstr "Corrigeer configuratie bestand aub.\n"
 
 #: src/wx-console/wxbconfigfileeditor.cpp:111
 msgid "Save and close"
-msgstr ""
+msgstr "Opslaan en afsluiten"
 
 #: src/wx-console/wxbconfigfileeditor.cpp:112
 msgid "Close without saving"
 msgstr ""
 
 #: src/wx-console/wxbconfigfileeditor.cpp:139
-#, c-format
+#, fuzzy, c-format
 msgid "Unable to write to %s\n"
-msgstr ""
+msgstr "Kan de service niet installeren"
 
 #: src/wx-console/wxbconfigfileeditor.cpp:140
 msgid "Error while saving"
@@ -17017,55 +17230,56 @@ msgstr ""
 #: src/wx-console/wxbrestorepanel.cpp:234
 #: src/wx-console/wxbrestorepanel.cpp:1947
 #: src/wx-console/wxbrestorepanel.cpp:1976
+#, fuzzy
 msgid "Enter restore mode"
-msgstr ""
+msgstr "Terugzetten afbreken"
 
 #: src/wx-console/wxbrestorepanel.cpp:237
 msgid "Cancel restore"
-msgstr ""
+msgstr "Terugzetten afbreken"
 
 #: src/wx-console/wxbrestorepanel.cpp:263
 #: src/wx-console/wxbrestorepanel.cpp:317
 msgid "Add"
-msgstr ""
+msgstr "Toevoegen"
 
 #: src/wx-console/wxbrestorepanel.cpp:265
 #: src/wx-console/wxbrestorepanel.cpp:319
 msgid "Remove"
-msgstr ""
+msgstr "Verwijderen"
 
 #: src/wx-console/wxbrestorepanel.cpp:267
 #: src/wx-console/wxbrestorepanel.cpp:321
 msgid "Refresh"
-msgstr ""
+msgstr "Verversen"
 
 #: src/wx-console/wxbrestorepanel.cpp:286
 msgid "M"
-msgstr ""
+msgstr "M"
 
 #: src/wx-console/wxbrestorepanel.cpp:290
 msgid "Filename"
-msgstr ""
+msgstr "Bestandsnaam"
 
 #: src/wx-console/wxbrestorepanel.cpp:294
 msgid "Size"
-msgstr ""
+msgstr "Omvang"
 
 #: src/wx-console/wxbrestorepanel.cpp:298
 msgid "Date"
-msgstr ""
+msgstr "Datum"
 
 #: src/wx-console/wxbrestorepanel.cpp:302
 msgid "Perm."
-msgstr ""
+msgstr "Perm."
 
 #: src/wx-console/wxbrestorepanel.cpp:306
 msgid "User"
-msgstr ""
+msgstr "Gebruiker"
 
 #: src/wx-console/wxbrestorepanel.cpp:310
 msgid "Group"
-msgstr ""
+msgstr "Groep"
 
 #: src/wx-console/wxbrestorepanel.cpp:335
 #: src/wx-console/wxbrestorepanel.cpp:348
@@ -17075,7 +17289,7 @@ msgstr ""
 #: src/wx-console/wxbrestorepanel.cpp:1811
 #: src/wx-console/wxbrestorepanel.cpp:1897
 msgid "Job Name"
-msgstr ""
+msgstr "Naam opdracht:"
 
 #: src/wx-console/wxbrestorepanel.cpp:337
 #: src/wx-console/wxbrestorepanel.cpp:353
@@ -17089,8 +17303,9 @@ msgstr ""
 #: src/wx-console/wxbrestorepanel.cpp:1849
 #: src/wx-console/wxbrestorepanel.cpp:1851
 #: src/wx-console/wxbrestorepanel.cpp:1912
+#, fuzzy
 msgid "Fileset"
-msgstr ""
+msgstr "Bestandsnaam"
 
 #: src/wx-console/wxbrestorepanel.cpp:340
 #: src/wx-console/wxbrestorepanel.cpp:1233
@@ -17108,66 +17323,73 @@ msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:342
 msgid "Please configure parameters concerning files to restore :"
-msgstr ""
+msgstr "Configureer parameters voor het terugzetten van bestanden aub :"
 
 #: src/wx-console/wxbrestorepanel.cpp:351
 #: src/wx-console/wxbrestorepanel.cpp:1905
 msgid "always"
-msgstr ""
+msgstr "altijd"
 
 #: src/wx-console/wxbrestorepanel.cpp:351
 msgid "if newer"
-msgstr ""
+msgstr "indien nieuwer"
 
 #: src/wx-console/wxbrestorepanel.cpp:351
 msgid "if older"
-msgstr ""
+msgstr "indien ouder"
 
 #: src/wx-console/wxbrestorepanel.cpp:351
 #: src/wx-console/wxbrestorepanel.cpp:1908
 msgid "never"
-msgstr ""
+msgstr "nooit"
 
 #: src/wx-console/wxbrestorepanel.cpp:359
+#, fuzzy
 msgid "Please configure parameters concerning files restoration :"
-msgstr ""
+msgstr "Configureer parameters voor het terugzetten van bestanden aub :"
 
 #: src/wx-console/wxbrestorepanel.cpp:427
 msgid "Getting parameters list."
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:435
+#, fuzzy
 msgid "Error : no clients returned by the director."
-msgstr ""
+msgstr "Verbonden met de director."
 
 #: src/wx-console/wxbrestorepanel.cpp:459
 msgid "Error : no filesets returned by the director."
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:483
+#, fuzzy
 msgid "Error : no storage returned by the director."
-msgstr ""
+msgstr "Verbonden met de director."
 
 #: src/wx-console/wxbrestorepanel.cpp:506
 #: src/wx-console/wxbrestorepanel.cpp:530
+#, fuzzy
 msgid "Error : no jobs returned by the director."
-msgstr ""
+msgstr "Verbonden met de director."
 
 #: src/wx-console/wxbrestorepanel.cpp:516
+#, fuzzy
 msgid "RestoreFiles"
-msgstr ""
+msgstr "Terugzetten geannuleerd."
 
 #: src/wx-console/wxbrestorepanel.cpp:551
 msgid "Please configure your restore parameters."
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:556
+#, fuzzy
 msgid "Please select a client."
-msgstr ""
+msgstr "Kan de geselecteerde client niet vinden."
 
 #: src/wx-console/wxbrestorepanel.cpp:560
+#, fuzzy
 msgid "Please select a restore date."
-msgstr ""
+msgstr "Kiest u een director (1-%d): "
 
 #: src/wx-console/wxbrestorepanel.cpp:565
 msgid "Building restore tree..."
@@ -17184,38 +17406,45 @@ msgid ""
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:720 src/wx-console/wxbmainframe.cpp:685
+#, fuzzy
 msgid "Unexpected question has been received.\n"
-msgstr ""
+msgstr "<< Onverwacht signaal ontvangen : "
 
 #: src/wx-console/wxbrestorepanel.cpp:742
 #: src/wx-console/wxbrestorepanel.cpp:764
+#, fuzzy
 msgid "bwx-console: unexpected restore question."
-msgstr ""
+msgstr "bwx-console: onverwachte director's opdracht"
 
 #: src/wx-console/wxbrestorepanel.cpp:775
+#, fuzzy
 msgid " files selected to be restored."
-msgstr ""
+msgstr "Geen Volumes gevonden om terug te zetten.\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:780
+#, fuzzy
 msgid " file selected to be restored."
-msgstr ""
+msgstr "Selecteer Job media:"
 
 #: src/wx-console/wxbrestorepanel.cpp:787
-#, c-format
+#, fuzzy, c-format
 msgid "Please configure your restore (%ld files selected to be restored)..."
-msgstr ""
+msgstr "Configureer parameters voor het terugzetten van bestanden aub :"
 
 #: src/wx-console/wxbrestorepanel.cpp:797
+#, fuzzy
 msgid "Restore failed : no file selected.\n"
-msgstr ""
+msgstr "Kan de geselecteerde client niet vinden."
 
 #: src/wx-console/wxbrestorepanel.cpp:798
+#, fuzzy
 msgid "Restore failed : no file selected."
-msgstr ""
+msgstr "Kan de geselecteerde client niet vinden."
 
 #: src/wx-console/wxbrestorepanel.cpp:808
+#, fuzzy
 msgid "Restoring, please wait..."
-msgstr ""
+msgstr "Terugzetten..."
 
 #: src/wx-console/wxbrestorepanel.cpp:821
 msgid "Job queued. JobId="
@@ -17227,7 +17456,7 @@ msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:827
 msgid "Job failed."
-msgstr ""
+msgstr "Job mislukt."
 
 #: src/wx-console/wxbrestorepanel.cpp:828
 msgid "Restore failed, please look at messages.\n"
@@ -17262,12 +17491,14 @@ msgid "Restore job running, please wait (%ld of %ld files restored)..."
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:898
+#, fuzzy
 msgid "Restore job terminated successfully."
-msgstr ""
+msgstr "Terugzetten succesvol."
 
 #: src/wx-console/wxbrestorepanel.cpp:899
+#, fuzzy
 msgid "Restore job terminated successfully.\n"
-msgstr ""
+msgstr "Terugzetten succesvol.\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:904
 msgid "Restore job terminated in error, see messages in console."
@@ -17286,12 +17517,14 @@ msgid "Restore job reported a fatal error."
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:919
+#, fuzzy
 msgid "Restore job cancelled by user."
-msgstr ""
+msgstr "Terugzetten geannuleerd."
 
 #: src/wx-console/wxbrestorepanel.cpp:920
+#, fuzzy
 msgid "Restore job cancelled by user.\n"
-msgstr ""
+msgstr "Terugzetten geannuleerd."
 
 #: src/wx-console/wxbrestorepanel.cpp:925
 msgid "Restore job is waiting on File daemon."
@@ -17318,8 +17551,9 @@ msgid "Restore job is waiting for maximum jobs."
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:949
+#, fuzzy
 msgid "Restore job is waiting for start time."
-msgstr ""
+msgstr "Job %s wacht %d seconde voor de start tijd.\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:953
 msgid "Restore job is waiting for higher priority jobs to finish."
@@ -17339,68 +17573,71 @@ msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:1013
 msgid "Restore done successfully.\n"
-msgstr ""
+msgstr "Terugzetten succesvol.\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:1014
 msgid "Restore done successfully."
-msgstr ""
+msgstr "Terugzetten succesvol."
 
 #: src/wx-console/wxbrestorepanel.cpp:1086
+#, fuzzy
 msgid "Applying restore configuration changes..."
-msgstr ""
+msgstr "Corrigeer configuratie bestand aub.\n"
 
 #: src/wx-console/wxbrestorepanel.cpp:1138
 msgid "Failed to find the selected client."
-msgstr ""
+msgstr "Kan de geselecteerde client niet vinden."
 
 #: src/wx-console/wxbrestorepanel.cpp:1158
 msgid "Failed to find the selected fileset."
-msgstr ""
+msgstr "Kan de geselecteerde fileset niet vinden."
 
 #: src/wx-console/wxbrestorepanel.cpp:1178
 msgid "Failed to find the selected storage."
-msgstr ""
+msgstr "Kan de geselecteerde opslag niet vinden."
 
 #: src/wx-console/wxbrestorepanel.cpp:1199
 #: src/wx-console/wxbrestorepanel.cpp:1886
 msgid "Run Restore job"
-msgstr ""
+msgstr "Uitvoeren herstel opdracht"
 
 #: src/wx-console/wxbrestorepanel.cpp:1216
 msgid "Restore configuration changes were applied."
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:1225
+#, fuzzy
 msgid "Restore cancelled.\n"
-msgstr ""
+msgstr "Terugzetten geannuleerd."
 
 #: src/wx-console/wxbrestorepanel.cpp:1226
 msgid "Restore cancelled."
-msgstr ""
+msgstr "Terugzetten geannuleerd."
 
 #: src/wx-console/wxbrestorepanel.cpp:1248
 msgid "No results to list."
-msgstr ""
+msgstr "Geen resultaten gevonden om te tonen."
 
 #: src/wx-console/wxbrestorepanel.cpp:1250
 msgid "No backup found for this client."
-msgstr ""
+msgstr "Geen backup gevonden voor deze client."
 
 #: src/wx-console/wxbrestorepanel.cpp:1257
 msgid "ERROR"
-msgstr ""
+msgstr "FOUT"
 
 #: src/wx-console/wxbrestorepanel.cpp:1258
+#, fuzzy
 msgid "Query failed"
-msgstr ""
+msgstr "Job mislukt."
 
 #: src/wx-console/wxbrestorepanel.cpp:1260
 msgid "Cannot get previous backups list, see console."
-msgstr ""
+msgstr "Kan vorige backuplijst niet ophalen, zie console."
 
 #: src/wx-console/wxbrestorepanel.cpp:1896
 msgid "JobName:"
-msgstr ""
+msgstr "JobNaam:"
 
 #: src/wx-console/wxbrestorepanel.cpp:1898
 msgid "Bootstrap:"
@@ -17415,24 +17652,29 @@ msgid "Replace:"
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:1906
+#, fuzzy
 msgid "ifnewer"
-msgstr ""
+msgstr "indien nieuwer"
 
 #: src/wx-console/wxbrestorepanel.cpp:1907
+#, fuzzy
 msgid "ifolder"
-msgstr ""
+msgstr "indien ouder"
 
 #: src/wx-console/wxbrestorepanel.cpp:1911
+#, fuzzy
 msgid "FileSet:"
-msgstr ""
+msgstr "Bestandsnaam"
 
 #: src/wx-console/wxbrestorepanel.cpp:1913
+#, fuzzy
 msgid "Client:"
-msgstr ""
+msgstr "Client"
 
 #: src/wx-console/wxbrestorepanel.cpp:1915
+#, fuzzy
 msgid "Storage:"
-msgstr ""
+msgstr "Opslag"
 
 #: src/wx-console/wxbrestorepanel.cpp:1917
 msgid "When:"
@@ -17444,7 +17686,7 @@ msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:2028
 msgid "Restoring..."
-msgstr ""
+msgstr "Terugzetten..."
 
 #: src/wx-console/console_thread.cpp:125
 #, c-format
@@ -17485,32 +17727,33 @@ msgstr ""
 
 #: src/wx-console/console_thread.cpp:260
 msgid "Please correct configuration file.\n"
-msgstr ""
+msgstr "Corrigeer configuratie bestand aub.\n"
 
 #: src/wx-console/console_thread.cpp:302
 msgid "Error : Library not initialized\n"
 msgstr ""
 
 #: src/wx-console/console_thread.cpp:313
+#, fuzzy
 msgid "Error : No configuration file loaded\n"
-msgstr ""
+msgstr "Wijzigen configuratiebestand"
 
 #: src/wx-console/console_thread.cpp:323
 msgid "Connecting...\n"
-msgstr ""
+msgstr "Verbinding maken ...\n"
 
 #: src/wx-console/console_thread.cpp:339
 msgid "Error : No director defined in config file.\n"
-msgstr ""
+msgstr "Fout : Geen director gevonden in uw configuratie.\n"
 
 #: src/wx-console/console_thread.cpp:351
 msgid "Multiple directors found in your config file.\n"
-msgstr ""
+msgstr "Meerdere directors gevonden in uw configuratiebestand.\n"
 
 #: src/wx-console/console_thread.cpp:360
 #, c-format
 msgid "Please choose a director (1-%d): "
-msgstr ""
+msgstr "Kiest u een director (1-%d): "
 
 #: src/wx-console/console_thread.cpp:389
 #, c-format
@@ -17523,104 +17766,108 @@ msgid "Passphrase for Director \"%s\" TLS private key: "
 msgstr ""
 
 #: src/wx-console/console_thread.cpp:432
+#, fuzzy
 msgid "Failed to connect to the director\n"
-msgstr ""
+msgstr "Verbinding naar director opnieuw opzetten"
 
 #: src/wx-console/console_thread.cpp:442
 msgid "Connected\n"
-msgstr ""
+msgstr "Verbonden\n"
 
 #: src/wx-console/console_thread.cpp:499
 msgid "<< Unexpected signal received : "
-msgstr ""
+msgstr "<< Onverwacht signaal ontvangen : "
 
 #: src/wx-console/console_thread.cpp:519
 msgid "Connection terminated\n"
-msgstr ""
+msgstr "Verbinding verbroken\n"
 
 #: src/wx-console/wxbconfigpanel.cpp:213
 msgid "Apply"
-msgstr ""
+msgstr "Toepassen"
 
 #: src/wx-console/wxbhistorytextctrl.cpp:82
 #: src/wx-console/wxbhistorytextctrl.cpp:153
 #: src/wx-console/wxbmainframe.cpp:291
 msgid "Type your command below:"
-msgstr ""
+msgstr "Voer uw opdracht hieronder in:"
 
 #: src/wx-console/wxbhistorytextctrl.cpp:117
 msgid "Unknown command."
-msgstr ""
+msgstr "Onbekende opdracht."
 
 #: src/wx-console/wxbhistorytextctrl.cpp:126
 msgid "Possible completions: "
 msgstr ""
 
 #: src/wx-console/main.cpp:119
+#, fuzzy
 msgid "Bacula bwx-console"
-msgstr ""
+msgstr "Over Bacula bwx-console"
 
 #: src/wx-console/main.cpp:124 src/wx-console/wxbmainframe.cpp:267
 #, c-format
 msgid "Welcome to bacula bwx-console %s (%s)!\n"
-msgstr ""
+msgstr "Welkom bij het bacula bwx-console %s (%s)!\n"
 
 #: src/wx-console/wxbmainframe.cpp:246
 msgid "&About...\tF1"
-msgstr ""
+msgstr "&Over...\tF1"
 
 #: src/wx-console/wxbmainframe.cpp:246
 msgid "Show about dialog"
-msgstr ""
+msgstr "Toon het Over scherm"
 
 #: src/wx-console/wxbmainframe.cpp:248 src/wx-console/wxbmainframe.cpp:619
 msgid "Connect"
-msgstr ""
+msgstr "Verbonden"
 
 #: src/wx-console/wxbmainframe.cpp:248 src/wx-console/wxbmainframe.cpp:620
 msgid "Connect to the director"
-msgstr ""
+msgstr "Verbinden met director"
 
 #: src/wx-console/wxbmainframe.cpp:249
 msgid "Disconnect"
-msgstr ""
+msgstr "Verbroken"
 
 #: src/wx-console/wxbmainframe.cpp:249
 msgid "Disconnect of the director"
-msgstr ""
+msgstr "Verbroken van de director"
 
 #: src/wx-console/wxbmainframe.cpp:251
 msgid "Change of configuration file"
-msgstr ""
+msgstr "Wijziging van configuratiebestand"
 
 #: src/wx-console/wxbmainframe.cpp:251
 msgid "Change your default configuration file"
-msgstr ""
+msgstr "Wijzig standaard configuratiebestand"
 
 #: src/wx-console/wxbmainframe.cpp:252
 msgid "Edit your configuration file"
-msgstr ""
+msgstr "Wijzigen configuratiebestand"
 
 #: src/wx-console/wxbmainframe.cpp:254
 msgid "E&xit\tAlt-X"
-msgstr ""
+msgstr "&Verlaat\tAlt-X"
 
 #: src/wx-console/wxbmainframe.cpp:254
 msgid "Quit this program"
-msgstr ""
+msgstr "Verlaat dit programma"
 
 #: src/wx-console/wxbmainframe.cpp:258
 msgid "&File"
-msgstr ""
+msgstr "&Bestand"
 
 #: src/wx-console/wxbmainframe.cpp:259
 msgid "&Help"
-msgstr ""
+msgstr "&Help"
 
 #: src/wx-console/wxbmainframe.cpp:283
 msgid ""
 "Warning : Unicode is disabled because you are using wxWidgets for GTK+ 1.2.\n"
 msgstr ""
+"Waarschuwing : Unicode is niet actief omdat u wxWidgets for GTK+ 1.2 "
+"gebruikt.\n"
 
 #: src/wx-console/wxbmainframe.cpp:287
 msgid ""
@@ -17634,15 +17881,17 @@ msgstr ""
 
 #: src/wx-console/wxbmainframe.cpp:298
 msgid "Send"
-msgstr ""
+msgstr "Versturen"
 
 #: src/wx-console/wxbmainframe.cpp:375 src/wx-console/wxbmainframe.cpp:387
 msgid "Error while parsing command line arguments, using defaults.\n"
 msgstr ""
+"Fout bij verwerken van opdrachtregel variabelen, maak nu gebruik van "
+"standaard instelling.\n"
 
 #: src/wx-console/wxbmainframe.cpp:376 src/wx-console/wxbmainframe.cpp:388
 msgid "Usage: bwx-console [-c configfile] [-w tmp]\n"
-msgstr ""
+msgstr "Specificatie: bwx-console [-c configuratiebestand] [-w tmp]\n"
 
 #: src/wx-console/wxbmainframe.cpp:417
 #, c-format
@@ -17652,10 +17901,14 @@ msgid ""
 "Do you want to edit it? (if you click No you will have to select another "
 "file)"
 msgstr ""
+"Waarschijnlijk gebruikt u bwx-console voor de eerste keer.\n"
+"Dit bestand (%s) is ingesteld als uw standaard configuratiebestand.\n"
+"Wilt u dit wijzigen? (Als u Nee selecteert dan moet u een ander bestand "
+"selecteren)"
 
 #: src/wx-console/wxbmainframe.cpp:419
 msgid "First run"
-msgstr ""
+msgstr "Eerste run"
 
 #: src/wx-console/wxbmainframe.cpp:436
 #, c-format
@@ -17664,39 +17917,42 @@ msgid ""
 "Error: %s\n"
 "Do you want to choose another one? (Press no to edit this file)"
 msgstr ""
+"Kan %s\n"
+" niet lezenFout: %s\n"
+"Wilt u een andere kiezen? (Toets nee om het bestand te wijzigen)"
 
 #: src/wx-console/wxbmainframe.cpp:438
 msgid "Unable to read configuration file"
-msgstr ""
+msgstr "Kan configuratiebestand niet lezen"
 
 #: src/wx-console/wxbmainframe.cpp:450
 msgid "Please choose a configuration file to use"
-msgstr ""
+msgstr "Kies een configuratiebestand om te gebruiken"
 
 #: src/wx-console/wxbmainframe.cpp:463
 msgid "This configuration file has been successfully read, use it as default?"
-msgstr ""
+msgstr "Configuratiebestand met succes gelezen. Als standaard gebruiken?"
 
 #: src/wx-console/wxbmainframe.cpp:464
 msgid "Configuration file read successfully"
-msgstr ""
+msgstr "Configuratiebestand met succes gelezen"
 
 #: src/wx-console/wxbmainframe.cpp:474
 #, c-format
 msgid "Using this configuration file: %s\n"
-msgstr ""
+msgstr "Dit configuratiebestand wordt gebruikt: %s\n"
 
 #: src/wx-console/wxbmainframe.cpp:479
 msgid "Connecting to the director..."
-msgstr ""
+msgstr "Verbinden met director ..."
 
 #: src/wx-console/wxbmainframe.cpp:494
 msgid "Failed to unregister a data parser !"
-msgstr ""
+msgstr "Data parser kon niet geregistreerd worden!"
 
 #: src/wx-console/wxbmainframe.cpp:502
 msgid "Quitting.\n"
-msgstr ""
+msgstr "Bezig met afsluiten.\n"
 
 #: src/wx-console/wxbmainframe.cpp:517
 msgid ""
@@ -17704,54 +17960,57 @@ msgid ""
 "Written by Nicolas Boichat <nicolas at boichat.ch>\n"
 "Copyright (C), 2005-2007 Free Software Foundation Europe, e.V.\n"
 msgstr ""
+"Welkom bij Bacula bwx-console.\n"
+"Geschreven door Nicolas Boichat <nicolas at boichat.ch>\n"
+"Copyright (C), 2005-2007 Free Software Foundation Europe, e.V.\n"
 
 #: src/wx-console/wxbmainframe.cpp:521
 msgid "About Bacula bwx-console"
-msgstr ""
+msgstr "Over Bacula bwx-console"
 
 #: src/wx-console/wxbmainframe.cpp:527
 msgid "Please choose your default configuration file"
-msgstr ""
+msgstr "Kies aub uw standaard configuratiebestand"
 
 #: src/wx-console/wxbmainframe.cpp:531
 msgid "Use this configuration file as default?"
-msgstr ""
+msgstr "Dit configuratiebestand als standaard gebruiken?"
 
 #: src/wx-console/wxbmainframe.cpp:532
 msgid "Configuration file"
-msgstr ""
+msgstr "Configuratiebestand"
 
 #: src/wx-console/wxbmainframe.cpp:603
 msgid "Console thread terminated."
-msgstr ""
+msgstr "Console taak beeindigd."
 
 #: src/wx-console/wxbmainframe.cpp:611
 msgid "Connection to the director lost. Quit program?"
-msgstr ""
+msgstr "Verbinding met de director verbroken. Programma stoppen?"
 
 #: src/wx-console/wxbmainframe.cpp:612
 msgid "Connection lost"
-msgstr ""
+msgstr "Verbinding verloren"
 
 #: src/wx-console/wxbmainframe.cpp:628
 msgid "Connected to the director."
-msgstr ""
+msgstr "Verbonden met de director."
 
 #: src/wx-console/wxbmainframe.cpp:651
 msgid "Reconnect"
-msgstr ""
+msgstr "Opnieuw verbinden"
 
 #: src/wx-console/wxbmainframe.cpp:652
 msgid "Reconnect to the director"
-msgstr ""
+msgstr "Verbinding naar director opnieuw opzetten"
 
 #: src/wx-console/wxbmainframe.cpp:666
 msgid "Disconnected of the director."
-msgstr ""
+msgstr "Verbinding verbroken met director"
 
 #: src/wx-console/wxbmainframe.cpp:708 src/wx-console/wxbmainframe.cpp:725
 msgid "bwx-console: unexpected director's question."
-msgstr ""
+msgstr "bwx-console: onverwachte director's opdracht"
 
 #: src/qt-console/tray-monitor/tray-monitor.cpp:67
 #, c-format
@@ -17767,55 +18026,67 @@ msgid ""
 "       -?            print this message.\n"
 "\n"
 msgstr ""
+"\n"
+"Versie: %s (%s) %s %s %s\n"
+"\n"
+"Specificatie: tray-monitor [-c configuratiebestand] [-d debug_level]\n"
+"       -c <file>     gebruik configuratiebestand\n"
+"       -d <nn>       instellen debug level op <nn>\n"
+"       -dt           weergeven tijd in debug output\n"
+"       -t            test - lees configuratie en stop\n"
+"       -?            geef deze melding.\n"
+"\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:90
+#: src/qt-console/bcomm/dircomm.cpp:92
 #, c-format
 msgid "Already connected\"%s\".\n"
-msgstr ""
+msgstr "Al verbonden\"%s\".\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:103
+#: src/qt-console/bcomm/dircomm.cpp:105
 #, c-format
 msgid ""
 "Connecting to Director %s:%d\n"
 "\n"
 msgstr ""
+"Verbinden met Director %s:%d\n"
+"\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:206
+#: src/qt-console/bcomm/dircomm.cpp:208
 msgid "Initializing ..."
-msgstr ""
+msgstr "Initialiseren ..."
 
-#: src/qt-console/bcomm/dircomm.cpp:221 src/qt-console/console/console.cpp:142
+#: src/qt-console/bcomm/dircomm.cpp:224 src/qt-console/console/console.cpp:142
 msgid "Connected"
-msgstr ""
+msgstr "Verbonden"
 
-#: src/qt-console/bcomm/dircomm.cpp:345
+#: src/qt-console/bcomm/dircomm.cpp:348
 msgid "Command completed ..."
-msgstr ""
+msgstr "Opdracht gereed ..."
 
-#: src/qt-console/bcomm/dircomm.cpp:352 src/qt-console/console/console.cpp:373
+#: src/qt-console/bcomm/dircomm.cpp:355 src/qt-console/console/console.cpp:379
 msgid "Processing command ..."
-msgstr ""
+msgstr "Opdracht aan het uitvoeren ..."
 
-#: src/qt-console/bcomm/dircomm.cpp:359
+#: src/qt-console/bcomm/dircomm.cpp:362
 msgid "At main prompt waiting for input ..."
-msgstr ""
+msgstr "Wacht op invoer op opdrachtregel in hoofdscherm ..."
 
-#: src/qt-console/bcomm/dircomm.cpp:366 src/qt-console/bcomm/dircomm.cpp:378
+#: src/qt-console/bcomm/dircomm.cpp:369 src/qt-console/bcomm/dircomm.cpp:382
 msgid "At prompt waiting for input ..."
-msgstr ""
+msgstr "Wacht op invoer op opdrachtregel ..."
 
-#: src/qt-console/bcomm/dircomm.cpp:386
+#: src/qt-console/bcomm/dircomm.cpp:390
 msgid "Command failed."
-msgstr ""
+msgstr "Opdracht mislukt."
 
-#: src/qt-console/bcomm/dircomm.cpp:458
+#: src/qt-console/bcomm/dircomm.cpp:463
 msgid "Director disconnected."
-msgstr ""
+msgstr "Director niet verbonden."
 
 #: src/qt-console/bat_conf.cpp:154
 #, c-format
 msgid "Console: name=%s\n"
-msgstr ""
+msgstr "Console: naam=%s\n"
 
 #: src/qt-console/main.cpp:191
 #, c-format
@@ -17831,3 +18102,50 @@ msgid ""
 "       -?          print this message.\n"
 "\n"
 msgstr ""
+"\n"
+"Versie: %s (%s) %s %s %s\n"
+"\n"
+"Specificatie: bat [-s] [-c configuratiebestand] [-d debug_level] "
+"[configuratiebestand]\n"
+"       -c <file>     gebruik configuratiebestand\n"
+"       -d <nn>       instellen debug level op <nn>\n"
+"       -s          geen signaleringen\n"
+"       -t            test - lees configuratie en stop\n"
+"       -?            geef deze melding.\n"
+"\n"
+
+#, fuzzy
+#~ msgid "Restart a job"
+#~ msgstr "Uitvoeren herstel opdracht"
+
+#, fuzzy
+#~ msgid "Failed to set bandwidth limit to Client.\n"
+#~ msgstr "Kan de geselecteerde client niet vinden."
+
+#, fuzzy
+#~ msgid "Unable to create component file %s. ERR=%s\n"
+#~ msgstr "Lees fout op bestand %s. FOUT=%s\n"
+
+#, fuzzy
+#~ msgid "Unable to fdopen component file %s. ERR=%s\n"
+#~ msgstr "Kan job cond variabele niet initialiseren: ERR=%s\n"
+
+#, fuzzy
+#~ msgid "Error writing component file.\n"
+#~ msgstr "Fout bij schrijven van bsr bestand.\n"
+
+#, fuzzy
+#~ msgid "ComponentInfo failed.\n"
+#~ msgstr "Opdracht mislukt."
+
+#, fuzzy
+#~ msgid "Enter the JobId list to select: "
+#~ msgstr "Voer de gekozen Job in:"
+
+#, fuzzy
+#~ msgid "canceled"
+#~ msgstr "Backup geannuleerd"
+
+#, fuzzy
+#~ msgid "Unable to stat ControlDevice %s: ERR=%s\n"
+#~ msgstr "Kan job cond variabele niet initialiseren: ERR=%s\n"
diff --git a/po/sv.po b/po/sv.po
index d441ee2..4d9f9cb 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Bacula 2.1.x\n"
 "Report-Msgid-Bugs-To: bacula-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2012-01-17 20:45+0100\n"
+"POT-Creation-Date: 2013-02-19 18:26+0100\n"
 "PO-Revision-Date: 2007-06-22 19:18+0200\n"
 "Last-Translator: Kern Sibbald <kern at bacula.org>\n"
 "Language-Team: Swedish <bacula-devel at lists.soureforge.net>\n"
@@ -47,8 +47,8 @@ msgstr ""
 msgid "Job %s waiting %d seconds for scheduled start time.\n"
 msgstr ""
 
-#: src/dird/jobq.c:220 src/dird/job.c:113 src/stored/dircmd.c:198
-#: src/stored/stored.c:503
+#: src/dird/jobq.c:220 src/dird/job.c:113 src/stored/dircmd.c:200
+#: src/stored/stored.c:560
 #, c-format
 msgid "Unable to init job cond variable: ERR=%s\n"
 msgstr ""
@@ -93,7 +93,7 @@ msgstr ""
 msgid "Continue? (yes/mod/no): "
 msgstr ""
 
-#: src/dird/ua_select.c:62 src/dird/ua_run.c:232
+#: src/dird/ua_select.c:62 src/dird/ua_run.c:219
 msgid "mod"
 msgstr ""
 
@@ -113,8 +113,8 @@ msgstr ""
 msgid "The defined Storage resources are:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:167 src/dird/ua_dotcmds.c:715 src/dird/ua_cmds.c:996
-#: src/dird/ua_run.c:237 src/wx-console/wxbrestorepanel.cpp:339
+#: src/dird/ua_select.c:167 src/dird/ua_dotcmds.c:734 src/dird/ua_cmds.c:995
+#: src/dird/ua_run.c:224 src/wx-console/wxbrestorepanel.cpp:339
 #: src/wx-console/wxbrestorepanel.cpp:355
 #: src/wx-console/wxbrestorepanel.cpp:479
 #: src/wx-console/wxbrestorepanel.cpp:480
@@ -135,7 +135,7 @@ msgstr ""
 msgid "The defined FileSet resources are:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:190 src/dird/ua_restore.c:1300 src/dird/ua_run.c:239
+#: src/dird/ua_select.c:190 src/dird/ua_restore.c:1300 src/dird/ua_run.c:226
 msgid "FileSet"
 msgstr ""
 
@@ -143,7 +143,7 @@ msgstr ""
 msgid "Select FileSet resource"
 msgstr ""
 
-#: src/dird/ua_select.c:220 src/dird/ua_cmds.c:1983
+#: src/dird/ua_select.c:220 src/dird/ua_cmds.c:2029
 msgid "Could not find a Catalog resource\n"
 msgstr ""
 
@@ -168,8 +168,8 @@ msgid "The defined Job resources are:\n"
 msgstr ""
 
 #: src/dird/ua_select.c:266 src/dird/ua_select.c:289 src/dird/ua_select.c:330
-#: src/dird/ua_select.c:1187 src/dird/dird_conf.c:650 src/dird/ua_prune.c:593
-#: src/dird/ua_run.c:238
+#: src/dird/ua_select.c:1186 src/dird/dird_conf.c:670 src/dird/ua_prune.c:601
+#: src/dird/ua_run.c:225
 msgid "Job"
 msgstr ""
 
@@ -194,8 +194,8 @@ msgstr ""
 msgid "The defined Client resources are:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:355 src/dird/ua_select.c:464 src/dird/ua_dotcmds.c:716
-#: src/dird/ua_cmds.c:997 src/dird/ua_run.c:243
+#: src/dird/ua_select.c:355 src/dird/ua_select.c:464 src/dird/ua_dotcmds.c:735
+#: src/dird/ua_cmds.c:996 src/dird/ua_run.c:230
 #: src/wx-console/wxbrestorepanel.cpp:336
 #: src/wx-console/wxbrestorepanel.cpp:354
 #: src/wx-console/wxbrestorepanel.cpp:431
@@ -254,7 +254,7 @@ msgstr ""
 msgid "Could not find Pool \"%s\": ERR=%s"
 msgstr ""
 
-#: src/dird/ua_select.c:532 src/dird/ua_output.c:474 src/dird/ua_update.c:437
+#: src/dird/ua_select.c:532 src/dird/ua_output.c:476 src/dird/ua_update.c:436
 #, c-format
 msgid "Error obtaining pool ids. ERR=%s\n"
 msgstr ""
@@ -267,13 +267,13 @@ msgstr ""
 msgid "Defined Pools:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:542 src/dird/ua_select.c:562 src/dird/ua_update.c:364
-#: src/baconfig.h:80
+#: src/dird/ua_select.c:542 src/dird/ua_select.c:562 src/dird/ua_update.c:365
+#: src/baconfig.h:88
 msgid "*None*"
 msgstr ""
 
-#: src/dird/ua_select.c:553 src/dird/ua_select.c:667 src/dird/ua_update.c:615
-#: src/dird/ua_run.c:251 src/wx-console/wxbrestorepanel.cpp:338
+#: src/dird/ua_select.c:553 src/dird/ua_select.c:666 src/dird/ua_update.c:616
+#: src/dird/ua_run.c:238 src/wx-console/wxbrestorepanel.cpp:338
 #: src/wx-console/wxbrestorepanel.cpp:527
 #: src/wx-console/wxbrestorepanel.cpp:537
 #: src/wx-console/wxbrestorepanel.cpp:1834
@@ -289,154 +289,154 @@ msgstr ""
 msgid "No access to Pool \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_select.c:624
+#: src/dird/ua_select.c:623
 msgid "Enter *MediaId or Volume name: "
 msgstr ""
 
-#: src/dird/ua_select.c:659
+#: src/dird/ua_select.c:658
 msgid "The defined Pool resources are:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:667
+#: src/dird/ua_select.c:666
 msgid "Select Pool resource"
 msgstr ""
 
-#: src/dird/ua_select.c:691 src/dird/ua_restore.c:555
+#: src/dird/ua_select.c:690 src/dird/ua_restore.c:555
 #, c-format
 msgid "Error: Pool resource \"%s\" does not exist.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:702
+#: src/dird/ua_select.c:701
 msgid "Enter the JobId to select: "
 msgstr ""
 
-#: src/dird/ua_select.c:740
+#: src/dird/ua_select.c:739
 #, c-format
 msgid "Could not find Job \"%s\": ERR=%s"
 msgstr ""
 
-#: src/dird/ua_select.c:820
+#: src/dird/ua_select.c:819
 #, c-format
 msgid "Automatically selected %s: %s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:831
+#: src/dird/ua_select.c:830
 #, c-format
 msgid ""
 "Your request has multiple choices for \"%s\". Selection is not possible in "
 "batch mode.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:849
+#: src/dird/ua_select.c:848
 #, c-format
 msgid "Selection list for \"%s\" is empty!\n"
 msgstr ""
 
-#: src/dird/ua_select.c:855
+#: src/dird/ua_select.c:854
 #, c-format
 msgid "Automatically selected: %s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:867
+#: src/dird/ua_select.c:866
 msgid "Selection aborted, nothing done.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:872
+#: src/dird/ua_select.c:871
 #, c-format
 msgid "Please enter a number between 1 and %d\n"
 msgstr ""
 
-#: src/dird/ua_select.c:921
+#: src/dird/ua_select.c:920
 msgid "Storage name given twice.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:938
+#: src/dird/ua_select.c:937
 #, c-format
 msgid "Expecting jobid=nn command, got: %s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:942
+#: src/dird/ua_select.c:941
 #, c-format
 msgid "JobId %s is not running.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:952
+#: src/dird/ua_select.c:951
 #, c-format
 msgid "Expecting job=xxx, got: %s.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:956 src/dird/ua_select.c:968
+#: src/dird/ua_select.c:955 src/dird/ua_select.c:967
 #, c-format
 msgid "Job \"%s\" is not running.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:964
+#: src/dird/ua_select.c:963
 #, c-format
 msgid "Expecting ujobid=xxx, got: %s.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:984
+#: src/dird/ua_select.c:983
 #, c-format
 msgid "Storage resource \"%s\": not found\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1016
+#: src/dird/ua_select.c:1015
 msgid "Enter autochanger drive[0]: "
 msgstr ""
 
-#: src/dird/ua_select.c:1037
+#: src/dird/ua_select.c:1036
 msgid "Enter autochanger slot: "
 msgstr ""
 
-#: src/dird/ua_select.c:1067
+#: src/dird/ua_select.c:1066
 msgid "Media Types defined in conf file:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1073
+#: src/dird/ua_select.c:1072
 msgid "Media Type"
 msgstr ""
 
-#: src/dird/ua_select.c:1073
+#: src/dird/ua_select.c:1072
 msgid "Select the Media Type"
 msgstr ""
 
-#: src/dird/ua_select.c:1112
+#: src/dird/ua_select.c:1111
 #, c-format
 msgid "JobId %s is not running. Use Job name to %s inactive jobs.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1121 src/dird/ua_select.c:1131
+#: src/dird/ua_select.c:1120 src/dird/ua_select.c:1130
 #, c-format
 msgid "Warning Job %s is not running. Continuing anyway ...\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1141 src/dird/ua_cmds.c:693 src/dird/ua_cmds.c:739
+#: src/dird/ua_select.c:1140 src/dird/ua_cmds.c:692 src/dird/ua_cmds.c:738
 msgid "Unauthorized command from this console.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1166 src/stored/status.c:473 src/filed/status.c:241
+#: src/dird/ua_select.c:1165 src/stored/status.c:538 src/filed/status.c:241
 msgid "No Jobs running.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1168
+#: src/dird/ua_select.c:1167
 msgid "None of your jobs are running.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1173
+#: src/dird/ua_select.c:1172
 msgid "Select Job:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1182
+#: src/dird/ua_select.c:1181
 #, c-format
 msgid "JobId=%s Job=%s"
 msgstr ""
 
-#: src/dird/ua_select.c:1186
+#: src/dird/ua_select.c:1185
 #, c-format
 msgid "Choose Job to %s"
 msgstr ""
 
-#: src/dird/ua_select.c:1193
+#: src/dird/ua_select.c:1192
 #, c-format
 msgid ""
 "Cancel: %s\n"
@@ -444,15 +444,15 @@ msgid ""
 "%s"
 msgstr ""
 
-#: src/dird/ua_select.c:1194
+#: src/dird/ua_select.c:1193
 msgid "Confirm cancel?"
 msgstr ""
 
-#: src/dird/ua_select.c:1200
+#: src/dird/ua_select.c:1199
 msgid "Confirm cancel (yes/no): "
 msgstr ""
 
-#: src/dird/ua_select.c:1209 src/dird/ua_cmds.c:734 src/dird/ua_cmds.c:1101
+#: src/dird/ua_select.c:1208 src/dird/ua_cmds.c:733 src/dird/ua_cmds.c:1100
 #, c-format
 msgid "Job \"%s\" not found.\n"
 msgstr ""
@@ -714,31 +714,31 @@ msgstr ""
 msgid "File: %s\n"
 msgstr ""
 
-#: src/dird/admin.c:66
+#: src/dird/admin.c:65
 #, c-format
 msgid "Start Admin JobId %d, Job=%s\n"
 msgstr ""
 
-#: src/dird/admin.c:92 src/dird/vbackup.c:304 src/dird/migrate.c:1226
-#: src/dird/backup.c:618
+#: src/dird/admin.c:90 src/dird/vbackup.c:306 src/dird/migrate.c:1227
+#: src/dird/backup.c:628
 #, c-format
 msgid "Error getting Job record for Job report: ERR=%s"
 msgstr ""
 
-#: src/dird/admin.c:100
+#: src/dird/admin.c:98
 msgid "Admin OK"
 msgstr ""
 
-#: src/dird/admin.c:104
+#: src/dird/admin.c:102
 msgid "*** Admin Error ***"
 msgstr ""
 
-#: src/dird/admin.c:108
+#: src/dird/admin.c:106
 msgid "Admin Canceled"
 msgstr ""
 
-#: src/dird/admin.c:112 src/dird/vbackup.c:354 src/dird/backup.c:674
-#: src/dird/restore.c:591
+#: src/dird/admin.c:110 src/dird/vbackup.c:356 src/dird/backup.c:684
+#: src/dird/restore.c:594
 #, c-format
 msgid "Inappropriate term code: %c\n"
 msgstr ""
@@ -747,13 +747,13 @@ msgstr ""
 msgid "Bacula "
 msgstr ""
 
-#: src/dird/dird.c:112
+#: src/dird/dird.c:150
 #, c-format
 msgid ""
 "\n"
 "Version: %s (%s)\n"
 "\n"
-"Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
+"Usage: bacula-dir [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
 "       -c <file>   set configuration file to file\n"
 "       -d <nn>     set debug level to <nn>\n"
 "       -dt         print timestamp in debug output\n"
@@ -769,66 +769,66 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/dird.c:258 src/stored/stored.c:227 src/console/console.c:1109
+#: src/dird/dird.c:296 src/stored/stored.c:227 src/console/console.c:1109
 #: src/filed/filed.c:218 src/qt-console/main.cpp:165
 msgid "Cryptography library initialization failed.\n"
 msgstr ""
 
-#: src/dird/dird.c:262 src/dird/dird.c:292 src/dird/dird.c:538
-#: src/dird/dird.c:541 src/stored/stored.c:231 src/console/console.c:1113
+#: src/dird/dird.c:300 src/dird/dird.c:328 src/dird/dird.c:560
+#: src/dird/dird.c:563 src/stored/stored.c:231 src/console/console.c:1113
 #: src/filed/filed.c:223 src/qt-console/main.cpp:169
 #, c-format
 msgid "Please correct configuration file: %s\n"
 msgstr ""
 
-#: src/dird/dird.c:524
+#: src/dird/dird.c:546
 msgid "Too many open reload requests. Request ignored.\n"
 msgstr ""
 
-#: src/dird/dird.c:539
+#: src/dird/dird.c:561
 msgid "Out of reload table entries. Giving up.\n"
 msgstr ""
 
-#: src/dird/dird.c:542
+#: src/dird/dird.c:564
 msgid "Resetting previous configuration.\n"
 msgstr ""
 
-#: src/dird/dird.c:606
+#: src/dird/dird.c:628
 #, c-format
 msgid ""
 "No Director resource defined in %s\n"
 "Without that I don't know who I am :-(\n"
 msgstr ""
 
-#: src/dird/dird.c:614 src/filed/filed.c:350
+#: src/dird/dird.c:636 src/filed/filed.c:350
 #, c-format
 msgid "No Messages resource defined in %s\n"
 msgstr ""
 
-#: src/dird/dird.c:619
+#: src/dird/dird.c:641
 #, c-format
 msgid "Only one Director resource permitted in %s\n"
 msgstr ""
 
-#: src/dird/dird.c:628 src/dird/dird.c:834 src/dird/dird.c:889
-#: src/dird/dird.c:1056 src/stored/stored.c:354 src/console/console.c:1296
+#: src/dird/dird.c:650 src/dird/dird.c:856 src/dird/dird.c:911
+#: src/dird/dird.c:950 src/stored/stored.c:354 src/console/console.c:1296
 #: src/console/console.c:1326 src/filed/filed.c:357 src/filed/filed.c:516
 #: src/wx-console/console_thread.cpp:118 src/wx-console/console_thread.cpp:144
 #: src/qt-console/main.cpp:224 src/qt-console/main.cpp:254
 msgid "TLS required but not configured in Bacula.\n"
 msgstr ""
 
-#: src/dird/dird.c:636 src/stored/stored.c:410 src/filed/filed.c:526
+#: src/dird/dird.c:658 src/stored/stored.c:410 src/filed/filed.c:526
 #, c-format
 msgid "\"TLS Certificate\" file not defined for Director \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:642 src/stored/stored.c:416 src/filed/filed.c:532
+#: src/dird/dird.c:664 src/stored/stored.c:416 src/filed/filed.c:532
 #, c-format
 msgid "\"TLS Key\" file not defined for Director \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:649 src/stored/stored.c:422 src/filed/filed.c:538
+#: src/dird/dird.c:671 src/stored/stored.c:422 src/filed/filed.c:538
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
@@ -836,46 +836,46 @@ msgid ""
 "using \"TLS Verify Peer\".\n"
 msgstr ""
 
-#: src/dird/dird.c:668 src/stored/stored.c:441 src/filed/filed.c:557
+#: src/dird/dird.c:690 src/stored/stored.c:441 src/filed/filed.c:557
 #, c-format
 msgid "Failed to initialize TLS context for Director \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:676
+#: src/dird/dird.c:698
 #, c-format
 msgid "No Job records defined in %s\n"
 msgstr ""
 
-#: src/dird/dird.c:734 src/dird/dird.c:747
+#: src/dird/dird.c:756 src/dird/dird.c:769
 #, c-format
 msgid "Hey something is wrong. p=0x%lu\n"
 msgstr ""
 
-#: src/dird/dird.c:808
+#: src/dird/dird.c:830
 #, c-format
 msgid "\"%s\" directive in Job \"%s\" resource is required, but not found.\n"
 msgstr ""
 
-#: src/dird/dird.c:815
+#: src/dird/dird.c:837
 msgid "Too many items in Job resource\n"
 msgstr ""
 
-#: src/dird/dird.c:819
+#: src/dird/dird.c:841
 #, c-format
 msgid "No storage specified in Job \"%s\" nor in Pool.\n"
 msgstr ""
 
-#: src/dird/dird.c:843
+#: src/dird/dird.c:865
 #, c-format
 msgid "\"TLS Certificate\" file not defined for Console \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:849
+#: src/dird/dird.c:871
 #, c-format
 msgid "\"TLS Key\" file not defined for Console \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:856
+#: src/dird/dird.c:878
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
@@ -883,48 +883,53 @@ msgid ""
 "using \"TLS Verify Peer\".\n"
 msgstr ""
 
-#: src/dird/dird.c:873 src/dird/dird.c:913 src/filed/filed.c:382
+#: src/dird/dird.c:895 src/dird/dird.c:935 src/filed/filed.c:382
 #, c-format
 msgid "Failed to initialize TLS context for File daemon \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:896
+#: src/dird/dird.c:918
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
 "File daemon \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:953 src/dird/dird.c:955
+#: src/dird/dird.c:959
+#, c-format
+msgid ""
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Storage \"%s\" in %s.\n"
+msgstr ""
+
+#: src/dird/dird.c:975 src/stored/stored.c:394
+#, c-format
+msgid "Failed to initialize TLS context for Storage \"%s\" in %s.\n"
+msgstr ""
+
+#: src/dird/dird.c:1014 src/dird/dird.c:1016
 #, c-format
 msgid "Could not open Catalog \"%s\", database \"%s\".\n"
 msgstr ""
 
-#: src/dird/dird.c:958 src/tools/cats_test.c:377
+#: src/dird/dird.c:1019 src/tools/cats_test.c:377
 #, c-format
 msgid "%s"
 msgstr ""
 
-#: src/dird/dird.c:1037
+#: src/dird/dird.c:1098
 #, c-format
 msgid "Could not create storage record for %s\n"
 msgstr ""
 
-#: src/dird/dird.c:1045
+#: src/dird/dird.c:1106
 #, c-format
 msgid "Could not update storage record for %s\n"
 msgstr ""
 
-#: src/dird/dird.c:1064
+#: src/dird/dird.c:1181 src/dird/migrate.c:1072 src/stored/stored.c:491
 #, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Storage \"%s\" in %s.\n"
-msgstr ""
-
-#: src/dird/dird.c:1080 src/stored/stored.c:394
-#, c-format
-msgid "Failed to initialize TLS context for Storage \"%s\" in %s.\n"
+msgid "Could not compile regex pattern \"%s\" ERR=%s\n"
 msgstr ""
 
 #: src/dird/inc_conf.c:312
@@ -941,18 +946,18 @@ msgstr ""
 msgid "Old style Include/Exclude not supported\n"
 msgstr ""
 
-#: src/dird/inc_conf.c:393 src/dird/inc_conf.c:739 src/dird/dird_conf.c:1993
+#: src/dird/inc_conf.c:393 src/dird/inc_conf.c:739 src/dird/dird_conf.c:2022
 #, c-format
 msgid "Expecting keyword, got: %s\n"
 msgstr ""
 
-#: src/dird/inc_conf.c:401 src/dird/inc_conf.c:745 src/dird/dird_conf.c:1999
+#: src/dird/inc_conf.c:401 src/dird/inc_conf.c:745 src/dird/dird_conf.c:2028
 #: src/lib/parse_conf.c:976
 #, c-format
 msgid "expected an equals, got: %s"
 msgstr ""
 
-#: src/dird/inc_conf.c:411 src/dird/inc_conf.c:754 src/dird/dird_conf.c:2010
+#: src/dird/inc_conf.c:411 src/dird/inc_conf.c:754 src/dird/dird_conf.c:2039
 #, c-format
 msgid "Keyword %s not permitted in this resource"
 msgstr ""
@@ -1004,7 +1009,7 @@ msgstr ""
 msgid "Options section not permitted in Exclude\n"
 msgstr ""
 
-#: src/dird/inc_conf.c:724 src/dird/dird_conf.c:1979
+#: src/dird/inc_conf.c:724 src/dird/dird_conf.c:2008
 #, c-format
 msgid "Expecting open brace. Got %s"
 msgstr ""
@@ -1060,7 +1065,7 @@ msgstr ""
 msgid "End query mode.\n"
 msgstr ""
 
-#: src/dird/newvol.c:91
+#: src/dird/newvol.c:90
 #, c-format
 msgid "Illegal character in Volume name \"%s\"\n"
 msgstr ""
@@ -1075,12 +1080,12 @@ msgstr ""
 msgid "SQL failed, but ignored. ERR=%s\n"
 msgstr ""
 
-#: src/dird/newvol.c:142
+#: src/dird/newvol.c:141
 #, c-format
 msgid "Wanted to create Volume \"%s\", but it already exists. Trying again.\n"
 msgstr ""
 
-#: src/dird/newvol.c:151
+#: src/dird/newvol.c:150
 msgid "Too many failures. Giving up creating Volume name.\n"
 msgstr ""
 
@@ -1119,7 +1124,7 @@ msgstr ""
 msgid "Cannot destroy var context: ERR=%s\n"
 msgstr ""
 
-#: src/dird/recycle.c:65
+#: src/dird/recycle.c:69
 #, c-format
 msgid "Recycled volume \"%s\"\n"
 msgstr ""
@@ -1184,26 +1189,26 @@ msgid ""
 "There are no more Jobs associated with Volume \"%s\". Marking it purged.\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:556 src/dird/ua_label.c:759
+#: src/dird/ua_purge.c:556 src/dird/ua_label.c:774
 #, c-format
 msgid "Connecting to Storage daemon %s at %s:%d ...\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:559 src/dird/ua_dotcmds.c:606 src/dird/ua_cmds.c:772
-#: src/dird/ua_cmds.c:1531 src/dird/ua_label.c:762 src/dird/job.c:448
+#: src/dird/ua_purge.c:559 src/dird/ua_dotcmds.c:625 src/dird/ua_cmds.c:771
+#: src/dird/ua_cmds.c:1577 src/dird/ua_label.c:777 src/dird/job.c:448
 msgid "Failed to connect to Storage daemon.\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:622
+#: src/dird/ua_purge.c:623
 msgid "Can't update volume size in the catalog\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:624
+#: src/dird/ua_purge.c:625
 #, c-format
 msgid "The volume \"%s\" has been truncated\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:626
+#: src/dird/ua_purge.c:627
 #, c-format
 msgid "Unable to truncate volume \"%s\"\n"
 msgstr ""
@@ -1213,17 +1218,17 @@ msgstr ""
 msgid "No Volumes found to perform %s action.\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:785
+#: src/dird/ua_purge.c:786
 #, c-format
 msgid "Unable move recycled Volume in full Pool \"%s\" MaxVols=%d\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:799
+#: src/dird/ua_purge.c:800
 #, c-format
 msgid "All records pruned from Volume \"%s\"; marking it \"Purged\"\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:804
+#: src/dird/ua_purge.c:805
 #, c-format
 msgid "Cannot purge Volume with VolStatus=%s\n"
 msgstr ""
@@ -1233,8 +1238,8 @@ msgid "Could not get or create a Pool record.\n"
 msgstr ""
 
 #: src/dird/vbackup.c:89 src/dird/migrate.c:227 src/dird/migrate.c:228
-#: src/dird/backup.c:93 src/dird/job.c:185 src/dird/job.c:868
-#: src/dird/job.c:1123 src/dird/job.c:1169 src/dird/job.c:1183
+#: src/dird/backup.c:93 src/dird/job.c:185 src/dird/job.c:871
+#: src/dird/job.c:1126 src/dird/job.c:1172 src/dird/job.c:1186
 msgid "Pool resource"
 msgstr ""
 
@@ -1265,34 +1270,34 @@ msgstr ""
 msgid "Could not get or create the FileSet record.\n"
 msgstr ""
 
-#: src/dird/vbackup.c:311 src/dird/backup.c:625
+#: src/dird/vbackup.c:313 src/dird/backup.c:635
 #, c-format
 msgid "Error getting Client record for Job report: ERR=%s"
 msgstr ""
 
-#: src/dird/vbackup.c:317 src/dird/migrate.c:1256 src/dird/backup.c:631
+#: src/dird/vbackup.c:319 src/dird/migrate.c:1257 src/dird/backup.c:641
 #, c-format
 msgid "Error getting Media record for Volume \"%s\": ERR=%s"
 msgstr ""
 
-#: src/dird/vbackup.c:327 src/dird/backup.c:641 src/dird/backup.c:650
-#: src/stored/bscan.c:1210
+#: src/dird/vbackup.c:329 src/dird/backup.c:651 src/dird/backup.c:660
+#: src/stored/bscan.c:1214
 msgid "Backup OK -- with warnings"
 msgstr ""
 
-#: src/dird/vbackup.c:329 src/dird/backup.c:643 src/stored/bscan.c:1207
+#: src/dird/vbackup.c:331 src/dird/backup.c:653 src/stored/bscan.c:1211
 msgid "Backup OK"
 msgstr ""
 
-#: src/dird/vbackup.c:334 src/dird/backup.c:654 src/stored/bscan.c:1214
+#: src/dird/vbackup.c:336 src/dird/backup.c:664 src/stored/bscan.c:1218
 msgid "*** Backup Error ***"
 msgstr ""
 
-#: src/dird/vbackup.c:344 src/dird/backup.c:664 src/stored/bscan.c:1217
+#: src/dird/vbackup.c:346 src/dird/backup.c:674 src/stored/bscan.c:1221
 msgid "Backup Canceled"
 msgstr ""
 
-#: src/dird/vbackup.c:391
+#: src/dird/vbackup.c:393
 #, c-format
 msgid ""
 "%s %s %s (%s):\n"
@@ -1339,93 +1344,93 @@ msgstr ""
 msgid "disabled"
 msgstr ""
 
-#: src/dird/ua_output.c:208
+#: src/dird/ua_output.c:211
 msgid "Keywords for the show command are:\n"
 msgstr ""
 
-#: src/dird/ua_output.c:214
+#: src/dird/ua_output.c:217
 #, c-format
 msgid "%s resource %s not found.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:217
+#: src/dird/ua_output.c:220
 #, c-format
 msgid "Resource %s not found\n"
 msgstr ""
 
-#: src/dird/ua_output.c:288
+#: src/dird/ua_output.c:290
 msgid "Hey! DB is NULL\n"
 msgstr ""
 
-#: src/dird/ua_output.c:445
+#: src/dird/ua_output.c:447
 #, c-format
 msgid "Jobid %d used %d Volume(s): %s\n"
 msgstr ""
 
-#: src/dird/ua_output.c:463
+#: src/dird/ua_output.c:465
 msgid "No Pool specified.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:484
+#: src/dird/ua_output.c:486
 #, c-format
 msgid "Pool: %s\n"
 msgstr ""
 
-#: src/dird/ua_output.c:500
+#: src/dird/ua_output.c:502
 msgid "Ignoring invalid value for days. Max is 50.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:522
+#: src/dird/ua_output.c:524
 #, c-format
 msgid "Unknown list keyword: %s\n"
 msgstr ""
 
-#: src/dird/ua_output.c:548
+#: src/dird/ua_output.c:549
 #, c-format
 msgid "%s is not a job name.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:562
+#: src/dird/ua_output.c:563
 #, c-format
 msgid "Could not find Pool for Job %s\n"
 msgstr ""
 
-#: src/dird/ua_output.c:575
+#: src/dird/ua_output.c:576
 #, c-format
 msgid "Could not find next Volume for Job %s (Pool=%s, Level=%s).\n"
 msgstr ""
 
-#: src/dird/ua_output.c:579
+#: src/dird/ua_output.c:580
 #, c-format
 msgid ""
 "The next Volume to be used by Job \"%s\" (Pool=%s, Level=%s) will be %s\n"
 msgstr ""
 
-#: src/dird/ua_output.c:592
+#: src/dird/ua_output.c:593
 #, c-format
 msgid "Could not find next Volume for Job %s.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:719 src/dird/job.c:133 src/tools/cats_test.c:375
+#: src/dird/ua_output.c:720 src/dird/job.c:133 src/tools/cats_test.c:375
 #, c-format
 msgid "Could not open database \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_output.c:732
+#: src/dird/ua_output.c:733
 #, c-format
 msgid "Pool %s not in database. %s"
 msgstr ""
 
-#: src/dird/ua_output.c:740
+#: src/dird/ua_output.c:741
 #, c-format
 msgid "Pool %s created in database.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:793
+#: src/dird/ua_output.c:794
 msgid "You have no messages.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:873
+#: src/dird/ua_output.c:874
 msgid "Message too long to display.\n"
 msgstr ""
 
@@ -1438,188 +1443,188 @@ msgstr ""
 msgid ": is an invalid command.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:540 src/dird/ua_restore.c:780
+#: src/dird/ua_dotcmds.c:553 src/dird/ua_restore.c:780
 #: src/dird/ua_restore.c:823
 #, c-format
 msgid "Unable to get Job record for JobId=%s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:600 src/dird/ua_cmds.c:766 src/dird/ua_cmds.c:1520
+#: src/dird/ua_dotcmds.c:619 src/dird/ua_cmds.c:765 src/dird/ua_cmds.c:1566
 #: src/dird/ua_status.c:352 src/dird/job.c:147 src/dird/job.c:153
-#: src/dird/job.c:1157 src/dird/job.c:1161
+#: src/dird/job.c:1160 src/dird/job.c:1164
 msgid "unknown source"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:603 src/dird/ua_cmds.c:769 src/dird/ua_status.c:355
+#: src/dird/ua_dotcmds.c:622 src/dird/ua_cmds.c:768 src/dird/ua_status.c:355
 #, c-format
 msgid "Connecting to Storage daemon %s at %s:%d\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:609 src/dird/ua_cmds.c:775 src/dird/ua_status.c:366
+#: src/dird/ua_dotcmds.c:628 src/dird/ua_cmds.c:774 src/dird/ua_status.c:366
 msgid "Connected to storage daemon\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:629 src/dird/ua_cmds.c:804 src/dird/ua_cmds.c:1202
+#: src/dird/ua_dotcmds.c:648 src/dird/ua_cmds.c:803 src/dird/ua_cmds.c:1208
 #: src/dird/ua_status.c:397
 #, c-format
 msgid "Connecting to Client %s at %s:%d\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:632 src/dird/ua_cmds.c:807 src/dird/ua_cmds.c:1205
+#: src/dird/ua_dotcmds.c:651 src/dird/ua_cmds.c:806 src/dird/ua_cmds.c:1211
 msgid "Failed to connect to Client.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:675 src/dird/ua_dotcmds.c:769
+#: src/dird/ua_dotcmds.c:694 src/dird/ua_dotcmds.c:788
 #, c-format
 msgid "Unknown command: %s\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:713 src/dird/ua_cmds.c:994
+#: src/dird/ua_dotcmds.c:732 src/dird/ua_cmds.c:993
 msgid "Available daemons are: \n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:714 src/dird/ua_cmds.c:995
+#: src/dird/ua_dotcmds.c:733 src/dird/ua_cmds.c:994
 msgid "Director"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:717
+#: src/dird/ua_dotcmds.c:736
 msgid "Select daemon type to make die"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:743
+#: src/dird/ua_dotcmds.c:762
 msgid "The Director will generate a deadlock.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:747
+#: src/dird/ua_dotcmds.c:766
 msgid "The Director will segment fault.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:936
+#: src/dird/ua_dotcmds.c:955
 msgid "Access to specified Client or FileSet not allowed.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:941 src/dird/ua_dotcmds.c:985
+#: src/dird/ua_dotcmds.c:960 src/dird/ua_dotcmds.c:1004
 #: src/dird/ua_restore.c:941 src/dird/ua_restore.c:969
 #: src/dird/ua_restore.c:990
 #, c-format
 msgid "Query failed: %s. ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:980
+#: src/dird/ua_dotcmds.c:999
 msgid "query keyword not found.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:1007
+#: src/dird/ua_dotcmds.c:1026
 #, c-format
 msgid "List MediaType failed: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:1021
+#: src/dird/ua_dotcmds.c:1040
 #, c-format
 msgid "List Media failed: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:1035
+#: src/dird/ua_dotcmds.c:1054
 #, c-format
 msgid "List Location failed: ERR=%s\n"
 msgstr ""
 
-#: src/dird/next_vol.c:149
+#: src/dird/next_vol.c:166
 #, c-format
 msgid "Purging oldest volume \"%s\"\n"
 msgstr ""
 
-#: src/dird/next_vol.c:155
+#: src/dird/next_vol.c:172
 #, c-format
 msgid "Pruning oldest volume \"%s\"\n"
 msgstr ""
 
-#: src/dird/next_vol.c:174
+#: src/dird/next_vol.c:191
 msgid "We seem to be looping trying to find the next volume. I give up.\n"
 msgstr ""
 
-#: src/dird/next_vol.c:201
+#: src/dird/next_vol.c:218
 #, c-format
 msgid "Max Volume bytes=%s exceeded. Marking Volume \"%s\" as Full.\n"
 msgstr ""
 
-#: src/dird/next_vol.c:209
+#: src/dird/next_vol.c:226
 #, c-format
 msgid "Volume used once. Marking Volume \"%s\" as Used.\n"
 msgstr ""
 
-#: src/dird/next_vol.c:216
+#: src/dird/next_vol.c:233
 #, c-format
 msgid "Max Volume jobs=%s exceeded. Marking Volume \"%s\" as Used.\n"
 msgstr ""
 
-#: src/dird/next_vol.c:226
+#: src/dird/next_vol.c:243
 #, c-format
 msgid "Max Volume files=%s exceeded. Marking Volume \"%s\" as Used.\n"
 msgstr ""
 
-#: src/dird/next_vol.c:237
+#: src/dird/next_vol.c:254
 #, c-format
 msgid ""
 "Max configured use duration=%s sec. exceeded. Marking Volume \"%s\" as "
 "Used.\n"
 msgstr ""
 
-#: src/dird/next_vol.c:249
+#: src/dird/next_vol.c:267
 #, c-format
 msgid "Catalog error updating volume \"%s\". ERR=%s"
 msgstr ""
 
-#: src/dird/next_vol.c:271
+#: src/dird/next_vol.c:289
 msgid "volume has expired"
 msgstr ""
 
-#: src/dird/next_vol.c:289 src/dird/next_vol.c:333
+#: src/dird/next_vol.c:307 src/dird/next_vol.c:351
 #, c-format
 msgid "Recycled current volume \"%s\"\n"
 msgstr ""
 
-#: src/dird/next_vol.c:294
+#: src/dird/next_vol.c:312
 msgid "and recycling of current volume failed"
 msgstr ""
 
-#: src/dird/next_vol.c:300
+#: src/dird/next_vol.c:318
 msgid "but should be Append, Purged or Recycle"
 msgstr ""
 
-#: src/dird/next_vol.c:309
+#: src/dird/next_vol.c:327
 msgid "volume has recycling disabled"
 msgstr ""
 
-#: src/dird/next_vol.c:336
+#: src/dird/next_vol.c:354
 msgid ""
 "but should be Append, Purged or Recycle (recycling of the current volume "
 "failed)"
 msgstr ""
 
-#: src/dird/next_vol.c:340
+#: src/dird/next_vol.c:358
 msgid ""
 "but should be Append, Purged or Recycle (cannot automatically recycle "
 "current volume, as it still contains unpruned data or the Volume Retention "
 "time has not expired.)"
 msgstr ""
 
-#: src/dird/next_vol.c:402
+#: src/dird/next_vol.c:421
 #, c-format
 msgid "Unable to get Pool record: ERR=%s"
 msgstr ""
 
-#: src/dird/next_vol.c:409
+#: src/dird/next_vol.c:428
 #, c-format
 msgid "Unable add Scratch Volume, Pool \"%s\" full MaxVols=%d\n"
 msgstr ""
 
-#: src/dird/next_vol.c:428
+#: src/dird/next_vol.c:448
 #, c-format
 msgid "Failed to move Scratch Volume. ERR=%s\n"
 msgstr ""
 
-#: src/dird/next_vol.c:433
+#: src/dird/next_vol.c:453
 #, c-format
 msgid "Using Volume \"%s\" from 'Scratch' pool.\n"
 msgstr ""
@@ -1801,165 +1806,165 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:307
+#: src/dird/ua_cmds.c:306
 #, c-format
 msgid "Pool already has maximum volumes=%d\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:308
+#: src/dird/ua_cmds.c:307
 msgid "Enter new maximum (zero for unlimited): "
 msgstr ""
 
-#: src/dird/ua_cmds.c:328
+#: src/dird/ua_cmds.c:327
 #, c-format
 msgid "Enter number of Volumes to create. 0=>fixed name. Max=%d: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:334
+#: src/dird/ua_cmds.c:333
 #, c-format
 msgid "The number must be between 0 and %d\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:342
+#: src/dird/ua_cmds.c:341
 msgid "Enter Volume name: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:346
+#: src/dird/ua_cmds.c:345
 msgid "Enter base volume name: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:355 src/dird/ua_label.c:648
+#: src/dird/ua_cmds.c:354 src/dird/ua_label.c:663
 msgid "Volume name too long.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:359 src/dird/ua_label.c:654 src/lib/edit.c:501
+#: src/dird/ua_cmds.c:358 src/dird/ua_label.c:669 src/lib/edit.c:501
 msgid "Volume name must be at least one character long.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:370
+#: src/dird/ua_cmds.c:369
 msgid "Enter the starting number: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:375
+#: src/dird/ua_cmds.c:374
 msgid "Start number must be greater than zero.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:386
+#: src/dird/ua_cmds.c:385
 msgid "Enter slot (0 for none): "
 msgstr ""
 
-#: src/dird/ua_cmds.c:390
+#: src/dird/ua_cmds.c:389
 msgid "InChanger? yes/no: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:415
+#: src/dird/ua_cmds.c:414
 #, c-format
 msgid "%d Volumes created in pool %s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:431 src/dird/ua_cmds.c:1033
+#: src/dird/ua_cmds.c:430 src/dird/ua_cmds.c:1032
 msgid "Turn on or off? "
 msgstr ""
 
-#: src/dird/ua_cmds.c:545
+#: src/dird/ua_cmds.c:544
 #, c-format
 msgid ""
 "Can't set %s RecyclePool to %s, %s is not in database.\n"
 "Try to update it with 'update pool=%s'\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:563
+#: src/dird/ua_cmds.c:562
 #, c-format
 msgid ""
 "Can't set %s ScratchPool to %s, %s is not in database.\n"
 "Try to update it with 'update pool=%s'\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:632
+#: src/dird/ua_cmds.c:631
 #, c-format
 msgid ""
 "Error: Pool %s already exists.\n"
 "Use update to change it.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:643
+#: src/dird/ua_cmds.c:642
 #, c-format
 msgid "Pool %s created.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:673
+#: src/dird/ua_cmds.c:672
 msgid "Python interpreter restarted.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:676 src/dird/ua_cmds.c:1331
+#: src/dird/ua_cmds.c:675 src/dird/ua_cmds.c:1337
 msgid "Nothing done.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:700 src/dird/ua_cmds.c:1084 src/dird/ua_run.c:1582
+#: src/dird/ua_cmds.c:699 src/dird/ua_cmds.c:1083 src/dird/ua_run.c:1588
 #, c-format
 msgid "Client \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:709
+#: src/dird/ua_cmds.c:708
 #, c-format
 msgid "Client \"%s\" address set to %s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:743
+#: src/dird/ua_cmds.c:742
 #, c-format
 msgid "Job \"%s\" %sabled\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:921
+#: src/dird/ua_cmds.c:920
 msgid "Enter new debug level: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:998
+#: src/dird/ua_cmds.c:997
 msgid "All"
 msgstr ""
 
-#: src/dird/ua_cmds.c:999
+#: src/dird/ua_cmds.c:998
 msgid "Select daemon type to set debug level"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1088 src/dird/ua_cmds.c:1926
+#: src/dird/ua_cmds.c:1087 src/dird/ua_cmds.c:1972
 #, c-format
 msgid "No authorization for Client \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1093
+#: src/dird/ua_cmds.c:1092
 msgid "Client name missing.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1105 src/dird/ua_cmds.c:1166 src/dird/ua_cmds.c:1948
+#: src/dird/ua_cmds.c:1104 src/dird/ua_cmds.c:1171 src/dird/ua_cmds.c:1994
 #, c-format
 msgid "No authorization for Job \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1110
+#: src/dird/ua_cmds.c:1109
 msgid "Job name missing.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1119
+#: src/dird/ua_cmds.c:1118
 #, c-format
 msgid "Fileset \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1123
+#: src/dird/ua_cmds.c:1122
 #, c-format
 msgid "No authorization for FileSet \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1128
+#: src/dird/ua_cmds.c:1127
 msgid "Fileset name missing.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1139 src/dird/ua_run.c:563
+#: src/dird/ua_cmds.c:1138 src/dird/ua_run.c:550
 #, c-format
 msgid "Level \"%s\" not valid.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1143
+#: src/dird/ua_cmds.c:1142
 msgid "Level value missing.\n"
 msgstr ""
 
@@ -1967,39 +1972,63 @@ msgstr ""
 msgid "Invalid value for accurate. It must be yes or no.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1162
+#: src/dird/ua_cmds.c:1154
+msgid "Accurate value missing.\n"
+msgstr ""
+
+#: src/dird/ua_cmds.c:1167
 msgid "No job specified.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1210
+#: src/dird/ua_cmds.c:1227
 msgid "Error sending include list.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1215
+#: src/dird/ua_cmds.c:1232
 msgid "Error sending exclude list.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1317
+#: src/dird/ua_cmds.c:1323
 msgid ""
 "In general it is not a good idea to delete either a\n"
 "Pool or a Volume since they may contain data.\n"
 "\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1320
+#: src/dird/ua_cmds.c:1326
 msgid "Choose catalog item to delete"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1384
+#: src/dird/ua_cmds.c:1376 src/dird/ua_cmds.c:1391 src/dird/ua_cmds.c:1401
+#, c-format
+msgid "Illegal JobId %s ignored\n"
+msgstr ""
+
+#: src/dird/ua_cmds.c:1404
 msgid "Enter JobId to delete: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:1423
+#: src/dird/ua_cmds.c:1440
+#, c-format
+msgid "Are you sure you want to delete %d JobIds ? (yes/no): "
+msgstr ""
+
+#: src/dird/ua_cmds.c:1450
 #, c-format
-msgid "Job %s and associated records deleted from the catalog.\n"
+msgid "Illegal JobId range %s - %s should define increasing JobIds, ignored\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1438
+#: src/dird/ua_cmds.c:1454
+#, c-format
+msgid "Illegal JobId range %s - %s, ignored\n"
+msgstr ""
+
+#: src/dird/ua_cmds.c:1469
+#, c-format
+msgid "Jobid %s and associated records deleted from the catalog.\n"
+msgstr ""
+
+#: src/dird/ua_cmds.c:1484
 #, c-format
 msgid ""
 "\n"
@@ -2007,44 +2036,44 @@ msgid ""
 "and all Jobs saved on that volume from the Catalog\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1445
+#: src/dird/ua_cmds.c:1491
 #, c-format
 msgid "Are you sure you want to delete Volume \"%s\"? (yes/no): "
 msgstr ""
 
-#: src/dird/ua_cmds.c:1458
+#: src/dird/ua_cmds.c:1504
 msgid "Can't list jobs on this volume\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1483
+#: src/dird/ua_cmds.c:1529
 #, c-format
 msgid "Are you sure you want to delete Pool \"%s\"? (yes/no): "
 msgstr ""
 
-#: src/dird/ua_cmds.c:1598
+#: src/dird/ua_cmds.c:1644
 #, c-format
 msgid "Using Catalog name=%s DB=%s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1666
+#: src/dird/ua_cmds.c:1712
 msgid "ERR: Can't open db\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1713
+#: src/dird/ua_cmds.c:1759
 msgid "Wait on mount timed out\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1723
+#: src/dird/ua_cmds.c:1769
 msgid "ERR: Job was not found\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1799
+#: src/dird/ua_cmds.c:1845
 msgid ""
 "  Command       Description\n"
 "  =======       ===========\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1803
+#: src/dird/ua_cmds.c:1849
 #, c-format
 msgid ""
 "  %-13s %s\n"
@@ -2053,12 +2082,12 @@ msgid ""
 "\t%s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1808
+#: src/dird/ua_cmds.c:1854
 #, c-format
 msgid "  %-13s %s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1812
+#: src/dird/ua_cmds.c:1858
 #, c-format
 msgid ""
 "\n"
@@ -2066,29 +2095,29 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1814
+#: src/dird/ua_cmds.c:1860
 msgid ""
 "\n"
 "When at a prompt, entering a period cancels the command.\n"
 "\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1850 src/filed/status.c:85
+#: src/dird/ua_cmds.c:1896 src/filed/status.c:85
 #, c-format
 msgid "%s Version: %s (%s) %s %s %s %s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1909 src/dird/ua_cmds.c:1936 src/dird/ua_cmds.c:1958
+#: src/dird/ua_cmds.c:1955 src/dird/ua_cmds.c:1982 src/dird/ua_cmds.c:2004
 #, c-format
 msgid "No authorization for Catalog \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:2003
+#: src/dird/ua_cmds.c:2049
 #, c-format
 msgid "Could not open catalog database \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:2013
+#: src/dird/ua_cmds.c:2059
 #, c-format
 msgid "Using Catalog \"%s\"\n"
 msgstr ""
@@ -2183,7 +2212,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:129 src/dird/ua_tree.c:827
+#: src/dird/ua_tree.c:129 src/dird/ua_tree.c:831
 #, c-format
 msgid "cwd is: %s\n"
 msgstr ""
@@ -2193,142 +2222,150 @@ msgstr ""
 msgid "Invalid command \"%s\". Enter \"done\" to exit.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:370 src/dird/ua_tree.c:382 src/dird/ua_tree.c:399
+#: src/dird/ua_tree.c:227
+#, c-format
+msgid ""
+"Something is wrong with the Delta sequence of %s, skiping new parts. Current "
+"sequence is %d\n"
+msgstr ""
+
+#: src/dird/ua_tree.c:373 src/dird/ua_tree.c:385 src/dird/ua_tree.c:402
 msgid "No files marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:384
+#: src/dird/ua_tree.c:387
 msgid "1 file marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:386
+#: src/dird/ua_tree.c:389
 #, c-format
 msgid "%s files marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:414
+#: src/dird/ua_tree.c:417
 msgid "No directories marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:416
+#: src/dird/ua_tree.c:419
 msgid "1 directory marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:418
+#: src/dird/ua_tree.c:421
 #, c-format
 msgid "%s directories marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:439
+#: src/dird/ua_tree.c:442
 #, c-format
 msgid "%s total files/dirs. %s marked to be restored.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:450
+#: src/dird/ua_tree.c:453
 msgid "No file specification given.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:671
+#: src/dird/ua_tree.c:674
 #, c-format
 msgid "Node %s has no children.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:764
+#: src/dird/ua_tree.c:767
 #, c-format
 msgid "%d total files; %d marked to be restored; %s bytes.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:775 src/stored/btape.c:2947
+#: src/dird/ua_tree.c:778 src/stored/btape.c:2949
 #, c-format
 msgid ""
 "  Command    Description\n"
 "  =======    ===========\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:798
+#: src/dird/ua_tree.c:801
 msgid "Too few or too many arguments. Try using double quotes.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:810
+#: src/dird/ua_tree.c:814
 msgid "Invalid path given.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:846 src/dird/ua_tree.c:858
+#: src/dird/ua_tree.c:850 src/dird/ua_tree.c:862
 msgid "No files unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:860
+#: src/dird/ua_tree.c:864
 msgid "1 file unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:863
+#: src/dird/ua_tree.c:867
 #, c-format
 msgid "%s files unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:874 src/dird/ua_tree.c:891
+#: src/dird/ua_tree.c:878 src/dird/ua_tree.c:895
 msgid "No directories unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:893
+#: src/dird/ua_tree.c:897
 msgid "1 directory unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:895
+#: src/dird/ua_tree.c:899
 #, c-format
 msgid "%d directories unmarked.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:559 src/tray-monitor/tray_conf.c:168
+#: src/dird/dird_conf.c:567 src/tray-monitor/tray_conf.c:168
 #: src/qt-console/tray-monitor/tray_conf.cpp:168
 #, c-format
 msgid "No %s resource defined\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:568
+#: src/dird/dird_conf.c:576
 #, c-format
 msgid "Director: name=%s MaxJobs=%d FDtimeout=%s SDtimeout=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:573
+#: src/dird/dird_conf.c:581
 #, c-format
 msgid "   query_file=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:576 src/dird/dird_conf.c:596 src/dird/dird_conf.c:610
-#: src/dird/dird_conf.c:669 src/dird/dird_conf.c:673 src/dird/dird_conf.c:677
-#: src/dird/dird_conf.c:710 src/dird/dird_conf.c:733 src/dird/dird_conf.c:737
-#: src/dird/dird_conf.c:741 src/dird/dird_conf.c:745 src/dird/dird_conf.c:749
-#: src/dird/dird_conf.c:762 src/dird/dird_conf.c:989 src/dird/dird_conf.c:996
+#: src/dird/dird_conf.c:584 src/dird/dird_conf.c:604 src/dird/dird_conf.c:621
+#: src/dird/dird_conf.c:689 src/dird/dird_conf.c:693 src/dird/dird_conf.c:697
+#: src/dird/dird_conf.c:730 src/dird/dird_conf.c:753 src/dird/dird_conf.c:757
+#: src/dird/dird_conf.c:761 src/dird/dird_conf.c:765 src/dird/dird_conf.c:769
+#: src/dird/dird_conf.c:782 src/dird/dird_conf.c:1018
+#: src/dird/dird_conf.c:1025
 msgid "  --> "
 msgstr ""
 
-#: src/dird/dird_conf.c:581
+#: src/dird/dird_conf.c:589
 #, c-format
 msgid "Console: name=%s SSL=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:586
+#: src/dird/dird_conf.c:594
 #, c-format
 msgid "Counter: name=%s min=%d max=%d cur=%d wrapcntr=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:591
+#: src/dird/dird_conf.c:599
 #, c-format
 msgid "Counter: name=%s min=%d max=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:602
+#: src/dird/dird_conf.c:613
 #, c-format
 msgid "Client: name=%s address=%s FDport=%d MaxJobs=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:605
+#: src/dird/dird_conf.c:616
 #, c-format
 msgid "      JobRetention=%s FileRetention=%s AutoPrune=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:618
+#: src/dird/dird_conf.c:629
 #, c-format
 msgid ""
 "Device: name=%s ok=%d num_writers=%d max_writers=%d\n"
@@ -2337,286 +2374,286 @@ msgid ""
 "      poolid=%s volname=%s MediaType=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:629
+#: src/dird/dird_conf.c:643
 #, c-format
 msgid ""
 "Storage: name=%s address=%s SDport=%d MaxJobs=%u\n"
 "      DeviceName=%s MediaType=%s StorageId=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:639
+#: src/dird/dird_conf.c:656
 #, c-format
 msgid ""
 "Catalog: name=%s address=%s DBport=%d db_name=%s\n"
 "      db_driver=%s db_user=%s MutliDBConn=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:649
+#: src/dird/dird_conf.c:669
 #, c-format
 msgid "%s: name=%s JobType=%d level=%s Priority=%d Enabled=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:650
+#: src/dird/dird_conf.c:670
 msgid "JobDefs"
 msgstr ""
 
-#: src/dird/dird_conf.c:654
+#: src/dird/dird_conf.c:674
 #, c-format
 msgid ""
 "     MaxJobs=%u Resched=%d Times=%d Interval=%s Spool=%d WritePartAfterJob="
 "%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:660
+#: src/dird/dird_conf.c:680
 #, c-format
 msgid "     SpoolSize=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:663
+#: src/dird/dird_conf.c:683
 #, c-format
 msgid "     Accurate=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:666
+#: src/dird/dird_conf.c:686
 #, c-format
 msgid "     SelectionType=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:681
+#: src/dird/dird_conf.c:701
 #, c-format
 msgid "  --> Where=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:684
+#: src/dird/dird_conf.c:704
 #, c-format
 msgid "  --> RegexWhere=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:687
+#: src/dird/dird_conf.c:707
 #, c-format
 msgid "  --> Bootstrap=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:690
+#: src/dird/dird_conf.c:710
 #, c-format
 msgid "  --> WriteBootstrap=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:693
+#: src/dird/dird_conf.c:713
 #, c-format
 msgid "  --> PluginOptions=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:696
+#: src/dird/dird_conf.c:716
 #, c-format
 msgid "  --> MaxRunTime=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:699
+#: src/dird/dird_conf.c:719
 #, c-format
 msgid "  --> MaxWaitTime=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:702
+#: src/dird/dird_conf.c:722
 #, c-format
 msgid "  --> MaxStartDelay=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:705
+#: src/dird/dird_conf.c:725
 #, c-format
 msgid "  --> MaxRunSchedTime=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:717
+#: src/dird/dird_conf.c:737
 #, c-format
 msgid "  --> Base %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:723 src/lib/runscript.c:297
+#: src/dird/dird_conf.c:743 src/lib/runscript.c:297
 msgid " --> RunScript\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:724 src/lib/runscript.c:298
+#: src/dird/dird_conf.c:744 src/lib/runscript.c:298
 #, c-format
 msgid "  --> Command=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:725 src/lib/runscript.c:299
+#: src/dird/dird_conf.c:745 src/lib/runscript.c:299
 #, c-format
 msgid "  --> Target=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:726 src/lib/runscript.c:300
+#: src/dird/dird_conf.c:746 src/lib/runscript.c:300
 #, c-format
 msgid "  --> RunOnSuccess=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:727 src/lib/runscript.c:301
+#: src/dird/dird_conf.c:747 src/lib/runscript.c:301
 #, c-format
 msgid "  --> RunOnFailure=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:728 src/lib/runscript.c:302
+#: src/dird/dird_conf.c:748 src/lib/runscript.c:302
 #, c-format
 msgid "  --> FailJobOnError=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:729 src/lib/runscript.c:303
+#: src/dird/dird_conf.c:749 src/lib/runscript.c:303
 #, c-format
 msgid "  --> RunWhen=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:755
+#: src/dird/dird_conf.c:775
 #, c-format
 msgid "  --> Run=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:759
+#: src/dird/dird_conf.c:779
 #, c-format
 msgid "  --> SelectionPattern=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:770
+#: src/dird/dird_conf.c:793
 #, c-format
 msgid "FileSet: name=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:861 src/dird/dird_conf.c:940
+#: src/dird/dird_conf.c:887 src/dird/dird_conf.c:966
 #, c-format
 msgid "Schedule: name=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:866
+#: src/dird/dird_conf.c:892
 #, c-format
 msgid "  --> Run Level=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:867
+#: src/dird/dird_conf.c:893
 msgid "      hour="
 msgstr ""
 
-#: src/dird/dird_conf.c:876
+#: src/dird/dird_conf.c:902
 msgid "      mday="
 msgstr ""
 
-#: src/dird/dird_conf.c:885
+#: src/dird/dird_conf.c:911
 msgid "      month="
 msgstr ""
 
-#: src/dird/dird_conf.c:894
+#: src/dird/dird_conf.c:920
 msgid "      wday="
 msgstr ""
 
-#: src/dird/dird_conf.c:903
+#: src/dird/dird_conf.c:929
 msgid "      wom="
 msgstr ""
 
-#: src/dird/dird_conf.c:912
+#: src/dird/dird_conf.c:938
 msgid "      woy="
 msgstr ""
 
-#: src/dird/dird_conf.c:921
+#: src/dird/dird_conf.c:947
 #, c-format
 msgid "      mins=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:923 src/dird/dird_conf.c:927 src/dird/dird_conf.c:931
+#: src/dird/dird_conf.c:949 src/dird/dird_conf.c:953 src/dird/dird_conf.c:957
 msgid "     --> "
 msgstr ""
 
-#: src/dird/dird_conf.c:945
+#: src/dird/dird_conf.c:974
 #, c-format
 msgid "Pool: name=%s PoolType=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:947
+#: src/dird/dird_conf.c:976
 #, c-format
 msgid "      use_cat=%d use_once=%d cat_files=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:950
+#: src/dird/dird_conf.c:979
 #, c-format
 msgid "      max_vols=%d auto_prune=%d VolRetention=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:953
+#: src/dird/dird_conf.c:982
 #, c-format
 msgid "      VolUse=%s recycle=%d LabelFormat=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:957
+#: src/dird/dird_conf.c:986
 #, c-format
 msgid "      CleaningPrefix=%s LabelType=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:959
+#: src/dird/dird_conf.c:988
 #, c-format
 msgid "      RecyleOldest=%d PurgeOldest=%d ActionOnPurge=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:963
+#: src/dird/dird_conf.c:992
 #, c-format
 msgid "      MaxVolJobs=%d MaxVolFiles=%d MaxVolBytes=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:967
+#: src/dird/dird_conf.c:996
 #, c-format
 msgid "      MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:971
+#: src/dird/dird_conf.c:1000
 #, c-format
 msgid "      JobRetention=%s FileRetention=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:975
+#: src/dird/dird_conf.c:1004
 #, c-format
 msgid "      NextPool=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:978
+#: src/dird/dird_conf.c:1007
 #, c-format
 msgid "      RecyclePool=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:981
+#: src/dird/dird_conf.c:1010
 #, c-format
 msgid "      ScratchPool=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:984
+#: src/dird/dird_conf.c:1013
 #, c-format
 msgid "      Catalog=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1004
+#: src/dird/dird_conf.c:1033
 #, c-format
 msgid "Messages: name=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1006
+#: src/dird/dird_conf.c:1035
 #, c-format
 msgid "      mailcmd=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1008
+#: src/dird/dird_conf.c:1037
 #, c-format
 msgid "      opcmd=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1012 src/tray-monitor/tray_conf.c:199
+#: src/dird/dird_conf.c:1041 src/tray-monitor/tray_conf.c:199
 #: src/qt-console/tray-monitor/tray_conf.cpp:199
 #, c-format
 msgid "Unknown resource type %d in dump_resource.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1343 src/tray-monitor/tray_conf.c:257
+#: src/dird/dird_conf.c:1372 src/tray-monitor/tray_conf.c:257
 #: src/qt-console/tray-monitor/tray_conf.cpp:257
 #, c-format
 msgid "Unknown resource type %d in free_resource.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1375 src/dird/dird_conf.c:1390
+#: src/dird/dird_conf.c:1404 src/dird/dird_conf.c:1419
 #: src/tray-monitor/tray_conf.c:288 src/wx-console/console_conf.c:265
 #: src/console/console_conf.c:259 src/filed/filed_conf.c:361
 #: src/qt-console/tray-monitor/tray_conf.cpp:288
@@ -2625,54 +2662,54 @@ msgstr ""
 msgid "%s item is required in %s resource, but not found.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1381 src/tray-monitor/tray_conf.c:294
+#: src/dird/dird_conf.c:1410 src/tray-monitor/tray_conf.c:294
 #: src/lib/parse_conf.c:225 src/qt-console/tray-monitor/tray_conf.cpp:294
 #, c-format
 msgid "Too many items in %s resource\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1421
+#: src/dird/dird_conf.c:1450
 #, c-format
 msgid "Cannot find Pool resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1432
+#: src/dird/dird_conf.c:1461
 #, c-format
 msgid "Cannot find Console resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1438 src/stored/stored_conf.c:611
+#: src/dird/dird_conf.c:1467 src/stored/stored_conf.c:611
 #: src/filed/filed_conf.c:381
 #, c-format
 msgid "Cannot find Director resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1445 src/stored/stored_conf.c:617
+#: src/dird/dird_conf.c:1474 src/stored/stored_conf.c:617
 #, c-format
 msgid "Cannot find Storage resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1454
+#: src/dird/dird_conf.c:1483
 #, c-format
 msgid "Cannot find Job resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1504
+#: src/dird/dird_conf.c:1533
 #, c-format
 msgid "Cannot find Counter resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1512 src/filed/filed_conf.c:387
+#: src/dird/dird_conf.c:1541 src/filed/filed_conf.c:387
 #, c-format
 msgid "Cannot find Client resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1525
+#: src/dird/dird_conf.c:1554
 #, c-format
 msgid "Cannot find Schedule resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1530 src/dird/dird_conf.c:1590
+#: src/dird/dird_conf.c:1559 src/dird/dird_conf.c:1619
 #: src/tray-monitor/tray_conf.c:314 src/tray-monitor/tray_conf.c:352
 #: src/qt-console/tray-monitor/tray_conf.cpp:314
 #: src/qt-console/tray-monitor/tray_conf.cpp:352
@@ -2680,12 +2717,12 @@ msgstr ""
 msgid "Unknown resource type %d in save_resource.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1605
+#: src/dird/dird_conf.c:1634
 #, c-format
 msgid "Name item is required in %s resource, but not found.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1613 src/tray-monitor/tray_conf.c:372
+#: src/dird/dird_conf.c:1642 src/tray-monitor/tray_conf.c:372
 #: src/wx-console/console_conf.c:328 src/console/console_conf.c:322
 #: src/filed/filed_conf.c:446 src/qt-console/tray-monitor/tray_conf.cpp:372
 #: src/qt-console/bat_conf.cpp:334
@@ -2693,43 +2730,43 @@ msgstr ""
 msgid "Attempt to define second %s resource named \"%s\" is not permitted.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1618
+#: src/dird/dird_conf.c:1647
 #, c-format
 msgid "Inserting %s res: %s index=%d pass=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1631
+#: src/dird/dird_conf.c:1660
 #, c-format
 msgid "Expected one of: %s, got: %s"
 msgstr ""
 
-#: src/dird/dird_conf.c:1703
+#: src/dird/dird_conf.c:1732
 #, c-format
 msgid "Expected a Migration Job Type keyword, got: %s"
 msgstr ""
 
-#: src/dird/dird_conf.c:1729
+#: src/dird/dird_conf.c:1758
 #, c-format
 msgid "Expected a Job Type keyword, got: %s"
 msgstr ""
 
-#: src/dird/dird_conf.c:1753
+#: src/dird/dird_conf.c:1782
 #, c-format
 msgid "Expected a Job Level keyword, got: %s"
 msgstr ""
 
-#: src/dird/dird_conf.c:1773
+#: src/dird/dird_conf.c:1802
 #, c-format
 msgid "Expected a Restore replacement option, got: %s"
 msgstr ""
 
-#: src/dird/dird_conf.c:1823 src/dird/dird_conf.c:1939
-#: src/lib/parse_conf.c:761 src/lib/parse_conf.c:777
+#: src/dird/dird_conf.c:1852 src/dird/dird_conf.c:1968
+#: src/lib/parse_conf.c:761 src/lib/parse_conf.c:777 src/lib/ini.c:593
 #, c-format
 msgid "Expect %s, got: %s"
 msgstr ""
 
-#: src/dird/dird_conf.c:1845 src/lib/parse_conf.c:478
+#: src/dird/dird_conf.c:1874 src/lib/parse_conf.c:478
 #, c-format
 msgid "Could not find config Resource %s referenced on line %d : %s\n"
 msgstr ""
@@ -2857,7 +2894,7 @@ msgstr ""
 msgid "Select full restore to a specified Job date"
 msgstr ""
 
-#: src/dird/ua_restore.c:446 src/dird/ua_status.c:863 src/stored/status.c:546
+#: src/dird/ua_restore.c:446 src/dird/ua_status.c:862 src/stored/status.c:611
 #: src/filed/status.c:373 src/wx-console/wxbconfigpanel.cpp:220
 msgid "Cancel"
 msgstr ""
@@ -2867,7 +2904,7 @@ msgstr ""
 msgid "Unknown keyword: %s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:520 src/dird/ua_update.c:955
+#: src/dird/ua_restore.c:520 src/dird/ua_update.c:957
 #, c-format
 msgid "Improper date format: %s\n"
 msgstr ""
@@ -3101,12 +3138,17 @@ msgstr ""
 msgid "Warning default storage overridden by \"%s\" on command line.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1533
+#: src/dird/ua_restore.c:1534
+#, c-format
+msgid "Using Storage \"%s\" from MediaType \"%s\".\n"
+msgstr ""
+
+#: src/dird/ua_restore.c:1537
 #, c-format
 msgid "Storage \"%s\" not found, using Storage \"%s\" from MediaType \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1541
+#: src/dird/ua_restore.c:1546
 #, c-format
 msgid ""
 "\n"
@@ -3168,7 +3210,7 @@ msgid ""
 "resource.\n"
 msgstr ""
 
-#: src/dird/fd_cmds.c:500 src/filed/job.c:858
+#: src/dird/fd_cmds.c:500 src/filed/job.c:854
 #, c-format
 msgid "Cannot run program: %s. ERR=%s\n"
 msgstr ""
@@ -3210,9 +3252,9 @@ msgid ""
 "msglen=%d msg=%s\n"
 msgstr ""
 
-#: src/dird/fd_cmds.c:825 src/dird/fd_cmds.c:884 src/dird/catreq.c:443
-#: src/cats/sqlite.c:374 src/cats/ingres.c:451 src/cats/postgresql.c:441
-#: src/cats/dbi.c:552 src/cats/mysql.c:358
+#: src/dird/fd_cmds.c:825 src/dird/fd_cmds.c:884 src/cats/sqlite.c:387
+#: src/cats/ingres.c:464 src/cats/postgresql.c:454 src/cats/dbi.c:565
+#: src/cats/mysql.c:371
 #, c-format
 msgid "Attribute create error. %s"
 msgstr ""
@@ -3231,19 +3273,19 @@ msgstr ""
 msgid "Negative numbers not permitted\n"
 msgstr ""
 
-#: src/dird/ua_label.c:110
+#: src/dird/ua_label.c:110 src/lib/sellist.c:76
 msgid "Range end is not integer.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:115
+#: src/dird/ua_label.c:115 src/lib/sellist.c:81
 msgid "Range start is not an integer.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:121
+#: src/dird/ua_label.c:121 src/lib/sellist.c:87
 msgid "Range end not bigger than start.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:127
+#: src/dird/ua_label.c:127 src/lib/sellist.c:94
 msgid "Input value is not an integer.\n"
 msgstr ""
 
@@ -3255,179 +3297,179 @@ msgstr ""
 msgid "Slot too large.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:187 src/dird/ua_label.c:352 src/dird/ua_label.c:1214
-#: src/dird/ua_run.c:1557
+#: src/dird/ua_label.c:189 src/dird/ua_label.c:366 src/dird/ua_label.c:1228
+#: src/dird/ua_run.c:1563
 msgid "command line"
 msgstr ""
 
-#: src/dird/ua_label.c:205 src/dird/ua_label.c:516 src/dird/ua_label.c:1221
+#: src/dird/ua_label.c:207 src/dird/ua_label.c:531 src/dird/ua_label.c:1235
 msgid "No slots in changer to scan.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:217 src/dird/ua_label.c:527
+#: src/dird/ua_label.c:219 src/dird/ua_label.c:542
 msgid "No Volumes found to label, or no barcodes.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:227 src/dird/ua_label.c:1242
+#: src/dird/ua_label.c:229 src/dird/ua_label.c:1256
 #, c-format
 msgid "Slot %d greater than max %d ignored.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:256
+#: src/dird/ua_label.c:267
 #, c-format
 msgid "No VolName for Slot=%d InChanger set to zero.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:274
+#: src/dird/ua_label.c:288
 #, c-format
 msgid "Catalog record for Volume \"%s\" updated to reference slot %d.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:278
+#: src/dird/ua_label.c:292
 #, c-format
 msgid "Catalog record for Volume \"%s\" is up to date.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:284
+#: src/dird/ua_label.c:298
 #, c-format
 msgid "Volume \"%s\" not found in catalog. Slot=%d InChanger set to zero.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:381
+#: src/dird/ua_label.c:394
 #, c-format
 msgid ""
 "Volume \"%s\" has VolStatus %s. It must be Purged or Recycled before "
 "relabeling.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:397
+#: src/dird/ua_label.c:410
 msgid "Enter new Volume name: "
 msgstr ""
 
-#: src/dird/ua_label.c:410
+#: src/dird/ua_label.c:425
 #, c-format
 msgid "Media record for new Volume \"%s\" already exists.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:428
+#: src/dird/ua_label.c:443
 msgid "Enter slot (0 or Enter for none): "
 msgstr ""
 
-#: src/dird/ua_label.c:456
+#: src/dird/ua_label.c:471
 #, c-format
 msgid "Delete of Volume \"%s\" failed. ERR=%s"
 msgstr ""
 
-#: src/dird/ua_label.c:459
+#: src/dird/ua_label.c:474
 #, c-format
 msgid "Old volume \"%s\" deleted from catalog.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:470
+#: src/dird/ua_label.c:485
 #, c-format
 msgid "Requesting to mount %s ...\n"
 msgstr ""
 
-#: src/dird/ua_label.c:492
+#: src/dird/ua_label.c:507
 msgid "Do not forget to mount the drive!!!\n"
 msgstr ""
 
-#: src/dird/ua_label.c:532
+#: src/dird/ua_label.c:547
 msgid ""
 "The following Volumes will be labeled:\n"
 "Slot  Volume\n"
 "==============\n"
 msgstr ""
 
-#: src/dird/ua_label.c:541
+#: src/dird/ua_label.c:556
 msgid "Do you want to label these Volumes? (yes|no): "
 msgstr ""
 
-#: src/dird/ua_label.c:562
+#: src/dird/ua_label.c:576
 #, c-format
 msgid "Media record for Slot %d Volume \"%s\" already exists.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:568
+#: src/dird/ua_label.c:582
 #, c-format
 msgid "Error setting InChanger: ERR=%s"
 msgstr ""
 
-#: src/dird/ua_label.c:591
+#: src/dird/ua_label.c:605
 #, c-format
 msgid "Maximum pool Volumes=%d reached.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:598
+#: src/dird/ua_label.c:613
 #, c-format
 msgid "Catalog record for cleaning tape \"%s\" successfully created.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:605
+#: src/dird/ua_label.c:620
 #, c-format
 msgid "Catalog error on cleaning tape: %s"
 msgstr ""
 
-#: src/dird/ua_label.c:641
+#: src/dird/ua_label.c:656
 #, c-format
 msgid "Illegal character \"%c\" in a volume name.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:688
+#: src/dird/ua_label.c:703
 #, c-format
 msgid "Sending relabel command from \"%s\" to \"%s\" ...\n"
 msgstr ""
 
-#: src/dird/ua_label.c:695
+#: src/dird/ua_label.c:710
 #, c-format
 msgid "Sending label command for Volume \"%s\" Slot %d ...\n"
 msgstr ""
 
-#: src/dird/ua_label.c:736
+#: src/dird/ua_label.c:751
 #, c-format
 msgid "Catalog record for Volume \"%s\", Slot %d  successfully created.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:749
+#: src/dird/ua_label.c:764
 #, c-format
 msgid "Label command failed for Volume %s.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:787
+#: src/dird/ua_label.c:802
 msgid "Could not open SD socket.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:859 src/dird/ua_label.c:869
+#: src/dird/ua_label.c:874 src/dird/ua_label.c:884
 #, c-format
 msgid "Invalid Slot number: %s\n"
 msgstr ""
 
-#: src/dird/ua_label.c:878
+#: src/dird/ua_label.c:893
 #, c-format
 msgid "Invalid Volume name: %s\n"
 msgstr ""
 
-#: src/dird/ua_label.c:972
+#: src/dird/ua_label.c:987
 #, c-format
 msgid "Device \"%s\" has %d slots.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:1018
+#: src/dird/ua_label.c:1033
 #, c-format
 msgid "Pool \"%s\" resource not found for volume \"%s\"!\n"
 msgstr ""
 
-#: src/dird/ua_label.c:1233
+#: src/dird/ua_label.c:1247
 msgid "No Volumes found, or no barcodes.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:1236
+#: src/dird/ua_label.c:1250
 msgid ""
 " Slot |   Volume Name    |   Status  |     Media Type       |      "
 "Pool          |\n"
 msgstr ""
 
-#: src/dird/ua_label.c:1237
+#: src/dird/ua_label.c:1251
 msgid ""
 "------+------------------+-----------+----------------------"
 "+--------------------|\n"
@@ -3647,16 +3689,16 @@ msgstr ""
 msgid "New Recycle flag is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:257 src/dird/ua_update.c:277 src/dird/ua_update.c:698
-#: src/dird/ua_run.c:180 src/dird/backup.c:778 src/dird/backup.c:779
-#: src/dird/backup.c:780 src/dird/ua_input.c:131 src/stored/parse_bsr.c:864
+#: src/dird/ua_update.c:257 src/dird/ua_update.c:277 src/dird/ua_update.c:699
+#: src/dird/ua_run.c:180 src/dird/backup.c:788 src/dird/backup.c:789
+#: src/dird/backup.c:790 src/dird/ua_input.c:131 src/stored/parse_bsr.c:863
 #: src/tools/dbcheck.c:1352
 msgid "yes"
 msgstr ""
 
-#: src/dird/ua_update.c:257 src/dird/ua_update.c:277 src/dird/ua_update.c:698
-#: src/dird/backup.c:778 src/dird/backup.c:779 src/dird/backup.c:780
-#: src/dird/ua_input.c:135 src/stored/parse_bsr.c:864
+#: src/dird/ua_update.c:257 src/dird/ua_update.c:277 src/dird/ua_update.c:699
+#: src/dird/ua_run.c:200 src/dird/backup.c:788 src/dird/backup.c:789
+#: src/dird/backup.c:790 src/dird/ua_input.c:135 src/stored/parse_bsr.c:863
 msgid "no"
 msgstr ""
 
@@ -3670,47 +3712,47 @@ msgstr ""
 msgid "Invalid slot, it must be between 0 and MaxVols=%d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:303 src/dird/ua_update.c:726
+#: src/dird/ua_update.c:304 src/dird/ua_update.c:728
 #, c-format
 msgid "Error updating media record Slot: ERR=%s"
 msgstr ""
 
-#: src/dird/ua_update.c:305
+#: src/dird/ua_update.c:306
 #, c-format
 msgid "New Slot is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:330
+#: src/dird/ua_update.c:331
 #, c-format
 msgid "New Pool is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:373
+#: src/dird/ua_update.c:374
 #, c-format
 msgid "New RecyclePool is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:393
+#: src/dird/ua_update.c:394
 #, c-format
 msgid "Error updating Volume record: ERR=%s"
 msgstr ""
 
-#: src/dird/ua_update.c:395
+#: src/dird/ua_update.c:396
 #, c-format
 msgid "Volume defaults updated from \"%s\" Pool record.\n"
 msgstr ""
 
-#: src/dird/ua_update.c:419 src/dird/ua_update.c:452
+#: src/dird/ua_update.c:419 src/dird/ua_update.c:451
 #, c-format
 msgid "Error updating Volume records: ERR=%s"
 msgstr ""
 
-#: src/dird/ua_update.c:421 src/dird/ua_update.c:454
+#: src/dird/ua_update.c:421 src/dird/ua_update.c:453
 #, c-format
 msgid "All Volume defaults updated from \"%s\" Pool record.\n"
 msgstr ""
 
-#: src/dird/ua_update.c:444
+#: src/dird/ua_update.c:443
 #, c-format
 msgid "Updating all pools, but skipped PoolId=%d. ERR=%s\n"
 msgstr ""
@@ -3725,276 +3767,276 @@ msgstr ""
 msgid "New Enabled is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:486
+#: src/dird/ua_update.c:487
 #, c-format
 msgid "Error updating media record ActionOnPurge: ERR=%s"
 msgstr ""
 
-#: src/dird/ua_update.c:489
+#: src/dird/ua_update.c:490
 #, c-format
 msgid "New ActionOnPurge is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:604 src/dird/ua_run.c:235
+#: src/dird/ua_update.c:605 src/dird/ua_run.c:222
 msgid "Parameters to modify:\n"
 msgstr ""
 
-#: src/dird/ua_update.c:605
+#: src/dird/ua_update.c:606
 msgid "Volume Status"
 msgstr ""
 
-#: src/dird/ua_update.c:606
+#: src/dird/ua_update.c:607
 msgid "Volume Retention Period"
 msgstr ""
 
-#: src/dird/ua_update.c:607
+#: src/dird/ua_update.c:608
 msgid "Volume Use Duration"
 msgstr ""
 
-#: src/dird/ua_update.c:608
+#: src/dird/ua_update.c:609
 msgid "Maximum Volume Jobs"
 msgstr ""
 
-#: src/dird/ua_update.c:609
+#: src/dird/ua_update.c:610
 msgid "Maximum Volume Files"
 msgstr ""
 
-#: src/dird/ua_update.c:610
+#: src/dird/ua_update.c:611
 msgid "Maximum Volume Bytes"
 msgstr ""
 
-#: src/dird/ua_update.c:611
+#: src/dird/ua_update.c:612
 msgid "Recycle Flag"
 msgstr ""
 
-#: src/dird/ua_update.c:612
+#: src/dird/ua_update.c:613
 msgid "Slot"
 msgstr ""
 
-#: src/dird/ua_update.c:613
+#: src/dird/ua_update.c:614
 msgid "InChanger Flag"
 msgstr ""
 
-#: src/dird/ua_update.c:614
+#: src/dird/ua_update.c:615
 msgid "Volume Files"
 msgstr ""
 
-#: src/dird/ua_update.c:616
+#: src/dird/ua_update.c:617
 msgid "Volume from Pool"
 msgstr ""
 
-#: src/dird/ua_update.c:617
+#: src/dird/ua_update.c:618
 msgid "All Volumes from Pool"
 msgstr ""
 
-#: src/dird/ua_update.c:618
+#: src/dird/ua_update.c:619
 msgid "All Volumes from all Pools"
 msgstr ""
 
-#: src/dird/ua_update.c:619
+#: src/dird/ua_update.c:620
 msgid "Enabled"
 msgstr ""
 
-#: src/dird/ua_update.c:620
+#: src/dird/ua_update.c:621
 msgid "RecyclePool"
 msgstr ""
 
-#: src/dird/ua_update.c:621
+#: src/dird/ua_update.c:622
 msgid "Action On Purge"
 msgstr ""
 
-#: src/dird/ua_update.c:622
+#: src/dird/ua_update.c:623
 msgid "Done"
 msgstr ""
 
-#: src/dird/ua_update.c:623 src/dird/ua_run.c:265 src/dird/ua_run.c:594
+#: src/dird/ua_update.c:624 src/dird/ua_run.c:252 src/dird/ua_run.c:600
 msgid "Select parameter to modify"
 msgstr ""
 
-#: src/dird/ua_update.c:631
+#: src/dird/ua_update.c:632
 #, c-format
 msgid "Updating Volume \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_update.c:636
+#: src/dird/ua_update.c:637
 #, c-format
 msgid "Current Volume status is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:637
+#: src/dird/ua_update.c:638
 msgid "Possible Values are:\n"
 msgstr ""
 
-#: src/dird/ua_update.c:648
+#: src/dird/ua_update.c:649
 msgid "Choose new Volume Status"
 msgstr ""
 
-#: src/dird/ua_update.c:654
+#: src/dird/ua_update.c:655
 #, c-format
 msgid "Current retention period is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:656
+#: src/dird/ua_update.c:657
 msgid "Enter Volume Retention period: "
 msgstr ""
 
-#: src/dird/ua_update.c:663
+#: src/dird/ua_update.c:664
 #, c-format
 msgid "Current use duration is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:665
+#: src/dird/ua_update.c:666
 msgid "Enter Volume Use Duration: "
 msgstr ""
 
-#: src/dird/ua_update.c:672
+#: src/dird/ua_update.c:673
 #, c-format
 msgid "Current max jobs is: %u\n"
 msgstr ""
 
-#: src/dird/ua_update.c:673
+#: src/dird/ua_update.c:674
 msgid "Enter new Maximum Jobs: "
 msgstr ""
 
-#: src/dird/ua_update.c:680
+#: src/dird/ua_update.c:681
 #, c-format
 msgid "Current max files is: %u\n"
 msgstr ""
 
-#: src/dird/ua_update.c:681
+#: src/dird/ua_update.c:682
 msgid "Enter new Maximum Files: "
 msgstr ""
 
-#: src/dird/ua_update.c:688
+#: src/dird/ua_update.c:689
 #, c-format
 msgid "Current value is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:689
+#: src/dird/ua_update.c:690
 msgid "Enter new Maximum Bytes: "
 msgstr ""
 
-#: src/dird/ua_update.c:697
+#: src/dird/ua_update.c:698
 #, c-format
 msgid "Current recycle flag is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:699
+#: src/dird/ua_update.c:700
 msgid "Enter new Recycle status: "
 msgstr ""
 
-#: src/dird/ua_update.c:706
+#: src/dird/ua_update.c:707
 #, c-format
 msgid "Current Slot is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:707
+#: src/dird/ua_update.c:708
 msgid "Enter new Slot: "
 msgstr ""
 
-#: src/dird/ua_update.c:714
+#: src/dird/ua_update.c:715
 #, c-format
 msgid "Current InChanger flag is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:715
+#: src/dird/ua_update.c:716
 #, c-format
 msgid "Set InChanger flag for Volume \"%s\": yes/no: "
 msgstr ""
 
-#: src/dird/ua_update.c:728
+#: src/dird/ua_update.c:730
 #, c-format
 msgid "New InChanger flag is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:735
+#: src/dird/ua_update.c:737
 msgid ""
 "Warning changing Volume Files can result\n"
 "in loss of data on your Volume\n"
 "\n"
 msgstr ""
 
-#: src/dird/ua_update.c:737
+#: src/dird/ua_update.c:739
 #, c-format
 msgid "Current Volume Files is: %u\n"
 msgstr ""
 
-#: src/dird/ua_update.c:738
+#: src/dird/ua_update.c:740
 msgid "Enter new number of Files for Volume: "
 msgstr ""
 
-#: src/dird/ua_update.c:743
+#: src/dird/ua_update.c:745
 msgid "Normally, you should only increase Volume Files by one!\n"
 msgstr ""
 
-#: src/dird/ua_update.c:744
+#: src/dird/ua_update.c:746
 msgid "Increase Volume Files? (yes/no): "
 msgstr ""
 
-#: src/dird/ua_update.c:754
+#: src/dird/ua_update.c:756
 #, c-format
 msgid "New Volume Files is: %u\n"
 msgstr ""
 
-#: src/dird/ua_update.c:766
+#: src/dird/ua_update.c:768
 #, c-format
 msgid "Current Pool is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:767
+#: src/dird/ua_update.c:769
 msgid "Enter new Pool name: "
 msgstr ""
 
-#: src/dird/ua_update.c:788
+#: src/dird/ua_update.c:790
 #, c-format
 msgid "Current Enabled is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:789
+#: src/dird/ua_update.c:791
 msgid "Enter new Enabled: "
 msgstr ""
 
-#: src/dird/ua_update.c:808
+#: src/dird/ua_update.c:810
 #, c-format
 msgid "Current RecyclePool is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:810
+#: src/dird/ua_update.c:812
 msgid "No current RecyclePool\n"
 msgstr ""
 
-#: src/dird/ua_update.c:820
+#: src/dird/ua_update.c:822
 #, c-format
 msgid "Current ActionOnPurge is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:822
+#: src/dird/ua_update.c:824
 msgid "Enter new ActionOnPurge (one of: Truncate, None): "
 msgstr ""
 
-#: src/dird/ua_update.c:830
+#: src/dird/ua_update.c:832
 msgid "Selection terminated.\n"
 msgstr ""
 
-#: src/dird/ua_update.c:850
+#: src/dird/ua_update.c:852
 #, c-format
 msgid "Updating %i job(s).\n"
 msgstr ""
 
-#: src/dird/ua_update.c:882
+#: src/dird/ua_update.c:884
 #, c-format
 msgid "db_update_pool_record returned %d. ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:889
+#: src/dird/ua_update.c:891
 msgid "Pool DB record updated from resource.\n"
 msgstr ""
 
-#: src/dird/ua_update.c:916
+#: src/dird/ua_update.c:918
 msgid "Expect JobId keyword, not found.\n"
 msgstr ""
 
-#: src/dird/ua_update.c:941
+#: src/dird/ua_update.c:943
 msgid "Neither Client nor StartTime specified.\n"
 msgstr ""
 
@@ -4036,7 +4078,7 @@ msgstr ""
 msgid "Pool resource \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/migrate.c:316 src/dird/migrate.c:896
+#: src/dird/migrate.c:316 src/dird/migrate.c:898
 #, c-format
 msgid "Could not get job record for JobId %s to %s. ERR=%s"
 msgstr ""
@@ -4051,145 +4093,140 @@ msgstr ""
 msgid "Start %s JobId %s, Job=%s\n"
 msgstr ""
 
-#: src/dird/migrate.c:710
+#: src/dird/migrate.c:712
 #, c-format
 msgid "No %s SQL selection pattern specified.\n"
 msgstr ""
 
-#: src/dird/migrate.c:717 src/dird/migrate.c:736 src/dird/migrate.c:757
-#: src/dird/migrate.c:793 src/dird/migrate.c:820 src/dird/migrate.c:954
-#: src/dird/migrate.c:987 src/dird/migrate.c:1116
+#: src/dird/migrate.c:719 src/dird/migrate.c:738 src/dird/migrate.c:759
+#: src/dird/migrate.c:795 src/dird/migrate.c:822 src/dird/migrate.c:956
+#: src/dird/migrate.c:989 src/dird/migrate.c:1118
 #, c-format
 msgid "SQL failed. ERR=%s\n"
 msgstr ""
 
-#: src/dird/migrate.c:740 src/dird/migrate.c:747 src/dird/migrate.c:761
-#: src/dird/migrate.c:824
+#: src/dird/migrate.c:742 src/dird/migrate.c:749 src/dird/migrate.c:763
+#: src/dird/migrate.c:826
 #, c-format
 msgid "No Volumes found to %s.\n"
 msgstr ""
 
-#: src/dird/migrate.c:775 src/dird/migrate.c:864 src/dird/migrate.c:884
+#: src/dird/migrate.c:777 src/dird/migrate.c:866 src/dird/migrate.c:886
 msgid "Invalid JobId found.\n"
 msgstr ""
 
-#: src/dird/migrate.c:835
+#: src/dird/migrate.c:837
 #, c-format
 msgid "Unknown %s Selection Type.\n"
 msgstr ""
 
-#: src/dird/migrate.c:846 src/dird/migrate.c:867 src/dird/migrate.c:887
+#: src/dird/migrate.c:848 src/dird/migrate.c:869 src/dird/migrate.c:889
 #, c-format
 msgid "No JobIds found to %s.\n"
 msgstr ""
 
-#: src/dird/migrate.c:850
+#: src/dird/migrate.c:852
 #, c-format
 msgid "The following %u JobId%s chosen to be %s: %s\n"
 msgstr ""
 
-#: src/dird/migrate.c:851
+#: src/dird/migrate.c:853
 msgid " was"
 msgstr ""
 
-#: src/dird/migrate.c:851
+#: src/dird/migrate.c:853
 msgid "s were"
 msgstr ""
 
-#: src/dird/migrate.c:903
+#: src/dird/migrate.c:905
 #, c-format
 msgid "%s using JobId=%s Job=%s\n"
 msgstr ""
 
-#: src/dird/migrate.c:937
+#: src/dird/migrate.c:939
 msgid "Could not start migration job.\n"
 msgstr ""
 
-#: src/dird/migrate.c:939
+#: src/dird/migrate.c:941
 #, c-format
 msgid "%s JobId %d started.\n"
 msgstr ""
 
-#: src/dird/migrate.c:958
+#: src/dird/migrate.c:960
 #, c-format
 msgid "No %s found to %s.\n"
 msgstr ""
 
-#: src/dird/migrate.c:962
+#: src/dird/migrate.c:964
 #, c-format
 msgid "SQL error. Expected 1 MediaId got %d\n"
 msgstr ""
 
-#: src/dird/migrate.c:991 src/dird/migrate.c:1121
+#: src/dird/migrate.c:993 src/dird/migrate.c:1123
 #, c-format
 msgid "No %ss found to %s.\n"
 msgstr ""
 
-#: src/dird/migrate.c:1013
+#: src/dird/migrate.c:1015
 msgid "Selection Type 'pooluncopiedjobs' only applies to Copy Jobs"
 msgstr ""
 
-#: src/dird/migrate.c:1022
+#: src/dird/migrate.c:1024
 #, c-format
 msgid "SQL to get uncopied jobs failed. ERR=%s\n"
 msgstr ""
 
-#: src/dird/migrate.c:1045
+#: src/dird/migrate.c:1047
 #, c-format
 msgid "No %s %s selection pattern specified.\n"
 msgstr ""
 
-#: src/dird/migrate.c:1056
+#: src/dird/migrate.c:1058
 #, c-format
 msgid "SQL to get %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/dird/migrate.c:1061
+#: src/dird/migrate.c:1063
 #, c-format
 msgid "Query of Pool \"%s\" returned no Jobs to %s.\n"
 msgstr ""
 
-#: src/dird/migrate.c:1070
-#, c-format
-msgid "Could not compile regex pattern \"%s\" ERR=%s\n"
-msgstr ""
-
-#: src/dird/migrate.c:1099
+#: src/dird/migrate.c:1101
 #, c-format
 msgid "Regex pattern matched no Jobs to %s.\n"
 msgstr ""
 
-#: src/dird/migrate.c:1264
+#: src/dird/migrate.c:1265
 #, c-format
 msgid "%s OK -- with warnings"
 msgstr ""
 
-#: src/dird/migrate.c:1266
+#: src/dird/migrate.c:1267
 #, c-format
 msgid "%s OK"
 msgstr ""
 
-#: src/dird/migrate.c:1271
+#: src/dird/migrate.c:1272
 #, c-format
 msgid "*** %s Error ***"
 msgstr ""
 
-#: src/dird/migrate.c:1281
+#: src/dird/migrate.c:1282
 #, c-format
 msgid "%s Canceled"
 msgstr ""
 
-#: src/dird/migrate.c:1290
+#: src/dird/migrate.c:1291
 #, c-format
 msgid "Inappropriate %s term code"
 msgstr ""
 
-#: src/dird/migrate.c:1300
+#: src/dird/migrate.c:1301
 #, c-format
 msgid "%s -- no files to %s"
 msgstr ""
 
-#: src/dird/migrate.c:1315
+#: src/dird/migrate.c:1316
 #, c-format
 msgid ""
 "%s %s %s (%s):\n"
@@ -4224,17 +4261,17 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/migrate.c:1426
+#: src/dird/migrate.c:1427
 #, c-format
 msgid "No Next Pool specification found in Pool \"%s\".\n"
 msgstr ""
 
-#: src/dird/migrate.c:1432
+#: src/dird/migrate.c:1433
 #, c-format
 msgid "No Storage specification found in Next Pool \"%s\".\n"
 msgstr ""
 
-#: src/dird/migrate.c:1438
+#: src/dird/migrate.c:1439
 msgid "Storage from Pool's NextPool resource"
 msgstr ""
 
@@ -4242,47 +4279,47 @@ msgstr ""
 msgid "Choose item to prune"
 msgstr ""
 
-#: src/dird/ua_prune.c:171
+#: src/dird/ua_prune.c:175
 #, c-format
 msgid "Cannot prune Volume \"%s\" because it is archived.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:213
+#: src/dird/ua_prune.c:217
 msgid "Pruned Jobs from JobHisto catalog.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:301
+#: src/dird/ua_prune.c:305
 msgid "Begin pruning Files.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:316
+#: src/dird/ua_prune.c:320
 msgid "No Files found to prune.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:339
+#: src/dird/ua_prune.c:343
 #, c-format
 msgid "Pruned Files from %s Jobs for client %s from catalog.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:481
+#: src/dird/ua_prune.c:489
 #, c-format
 msgid "Begin pruning Jobs older than %s.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:592
+#: src/dird/ua_prune.c:600
 #, c-format
 msgid "Pruned %d %s for client %s from catalog.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:593
+#: src/dird/ua_prune.c:601
 msgid "Jobs"
 msgstr ""
 
-#: src/dird/ua_prune.c:595
+#: src/dird/ua_prune.c:603
 msgid "No Jobs found to prune.\n"
 msgstr ""
 
-#: src/dird/autoprune.c:76
+#: src/dird/autoprune.c:75
 msgid ""
 "End auto prune.\n"
 "\n"
@@ -4301,50 +4338,58 @@ msgstr ""
 msgid "Job queued. JobId=%s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:202
+#: src/dird/ua_run.c:203
+#, c-format
+msgid ""
+"\n"
+"Bad response: %s. You must answer yes, mod, or no.\n"
+"\n"
+msgstr ""
+
+#: src/dird/ua_run.c:207
 msgid "Job not run.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:236
+#: src/dird/ua_run.c:223
 msgid "Level"
 msgstr ""
 
-#: src/dird/ua_run.c:241
+#: src/dird/ua_run.c:228
 msgid "Restore Client"
 msgstr ""
 
-#: src/dird/ua_run.c:245 src/wx-console/wxbrestorepanel.cpp:356
+#: src/dird/ua_run.c:232 src/wx-console/wxbrestorepanel.cpp:356
 #: src/wx-console/wxbrestorepanel.cpp:854
 #: src/wx-console/wxbrestorepanel.cpp:1918
 msgid "When"
 msgstr ""
 
-#: src/dird/ua_run.c:246 src/wx-console/wxbrestorepanel.cpp:357
+#: src/dird/ua_run.c:233 src/wx-console/wxbrestorepanel.cpp:357
 #: src/wx-console/wxbrestorepanel.cpp:1128
 #: src/wx-console/wxbrestorepanel.cpp:1921
 msgid "Priority"
 msgstr ""
 
-#: src/dird/ua_run.c:253
+#: src/dird/ua_run.c:240
 msgid "Verify Job"
 msgstr ""
 
-#: src/dird/ua_run.c:256 src/wx-console/wxbrestorepanel.cpp:349
+#: src/dird/ua_run.c:243 src/wx-console/wxbrestorepanel.cpp:349
 #: src/wx-console/wxbrestorepanel.cpp:1899
 msgid "Bootstrap"
 msgstr ""
 
-#: src/dird/ua_run.c:257 src/wx-console/wxbrestorepanel.cpp:350
+#: src/dird/ua_run.c:244 src/wx-console/wxbrestorepanel.cpp:350
 #: src/wx-console/wxbrestorepanel.cpp:1104
 #: src/wx-console/wxbrestorepanel.cpp:1901
 msgid "Where"
 msgstr ""
 
-#: src/dird/ua_run.c:258
+#: src/dird/ua_run.c:245
 msgid "File Relocation"
 msgstr ""
 
-#: src/dird/ua_run.c:259 src/wx-console/wxbrestorepanel.cpp:352
+#: src/dird/ua_run.c:246 src/wx-console/wxbrestorepanel.cpp:352
 #: src/wx-console/wxbrestorepanel.cpp:1112
 #: src/wx-console/wxbrestorepanel.cpp:1905
 #: src/wx-console/wxbrestorepanel.cpp:1906
@@ -4354,212 +4399,212 @@ msgstr ""
 msgid "Replace"
 msgstr ""
 
-#: src/dird/ua_run.c:260
+#: src/dird/ua_run.c:247
 msgid "JobId"
 msgstr ""
 
-#: src/dird/ua_run.c:263
+#: src/dird/ua_run.c:250
 msgid "Plugin Options"
 msgstr ""
 
-#: src/dird/ua_run.c:274 src/dird/ua_run.c:1563
+#: src/dird/ua_run.c:261 src/dird/ua_run.c:1569
 msgid "user selection"
 msgstr ""
 
-#: src/dird/ua_run.c:306
+#: src/dird/ua_run.c:293
 msgid ""
 "Please enter desired start time as YYYY-MM-DD HH:MM:SS (return for now): "
 msgstr ""
 
-#: src/dird/ua_run.c:314 src/dird/ua_run.c:490
+#: src/dird/ua_run.c:301 src/dird/ua_run.c:477
 msgid "Invalid time, using current time.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:321
+#: src/dird/ua_run.c:308
 msgid "Enter new Priority: "
 msgstr ""
 
-#: src/dird/ua_run.c:325
+#: src/dird/ua_run.c:312
 msgid "Priority must be a positive integer.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:346
+#: src/dird/ua_run.c:333
 msgid "Please enter the Bootstrap file name: "
 msgstr ""
 
-#: src/dird/ua_run.c:358
+#: src/dird/ua_run.c:345
 #, c-format
 msgid "Warning cannot open %s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:377
-msgid "Please enter path prefix for restore (/ for none): "
+#: src/dird/ua_run.c:364
+msgid "Please enter the full path prefix for restore (/ for none): "
 msgstr ""
 
-#: src/dird/ua_run.c:399
+#: src/dird/ua_run.c:386
 msgid "Replace:\n"
 msgstr ""
 
-#: src/dird/ua_run.c:403
+#: src/dird/ua_run.c:390
 msgid "Select replace option"
 msgstr ""
 
-#: src/dird/ua_run.c:414
+#: src/dird/ua_run.c:401
 msgid ""
 "You must set the bootstrap file to NULL to be able to specify a JobId.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:419
+#: src/dird/ua_run.c:406
 msgid "Please Plugin Options string: "
 msgstr ""
 
-#: src/dird/ua_run.c:457 src/dird/ua_run.c:466
+#: src/dird/ua_run.c:444 src/dird/ua_run.c:453
 msgid "User input"
 msgstr ""
 
-#: src/dird/ua_run.c:520
+#: src/dird/ua_run.c:507
 #, c-format
 msgid "Invalid replace option: %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:583
+#: src/dird/ua_run.c:589
 #, c-format
 msgid "strip_prefix=%s add_prefix=%s add_suffix=%s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:586
+#: src/dird/ua_run.c:592
 msgid "This will replace your current Where value\n"
 msgstr ""
 
-#: src/dird/ua_run.c:587
+#: src/dird/ua_run.c:593
 msgid "Strip prefix"
 msgstr ""
 
-#: src/dird/ua_run.c:588
+#: src/dird/ua_run.c:594
 msgid "Add prefix"
 msgstr ""
 
-#: src/dird/ua_run.c:589
+#: src/dird/ua_run.c:595
 msgid "Add file suffix"
 msgstr ""
 
-#: src/dird/ua_run.c:590
+#: src/dird/ua_run.c:596
 msgid "Enter a regexp"
 msgstr ""
 
-#: src/dird/ua_run.c:591
+#: src/dird/ua_run.c:597
 msgid "Test filename manipulation"
 msgstr ""
 
-#: src/dird/ua_run.c:592
+#: src/dird/ua_run.c:598
 msgid "Use this ?"
 msgstr ""
 
-#: src/dird/ua_run.c:597
-msgid "Please enter path prefix to strip: "
+#: src/dird/ua_run.c:603
+msgid "Please enter the path prefix to strip: "
 msgstr ""
 
-#: src/dird/ua_run.c:605
-msgid "Please enter path prefix to add (/ for none): "
+#: src/dird/ua_run.c:611
+msgid "Please enter the path prefix to add (/ for none): "
 msgstr ""
 
-#: src/dird/ua_run.c:616
-msgid "Please enter file suffix to add: "
+#: src/dird/ua_run.c:622
+msgid "Please enter the file suffix to add: "
 msgstr ""
 
-#: src/dird/ua_run.c:623
+#: src/dird/ua_run.c:629
 msgid "Please enter a valid regexp (!from!to!): "
 msgstr ""
 
-#: src/dird/ua_run.c:636
+#: src/dird/ua_run.c:642
 #, c-format
 msgid "regexwhere=%s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:642
+#: src/dird/ua_run.c:648
 #, c-format
 msgid "strip_prefix=%s add_prefix=%s add_suffix=%s result=%s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:649
+#: src/dird/ua_run.c:655
 msgid "Cannot use your regexp\n"
 msgstr ""
 
-#: src/dird/ua_run.c:652
+#: src/dird/ua_run.c:658
 msgid "Enter a period (.) to stop this test\n"
 msgstr ""
 
-#: src/dird/ua_run.c:653
+#: src/dird/ua_run.c:659
 msgid "Please enter filename to test: "
 msgstr ""
 
-#: src/dird/ua_run.c:655
+#: src/dird/ua_run.c:661
 #, c-format
 msgid "%s -> %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:699
+#: src/dird/ua_run.c:705
 msgid "Cannot use your regexp.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:712 src/dird/ua_run.c:742
+#: src/dird/ua_run.c:718 src/dird/ua_run.c:748
 msgid "Levels:\n"
 msgstr ""
 
-#: src/dird/ua_run.c:714 src/stored/status.c:600 src/lib/util.c:426
+#: src/dird/ua_run.c:720 src/stored/status.c:665 src/lib/util.c:426
 #: src/lib/util.c:472 src/filed/status.c:519
 msgid "Full"
 msgstr ""
 
-#: src/dird/ua_run.c:715 src/stored/status.c:603 src/lib/util.c:429
+#: src/dird/ua_run.c:721 src/stored/status.c:668 src/lib/util.c:429
 #: src/filed/status.c:522
 msgid "Incremental"
 msgstr ""
 
-#: src/dird/ua_run.c:716 src/stored/status.c:606 src/lib/util.c:432
+#: src/dird/ua_run.c:722 src/stored/status.c:671 src/lib/util.c:432
 #: src/filed/status.c:525
 msgid "Differential"
 msgstr ""
 
-#: src/dird/ua_run.c:717 src/stored/status.c:609 src/lib/util.c:435
+#: src/dird/ua_run.c:723 src/stored/status.c:674 src/lib/util.c:435
 #: src/filed/status.c:528
 msgid "Since"
 msgstr ""
 
-#: src/dird/ua_run.c:718
+#: src/dird/ua_run.c:724
 msgid "VirtualFull"
 msgstr ""
 
-#: src/dird/ua_run.c:719 src/dird/ua_run.c:748
+#: src/dird/ua_run.c:725 src/dird/ua_run.c:754
 msgid "Select level"
 msgstr ""
 
-#: src/dird/ua_run.c:743
+#: src/dird/ua_run.c:749
 msgid "Initialize Catalog"
 msgstr ""
 
-#: src/dird/ua_run.c:744 src/stored/status.c:612 src/lib/util.c:438
+#: src/dird/ua_run.c:750 src/stored/status.c:677 src/lib/util.c:438
 #: src/filed/status.c:531
 msgid "Verify Catalog"
 msgstr ""
 
-#: src/dird/ua_run.c:745 src/lib/util.c:444
+#: src/dird/ua_run.c:751 src/lib/util.c:444
 msgid "Verify Volume to Catalog"
 msgstr ""
 
-#: src/dird/ua_run.c:746 src/lib/util.c:447
+#: src/dird/ua_run.c:752 src/lib/util.c:447
 msgid "Verify Disk to Catalog"
 msgstr ""
 
-#: src/dird/ua_run.c:747
+#: src/dird/ua_run.c:753
 msgid "Verify Volume Data (not yet implemented)"
 msgstr ""
 
-#: src/dird/ua_run.c:768
+#: src/dird/ua_run.c:774
 msgid "Level not appropriate for this Job. Cannot be changed.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:799
+#: src/dird/ua_run.c:805
 #, c-format
 msgid ""
 "Run Admin Job\n"
@@ -4571,7 +4616,7 @@ msgid ""
 "Priority: %d\n"
 msgstr ""
 
-#: src/dird/ua_run.c:843
+#: src/dird/ua_run.c:849
 #, c-format
 msgid ""
 "Run Backup job\n"
@@ -4586,12 +4631,12 @@ msgid ""
 "%s%s%s"
 msgstr ""
 
-#: src/dird/ua_run.c:874
+#: src/dird/ua_run.c:880
 #, c-format
 msgid "Could not get job record for selected JobId. ERR=%s"
 msgstr ""
 
-#: src/dird/ua_run.c:913
+#: src/dird/ua_run.c:919
 #, c-format
 msgid ""
 "Run Verify Job\n"
@@ -4607,11 +4652,11 @@ msgid ""
 "Priority:    %d\n"
 msgstr ""
 
-#: src/dird/ua_run.c:942
+#: src/dird/ua_run.c:948
 msgid "Please enter a JobId for restore: "
 msgstr ""
 
-#: src/dird/ua_run.c:982
+#: src/dird/ua_run.c:988
 #, c-format
 msgid ""
 "Run Restore job\n"
@@ -4629,7 +4674,7 @@ msgid ""
 "Plugin Options:  %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1038
+#: src/dird/ua_run.c:1044
 #, c-format
 msgid ""
 "Run Restore job\n"
@@ -4647,7 +4692,7 @@ msgid ""
 "Plugin Options:  %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1069
+#: src/dird/ua_run.c:1075
 #, c-format
 msgid ""
 "Run Restore job\n"
@@ -4655,17 +4700,17 @@ msgid ""
 "Bootstrap:  %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1077
+#: src/dird/ua_run.c:1083
 #, c-format
 msgid "RegexWhere: %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1080
+#: src/dird/ua_run.c:1086
 #, c-format
 msgid "Where:      %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1084
+#: src/dird/ua_run.c:1090
 #, c-format
 msgid ""
 "Replace:         %s\n"
@@ -4678,245 +4723,245 @@ msgid ""
 "Plugin Options:  %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1139
+#: src/dird/ua_run.c:1145
 msgid "Run Copy job\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1141
+#: src/dird/ua_run.c:1147
 msgid "Run Migration job\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1170
+#: src/dird/ua_run.c:1176
 #, c-format
 msgid "Unknown Job Type=%d\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1239
+#: src/dird/ua_run.c:1245
 #, c-format
 msgid "Value missing for keyword %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1246
+#: src/dird/ua_run.c:1252
 msgid "Job name specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1254
+#: src/dird/ua_run.c:1260
 msgid "JobId specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1263 src/dird/ua_run.c:1403
+#: src/dird/ua_run.c:1269 src/dird/ua_run.c:1409
 msgid "Client specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1271
+#: src/dird/ua_run.c:1277
 msgid "FileSet specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1279
+#: src/dird/ua_run.c:1285
 msgid "Level specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1288
+#: src/dird/ua_run.c:1294
 msgid "Storage specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1296
+#: src/dird/ua_run.c:1302
 msgid "RegexWhere or Where specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1301
+#: src/dird/ua_run.c:1307
 msgid "No authorization for \"regexwhere\" specification.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1308
+#: src/dird/ua_run.c:1314
 msgid "Where or RegexWhere specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1313
+#: src/dird/ua_run.c:1319
 msgid "No authoriztion for \"where\" specification.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1320
+#: src/dird/ua_run.c:1326
 msgid "Bootstrap specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1328
+#: src/dird/ua_run.c:1334
 msgid "Replace specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1336
+#: src/dird/ua_run.c:1342
 msgid "When specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1344
+#: src/dird/ua_run.c:1350
 msgid "Priority specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1349
+#: src/dird/ua_run.c:1355
 msgid "Priority must be positive nonzero setting it to 10.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1359
+#: src/dird/ua_run.c:1365
 msgid "Verify Job specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1387
+#: src/dird/ua_run.c:1393
 msgid "Migration Job specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1395
+#: src/dird/ua_run.c:1401
 msgid "Pool specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1411
+#: src/dird/ua_run.c:1417
 msgid "Restore Client specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1418
+#: src/dird/ua_run.c:1424
 msgid "Plugin Options not yet implemented.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1421
+#: src/dird/ua_run.c:1427
 msgid "Plugin Options specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1426
+#: src/dird/ua_run.c:1432
 msgid "No authoriztion for \"PluginOptions\" specification.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1433
+#: src/dird/ua_run.c:1439
 msgid "Spool flag specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1440
+#: src/dird/ua_run.c:1446
 msgid "Invalid spooldata flag.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1449
+#: src/dird/ua_run.c:1455
 msgid "IgnoreDuplicateCheck flag specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1456
+#: src/dird/ua_run.c:1462
 msgid "Invalid ignoreduplicatecheck flag.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1461
+#: src/dird/ua_run.c:1467
 msgid "Accurate flag specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1468
+#: src/dird/ua_run.c:1474
 msgid "Invalid accurate flag.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1489
+#: src/dird/ua_run.c:1495
 #, c-format
 msgid "Invalid keyword: %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1504
+#: src/dird/ua_run.c:1510
 #, c-format
 msgid "Catalog \"%s\" not found\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1508
+#: src/dird/ua_run.c:1514
 #, c-format
 msgid "No authorization. Catalog \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1519
+#: src/dird/ua_run.c:1525
 #, c-format
 msgid "Job \"%s\" not found\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1526
+#: src/dird/ua_run.c:1532
 msgid "A job name must be specified.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1532
+#: src/dird/ua_run.c:1538
 #, c-format
 msgid "No authorization. Job \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1540
+#: src/dird/ua_run.c:1546
 #, c-format
 msgid "Pool \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1550
+#: src/dird/ua_run.c:1556
 #, c-format
 msgid "No authorization. Pool \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1560
+#: src/dird/ua_run.c:1566
 #, c-format
 msgid "Storage \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1569 src/dird/job.c:1242
+#: src/dird/ua_run.c:1575 src/dird/job.c:1245
 msgid "No storage specified.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1572
+#: src/dird/ua_run.c:1578
 #, c-format
 msgid "No authorization. Storage \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1592 src/dird/ua_run.c:1612
+#: src/dird/ua_run.c:1598 src/dird/ua_run.c:1618
 #, c-format
 msgid "No authorization. Client \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1602
+#: src/dird/ua_run.c:1608
 #, c-format
 msgid "Restore Client \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1621
+#: src/dird/ua_run.c:1627
 #, c-format
 msgid "FileSet \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1630
+#: src/dird/ua_run.c:1636
 #, c-format
 msgid "No authorization. FileSet \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1638
+#: src/dird/ua_run.c:1644
 #, c-format
 msgid "Verify Job \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1648
+#: src/dird/ua_run.c:1654
 #, c-format
 msgid "Migration Job \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:180 src/stored/sd_plugins.c:183
-#: src/filed/fd_plugins.c:973
+#: src/dird/dir_plugins.c:181 src/stored/sd_plugins.c:194
+#: src/filed/fd_plugins.c:1130
 #, c-format
 msgid "Loaded plugin: %s\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:200 src/stored/sd_plugins.c:203
-#: src/filed/fd_plugins.c:992
+#: src/dird/dir_plugins.c:201 src/stored/sd_plugins.c:214
+#: src/filed/fd_plugins.c:1151
 #, c-format
 msgid "Plugin magic wrong. Plugin=%s wanted=%s got=%s\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:208 src/stored/sd_plugins.c:211
-#: src/filed/fd_plugins.c:1000
+#: src/dird/dir_plugins.c:209 src/stored/sd_plugins.c:222
+#: src/filed/fd_plugins.c:1159
 #, c-format
 msgid "Plugin version incorrect. Plugin=%s wanted=%d got=%d\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:217 src/stored/sd_plugins.c:220
-#: src/filed/fd_plugins.c:1008
+#: src/dird/dir_plugins.c:218 src/stored/sd_plugins.c:231
+#: src/filed/fd_plugins.c:1167
 #, c-format
 msgid "Plugin license incompatible. Plugin=%s license=%s\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:225 src/stored/sd_plugins.c:228
-#: src/filed/fd_plugins.c:1016
+#: src/dird/dir_plugins.c:226 src/stored/sd_plugins.c:239
+#: src/filed/fd_plugins.c:1175
 #, c-format
 msgid "Plugin size incorrect. Plugin=%s wanted=%d got=%d\n"
 msgstr ""
@@ -4943,25 +4988,25 @@ msgstr ""
 msgid "Start Backup JobId %s, Job=%s\n"
 msgstr ""
 
-#: src/dird/backup.c:517
+#: src/dird/backup.c:521
 #, c-format
 msgid "Unexpected Client Job message: %s\n"
 msgstr ""
 
-#: src/dird/backup.c:530
+#: src/dird/backup.c:534
 #, c-format
 msgid "Network error with FD during %s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/backup.c:565
+#: src/dird/backup.c:569
 msgid "No Job status returned from FD.\n"
 msgstr ""
 
-#: src/dird/backup.c:647
+#: src/dird/backup.c:657
 msgid "Backup failed -- incomplete"
 msgstr ""
 
-#: src/dird/backup.c:720
+#: src/dird/backup.c:730
 #, c-format
 msgid ""
 "%s %s %s (%s):\n"
@@ -5000,19 +5045,19 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/backup.c:822
+#: src/dird/backup.c:832
 #, c-format
 msgid "Could not get Job Volume Parameters to update Bootstrap file. ERR=%s\n"
 msgstr ""
 
-#: src/dird/backup.c:858
+#: src/dird/backup.c:868
 #, c-format
 msgid ""
 "Could not open WriteBootstrap file:\n"
 "%s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/restore.c:137 src/dird/msgchan.c:463 src/filed/job.c:2409
+#: src/dird/restore.c:137 src/dird/msgchan.c:476
 #, c-format
 msgid "Could not open bootstrap file %s: ERR=%s\n"
 msgstr ""
@@ -5027,39 +5072,39 @@ msgstr ""
 msgid "Could not acquire read storage lock for \"%s\""
 msgstr ""
 
-#: src/dird/restore.c:502
+#: src/dird/restore.c:505
 msgid ""
 "Cannot restore without a bootstrap file.\n"
 "You probably ran a restore job directly. All restore jobs must\n"
 "be run using the restore command.\n"
 msgstr ""
 
-#: src/dird/restore.c:510
+#: src/dird/restore.c:513
 #, c-format
 msgid "Start Restore Job %s\n"
 msgstr ""
 
-#: src/dird/restore.c:561
+#: src/dird/restore.c:564
 msgid "Restore OK -- warning file count mismatch"
 msgstr ""
 
-#: src/dird/restore.c:563
+#: src/dird/restore.c:566
 msgid "Restore OK"
 msgstr ""
 
-#: src/dird/restore.c:567
+#: src/dird/restore.c:570
 msgid "Restore OK -- with warnings"
 msgstr ""
 
-#: src/dird/restore.c:571
+#: src/dird/restore.c:574
 msgid "*** Restore Error ***"
 msgstr ""
 
-#: src/dird/restore.c:581
+#: src/dird/restore.c:584
 msgid "Restore Canceled"
 msgstr ""
 
-#: src/dird/restore.c:608
+#: src/dird/restore.c:611
 #, c-format
 msgid ""
 "%s %s %s (%s):\n"
@@ -5088,7 +5133,7 @@ msgstr ""
 msgid "Select daemon type for status"
 msgstr ""
 
-#: src/dird/ua_status.c:294 src/stored/status.c:218
+#: src/dird/ua_status.c:294 src/stored/status.c:248
 #, c-format
 msgid "%s Version: %s (%s) %s %s %s\n"
 msgstr ""
@@ -5098,7 +5143,7 @@ msgstr ""
 msgid "Daemon started %s. Jobs: run=%d, running=%d mode=%d,%d\n"
 msgstr ""
 
-#: src/dird/ua_status.c:300 src/stored/status.c:228 src/filed/status.c:142
+#: src/dird/ua_status.c:300 src/stored/status.c:258 src/filed/status.c:142
 #, c-format
 msgid " Heap: heap=%s smbytes=%s max_bytes=%s bufs=%s max_bufs=%s\n"
 msgstr ""
@@ -5137,242 +5182,242 @@ msgstr ""
 msgid "===================================================================================\n"
 msgstr ""
 
-#: src/dird/ua_status.c:487
+#: src/dird/ua_status.c:486
 #, c-format
 msgid "%-14s\t%-8s\t%3d\t%-18s\t%-18s\t%s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:491
+#: src/dird/ua_status.c:490
 #, c-format
 msgid "%-14s %-8s %3d  %-18s %-18s %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:545
+#: src/dird/ua_status.c:544
 msgid "Ignoring invalid value for days. Max is 500.\n"
 msgstr ""
 
-#: src/dird/ua_status.c:588
+#: src/dird/ua_status.c:587
 msgid "No Scheduled Jobs.\n"
 msgstr ""
 
-#: src/dird/ua_status.c:605 src/stored/status.c:396 src/filed/status.c:183
+#: src/dird/ua_status.c:604 src/stored/status.c:450 src/filed/status.c:183
 msgid ""
 "\n"
 "Running Jobs:\n"
 msgstr ""
 
-#: src/dird/ua_status.c:613
+#: src/dird/ua_status.c:612
 #, c-format
 msgid "Console connected at %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:623
+#: src/dird/ua_status.c:622
 msgid ""
 "No Jobs running.\n"
 "====\n"
 msgstr ""
 
-#: src/dird/ua_status.c:629
+#: src/dird/ua_status.c:628
 msgid " JobId Level   Name                       Status\n"
 msgstr ""
 
-#: src/dird/ua_status.c:630 src/filed/status.c:342
+#: src/dird/ua_status.c:629 src/filed/status.c:342
 msgid "======================================================================\n"
 msgstr ""
 
-#: src/dird/ua_status.c:639
+#: src/dird/ua_status.c:638
 msgid "is waiting execution"
 msgstr ""
 
-#: src/dird/ua_status.c:642
+#: src/dird/ua_status.c:641
 msgid "is running"
 msgstr ""
 
-#: src/dird/ua_status.c:645
+#: src/dird/ua_status.c:644
 msgid "is blocked"
 msgstr ""
 
-#: src/dird/ua_status.c:648
+#: src/dird/ua_status.c:647
 msgid "has terminated"
 msgstr ""
 
-#: src/dird/ua_status.c:651
+#: src/dird/ua_status.c:650
 msgid "has terminated with warnings"
 msgstr ""
 
-#: src/dird/ua_status.c:654
+#: src/dird/ua_status.c:653
 msgid "has erred"
 msgstr ""
 
-#: src/dird/ua_status.c:657
+#: src/dird/ua_status.c:656
 msgid "has errors"
 msgstr ""
 
-#: src/dird/ua_status.c:660
+#: src/dird/ua_status.c:659
 msgid "has a fatal error"
 msgstr ""
 
-#: src/dird/ua_status.c:663
+#: src/dird/ua_status.c:662
 msgid "has verify differences"
 msgstr ""
 
-#: src/dird/ua_status.c:666
+#: src/dird/ua_status.c:665
 msgid "has been canceled"
 msgstr ""
 
-#: src/dird/ua_status.c:671
+#: src/dird/ua_status.c:670
 msgid "is waiting on Client"
 msgstr ""
 
-#: src/dird/ua_status.c:673
+#: src/dird/ua_status.c:672
 #, c-format
 msgid "is waiting on Client %s"
 msgstr ""
 
-#: src/dird/ua_status.c:681 src/dird/ua_status.c:683
+#: src/dird/ua_status.c:680 src/dird/ua_status.c:682
 #, c-format
 msgid "is waiting on Storage \"%s\""
 msgstr ""
 
-#: src/dird/ua_status.c:685
+#: src/dird/ua_status.c:684
 msgid "is waiting on Storage"
 msgstr ""
 
-#: src/dird/ua_status.c:691
+#: src/dird/ua_status.c:690
 msgid "is waiting on max Storage jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:694
+#: src/dird/ua_status.c:693
 msgid "is waiting on max Client jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:697
+#: src/dird/ua_status.c:696
 msgid "is waiting on max Job jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:700
+#: src/dird/ua_status.c:699
 msgid "is waiting on max total jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:703
+#: src/dird/ua_status.c:702
 msgid "is waiting for its start time"
 msgstr ""
 
-#: src/dird/ua_status.c:706
+#: src/dird/ua_status.c:705
 msgid "is waiting for higher priority jobs to finish"
 msgstr ""
 
-#: src/dird/ua_status.c:709 src/dird/ua_status.c:760 src/lib/util.c:241
+#: src/dird/ua_status.c:708 src/dird/ua_status.c:759 src/lib/util.c:241
 msgid "SD committing Data"
 msgstr ""
 
-#: src/dird/ua_status.c:712 src/dird/ua_status.c:763 src/lib/util.c:244
+#: src/dird/ua_status.c:711 src/dird/ua_status.c:762 src/lib/util.c:244
 msgid "SD despooling Data"
 msgstr ""
 
-#: src/dird/ua_status.c:715 src/dird/ua_status.c:766 src/lib/util.c:247
+#: src/dird/ua_status.c:714 src/dird/ua_status.c:765 src/lib/util.c:247
 msgid "SD despooling Attributes"
 msgstr ""
 
-#: src/dird/ua_status.c:718 src/dird/ua_status.c:769 src/lib/util.c:250
+#: src/dird/ua_status.c:717 src/dird/ua_status.c:768 src/lib/util.c:250
 msgid "Dir inserting Attributes"
 msgstr ""
 
-#: src/dird/ua_status.c:723
+#: src/dird/ua_status.c:722
 #, c-format
 msgid "is in unknown state %c"
 msgstr ""
 
-#: src/dird/ua_status.c:737
+#: src/dird/ua_status.c:736
 msgid "is waiting for a mount request"
 msgstr ""
 
-#: src/dird/ua_status.c:744
+#: src/dird/ua_status.c:743
 msgid "is waiting for an appendable Volume"
 msgstr ""
 
-#: src/dird/ua_status.c:752
+#: src/dird/ua_status.c:751
 msgid "is waiting for Client to connect to Storage daemon"
 msgstr ""
 
-#: src/dird/ua_status.c:754
+#: src/dird/ua_status.c:753
 #, c-format
 msgid "is waiting for Client %s to connect to Storage %s"
 msgstr ""
 
-#: src/dird/ua_status.c:785
+#: src/dird/ua_status.c:784
 #, c-format
 msgid "%6d\t%-6s\t%-20s\t%s\t%s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:789
+#: src/dird/ua_status.c:788
 #, c-format
 msgid "%6d %-6s  %-20s %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:793
+#: src/dird/ua_status.c:792
 #, c-format
 msgid "               %-30s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:813
+#: src/dird/ua_status.c:812
 msgid "No Terminated Jobs.\n"
 msgstr ""
 
-#: src/dird/ua_status.c:819 src/stored/status.c:507 src/filed/status.c:330
+#: src/dird/ua_status.c:818 src/stored/status.c:572 src/filed/status.c:330
 msgid ""
 "\n"
 "Terminated Jobs:\n"
 msgstr ""
 
-#: src/dird/ua_status.c:820 src/stored/status.c:514 src/filed/status.c:340
+#: src/dird/ua_status.c:819 src/stored/status.c:579 src/filed/status.c:340
 msgid " JobId  Level    Files      Bytes   Status   Finished        Name \n"
 msgstr ""
 
-#: src/dird/ua_status.c:821
+#: src/dird/ua_status.c:820
 msgid "====================================================================\n"
 msgstr ""
 
-#: src/dird/ua_status.c:853 src/stored/status.c:536 src/lib/util.c:180
+#: src/dird/ua_status.c:852 src/stored/status.c:601 src/lib/util.c:180
 #: src/filed/status.c:363
 msgid "Created"
 msgstr ""
 
-#: src/dird/ua_status.c:857 src/stored/status.c:540 src/lib/util.c:196
+#: src/dird/ua_status.c:856 src/stored/status.c:605 src/lib/util.c:196
 #: src/lib/util.c:331 src/lib/util.c:478 src/filed/status.c:367
 msgid "Error"
 msgstr ""
 
-#: src/dird/ua_status.c:860 src/stored/status.c:543 src/filed/status.c:370
+#: src/dird/ua_status.c:859 src/stored/status.c:608 src/filed/status.c:370
 msgid "Diffs"
 msgstr ""
 
-#: src/dird/ua_status.c:866 src/stored/status.c:549 src/stored/btape.c:1521
+#: src/dird/ua_status.c:865 src/stored/status.c:614 src/stored/btape.c:1523
 #: src/lib/util.c:189 src/lib/util.c:324 src/filed/status.c:376
 #: src/wx-console/wxbconfigpanel.cpp:209
 msgid "OK"
 msgstr ""
 
-#: src/dird/ua_status.c:869 src/stored/status.c:552 src/lib/util.c:202
+#: src/dird/ua_status.c:868 src/stored/status.c:617 src/lib/util.c:202
 #: src/lib/util.c:327
 msgid "OK -- with warnings"
 msgstr ""
 
-#: src/dird/ua_status.c:872 src/stored/status.c:555 src/filed/status.c:379
+#: src/dird/ua_status.c:871 src/stored/status.c:620 src/filed/status.c:379
 msgid "Other"
 msgstr ""
 
-#: src/dird/ua_status.c:876 src/stored/status.c:567 src/filed/status.c:391
+#: src/dird/ua_status.c:875 src/stored/status.c:632 src/filed/status.c:391
 #, c-format
 msgid "%6d\t%-6s\t%8s\t%10s\t%-7s\t%-8s\t%s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:884 src/stored/status.c:575 src/filed/status.c:399
+#: src/dird/ua_status.c:883 src/stored/status.c:640 src/filed/status.c:399
 #, c-format
 msgid "%6d  %-6s %8s %10s  %-7s  %-8s %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:893
+#: src/dird/ua_status.c:892
 msgid "\n"
 msgstr ""
 
@@ -5449,8 +5494,8 @@ msgid "Could not add job queue: ERR=%s\n"
 msgstr ""
 
 #: src/dird/job.c:183 src/dird/job.c:433 src/dird/job.c:435 src/dird/job.c:485
-#: src/dird/job.c:487 src/dird/job.c:1126 src/dird/job.c:1167
-#: src/dird/job.c:1176
+#: src/dird/job.c:487 src/dird/job.c:1129 src/dird/job.c:1170
+#: src/dird/job.c:1179
 msgid "Job resource"
 msgstr ""
 
@@ -5498,77 +5543,77 @@ msgstr ""
 msgid "Created database record for Pool \"%s\".\n"
 msgstr ""
 
-#: src/dird/job.c:765 src/dird/job.c:806
+#: src/dird/job.c:766 src/dird/job.c:809
 #, c-format
 msgid "JobId %d already running. Duplicate job not allowed.\n"
 msgstr ""
 
-#: src/dird/job.c:796
+#: src/dird/job.c:797
 #, c-format
 msgid "Cancelling duplicate JobId=%d.\n"
 msgstr ""
 
-#: src/dird/job.c:825 src/dird/job.c:1113
+#: src/dird/job.c:828 src/dird/job.c:1116
 msgid "Run pool override"
 msgstr ""
 
-#: src/dird/job.c:836
+#: src/dird/job.c:839
 msgid "Run FullPool override"
 msgstr ""
 
-#: src/dird/job.c:838
+#: src/dird/job.c:841
 msgid "Job FullPool override"
 msgstr ""
 
-#: src/dird/job.c:847
+#: src/dird/job.c:850
 msgid "Run IncPool override"
 msgstr ""
 
-#: src/dird/job.c:849
+#: src/dird/job.c:852
 msgid "Job IncPool override"
 msgstr ""
 
-#: src/dird/job.c:858
+#: src/dird/job.c:861
 msgid "Run DiffPool override"
 msgstr ""
 
-#: src/dird/job.c:860
+#: src/dird/job.c:863
 msgid "Job DiffPool override"
 msgstr ""
 
-#: src/dird/job.c:890 src/stored/bscan.c:1052
+#: src/dird/job.c:893 src/stored/bscan.c:1056
 #, c-format
 msgid "Could not create Client record. ERR=%s\n"
 msgstr ""
 
-#: src/dird/job.c:926
+#: src/dird/job.c:929
 msgid "FileSet MD5 digest not found.\n"
 msgstr ""
 
-#: src/dird/job.c:931
+#: src/dird/job.c:934
 #, c-format
 msgid "Could not create FileSet \"%s\" record. ERR=%s\n"
 msgstr ""
 
-#: src/dird/job.c:973
+#: src/dird/job.c:976
 #, c-format
 msgid "Error updating job record. %s"
 msgstr ""
 
-#: src/dird/job.c:1118
+#: src/dird/job.c:1121
 msgid "Run storage override"
 msgstr ""
 
-#: src/dird/job.c:1186
+#: src/dird/job.c:1189
 msgid "Client resource"
 msgstr ""
 
-#: src/dird/job.c:1403
+#: src/dird/job.c:1406
 #, c-format
 msgid "Could not start clone job: \"%s\".\n"
 msgstr ""
 
-#: src/dird/job.c:1406
+#: src/dird/job.c:1409
 #, c-format
 msgid "Clone JobId %d started.\n"
 msgstr ""
@@ -5720,90 +5765,91 @@ msgstr ""
 msgid "1000 OK: %s Version: %s (%s)\n"
 msgstr ""
 
-#: src/dird/catreq.c:129 src/dird/catreq.c:356
+#: src/dird/catreq.c:128 src/dird/catreq.c:355
 #, c-format
 msgid "1990 Invalid Catalog Request: %s"
 msgstr ""
 
-#: src/dird/catreq.c:130
+#: src/dird/catreq.c:129
 #, c-format
 msgid "Invalid Catalog request; DB not open: %s"
 msgstr ""
 
-#: src/dird/catreq.c:155
+#: src/dird/catreq.c:154
 msgid "1901 No Media.\n"
 msgstr ""
 
-#: src/dird/catreq.c:183
+#: src/dird/catreq.c:182
 msgid "not in Pool"
 msgstr ""
 
-#: src/dird/catreq.c:185
+#: src/dird/catreq.c:184
 msgid "not correct MediaType"
 msgstr ""
 
-#: src/dird/catreq.c:195
+#: src/dird/catreq.c:194
 msgid "is not Enabled"
 msgstr ""
 
-#: src/dird/catreq.c:204
+#: src/dird/catreq.c:203
 #, c-format
 msgid "1998 Volume \"%s\" catalog status is %s, %s.\n"
 msgstr ""
 
-#: src/dird/catreq.c:209
+#: src/dird/catreq.c:208
 #, c-format
 msgid "1997 Volume \"%s\" not in catalog.\n"
 msgstr ""
 
-#: src/dird/catreq.c:231
+#: src/dird/catreq.c:230
 #, c-format
 msgid "Unable to get Media record for Volume %s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/catreq.c:233
+#: src/dird/catreq.c:232
 #, c-format
 msgid "1991 Catalog Request for vol=%s failed: %s"
 msgstr ""
 
-#: src/dird/catreq.c:260
+#: src/dird/catreq.c:259
 #, c-format
 msgid ""
 "Volume Files at %u being set to %u for Volume \"%s\". This is incorrect.\n"
 msgstr ""
 
-#: src/dird/catreq.c:263
+#: src/dird/catreq.c:262
 #, c-format
 msgid "1992 Update Media error. VolFiles=%u, CatFiles=%u\n"
 msgstr ""
 
-#: src/dird/catreq.c:288
-msgid "Attempt to set StorageId to zero.\n"
-msgstr ""
-
-#: src/dird/catreq.c:319
+#: src/dird/catreq.c:318
 #, c-format
 msgid "Catalog error updating Media record. %s"
 msgstr ""
 
-#: src/dird/catreq.c:321
+#: src/dird/catreq.c:320
 msgid "1993 Update Media error\n"
 msgstr ""
 
-#: src/dird/catreq.c:345
+#: src/dird/catreq.c:344
 #, c-format
 msgid "Catalog error creating JobMedia record. %s"
 msgstr ""
 
-#: src/dird/catreq.c:347
+#: src/dird/catreq.c:346
 msgid "1992 Create JobMedia error\n"
 msgstr ""
 
-#: src/dird/catreq.c:357
+#: src/dird/catreq.c:356
 #, c-format
 msgid "Invalid Catalog request: %s"
 msgstr ""
 
+#: src/dird/catreq.c:443
+#, c-format
+msgid "Attribute create error: ERR=%s"
+msgstr ""
+
 #: src/dird/catreq.c:538
 #, c-format
 msgid "Restore object create error. %s"
@@ -5811,41 +5857,41 @@ msgstr ""
 
 #: src/dird/catreq.c:544
 #, c-format
-msgid "Got %s but not same File as attributes\n"
+msgid "%s not same File=%d as attributes=%d\n"
 msgstr ""
 
-#: src/dird/catreq.c:570
+#: src/dird/catreq.c:571
 #, c-format
 msgid "Catalog error updating file digest. Unsupported digest stream type: %d"
 msgstr ""
 
-#: src/dird/catreq.c:585
+#: src/dird/catreq.c:586
 #, c-format
 msgid "attribute create error. %s"
 msgstr ""
 
-#: src/dird/catreq.c:591
+#: src/dird/catreq.c:592
 #, c-format
 msgid "Catalog error updating file digest. %s"
 msgstr ""
 
-#: src/dird/catreq.c:614
+#: src/dird/catreq.c:615
 #, c-format
 msgid "1994 Invalid Catalog Update: %s"
 msgstr ""
 
-#: src/dird/catreq.c:615
+#: src/dird/catreq.c:616
 #, c-format
 msgid "Invalid Catalog Update; DB not open: %s"
 msgstr ""
 
-#: src/dird/catreq.c:670 src/dird/catreq.c:685 src/lib/bsock.c:605
+#: src/dird/catreq.c:671 src/dird/catreq.c:686 src/lib/bsock.c:645
 #, c-format
 msgid "fread attr spool error. ERR=%s\n"
 msgstr ""
 
 #: src/dird/msgchan.c:106 src/tray-monitor/tray-monitor.c:952
-#: src/filed/job.c:1771 src/qt-console/tray-monitor/tray-monitor.cpp:375
+#: src/filed/job.c:1775 src/qt-console/tray-monitor/tray-monitor.cpp:375
 msgid "Storage daemon"
 msgstr ""
 
@@ -5859,7 +5905,17 @@ msgstr ""
 msgid "<stored: bad response to Job command: %s\n"
 msgstr ""
 
-#: src/dird/msgchan.c:312
+#: src/dird/msgchan.c:273
+#, c-format
+msgid "Using Device \"%s\" to read.\n"
+msgstr ""
+
+#: src/dird/msgchan.c:311
+#, c-format
+msgid "Using Device \"%s\" to write.\n"
+msgstr ""
+
+#: src/dird/msgchan.c:318
 #, c-format
 msgid ""
 "\n"
@@ -5867,21 +5923,20 @@ msgid ""
 "     %s"
 msgstr ""
 
-#: src/dird/msgchan.c:316
+#: src/dird/msgchan.c:322
 #, c-format
 msgid ""
 "\n"
 "     Storage daemon didn't accept Device \"%s\" command.\n"
 msgstr ""
 
-#: src/dird/msgchan.c:321
+#: src/dird/msgchan.c:345 src/dird/msgchan.c:542
 #, c-format
-msgid "Using Device \"%s\"\n"
+msgid "Cannot create message thread: %s\n"
 msgstr ""
 
-#: src/dird/msgchan.c:341 src/dird/msgchan.c:529
-#, c-format
-msgid "Cannot create message thread: %s\n"
+#: src/dird/msgchan.c:417
+msgid "Director's comm line to SD dropped.\n"
 msgstr ""
 
 #: src/tray-monitor/tray_conf.c:177
@@ -6161,14 +6216,14 @@ msgstr ""
 
 #: src/tray-monitor/tray-monitor.c:937
 #: src/qt-console/tray-monitor/tray-monitor.cpp:359
-#: src/qt-console/bcomm/dircomm.cpp:101
+#: src/qt-console/bcomm/dircomm.cpp:103
 #, c-format
 msgid "Connecting to Director %s:%d"
 msgstr ""
 
 #: src/tray-monitor/tray-monitor.c:938 src/wx-console/console_thread.cpp:428
 #: src/qt-console/tray-monitor/tray-monitor.cpp:361
-#: src/qt-console/bcomm/dircomm.cpp:171
+#: src/qt-console/bcomm/dircomm.cpp:173
 msgid "Director daemon"
 msgstr ""
 
@@ -6325,7 +6380,7 @@ msgid ""
 "Please see "
 msgstr ""
 
-#: src/stored/reserve.c:86
+#: src/stored/reserve.c:87
 #, c-format
 msgid "Unable to initialize reservation lock. ERR=%s\n"
 msgstr ""
@@ -6335,21 +6390,21 @@ msgstr ""
 msgid "Hey! num_writers=%d!!!!\n"
 msgstr ""
 
-#: src/stored/reserve.c:255
+#: src/stored/reserve.c:256
 msgid "3939 Could not get dcr\n"
 msgstr ""
 
-#: src/stored/reserve.c:357
+#: src/stored/reserve.c:364
 #, c-format
 msgid "Device reservation failed for JobId=%d: %s\n"
 msgstr ""
 
-#: src/stored/reserve.c:366
+#: src/stored/reserve.c:373
 #, c-format
 msgid "Failed command: %s\n"
 msgstr ""
 
-#: src/stored/reserve.c:625 src/stored/dircmd.c:618
+#: src/stored/reserve.c:632 src/stored/dircmd.c:633
 #, c-format
 msgid ""
 "\n"
@@ -6357,85 +6412,85 @@ msgid ""
 "does not exist.\n"
 msgstr ""
 
-#: src/stored/reserve.c:629 src/stored/dircmd.c:596
+#: src/stored/reserve.c:636 src/stored/dircmd.c:611
 #, c-format
 msgid ""
 "\n"
 "     Device \"%s\" requested by DIR could not be opened or does not exist.\n"
 msgstr ""
 
-#: src/stored/reserve.c:645
+#: src/stored/reserve.c:652
 #, c-format
 msgid "3926 Could not get dcr for device: %s\n"
 msgstr ""
 
-#: src/stored/reserve.c:771
+#: src/stored/reserve.c:778
 #, c-format
 msgid "3601 JobId=%u device %s is BLOCKED due to user unmount.\n"
 msgstr ""
 
-#: src/stored/reserve.c:781
+#: src/stored/reserve.c:788
 #, c-format
 msgid "3602 JobId=%u device %s is busy (already reading/writing).\n"
 msgstr ""
 
-#: src/stored/reserve.c:833
+#: src/stored/reserve.c:840
 #, c-format
 msgid "3603 JobId=%u device %s is busy reading.\n"
 msgstr ""
 
-#: src/stored/reserve.c:842
+#: src/stored/reserve.c:849
 #, c-format
 msgid "3604 JobId=%u device %s is BLOCKED due to user unmount.\n"
 msgstr ""
 
-#: src/stored/reserve.c:884
+#: src/stored/reserve.c:891
 #, c-format
 msgid ""
 "3608 JobId=%u wants Pool=\"%s\" but have Pool=\"%s\" nreserve=%d on drive "
 "%s.\n"
 msgstr ""
 
-#: src/stored/reserve.c:907
+#: src/stored/reserve.c:914
 #, c-format
 msgid "3609 JobId=%u Max concurrent jobs exceeded on drive %s.\n"
 msgstr ""
 
-#: src/stored/reserve.c:919
+#: src/stored/reserve.c:926
 #, c-format
 msgid "3610 JobId=%u Volume max jobs exceeded on drive %s.\n"
 msgstr ""
 
-#: src/stored/reserve.c:971
+#: src/stored/reserve.c:978
 #, c-format
 msgid "3605 JobId=%u wants free drive but device %s is busy.\n"
 msgstr ""
 
-#: src/stored/reserve.c:980
+#: src/stored/reserve.c:987
 #, c-format
 msgid "3606 JobId=%u prefers mounted drives, but drive %s has no Volume.\n"
 msgstr ""
 
-#: src/stored/reserve.c:1002
+#: src/stored/reserve.c:1009
 #, c-format
 msgid "3607 JobId=%u wants Vol=\"%s\" drive has Vol=\"%s\" on drive %s.\n"
 msgstr ""
 
-#: src/stored/reserve.c:1057
+#: src/stored/reserve.c:1064
 #, c-format
 msgid "Logic error!!!! JobId=%u Should not get here.\n"
 msgstr ""
 
-#: src/stored/reserve.c:1058
+#: src/stored/reserve.c:1065
 #, c-format
 msgid "3910 JobId=%u Logic error!!!! drive %s Should not get here.\n"
 msgstr ""
 
-#: src/stored/reserve.c:1061
+#: src/stored/reserve.c:1068
 msgid "Logic error!!!! Should not get here.\n"
 msgstr ""
 
-#: src/stored/reserve.c:1064
+#: src/stored/reserve.c:1071
 #, c-format
 msgid "3911 JobId=%u failed reserve drive %s.\n"
 msgstr ""
@@ -6525,23 +6580,23 @@ msgstr ""
 msgid "FileIndex=%d VolSessionId=%d VolSessionTime=%d Stream=%d DataLen=%d\n"
 msgstr ""
 
-#: src/stored/bls.c:425 src/stored/read_record.c:414 src/stored/bcopy.c:332
+#: src/stored/bls.c:425 src/stored/read_record.c:414 src/stored/bcopy.c:330
 msgid "Fresh Volume Label"
 msgstr ""
 
-#: src/stored/bls.c:428 src/stored/read_record.c:417 src/stored/bcopy.c:335
+#: src/stored/bls.c:428 src/stored/read_record.c:417 src/stored/bcopy.c:333
 msgid "Volume Label"
 msgstr ""
 
-#: src/stored/bls.c:432 src/stored/label.c:1033 src/stored/bcopy.c:339
+#: src/stored/bls.c:432 src/stored/label.c:1028 src/stored/bcopy.c:337
 msgid "Begin Job Session"
 msgstr ""
 
-#: src/stored/bls.c:437 src/stored/label.c:1036 src/stored/bcopy.c:343
+#: src/stored/bls.c:437 src/stored/label.c:1031 src/stored/bcopy.c:341
 msgid "End Job Session"
 msgstr ""
 
-#: src/stored/bls.c:441 src/stored/bcopy.c:348
+#: src/stored/bls.c:441 src/stored/bcopy.c:346
 msgid "End of Medium"
 msgstr ""
 
@@ -6557,17 +6612,17 @@ msgstr ""
 msgid "End of object"
 msgstr ""
 
-#: src/stored/bls.c:453 src/stored/label.c:1045 src/stored/bcopy.c:351
+#: src/stored/bls.c:453 src/stored/label.c:1040 src/stored/bcopy.c:349
 msgid "Unknown"
 msgstr ""
 
-#: src/stored/bls.c:460 src/stored/read_record.c:435 src/stored/bcopy.c:357
+#: src/stored/bls.c:460 src/stored/read_record.c:435 src/stored/bcopy.c:355
 #, c-format
 msgid "%s Record: VolSessionId=%d VolSessionTime=%d JobId=%d DataLen=%d\n"
 msgstr ""
 
-#: src/stored/bls.c:479 src/stored/bextract.c:612 src/stored/bcopy.c:375
-#: src/stored/bscan.c:1370 src/stored/btape.c:3048
+#: src/stored/bls.c:479 src/stored/bextract.c:612 src/stored/bcopy.c:373
+#: src/stored/bscan.c:1374 src/stored/btape.c:3050
 #, c-format
 msgid "Mount Volume \"%s\" on device %s and press return when ready: "
 msgstr ""
@@ -6577,292 +6632,292 @@ msgstr ""
 msgid "Connection request from %s failed.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:165
+#: src/stored/dircmd.c:166
 #, c-format
 msgid "Invalid connection from %s. Len=%d\n"
 msgstr ""
 
-#: src/stored/dircmd.c:208 src/filed/authenticate.c:208
+#: src/stored/dircmd.c:210 src/filed/authenticate.c:208
 msgid "Unable to authenticate Director\n"
 msgstr ""
 
-#: src/stored/dircmd.c:294
+#: src/stored/dircmd.c:299
 #, c-format
 msgid "3991 Bad setdebug command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:317
-#, c-format
-msgid "3904 Job %s not found.\n"
+#: src/stored/dircmd.c:326
+msgid "3903 Error scanning cancel command.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:345
+#: src/stored/dircmd.c:330
 #, c-format
-msgid "3000 JobId=%ld Job=\"%s\" marked to be canceled.\n"
+msgid "3904 Job %s not found.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:349
-msgid "3903 Error scanning cancel command.\n"
+#: src/stored/dircmd.c:358
+#, c-format
+msgid "3000 JobId=%ld Job=\"%s\" marked to be %s.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:425 src/stored/dircmd.c:791 src/stored/dircmd.c:883
-#: src/stored/dircmd.c:994 src/stored/dircmd.c:1116 src/stored/dircmd.c:1159
+#: src/stored/dircmd.c:437 src/stored/dircmd.c:812 src/stored/dircmd.c:904
+#: src/stored/dircmd.c:1015 src/stored/dircmd.c:1137 src/stored/dircmd.c:1179
 #, c-format
 msgid "3999 Device \"%s\" not found or could not be opened.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:430
+#: src/stored/dircmd.c:442
 #, c-format
 msgid "3903 Error scanning label command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:480
+#: src/stored/dircmd.c:492
 #, c-format
 msgid "3910 Unable to open device \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:497
+#: src/stored/dircmd.c:509
 #, c-format
 msgid "3920 Cannot label Volume because it is already labeled: \"%s\"\n"
 msgstr ""
 
-#: src/stored/dircmd.c:504
+#: src/stored/dircmd.c:516
 msgid "3921 Wrong volume mounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:508
+#: src/stored/dircmd.c:520
 msgid "3922 Cannot relabel an ANSI/IBM labeled Volume.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:516
+#: src/stored/dircmd.c:528
 #, c-format
 msgid "3912 Failed to label Volume: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:526
+#: src/stored/dircmd.c:538
 #, c-format
 msgid "3914 Failed to label Volume (no media): ERR=%s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:529
+#: src/stored/dircmd.c:541
 #, c-format
 msgid "3913 Cannot label Volume. Unknown status %d from read_volume_label()\n"
 msgstr ""
 
-#: src/stored/dircmd.c:563
+#: src/stored/dircmd.c:578
 #, c-format
 msgid "3001 Mounted Volume: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:567 src/stored/dircmd.c:1195
+#: src/stored/dircmd.c:582 src/stored/dircmd.c:1215
 #, c-format
 msgid ""
 "3902 Cannot mount Volume on Storage Device \"%s\" because:\n"
 "%s"
 msgstr ""
 
-#: src/stored/dircmd.c:680
+#: src/stored/dircmd.c:696
 msgid "Specified slot ignored. "
 msgstr ""
 
-#: src/stored/dircmd.c:695 src/stored/dircmd.c:752
+#: src/stored/dircmd.c:712 src/stored/dircmd.c:770
 #, c-format
 msgid "3901 Unable to open device \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:715 src/stored/dircmd.c:743
+#: src/stored/dircmd.c:732 src/stored/dircmd.c:761
 #, c-format
 msgid "3001 Device \"%s\" is mounted with Volume \"%s\"\n"
 msgstr ""
 
-#: src/stored/dircmd.c:718 src/stored/dircmd.c:746 src/stored/dircmd.c:761
+#: src/stored/dircmd.c:735 src/stored/dircmd.c:764 src/stored/dircmd.c:779
 #, c-format
 msgid ""
 "3905 Device \"%s\" open but no Bacula volume is mounted.\n"
 "If this is not a blank tape, try unmounting and remounting the Volume.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:728
+#: src/stored/dircmd.c:745
 #, c-format
 msgid "3001 Device \"%s\" is doing acquire.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:733 src/stored/dircmd.c:854
+#: src/stored/dircmd.c:750 src/stored/dircmd.c:875
 #, c-format
 msgid "3903 Device \"%s\" is being labeled.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:758
+#: src/stored/dircmd.c:776
 #, c-format
 msgid "3001 Device \"%s\" is already mounted with Volume \"%s\"\n"
 msgstr ""
 
-#: src/stored/dircmd.c:767
+#: src/stored/dircmd.c:788
 #, c-format
 msgid "3002 Device \"%s\" is mounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:769 src/stored/dircmd.c:826 src/stored/dircmd.c:842
-#: src/stored/dircmd.c:874
+#: src/stored/dircmd.c:790 src/stored/dircmd.c:847 src/stored/dircmd.c:863
+#: src/stored/dircmd.c:895
 #, c-format
 msgid "3907 %s"
 msgstr ""
 
-#: src/stored/dircmd.c:772
+#: src/stored/dircmd.c:793
 #, c-format
 msgid "3906 File device \"%s\" is always mounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:781
+#: src/stored/dircmd.c:802
 #, c-format
 msgid "3930 Device \"%s\" is being released.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:785
+#: src/stored/dircmd.c:806
 #, c-format
 msgid "3905 Unknown wait state %d\n"
 msgstr ""
 
-#: src/stored/dircmd.c:795
+#: src/stored/dircmd.c:816
 #, c-format
 msgid "3909 Error scanning mount command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:823 src/stored/dircmd.c:876
+#: src/stored/dircmd.c:844 src/stored/dircmd.c:897
 #, c-format
 msgid "3002 Device \"%s\" unmounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:830
+#: src/stored/dircmd.c:851
 #, c-format
 msgid "3901 Device \"%s\" is already unmounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:845
+#: src/stored/dircmd.c:866
 #, c-format
 msgid "3001 Device \"%s\" unmounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:850
+#: src/stored/dircmd.c:871
 #, c-format
 msgid "3902 Device \"%s\" is busy in acquire.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:888
+#: src/stored/dircmd.c:909
 #, c-format
 msgid "3907 Error scanning unmount command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:916
+#: src/stored/dircmd.c:937
 msgid "3916 Error scanning action_on_purge command\n"
 msgstr ""
 
-#: src/stored/dircmd.c:959
+#: src/stored/dircmd.c:980
 #, c-format
 msgid "3921 Device \"%s\" already released.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:966
+#: src/stored/dircmd.c:987
 #, c-format
 msgid "3922 Device \"%s\" waiting for sysop.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:972
+#: src/stored/dircmd.c:993
 #, c-format
 msgid "3922 Device \"%s\" waiting for mount.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:976
+#: src/stored/dircmd.c:997
 #, c-format
 msgid "3923 Device \"%s\" is busy in acquire.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:980
+#: src/stored/dircmd.c:1001
 #, c-format
 msgid "3914 Device \"%s\" is being labeled.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:988
+#: src/stored/dircmd.c:1009
 #, c-format
 msgid "3022 Device \"%s\" released.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:999
+#: src/stored/dircmd.c:1020
 #, c-format
 msgid "3927 Error scanning release command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1028 src/filed/job.c:1531
+#: src/stored/dircmd.c:1049 src/filed/job.c:1535
 #, c-format
 msgid "Could not create bootstrap file %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1041
+#: src/stored/dircmd.c:1062
 msgid "Error parsing bootstrap file.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1103
+#: src/stored/dircmd.c:1124
 #, c-format
-msgid "3995 Device \"%s\" is not an autochanger.\n"
+msgid "3998 Device \"%s\" is not an autochanger.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1120
+#: src/stored/dircmd.c:1141
 #, c-format
 msgid "3908 Error scanning autochanger drives/list/slots command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1163
+#: src/stored/dircmd.c:1183
 #, c-format
 msgid "3909 Error scanning readlabel command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1191
+#: src/stored/dircmd.c:1211
 #, c-format
 msgid "3001 Volume=%s Slot=%d\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1223
+#: src/stored/dircmd.c:1243
 #, c-format
 msgid "3931 Device \"%s\" is BLOCKED. user unmounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1227
+#: src/stored/dircmd.c:1247
 #, c-format
 msgid ""
 "3932 Device \"%s\" is BLOCKED. user unmounted during wait for media/mount.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1231
+#: src/stored/dircmd.c:1251
 #, c-format
 msgid "3933 Device \"%s\" is BLOCKED waiting for media.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1235
+#: src/stored/dircmd.c:1255
 #, c-format
 msgid "3934 Device \"%s\" is being initialized.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1239
+#: src/stored/dircmd.c:1259
 #, c-format
 msgid "3935 Device \"%s\" is blocked labeling a Volume.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1243
+#: src/stored/dircmd.c:1263
 #, c-format
 msgid "3935 Device \"%s\" is blocked for unknown reason.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1248
+#: src/stored/dircmd.c:1268
 #, c-format
 msgid "3936 Device \"%s\" is busy reading.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1251
+#: src/stored/dircmd.c:1271
 #, c-format
 msgid "3937 Device \"%s\" is busy with writers=%d reserved=%d.\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:123 src/stored/parse_bsr.c:127
+#: src/stored/parse_bsr.c:122 src/stored/parse_bsr.c:126
 #, c-format
 msgid ""
 "Bootstrap file error: %s\n"
@@ -6870,154 +6925,154 @@ msgid ""
 "%s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:149
+#: src/stored/parse_bsr.c:148
 #, c-format
 msgid "Cannot open bootstrap file %s: %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:280
+#: src/stored/parse_bsr.c:279
 #, c-format
 msgid "MediaType %s in bsr at inappropriate place.\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:312
+#: src/stored/parse_bsr.c:311
 #, c-format
 msgid "Device \"%s\" in bsr at inappropriate place.\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:485
+#: src/stored/parse_bsr.c:484
 #, c-format
 msgid "REGEX '%s' compile error. ERR=%s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:495
+#: src/stored/parse_bsr.c:494
 msgid "JobType not yet implemented\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:503
+#: src/stored/parse_bsr.c:502
 msgid "JobLevel not yet implemented\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:720
+#: src/stored/parse_bsr.c:719
 #, c-format
 msgid "Slot %d in bsr at inappropriate place.\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:744
+#: src/stored/parse_bsr.c:743
 #, c-format
 msgid "VolFile     : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:752
+#: src/stored/parse_bsr.c:751
 #, c-format
 msgid "VolBlock    : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:760
+#: src/stored/parse_bsr.c:759
 #, c-format
 msgid "VolAddr    : %llu-%llu\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:769
+#: src/stored/parse_bsr.c:768
 #, c-format
 msgid "FileIndex   : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:771
+#: src/stored/parse_bsr.c:770
 #, c-format
 msgid "FileIndex   : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:781
+#: src/stored/parse_bsr.c:780
 #, c-format
 msgid "JobId       : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:783
+#: src/stored/parse_bsr.c:782
 #, c-format
 msgid "JobId       : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:793
+#: src/stored/parse_bsr.c:792
 #, c-format
 msgid "SessId      : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:795
+#: src/stored/parse_bsr.c:794
 #, c-format
 msgid "SessId      : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:804
+#: src/stored/parse_bsr.c:803
 #, c-format
 msgid "VolumeName  : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:805
+#: src/stored/parse_bsr.c:804
 #, c-format
 msgid "  MediaType : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:806
+#: src/stored/parse_bsr.c:805
 #, c-format
 msgid "  Device    : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:807
+#: src/stored/parse_bsr.c:806
 #, c-format
 msgid "  Slot      : %d\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:816
+#: src/stored/parse_bsr.c:815
 #, c-format
 msgid "Client      : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:824
+#: src/stored/parse_bsr.c:823
 #, c-format
 msgid "Job          : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:832
+#: src/stored/parse_bsr.c:831
 #, c-format
 msgid "SessTime    : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:843
+#: src/stored/parse_bsr.c:842
 msgid "BSR is NULL\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:847
+#: src/stored/parse_bsr.c:846
 #, c-format
 msgid "Next        : 0x%x\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:848
+#: src/stored/parse_bsr.c:847
 #, c-format
 msgid "Root bsr    : 0x%x\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:860
+#: src/stored/parse_bsr.c:859
 #, c-format
 msgid "count       : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:861
+#: src/stored/parse_bsr.c:860
 #, c-format
 msgid "found       : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:864
+#: src/stored/parse_bsr.c:863
 #, c-format
 msgid "done        : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:865
+#: src/stored/parse_bsr.c:864
 #, c-format
 msgid "positioning : %d\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:866
+#: src/stored/parse_bsr.c:865
 #, c-format
 msgid "fast_reject : %d\n"
 msgstr ""
@@ -7101,76 +7156,69 @@ msgstr ""
 msgid "Unable to set network buffer size.\n"
 msgstr ""
 
-#: src/stored/append.c:96 src/stored/append.c:105 src/stored/append.c:117
-#: src/stored/append.c:297 src/stored/append.c:298 src/stored/askdir.c:339
-#: src/stored/askdir.c:340
+#: src/stored/append.c:95 src/stored/append.c:104 src/stored/append.c:116
+#: src/stored/askdir.c:340 src/stored/askdir.c:341
 msgid "NULL Volume name. This shouldn't happen!!!\n"
 msgstr ""
 
-#: src/stored/append.c:111 src/stored/btape.c:2233
+#: src/stored/append.c:110 src/stored/btape.c:2235
 #, c-format
 msgid "Write session label failed. ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:123
+#: src/stored/append.c:122
 #, c-format
 msgid "Network send error to FD. ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:160
+#: src/stored/append.c:159
 #, c-format
 msgid "Error reading data header from FD. ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:168
+#: src/stored/append.c:167
 #, c-format
 msgid "Malformed data header from FD: %s\n"
 msgstr ""
 
-#: src/stored/append.c:188
+#: src/stored/append.c:187
 #, c-format
 msgid "FI=%d from FD not positive or sequential=%d\n"
 msgstr ""
 
-#: src/stored/append.c:244
+#: src/stored/append.c:235
 #, c-format
 msgid "Network error reading from FD. ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:274
-#, c-format
-msgid ""
-"Job write elapsed time = %02d:%02d:%02d, Transfer rate = %s Bytes/second\n"
-msgstr ""
-
-#: src/stored/append.c:289 src/stored/btape.c:2352
+#: src/stored/append.c:265 src/stored/btape.c:2354
 #, c-format
 msgid "Error writing end session label. ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:305 src/stored/mac.c:126 src/stored/mac.c:247
+#: src/stored/append.c:277 src/stored/mac.c:126 src/stored/mac.c:261
 #: src/stored/spool.c:300
 #, c-format
 msgid "Fatal append error on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:307 src/stored/mac.c:128
+#: src/stored/append.c:279 src/stored/mac.c:128
 msgid "Set ok=FALSE after write_block_to_device.\n"
 msgstr ""
 
-#: src/stored/append.c:360
+#: src/stored/append.c:308 src/stored/mac.c:151
 #, c-format
-msgid "Error updating file attributes. ERR=%s\n"
+msgid "Elapsed time=%02d:%02d:%02d, Transfer rate=%s Bytes/second\n"
 msgstr ""
 
-#: src/stored/vol_mgr.c:93
+#: src/stored/append.c:345
 #, c-format
-msgid "Unable to initialize volume list lock. ERR=%s\n"
+msgid "Error updating file attributes. ERR=%s\n"
 msgstr ""
 
-#: src/stored/vol_mgr.c:491
+#: src/stored/vol_mgr.c:93
 #, c-format
-msgid "Device switch. New device %s chosen.\n"
+msgid "Unable to initialize volume list lock. ERR=%s\n"
 msgstr ""
 
 #: src/stored/label.c:93
@@ -7218,67 +7266,67 @@ msgstr ""
 msgid "Volume on %s has bad Bacula label type: %x\n"
 msgstr ""
 
-#: src/stored/label.c:236 src/stored/label.c:399 src/stored/mount.c:460
+#: src/stored/label.c:236 src/stored/label.c:397 src/stored/mount.c:463
 #, c-format
 msgid "Could not reserve volume %s on %s\n"
 msgstr ""
 
-#: src/stored/label.c:276
+#: src/stored/label.c:277
 #, c-format
 msgid "Cannot write Volume label to block for device %s\n"
 msgstr ""
 
-#: src/stored/label.c:328 src/stored/label.c:429 src/stored/mount.c:216
+#: src/stored/label.c:328 src/stored/label.c:426 src/stored/mount.c:218
 #, c-format
 msgid "Open device %s Volume \"%s\" failed: ERR=%s\n"
 msgstr ""
 
-#: src/stored/label.c:454
+#: src/stored/label.c:451
 #, c-format
 msgid "Rewind error on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/label.c:462
+#: src/stored/label.c:458
 #, c-format
 msgid "Truncate error on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/label.c:468
+#: src/stored/label.c:464
 #, c-format
 msgid "Failed to re-open DVD after truncate on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/label.c:491
+#: src/stored/label.c:487
 #, c-format
 msgid "Unable to write device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/label.c:522
+#: src/stored/label.c:518
 #, c-format
 msgid "Recycled volume \"%s\" on device %s, all previous data lost.\n"
 msgstr ""
 
-#: src/stored/label.c:525
+#: src/stored/label.c:521
 #, c-format
 msgid "Wrote label to prelabeled Volume \"%s\" on device %s\n"
 msgstr ""
 
-#: src/stored/label.c:726
+#: src/stored/label.c:721
 #, c-format
 msgid "Bad Volume session label = %d\n"
 msgstr ""
 
-#: src/stored/label.c:781
+#: src/stored/label.c:776
 #, c-format
 msgid "Expecting Volume Label, got FI=%s Stream=%s len=%d\n"
 msgstr ""
 
-#: src/stored/label.c:908
+#: src/stored/label.c:903
 #, c-format
 msgid "Unknown %d"
 msgstr ""
 
-#: src/stored/label.c:912
+#: src/stored/label.c:907
 #, c-format
 msgid ""
 "\n"
@@ -7295,17 +7343,17 @@ msgid ""
 "HostName          : %s\n"
 msgstr ""
 
-#: src/stored/label.c:934
+#: src/stored/label.c:929
 #, c-format
 msgid "Date label written: %s\n"
 msgstr ""
 
-#: src/stored/label.c:940
+#: src/stored/label.c:935
 #, c-format
 msgid "Date label written: %04d-%02d-%02d at %02d:%02d\n"
 msgstr ""
 
-#: src/stored/label.c:960
+#: src/stored/label.c:955
 #, c-format
 msgid ""
 "\n"
@@ -7318,7 +7366,7 @@ msgid ""
 "ClientName        : %s\n"
 msgstr ""
 
-#: src/stored/label.c:973
+#: src/stored/label.c:968
 #, c-format
 msgid ""
 "Job (unique name) : %s\n"
@@ -7327,7 +7375,7 @@ msgid ""
 "JobLevel          : %c\n"
 msgstr ""
 
-#: src/stored/label.c:982
+#: src/stored/label.c:977
 #, c-format
 msgid ""
 "JobFiles          : %s\n"
@@ -7340,52 +7388,52 @@ msgid ""
 "JobStatus         : %c\n"
 msgstr ""
 
-#: src/stored/label.c:1003
+#: src/stored/label.c:998
 #, c-format
 msgid "Date written      : %s\n"
 msgstr ""
 
-#: src/stored/label.c:1008
+#: src/stored/label.c:1003
 #, c-format
 msgid "Date written      : %04d-%02d-%02d at %02d:%02d\n"
 msgstr ""
 
-#: src/stored/label.c:1027
+#: src/stored/label.c:1022
 msgid "Fresh Volume"
 msgstr ""
 
-#: src/stored/label.c:1030
+#: src/stored/label.c:1025
 msgid "Volume"
 msgstr ""
 
-#: src/stored/label.c:1039 src/stored/read_record.c:428
+#: src/stored/label.c:1034 src/stored/read_record.c:428
 msgid "End of Media"
 msgstr ""
 
-#: src/stored/label.c:1042
+#: src/stored/label.c:1037
 msgid "End of Tape"
 msgstr ""
 
-#: src/stored/label.c:1062 src/stored/label.c:1070 src/stored/label.c:1103
+#: src/stored/label.c:1057 src/stored/label.c:1065 src/stored/label.c:1098
 #, c-format
 msgid "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d DataLen=%d\n"
 msgstr ""
 
-#: src/stored/label.c:1067
+#: src/stored/label.c:1062
 msgid "End of physical tape.\n"
 msgstr ""
 
-#: src/stored/label.c:1082 src/stored/label.c:1091
+#: src/stored/label.c:1077 src/stored/label.c:1086
 #, c-format
 msgid "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d\n"
 msgstr ""
 
-#: src/stored/label.c:1084
+#: src/stored/label.c:1079
 #, c-format
 msgid "   Job=%s Date=%s Level=%c Type=%c\n"
 msgstr ""
 
-#: src/stored/label.c:1093
+#: src/stored/label.c:1088
 #, c-format
 msgid "   Date=%s Level=%c Type=%c Files=%s Bytes=%s Errors=%d Status=%c\n"
 msgstr ""
@@ -7394,82 +7442,101 @@ msgstr ""
 msgid "Used Volume status:\n"
 msgstr ""
 
-#: src/stored/status.c:107 src/stored/status.c:109
+#: src/stored/status.c:117
 msgid ""
-"====\n"
 "\n"
+"SD Resources:\n"
 msgstr ""
 
-#: src/stored/status.c:128
+#: src/stored/status.c:153
 msgid ""
 "\n"
 "Device status:\n"
 msgstr ""
 
-#: src/stored/status.c:132
+#: src/stored/status.c:157
 #, c-format
 msgid "Autochanger \"%s\" with devices:\n"
 msgstr ""
 
-#: src/stored/status.c:150
+#: src/stored/status.c:177
 #, c-format
 msgid ""
-"Device %s is mounted with:\n"
+"\n"
+"Device %s is %s:\n"
 "    Volume:      %s\n"
 "    Pool:        %s\n"
 "    Media type:  %s\n"
 msgstr ""
 
-#: src/stored/status.c:160
+#: src/stored/status.c:182
+msgid "waiting for"
+msgstr ""
+
+#: src/stored/status.c:182
+msgid "mounted with"
+msgstr ""
+
+#: src/stored/status.c:184
+msgid "*unknown*"
+msgstr ""
+
+#: src/stored/status.c:188
 #, c-format
-msgid "Device %s open but no Bacula volume is currently mounted.\n"
+msgid ""
+"\n"
+"Device %s open but no Bacula volume is currently mounted.\n"
 msgstr ""
 
-#: src/stored/status.c:171
+#: src/stored/status.c:199
 #, c-format
 msgid "    Total Bytes=%s Blocks=%s Bytes/block=%s\n"
 msgstr ""
 
-#: src/stored/status.c:186
+#: src/stored/status.c:214
 #, c-format
 msgid "    Total Bytes Read=%s Blocks Read=%s Bytes/block=%s\n"
 msgstr ""
 
-#: src/stored/status.c:192
+#: src/stored/status.c:220
 #, c-format
 msgid "    Positioned at File=%s Block=%s\n"
 msgstr ""
 
-#: src/stored/status.c:199
+#: src/stored/status.c:227
 #, c-format
-msgid "Device %s is not open.\n"
+msgid ""
+"\n"
+"Device %s is not open.\n"
 msgstr ""
 
-#: src/stored/status.c:203
+#: src/stored/status.c:231
 #, c-format
-msgid "Device \"%s\" is not open or does not exist.\n"
+msgid ""
+"\n"
+"Device \"%s\" is not open or does not exist.\n"
 msgstr ""
 
-#: src/stored/status.c:225
+#: src/stored/status.c:255
 #, c-format
 msgid "Daemon started %s. Jobs: run=%d, running=%d.\n"
 msgstr ""
 
-#: src/stored/status.c:248
+#: src/stored/status.c:293
 msgid ""
 "No DEVICE structure.\n"
 "\n"
 msgstr ""
 
-#: src/stored/status.c:254
+#: src/stored/status.c:299
 msgid "    Device is BLOCKED. User unmounted.\n"
 msgstr ""
 
-#: src/stored/status.c:258
+#: src/stored/status.c:303
 msgid "    Device is BLOCKED. User unmounted during wait for media/mount.\n"
 msgstr ""
 
-#: src/stored/status.c:270
+#: src/stored/status.c:313
 #, c-format
 msgid ""
 "    Device is BLOCKED waiting for mount of volume \"%s\",\n"
@@ -7477,7 +7544,7 @@ msgid ""
 "       Media type:  %s\n"
 msgstr ""
 
-#: src/stored/status.c:279
+#: src/stored/status.c:322
 #, c-format
 msgid ""
 "    Device is BLOCKED waiting to create a volume for:\n"
@@ -7485,172 +7552,165 @@ msgid ""
 "       Media type:  %s\n"
 msgstr ""
 
-#: src/stored/status.c:291
+#: src/stored/status.c:333
 msgid "    Device is BLOCKED waiting for media.\n"
 msgstr ""
 
-#: src/stored/status.c:297
+#: src/stored/status.c:339
 msgid "    Device is being initialized.\n"
 msgstr ""
 
-#: src/stored/status.c:301
+#: src/stored/status.c:343
 msgid "    Device is blocked labeling a Volume.\n"
 msgstr ""
 
-#: src/stored/status.c:310
+#: src/stored/status.c:352
 #, c-format
-msgid "    Slot %d is loaded in drive %d.\n"
+msgid "    Slot %d %s loaded in drive %d.\n"
 msgstr ""
 
-#: src/stored/status.c:314
+#: src/stored/status.c:356
 #, c-format
 msgid "    Drive %d is not loaded.\n"
 msgstr ""
 
-#: src/stored/status.c:317
-#, c-format
-msgid "    Drive %d status unknown.\n"
-msgstr ""
-
-#: src/stored/status.c:331 src/stored/btape.c:688
+#: src/stored/status.c:371 src/stored/btape.c:688
 #, c-format
 msgid "Configured device capabilities:\n"
 msgstr ""
 
-#: src/stored/status.c:349
+#: src/stored/status.c:389
 msgid "Device state:\n"
 msgstr ""
 
-#: src/stored/status.c:367
+#: src/stored/status.c:405
 #, c-format
-msgid ""
-"num_writers=%d reserved=%d block=%d\n"
-"\n"
+msgid "  num_writers=%d reserves=%d block=%d\n"
+msgstr ""
+
+#: src/stored/status.c:409
+msgid "Attached Jobs: "
 msgstr ""
 
-#: src/stored/status.c:371 src/stored/btape.c:720
+#: src/stored/status.c:427 src/stored/btape.c:720
 #, c-format
 msgid "Device parameters:\n"
 msgstr ""
 
-#: src/stored/status.c:374
+#: src/stored/status.c:429
 #, c-format
-msgid "Archive name: %s Device name: %s\n"
+msgid "  Archive name: %s Device name: %s\n"
 msgstr ""
 
-#: src/stored/status.c:378
+#: src/stored/status.c:432
 #, c-format
-msgid "File=%u block=%u\n"
+msgid "  File=%u block=%u\n"
 msgstr ""
 
-#: src/stored/status.c:381
+#: src/stored/status.c:434
 #, c-format
-msgid "Min block=%u Max block=%u\n"
+msgid "  Min block=%u Max block=%u\n"
 msgstr ""
 
-#: src/stored/status.c:401
+#: src/stored/status.c:455
 #, c-format
 msgid "%s Job %s waiting for Client connection.\n"
 msgstr ""
 
-#: src/stored/status.c:417
+#: src/stored/status.c:471
 #, c-format
 msgid ""
 "Reading: %s %s job %s JobId=%d Volume=\"%s\"\n"
 "    pool=\"%s\" device=%s\n"
 msgstr ""
 
-#: src/stored/status.c:430
+#: src/stored/status.c:484
 #, c-format
 msgid ""
 "Writing: %s %s job %s JobId=%d Volume=\"%s\"\n"
 "    pool=\"%s\" device=%s\n"
 msgstr ""
 
-#: src/stored/status.c:441
+#: src/stored/status.c:495
 #, c-format
 msgid "    spooling=%d despooling=%d despool_wait=%d\n"
 msgstr ""
 
-#: src/stored/status.c:450
+#: src/stored/status.c:511
 #, c-format
-msgid "    Files=%s Bytes=%s Bytes/sec=%s\n"
+msgid "    Files=%s Bytes=%s AveBytes/sec=%s LastBytes/sec=%s\n"
 msgstr ""
 
-#: src/stored/status.c:458
+#: src/stored/status.c:523
 #, c-format
 msgid "    FDReadSeqNo=%s in_msg=%u out_msg=%d fd=%d\n"
 msgstr ""
 
-#: src/stored/status.c:464
+#: src/stored/status.c:529
 msgid "    FDSocket closed\n"
 msgstr ""
 
-#: src/stored/status.c:485
+#: src/stored/status.c:550
 msgid ""
 "\n"
 "Jobs waiting to reserve a drive:\n"
 msgstr ""
 
-#: src/stored/status.c:516
+#: src/stored/status.c:581
 msgid "===================================================================\n"
 msgstr ""
 
-#: src/stored/status.c:598 src/lib/util.c:423 src/filed/status.c:517
+#: src/stored/status.c:663 src/lib/util.c:423 src/filed/status.c:517
 msgid "Base"
 msgstr ""
 
-#: src/stored/status.c:615 src/filed/status.c:534
+#: src/stored/status.c:680 src/filed/status.c:534
 msgid "Init Catalog"
 msgstr ""
 
-#: src/stored/status.c:618 src/filed/status.c:537
+#: src/stored/status.c:683 src/filed/status.c:537
 msgid "Volume to Catalog"
 msgstr ""
 
-#: src/stored/status.c:621 src/filed/status.c:540
+#: src/stored/status.c:686 src/filed/status.c:540
 msgid "Disk to Catalog"
 msgstr ""
 
-#: src/stored/status.c:624 src/filed/status.c:543
+#: src/stored/status.c:689 src/filed/status.c:543
 msgid "Data"
 msgstr ""
 
-#: src/stored/status.c:630 src/lib/util.c:459 src/filed/status.c:549
+#: src/stored/status.c:695 src/lib/util.c:459 src/filed/status.c:549
 msgid "Unknown Job Level"
 msgstr ""
 
-#: src/stored/status.c:698 src/stored/status.c:744 src/filed/status.c:463
-#: src/filed/status.c:496
+#: src/stored/status.c:763
 #, c-format
-msgid "Bad .status command: %s\n"
-msgstr ""
-
-#: src/stored/status.c:699
-msgid "3900 Bad .status command, missing argument.\n"
+msgid "3900 No arg in .status command: %s\n"
 msgstr ""
 
-#: src/stored/status.c:745
-msgid "3900 Bad .status command, wrong argument.\n"
+#: src/stored/status.c:811
+#, c-format
+msgid "3900 Unknown arg in .status command: %s\n"
 msgstr ""
 
-#: src/stored/status.c:760
+#: src/stored/status.c:826
 msgid "Bacula Storage: Idle"
 msgstr ""
 
-#: src/stored/status.c:771
+#: src/stored/status.c:837
 msgid "Bacula Storage: Running"
 msgstr ""
 
-#: src/stored/status.c:785
+#: src/stored/status.c:851
 msgid "Bacula Storage: Last Job Canceled"
 msgstr ""
 
-#: src/stored/status.c:789
+#: src/stored/status.c:855
 msgid "Bacula Storage: Last Job Failed"
 msgstr ""
 
-#: src/stored/status.c:793
+#: src/stored/status.c:859
 msgid "Bacula Storage: Last Job had Warnings"
 msgstr ""
 
@@ -7719,7 +7779,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/bextract.c:196 src/stored/bcopy.c:163 src/stored/bscan.c:248
+#: src/stored/bextract.c:196 src/stored/bcopy.c:161 src/stored/bscan.c:248
 #: src/tools/bvfs_test.c:201 src/tools/bbatch.c:190 src/tools/ing_test.c:185
 #: src/tools/cats_test.c:321
 msgid "Wrong number of arguments: \n"
@@ -7751,7 +7811,7 @@ msgid "%u files restored.\n"
 msgstr ""
 
 #: src/stored/bextract.c:284 src/stored/bextract.c:290
-#: src/filed/restore.c:1474
+#: src/filed/restore.c:1480
 #, c-format
 msgid "Write error on %s: %s\n"
 msgstr ""
@@ -7760,7 +7820,7 @@ msgstr ""
 msgid "Logic error output file should be open but is not.\n"
 msgstr ""
 
-#: src/stored/bextract.c:335 src/filed/restore.c:566
+#: src/stored/bextract.c:335 src/filed/restore.c:569
 #, c-format
 msgid "%s stream not supported on this Client.\n"
 msgstr ""
@@ -7776,7 +7836,7 @@ msgid "Seek error on %s: %s\n"
 msgstr ""
 
 #: src/stored/bextract.c:429 src/stored/bextract.c:494
-#: src/filed/restore.c:1329
+#: src/filed/restore.c:1335
 #, c-format
 msgid "Seek to %s error on %s: ERR=%s\n"
 msgstr ""
@@ -7786,16 +7846,16 @@ msgstr ""
 msgid "Uncompression error. ERR=%d\n"
 msgstr ""
 
-#: src/stored/bextract.c:462 src/filed/restore.c:1444
+#: src/stored/bextract.c:462 src/filed/restore.c:1450
 msgid "GZIP data stream found, but GZIP not configured!\n"
 msgstr ""
 
-#: src/stored/bextract.c:517 src/filed/restore.c:1370
+#: src/stored/bextract.c:517 src/filed/restore.c:1376
 #, c-format
 msgid "Compressed header version error. version=0x%x\n"
 msgstr ""
 
-#: src/stored/bextract.c:522 src/filed/restore.c:1375
+#: src/stored/bextract.c:522 src/filed/restore.c:1381
 #, c-format
 msgid "Compressed header size error. comp_len=%d, msglen=%d\n"
 msgstr ""
@@ -7805,7 +7865,7 @@ msgstr ""
 msgid "LZO uncompression error. ERR=%d\n"
 msgstr ""
 
-#: src/stored/bextract.c:556 src/filed/restore.c:1408
+#: src/stored/bextract.c:556 src/filed/restore.c:1414
 #, c-format
 msgid "Compression algorithm 0x%x found, but not supported!\n"
 msgstr ""
@@ -7814,12 +7874,12 @@ msgstr ""
 msgid "Got Program Name or Data Stream. Ignored.\n"
 msgstr ""
 
-#: src/stored/bextract.c:592 src/filed/restore.c:325 src/filed/restore.c:1027
+#: src/stored/bextract.c:592 src/filed/restore.c:328 src/filed/restore.c:1033
 #, c-format
 msgid "Unknown stream=%d ignored. This shouldn't happen!\n"
 msgstr ""
 
-#: src/stored/bcopy.c:76
+#: src/stored/bcopy.c:74
 #, c-format
 msgid ""
 "\n"
@@ -7839,48 +7899,48 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/bcopy.c:204 src/stored/device.c:298 src/stored/btape.c:473
+#: src/stored/bcopy.c:202 src/stored/device.c:298 src/stored/btape.c:473
 #, c-format
 msgid "dev open failed: %s\n"
 msgstr ""
 
-#: src/stored/bcopy.c:219
+#: src/stored/bcopy.c:217
 msgid "Write of last block failed.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:223
+#: src/stored/bcopy.c:221
 #, c-format
 msgid "%u Jobs copied. %u records copied.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:240 src/stored/bscan.c:428
+#: src/stored/bcopy.c:238 src/stored/bscan.c:428
 #, c-format
 msgid "Record: SessId=%u SessTim=%u FileIndex=%d Stream=%d len=%u\n"
 msgstr ""
 
-#: src/stored/bcopy.c:256
+#: src/stored/bcopy.c:254
 msgid "Volume is prelabeled. This volume cannot be copied.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:259
+#: src/stored/bcopy.c:257
 msgid "Volume label not copied.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:265
+#: src/stored/bcopy.c:263
 msgid "Copy skipped. Record does not match BSR filter.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:282 src/stored/bcopy.c:290 src/stored/bcopy.c:318
-#: src/stored/btape.c:2754
+#: src/stored/bcopy.c:280 src/stored/bcopy.c:288 src/stored/bcopy.c:316
+#: src/stored/btape.c:2756
 #, c-format
 msgid "Cannot fixup device error. %s\n"
 msgstr ""
 
-#: src/stored/bcopy.c:296
+#: src/stored/bcopy.c:294
 msgid "EOM label not copied.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:299
+#: src/stored/bcopy.c:297
 msgid "EOT label not copied.\n"
 msgstr ""
 
@@ -7918,19 +7978,14 @@ msgstr ""
 msgid "Next Volume part already exists on DVD. Cannot continue: %s\n"
 msgstr ""
 
-#: src/stored/dvd.c:377
-#, c-format
-msgid "open_next_part can't unlink existing part %s, ERR=%s\n"
-msgstr ""
-
-#: src/stored/dvd.c:583
+#: src/stored/dvd.c:563
 #, c-format
 msgid ""
 "Error writing. Current part less than total number of parts (%d/%d, device="
 "%s)\n"
 msgstr ""
 
-#: src/stored/dvd.c:590
+#: src/stored/dvd.c:570
 #, c-format
 msgid "Unable to write last on %s: ERR=%s\n"
 msgstr ""
@@ -8009,125 +8064,125 @@ msgstr ""
 msgid "Unexpected Tape is Off-line\n"
 msgstr ""
 
-#: src/stored/acquire.c:70
+#: src/stored/acquire.c:74
 #, c-format
 msgid "Acquire read: num_writers=%d not zero. Job %d canceled.\n"
 msgstr ""
 
-#: src/stored/acquire.c:79
+#: src/stored/acquire.c:83
 #, c-format
 msgid "No volumes specified for reading. Job %s canceled.\n"
 msgstr ""
 
-#: src/stored/acquire.c:88
+#: src/stored/acquire.c:92
 #, c-format
 msgid "Logic error: no next volume to read. Numvol=%d Curvol=%d\n"
 msgstr ""
 
-#: src/stored/acquire.c:95 src/stored/acquire.c:163 src/stored/acquire.c:431
-msgid "generate_plugin_event(bsdEventDeviceOpen) Failed\n"
-msgstr ""
-
-#: src/stored/acquire.c:119
+#: src/stored/acquire.c:118
 #, c-format
 msgid ""
 "Changing read device. Want Media Type=\"%s\" have=\"%s\"\n"
 "  device=%s\n"
 msgstr ""
 
-#: src/stored/acquire.c:159
+#: src/stored/acquire.c:162
 #, c-format
 msgid "Media Type change.  New read device %s chosen.\n"
 msgstr ""
 
-#: src/stored/acquire.c:175
+#: src/stored/acquire.c:174
 #, c-format
 msgid "No suitable device found to read Volume \"%s\"\n"
 msgstr ""
 
-#: src/stored/acquire.c:214
+#: src/stored/acquire.c:213
 #, c-format
 msgid "Job %s canceled.\n"
 msgstr ""
 
-#: src/stored/acquire.c:232
+#: src/stored/acquire.c:231
 #, c-format
 msgid "Read open device %s Volume \"%s\" failed: ERR=%s\n"
 msgstr ""
 
-#: src/stored/acquire.c:322
+#: src/stored/acquire.c:321
 #, c-format
 msgid "Too many errors trying to mount device %s for reading.\n"
 msgstr ""
 
-#: src/stored/acquire.c:330
+#: src/stored/acquire.c:329
 #, c-format
 msgid "Ready to read from volume \"%s\" on device %s.\n"
 msgstr ""
 
-#: src/stored/acquire.c:383
+#: src/stored/acquire.c:381
 #, c-format
 msgid "Want to append, but device %s is busy reading.\n"
 msgstr ""
 
-#: src/stored/acquire.c:416
+#: src/stored/acquire.c:414
 #, c-format
 msgid "Could not ready device %s for append.\n"
 msgstr ""
 
-#: src/stored/acquire.c:508 src/stored/spool.c:321 src/stored/block.c:368
-#: src/stored/block.c:738 src/stored/block.c:812
+#: src/stored/acquire.c:501 src/stored/spool.c:321 src/stored/block.c:386
+#: src/stored/block.c:769 src/stored/block.c:847
 #, c-format
 msgid "Could not create JobMedia record for Volume=\"%s\" Job=%s\n"
 msgstr ""
 
-#: src/stored/acquire.c:559
+#: src/stored/acquire.c:552
 #, c-format
 msgid "Alert: %s"
 msgstr ""
 
-#: src/stored/acquire.c:567
+#: src/stored/acquire.c:560
 #, c-format
 msgid "3997 Bad alert command: %s: ERR=%s.\n"
 msgstr ""
 
-#: src/stored/acquire.c:637 src/stored/dev.c:263 src/stored/dev.c:281
-#: src/stored/dev.c:287 src/stored/dev.c:298 src/lib/openssl.c:122
-#: src/lib/openssl.c:181
+#: src/stored/acquire.c:629 src/stored/dev.c:270 src/stored/dev.c:311
+#: src/lib/openssl.c:122 src/lib/openssl.c:181
 #, c-format
 msgid "Unable to init mutex: ERR=%s\n"
 msgstr ""
 
-#: src/stored/askdir.c:178
+#: src/stored/acquire.c:635
+#, c-format
+msgid "Unable to init r_mutex: ERR=%s\n"
+msgstr ""
+
+#: src/stored/askdir.c:179
 msgid "Network error on bnet_recv in req_vol_info.\n"
 msgstr ""
 
-#: src/stored/askdir.c:196
+#: src/stored/askdir.c:197
 #, c-format
 msgid "Error getting Volume info: %s"
 msgstr ""
 
-#: src/stored/askdir.c:374
+#: src/stored/askdir.c:376
 #, c-format
 msgid "Didn't get vol info vol=%s: ERR=%s"
 msgstr ""
 
-#: src/stored/askdir.c:429
+#: src/stored/askdir.c:432
 #, c-format
 msgid "Error creating JobMedia record: ERR=%s\n"
 msgstr ""
 
-#: src/stored/askdir.c:436
+#: src/stored/askdir.c:439
 #, c-format
 msgid "Error creating JobMedia record: %s\n"
 msgstr ""
 
-#: src/stored/askdir.c:519
+#: src/stored/askdir.c:522
 #, c-format
 msgid "Job %s canceled while waiting for mount on Storage Device \"%s\".\n"
 msgstr ""
 
-#: src/stored/askdir.c:530
+#: src/stored/askdir.c:533
 #, c-format
 msgid ""
 "Job %s is waiting. Cannot find any appendable volumes.\n"
@@ -8137,38 +8192,38 @@ msgid ""
 "    Media type:   %s\n"
 msgstr ""
 
-#: src/stored/askdir.c:556 src/stored/askdir.c:658
+#: src/stored/askdir.c:558 src/stored/askdir.c:658
 #, c-format
 msgid "Max time exceeded waiting to mount Storage Device %s for Job %s\n"
 msgstr ""
 
-#: src/stored/askdir.c:566
+#: src/stored/askdir.c:568
 msgid "pthread error in mount_next_volume.\n"
 msgstr ""
 
-#: src/stored/askdir.c:600
+#: src/stored/askdir.c:601
 msgid "Cannot request another volume: no volume name given.\n"
 msgstr ""
 
-#: src/stored/askdir.c:606
+#: src/stored/askdir.c:607
 #, c-format
 msgid "Job %s canceled while waiting for mount on Storage Device %s.\n"
 msgstr ""
 
-#: src/stored/askdir.c:623
+#: src/stored/askdir.c:624
 #, c-format
 msgid ""
-"Please mount Volume \"%s\" or label a new one for:\n"
+"Please mount append Volume \"%s\" or label a new one for:\n"
 "    Job:          %s\n"
 "    Storage:      %s\n"
 "    Pool:         %s\n"
 "    Media type:   %s\n"
 msgstr ""
 
-#: src/stored/askdir.c:629
+#: src/stored/askdir.c:630
 #, c-format
 msgid ""
-"Please mount Volume \"%s\" for:\n"
+"Please mount read Volume \"%s\" for:\n"
 "    Job:          %s\n"
 "    Storage:      %s\n"
 "    Pool:         %s\n"
@@ -8184,11 +8239,11 @@ msgstr ""
 msgid "unknown: %d"
 msgstr ""
 
-#: src/stored/record.c:424
+#: src/stored/record.c:392
 msgid "Damaged buffer\n"
 msgstr ""
 
-#: src/stored/record.c:600
+#: src/stored/record.c:670
 #, c-format
 msgid "Sanity check failed. maxlen=%d datalen=%d. Block discarded.\n"
 msgstr ""
@@ -8222,117 +8277,111 @@ msgstr ""
 msgid "No Changer Command given for device %s. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:84
-#, c-format
-msgid ""
-"Media Type not the same for all devices in changer %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:154
+#: src/stored/autochanger.c:139
 #, c-format
 msgid "No slot defined in catalog (slot=%d) for Volume \"%s\" on %s.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:156
+#: src/stored/autochanger.c:141
 msgid "Cartridge change or \"update slots\" may be required.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:162
+#: src/stored/autochanger.c:147
 #, c-format
 msgid "No \"Changer Device\" for %s. Manual load of Volume may be required.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:169
+#: src/stored/autochanger.c:154
 #, c-format
 msgid "No \"Changer Command\" for %s. Manual load of Volume may be requird.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:200
+#: src/stored/autochanger.c:185
 #, c-format
 msgid "3304 Issuing autochanger \"load slot %d, drive %d\" command.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:208
+#: src/stored/autochanger.c:193
 #, c-format
 msgid "3305 Autochanger \"load slot %d, drive %d\", status is OK.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:217
+#: src/stored/autochanger.c:206
 #, c-format
 msgid ""
 "3992 Bad autochanger \"load slot %d, drive %d\": ERR=%s.\n"
 "Results=%s\n"
 msgstr ""
 
-#: src/stored/autochanger.c:280
+#: src/stored/autochanger.c:268
 #, c-format
 msgid "3301 Issuing autochanger \"loaded? drive %d\" command.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:292
+#: src/stored/autochanger.c:280
 #, c-format
 msgid "3302 Autochanger \"loaded? drive %d\", result is Slot %d.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:299
+#: src/stored/autochanger.c:287
 #, c-format
 msgid "3302 Autochanger \"loaded? drive %d\", result: nothing loaded.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:311
+#: src/stored/autochanger.c:299
 #, c-format
 msgid ""
 "3991 Bad autochanger \"loaded? drive %d\" command: ERR=%s.\n"
 "Results=%s\n"
 msgstr ""
 
-#: src/stored/autochanger.c:328
+#: src/stored/autochanger.c:316
 #, c-format
 msgid "Lock failure on autochanger. ERR=%s\n"
 msgstr ""
 
-#: src/stored/autochanger.c:342
+#: src/stored/autochanger.c:330
 #, c-format
 msgid "Unlock failure on autochanger. ERR=%s\n"
 msgstr ""
 
-#: src/stored/autochanger.c:386 src/stored/autochanger.c:508
+#: src/stored/autochanger.c:374 src/stored/autochanger.c:523
 #, c-format
 msgid "3307 Issuing autochanger \"unload slot %d, drive %d\" command.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:399
+#: src/stored/autochanger.c:387
 #, c-format
 msgid ""
 "3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s\n"
 "Results=%s\n"
 msgstr ""
 
-#: src/stored/autochanger.c:465
+#: src/stored/autochanger.c:473
 #, c-format
 msgid "Volume \"%s\" wanted on %s is in use by device %s\n"
 msgstr ""
 
-#: src/stored/autochanger.c:526
+#: src/stored/autochanger.c:541
 #, c-format
-msgid "3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
+msgid "3997 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:570
+#: src/stored/autochanger.c:585
 #, c-format
 msgid "3993 Device %s not an autochanger device.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:591
+#: src/stored/autochanger.c:612
 #, c-format
 msgid "3306 Issuing autochanger \"%s\" command.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:594
+#: src/stored/autochanger.c:615
 msgid "3996 Open bpipe failed.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:621 src/console/console.c:1458
+#: src/stored/autochanger.c:642 src/console/console.c:1458
 #, c-format
 msgid "Autochanger error: ERR=%s\n"
 msgstr ""
@@ -8343,7 +8392,7 @@ msgid ""
 "\n"
 "Version: %s (%s)\n"
 "\n"
-"Usage: stored [options] [-c config_file] [config_file]\n"
+"Usage: bacula-sd [options] [-c config_file] [config_file]\n"
 "        -c <file>   use <file> as configuration file\n"
 "        -d <nn>     set debug level to <nn>\n"
 "        -dt         print timestamp in debug output\n"
@@ -8426,17 +8475,17 @@ msgid ""
 "using \"TLS Verify Peer\".\n"
 msgstr ""
 
-#: src/stored/stored.c:511
+#: src/stored/stored.c:568
 #, c-format
 msgid "Could not initialize %s\n"
 msgstr ""
 
-#: src/stored/stored.c:525
+#: src/stored/stored.c:582
 #, c-format
 msgid "Could not open device %s\n"
 msgstr ""
 
-#: src/stored/stored.c:539
+#: src/stored/stored.c:596
 #, c-format
 msgid "Could not mount device %s\n"
 msgstr ""
@@ -8466,7 +8515,7 @@ msgstr ""
 msgid "Catastrophic error. Cannot write overflow block to device %s. ERR=%s"
 msgstr ""
 
-#: src/stored/device.c:327 src/stored/dev.c:499
+#: src/stored/device.c:327 src/stored/dev.c:512
 #, c-format
 msgid "Unable to open device %s: ERR=%s\n"
 msgstr ""
@@ -8514,32 +8563,32 @@ msgstr ""
 msgid "Attempt to open read on non-open session.\n"
 msgstr ""
 
-#: src/stored/mount.c:96
+#: src/stored/mount.c:98
 #, c-format
 msgid "Too many errors trying to mount device %s.\n"
 msgstr ""
 
-#: src/stored/mount.c:104
+#: src/stored/mount.c:106
 #, c-format
 msgid "Job %d canceled.\n"
 msgstr ""
 
-#: src/stored/mount.c:280
+#: src/stored/mount.c:282
 #, c-format
 msgid "Volume \"%s\" previously written, moving to end of data.\n"
 msgstr ""
 
-#: src/stored/mount.c:286
+#: src/stored/mount.c:288
 #, c-format
 msgid "Unable to position to end of data on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/mount.c:408 src/stored/mount.c:730
+#: src/stored/mount.c:411 src/stored/mount.c:737
 #, c-format
 msgid "Volume \"%s\" not on device %s.\n"
 msgstr ""
 
-#: src/stored/mount.c:441
+#: src/stored/mount.c:444
 #, c-format
 msgid ""
 "Director wanted Volume \"%s\".\n"
@@ -8547,24 +8596,24 @@ msgid ""
 "    %s"
 msgstr ""
 
-#: src/stored/mount.c:596
+#: src/stored/mount.c:603
 #, c-format
 msgid "Ready to append to end of Volume \"%s\" part=%d size=%s\n"
 msgstr ""
 
-#: src/stored/mount.c:600
+#: src/stored/mount.c:607
 #, c-format
 msgid ""
 "Bacula cannot write on DVD Volume \"%s\" because: The sizes do not match! "
 "Volume=%s Catalog=%s\n"
 msgstr ""
 
-#: src/stored/mount.c:614
+#: src/stored/mount.c:621
 #, c-format
 msgid "Ready to append to end of Volume \"%s\" at file=%d.\n"
 msgstr ""
 
-#: src/stored/mount.c:617
+#: src/stored/mount.c:624
 #, c-format
 msgid ""
 "For Volume \"%s\":\n"
@@ -8572,23 +8621,23 @@ msgid ""
 "Correcting Catalog\n"
 msgstr ""
 
-#: src/stored/mount.c:624 src/stored/mount.c:652
+#: src/stored/mount.c:631 src/stored/mount.c:659
 msgid "Error updating Catalog\n"
 msgstr ""
 
-#: src/stored/mount.c:629
+#: src/stored/mount.c:636
 #, c-format
 msgid ""
 "Bacula cannot write on tape Volume \"%s\" because:\n"
 "The number of files mismatch! Volume=%u Catalog=%u\n"
 msgstr ""
 
-#: src/stored/mount.c:640
+#: src/stored/mount.c:647
 #, c-format
 msgid "Ready to append to end of Volume \"%s\" size=%s\n"
 msgstr ""
 
-#: src/stored/mount.c:644
+#: src/stored/mount.c:651
 #, c-format
 msgid ""
 "For Volume \"%s\":\n"
@@ -8596,46 +8645,46 @@ msgid ""
 "Correcting Catalog\n"
 msgstr ""
 
-#: src/stored/mount.c:657
+#: src/stored/mount.c:664
 #, c-format
 msgid ""
 "Bacula cannot write on disk Volume \"%s\" because: The sizes do not match! "
 "Volume=%s Catalog=%s\n"
 msgstr ""
 
-#: src/stored/mount.c:720
+#: src/stored/mount.c:727
 #, c-format
 msgid "Labeled new Volume \"%s\" on device %s.\n"
 msgstr ""
 
-#: src/stored/mount.c:725
+#: src/stored/mount.c:732
 #, c-format
 msgid "Device %s not configured to autolabel Volumes.\n"
 msgstr ""
 
-#: src/stored/mount.c:744
+#: src/stored/mount.c:751
 #, c-format
 msgid "Marking Volume \"%s\" in Error in Catalog.\n"
 msgstr ""
 
-#: src/stored/mount.c:761
+#: src/stored/mount.c:768
 #, c-format
 msgid ""
 "Autochanger Volume \"%s\" not found in slot %d.\n"
 "    Setting InChanger to zero in catalog.\n"
 msgstr ""
 
-#: src/stored/mount.c:780
+#: src/stored/mount.c:787
 msgid "Hey!!!!! WroteVol non-zero !!!!!\n"
 msgstr ""
 
-#: src/stored/mount.c:827
+#: src/stored/mount.c:834
 #, c-format
 msgid ""
 "Invalid tape position on volume \"%s\" on device %s. Expected %d, got %d\n"
 msgstr ""
 
-#: src/stored/mount.c:864 src/stored/btape.c:3120
+#: src/stored/mount.c:875 src/stored/btape.c:3122
 #, c-format
 msgid "Cannot open Dev=%s, Vol=%s\n"
 msgstr ""
@@ -8721,7 +8770,7 @@ msgid ""
 "Despooling elapsed time = %02d:%02d:%02d, Transfer rate = %s Bytes/second\n"
 msgstr ""
 
-#: src/stored/spool.c:348 src/stored/spool.c:546 src/stored/spool.c:592
+#: src/stored/spool.c:348 src/stored/spool.c:549 src/stored/spool.c:595
 #, c-format
 msgid "Ftruncate spool file failed: ERR=%s\n"
 msgstr ""
@@ -8751,77 +8800,86 @@ msgstr ""
 msgid "Spool data read error. Wanted %u bytes, got %d\n"
 msgstr ""
 
-#: src/stored/spool.c:487
-msgid "User specified spool size reached.\n"
+#: src/stored/spool.c:480
+#, c-format
+msgid ""
+"User specified Job spool size reached: JobSpoolSize=%s MaxJobSpoolSize=%s\n"
 msgstr ""
 
-#: src/stored/spool.c:489
+#: src/stored/spool.c:485
+#, c-format
+msgid ""
+"User specified Device spool size reached: DevSpoolSize=%s MaxDevSpoolSize="
+"%s\n"
+msgstr ""
+
+#: src/stored/spool.c:492
 msgid "Bad return from despool in write_block.\n"
 msgstr ""
 
-#: src/stored/spool.c:497
+#: src/stored/spool.c:500
 msgid "Spooling data again ...\n"
 msgstr ""
 
-#: src/stored/spool.c:529
+#: src/stored/spool.c:532
 #, c-format
 msgid "Error writing header to spool file. ERR=%s\n"
 msgstr ""
 
-#: src/stored/spool.c:534
+#: src/stored/spool.c:537
 #, c-format
 msgid ""
 "Error writing header to spool file. Disk probably full. Attempting recovery. "
 "Wanted to write=%d got=%d\n"
 msgstr ""
 
-#: src/stored/spool.c:552 src/stored/spool.c:598
+#: src/stored/spool.c:555 src/stored/spool.c:601
 msgid "Fatal despooling error."
 msgstr ""
 
-#: src/stored/spool.c:560
+#: src/stored/spool.c:563
 msgid "Retrying after header spooling error failed.\n"
 msgstr ""
 
-#: src/stored/spool.c:576
+#: src/stored/spool.c:579
 #, c-format
 msgid "Error writing data to spool file. ERR=%s\n"
 msgstr ""
 
-#: src/stored/spool.c:609
+#: src/stored/spool.c:612
 msgid "Retrying after data spooling error failed.\n"
 msgstr ""
 
-#: src/stored/spool.c:679
+#: src/stored/spool.c:682
 msgid "Network error on BlastAttributes.\n"
 msgstr ""
 
-#: src/stored/spool.c:703 src/stored/spool.c:727
+#: src/stored/spool.c:706 src/stored/spool.c:730
 #, c-format
 msgid "Fseek on attributes file failed: ERR=%s\n"
 msgstr ""
 
-#: src/stored/spool.c:715
+#: src/stored/spool.c:718
 #, c-format
 msgid "Truncate on attributes file failed: ERR=%s\n"
 msgstr ""
 
-#: src/stored/spool.c:739
+#: src/stored/spool.c:742
 #, c-format
 msgid "Sending spooled attrs to the Director. Despooling %s bytes ...\n"
 msgstr ""
 
-#: src/stored/spool.c:765
+#: src/stored/spool.c:768
 #, c-format
 msgid "fopen attr spool file %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/stored/lock.c:235
+#: src/stored/lock.c:405
 #, c-format
 msgid "pthread_cond_wait failure. ERR=%s\n"
 msgstr ""
 
-#: src/stored/lock.c:335
+#: src/stored/lock.c:504
 msgid "unknown blocked code"
 msgstr ""
 
@@ -8890,252 +8948,267 @@ msgid ""
 "Attempt to define second \"%s\" resource named \"%s\" is not permitted.\n"
 msgstr ""
 
-#: src/stored/dev.c:119
+#: src/stored/dev.c:127
 #, c-format
 msgid "Unable to stat device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:137
+#: src/stored/dev.c:145
 #, c-format
 msgid ""
 "%s is an unknown device type. Must be tape or directory\n"
 " or have RequiresMount=yes for DVD. st_mode=%x\n"
 msgstr ""
 
-#: src/stored/dev.c:147
+#: src/stored/dev.c:155
 msgid "DVD support is now deprecated\n"
 msgstr ""
 
-#: src/stored/dev.c:224
+#: src/stored/dev.c:231
 #, c-format
 msgid "Unable to stat mount point %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:229
+#: src/stored/dev.c:236
 msgid ""
 "Mount and unmount commands must defined for a device which requires mount.\n"
 msgstr ""
 
-#: src/stored/dev.c:240
+#: src/stored/dev.c:247
 #, c-format
 msgid "Min block size > max on device %s\n"
 msgstr ""
 
-#: src/stored/dev.c:244
+#: src/stored/dev.c:251
 #, c-format
 msgid "Block size %u on device %s is too large, using default %u\n"
 msgstr ""
 
-#: src/stored/dev.c:249
+#: src/stored/dev.c:256
 #, c-format
 msgid "Max block size %u not multiple of device %s block size=%d.\n"
 msgstr ""
 
-#: src/stored/dev.c:253
+#: src/stored/dev.c:260
 #, c-format
 msgid "Max Vol Size < 8 * Max Block Size for device %s\n"
 msgstr ""
 
-#: src/stored/dev.c:269 src/stored/dev.c:275
+#: src/stored/dev.c:276 src/stored/dev.c:282
 #, c-format
 msgid "Unable to init cond variable: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:403
+#: src/stored/dev.c:288
+#, c-format
+msgid "Unable to init spool mutex: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:294
+#, c-format
+msgid "Unable to init acquire mutex: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:300
+#, c-format
+msgid "Unable to init read acquire mutex: ERR=%s\n"
+msgstr ""
+
+#: src/stored/dev.c:416
 msgid "Illegal mode given to open dev.\n"
 msgstr ""
 
-#: src/stored/dev.c:538
+#: src/stored/dev.c:551
 #, c-format
 msgid "Could not open file device %s. No Volume name given.\n"
 msgstr ""
 
-#: src/stored/dev.c:561
+#: src/stored/dev.c:574
 #, c-format
 msgid "Could not open: %s, ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:626
+#: src/stored/dev.c:639
 #, c-format
 msgid "No tape loaded or drive offline on %s.\n"
 msgstr ""
 
-#: src/stored/dev.c:636
+#: src/stored/dev.c:649
 #, c-format
 msgid "Rewind error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:646 src/stored/dev.c:724 src/stored/dev.c:865
-#: src/stored/dev.c:1454
+#: src/stored/dev.c:659 src/stored/dev.c:737 src/stored/dev.c:878
+#: src/stored/dev.c:1469
 #, c-format
 msgid "lseek error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:695
+#: src/stored/dev.c:708
 #, c-format
 msgid "Bad call to eod. Device %s not open\n"
 msgstr ""
 
-#: src/stored/dev.c:762
+#: src/stored/dev.c:775
 #, c-format
 msgid "ioctl MTEOM error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:772 src/stored/dev.c:906
+#: src/stored/dev.c:785 src/stored/dev.c:919
 #, c-format
 msgid "ioctl MTIOCGET error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:852
+#: src/stored/dev.c:865
 msgid "Bad device call. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:864
+#: src/stored/dev.c:877
 #, c-format
 msgid "Seek error: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:901
+#: src/stored/dev.c:914
 msgid " Bacula status:"
 msgstr ""
 
-#: src/stored/dev.c:902 src/stored/dev.c:985 src/stored/dev.c:987
+#: src/stored/dev.c:915 src/stored/dev.c:998 src/stored/dev.c:1000
 #, c-format
 msgid " file=%d block=%d\n"
 msgstr ""
 
-#: src/stored/dev.c:910
+#: src/stored/dev.c:923
 msgid " Device status:"
 msgstr ""
 
-#: src/stored/dev.c:1009
+#: src/stored/dev.c:1022
 msgid "Bad call to load_dev. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1020 src/stored/dev.c:1033
+#: src/stored/dev.c:1033 src/stored/dev.c:1046
 #, c-format
 msgid "ioctl MTLOAD error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1064
+#: src/stored/dev.c:1077
 #, c-format
 msgid "ioctl MTOFFL error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1105
+#: src/stored/dev.c:1118
 msgid "Bad call to fsf. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1116 src/stored/dev.c:1243
+#: src/stored/dev.c:1129 src/stored/dev.c:1256
 #, c-format
 msgid "Device %s at End of Tape.\n"
 msgstr ""
 
-#: src/stored/dev.c:1147 src/stored/dev.c:1223
+#: src/stored/dev.c:1160 src/stored/dev.c:1236
 #, c-format
 msgid "ioctl MTFSF error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1194 src/stored/btape.c:1975
+#: src/stored/dev.c:1207 src/stored/btape.c:1977
 #, c-format
 msgid "read error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1272
+#: src/stored/dev.c:1285
 msgid "Bad call to bsf. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1278
+#: src/stored/dev.c:1291
 #, c-format
 msgid "Device %s cannot BSF because it is not a tape.\n"
 msgstr ""
 
-#: src/stored/dev.c:1295
+#: src/stored/dev.c:1308
 #, c-format
 msgid "ioctl MTBSF error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1314
+#: src/stored/dev.c:1327
 msgid "Bad call to fsr. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1324
+#: src/stored/dev.c:1337
 #, c-format
 msgid "ioctl MTFSR not permitted on %s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1352
+#: src/stored/dev.c:1365
 #, c-format
 msgid "ioctl MTFSR %d error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1370
+#: src/stored/dev.c:1383
 msgid "Bad call to bsr_dev. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1380
+#: src/stored/dev.c:1393
 #, c-format
 msgid "ioctl MTBSR not permitted on %s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1394
+#: src/stored/dev.c:1407
 #, c-format
 msgid "ioctl MTBSR error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1443
+#: src/stored/dev.c:1458
 msgid "Bad call to reposition. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1522
+#: src/stored/dev.c:1537
 msgid "Bad call to weof_dev. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1532
+#: src/stored/dev.c:1547
 msgid "Attempt to WEOF on non-appendable Volume\n"
 msgstr ""
 
-#: src/stored/dev.c:1550
+#: src/stored/dev.c:1565
 #, c-format
 msgid "ioctl MTWEOF error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1649
+#: src/stored/dev.c:1664
 #, c-format
 msgid "unknown func code %d"
 msgstr ""
 
-#: src/stored/dev.c:1655
+#: src/stored/dev.c:1670
 #, c-format
 msgid "I/O function \"%s\" not supported on this device.\n"
 msgstr ""
 
-#: src/stored/dev.c:1824
+#: src/stored/dev.c:1844
 #, c-format
 msgid "Unable to truncate device %s. ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:1841
+#: src/stored/dev.c:1861
 #, c-format
 msgid "Unable to stat device %s. ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:1855
+#: src/stored/dev.c:1875
 #, c-format
 msgid "Device %s doesn't support ftruncate(). Recreating file %s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1867
+#: src/stored/dev.c:1887
 #, c-format
 msgid "Could not reopen: %s, ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:1989 src/stored/dev.c:2060
+#: src/stored/dev.c:2010 src/stored/dev.c:2081
 #, c-format
 msgid "Device %s cannot be %smounted. ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:2456
+#: src/stored/dev.c:2481
 #, c-format
 msgid "Unable to set eotmodel on device %s: ERR=%s\n"
 msgstr ""
@@ -9289,7 +9362,7 @@ msgstr ""
 msgid "SOS_LABEL: PoolId mismatch for JobId=%u. DB=%d Vol=%d\n"
 msgstr ""
 
-#: src/stored/bscan.c:601 src/stored/bscan.c:1157
+#: src/stored/bscan.c:601 src/stored/bscan.c:1161
 #, c-format
 msgid "Could not find SessId=%d SessTime=%d for EOS record.\n"
 msgstr ""
@@ -9347,107 +9420,107 @@ msgstr ""
 msgid "Got Prog Data Stream record.\n"
 msgstr ""
 
-#: src/stored/bscan.c:858
+#: src/stored/bscan.c:862
 #, c-format
 msgid "Unknown stream type!!! stream=%d len=%i\n"
 msgstr ""
 
-#: src/stored/bscan.c:926
+#: src/stored/bscan.c:930
 #, c-format
 msgid "Could not create File Attributes record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:932
+#: src/stored/bscan.c:936
 #, c-format
 msgid "Created File record: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:977
+#: src/stored/bscan.c:981
 #, c-format
 msgid "Could not create media record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:981 src/stored/bscan.c:1002
+#: src/stored/bscan.c:985 src/stored/bscan.c:1006
 #, c-format
 msgid "Could not update media record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:985
+#: src/stored/bscan.c:989
 #, c-format
 msgid "Created Media record for Volume: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1006
+#: src/stored/bscan.c:1010
 #, c-format
 msgid "Updated Media record at end of Volume: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1023
+#: src/stored/bscan.c:1027
 #, c-format
 msgid "Could not create pool record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1027
+#: src/stored/bscan.c:1031
 #, c-format
 msgid "Created Pool record for Pool: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1046
+#: src/stored/bscan.c:1050
 #, c-format
 msgid "Could not get Client record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1056
+#: src/stored/bscan.c:1060
 #, c-format
 msgid "Created Client record for Client: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1073
+#: src/stored/bscan.c:1077
 #, c-format
 msgid "Fileset \"%s\" already exists.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1077
+#: src/stored/bscan.c:1081
 #, c-format
 msgid "Could not create FileSet record \"%s\". ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1082
+#: src/stored/bscan.c:1086
 #, c-format
 msgid "Created FileSet record \"%s\"\n"
 msgstr ""
 
-#: src/stored/bscan.c:1129
+#: src/stored/bscan.c:1133
 #, c-format
 msgid "Could not create JobId record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1135
+#: src/stored/bscan.c:1139
 #, c-format
 msgid "Could not update job start record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1138
+#: src/stored/bscan.c:1142
 #, c-format
 msgid "Created new JobId=%u record for original JobId=%u\n"
 msgstr ""
 
-#: src/stored/bscan.c:1191
+#: src/stored/bscan.c:1195
 #, c-format
 msgid "Could not update JobId=%u record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1196
+#: src/stored/bscan.c:1200
 #, c-format
 msgid "Updated Job termination record for JobId=%u Level=%s TermStat=%c\n"
 msgstr ""
 
-#: src/stored/bscan.c:1221
+#: src/stored/bscan.c:1225
 #, c-format
 msgid "Job Termination code: %d"
 msgstr ""
 
-#: src/stored/bscan.c:1226
+#: src/stored/bscan.c:1230
 #, c-format
 msgid ""
 "%s\n"
@@ -9467,45 +9540,45 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/bscan.c:1284
+#: src/stored/bscan.c:1288
 #, c-format
 msgid "Could not create JobMedia record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1288
+#: src/stored/bscan.c:1292
 #, c-format
 msgid "Created JobMedia record JobId %d, MediaId %d\n"
 msgstr ""
 
-#: src/stored/bscan.c:1304
+#: src/stored/bscan.c:1308
 #, c-format
 msgid "Could not find SessId=%d SessTime=%d for MD5/SHA1 record.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1318
+#: src/stored/bscan.c:1322
 #, c-format
 msgid "Could not add MD5/SHA1 to File record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1323
+#: src/stored/bscan.c:1327
 msgid "Updated MD5/SHA1 record\n"
 msgstr ""
 
-#: src/stored/job.c:231
+#: src/stored/job.c:234
 #, c-format
 msgid "FD connect failed: Job name not found: %s\n"
 msgstr ""
 
-#: src/stored/job.c:241
+#: src/stored/job.c:244
 #, c-format
 msgid "Hey!!!! JobId %u Job %s already authenticated.\n"
 msgstr ""
 
-#: src/stored/job.c:258
+#: src/stored/job.c:261
 msgid "Unable to authenticate File daemon\n"
 msgstr ""
 
-#: src/stored/job.c:387
+#: src/stored/job.c:390
 msgid "In free_jcr(), but still attached to device!!!!\n"
 msgstr ""
 
@@ -9623,18 +9696,18 @@ msgstr ""
 msgid "Loaded %s\n"
 msgstr ""
 
-#: src/stored/btape.c:576 src/stored/btape.c:1137 src/stored/btape.c:1210
-#: src/stored/btape.c:1290 src/stored/btape.c:1561
+#: src/stored/btape.c:576 src/stored/btape.c:1139 src/stored/btape.c:1212
+#: src/stored/btape.c:1292 src/stored/btape.c:1563
 #, c-format
 msgid "Bad status from rewind. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:579 src/stored/btape.c:1569
+#: src/stored/btape.c:579 src/stored/btape.c:1571
 #, c-format
 msgid "Rewound %s\n"
 msgstr ""
 
-#: src/stored/btape.c:605 src/stored/btape.c:1573
+#: src/stored/btape.c:605 src/stored/btape.c:1575
 #, c-format
 msgid "Bad status from weof. ERR=%s\n"
 msgstr ""
@@ -9696,20 +9769,20 @@ msgstr ""
 msgid "Do you want to continue? (y/n): "
 msgstr ""
 
-#: src/stored/btape.c:748 src/stored/btape.c:2198
+#: src/stored/btape.c:748 src/stored/btape.c:2200
 msgid "Command aborted.\n"
 msgstr ""
 
-#: src/stored/btape.c:764
+#: src/stored/btape.c:765
 #, c-format
 msgid "Block %d i=%d\n"
 msgstr ""
 
-#: src/stored/btape.c:790
+#: src/stored/btape.c:792
 msgid "Skipping read backwards test because BSR turned off.\n"
 msgstr ""
 
-#: src/stored/btape.c:794
+#: src/stored/btape.c:796
 msgid ""
 "\n"
 "=== Write, backup, and re-read test ===\n"
@@ -9723,73 +9796,73 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:807 src/stored/btape.c:818 src/stored/btape.c:829
-#: src/stored/btape.c:1147 src/stored/btape.c:1163 src/stored/btape.c:1905
-#: src/stored/btape.c:2821
+#: src/stored/btape.c:809 src/stored/btape.c:820 src/stored/btape.c:831
+#: src/stored/btape.c:1149 src/stored/btape.c:1165 src/stored/btape.c:1907
+#: src/stored/btape.c:2823
 msgid "Error writing record to block.\n"
 msgstr ""
 
-#: src/stored/btape.c:811 src/stored/btape.c:822 src/stored/btape.c:833
-#: src/stored/btape.c:1151 src/stored/btape.c:1167 src/stored/btape.c:1909
-#: src/stored/btape.c:2825
+#: src/stored/btape.c:813 src/stored/btape.c:824 src/stored/btape.c:835
+#: src/stored/btape.c:1153 src/stored/btape.c:1169 src/stored/btape.c:1911
+#: src/stored/btape.c:2827
 msgid "Error writing block to device.\n"
 msgstr ""
 
-#: src/stored/btape.c:814
+#: src/stored/btape.c:816
 #, c-format
 msgid "Wrote first record of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:825
+#: src/stored/btape.c:827
 #, c-format
 msgid "Wrote second record of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:836
+#: src/stored/btape.c:838
 #, c-format
 msgid "Wrote third record of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:843 src/stored/btape.c:848
+#: src/stored/btape.c:845 src/stored/btape.c:850
 #, c-format
 msgid "Backspace file failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:852
+#: src/stored/btape.c:854
 msgid "Backspaced over EOF OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:854
+#: src/stored/btape.c:856
 #, c-format
 msgid "Backspace record failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:857
+#: src/stored/btape.c:859
 msgid "Backspace record OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:860 src/stored/btape.c:866
+#: src/stored/btape.c:862 src/stored/btape.c:868
 #, c-format
 msgid "Read block failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:871
+#: src/stored/btape.c:873
 msgid "Bad data in record. Test failed!\n"
 msgstr ""
 
-#: src/stored/btape.c:875
+#: src/stored/btape.c:877
 msgid ""
 "\n"
 "Block re-read correct. Test succeeded!\n"
 msgstr ""
 
-#: src/stored/btape.c:876
+#: src/stored/btape.c:878
 msgid ""
 "=== End Write, backup, and re-read test ===\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:883
+#: src/stored/btape.c:885
 msgid ""
 "This is not terribly serious since Bacula only uses\n"
 "this function to verify the last block written to the\n"
@@ -9801,50 +9874,50 @@ msgid ""
 "to your Storage daemon's Device resource definition.\n"
 msgstr ""
 
-#: src/stored/btape.c:905
+#: src/stored/btape.c:907
 #, c-format
 msgid "Begin writing %i files of %sB with raw blocks of %u bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:926 src/stored/btape.c:2877
+#: src/stored/btape.c:928 src/stored/btape.c:2879
 #, c-format
 msgid "Write failed at block %u. stat=%d ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:960
+#: src/stored/btape.c:962
 #, c-format
 msgid "Begin writing %i files of %sB with blocks of %u bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:969
+#: src/stored/btape.c:971
 msgid ""
 "\n"
 "Error writing record to block.\n"
 msgstr ""
 
-#: src/stored/btape.c:973
+#: src/stored/btape.c:975
 msgid ""
 "\n"
 "Error writing block to device.\n"
 msgstr ""
 
-#: src/stored/btape.c:1028
+#: src/stored/btape.c:1030
 msgid "The file_size is too big, stop this test with Ctrl-c.\n"
 msgstr ""
 
-#: src/stored/btape.c:1056
+#: src/stored/btape.c:1058
 msgid "Test with zero data, should give the maximum throughput.\n"
 msgstr ""
 
-#: src/stored/btape.c:1068 src/stored/btape.c:1094
+#: src/stored/btape.c:1070 src/stored/btape.c:1096
 msgid "Test with random data, should give the minimum throughput.\n"
 msgstr ""
 
-#: src/stored/btape.c:1083
+#: src/stored/btape.c:1085
 msgid "Test with zero data and bacula block structure.\n"
 msgstr ""
 
-#: src/stored/btape.c:1123
+#: src/stored/btape.c:1125
 #, c-format
 msgid ""
 "\n"
@@ -9858,66 +9931,66 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1155 src/stored/btape.c:1171
+#: src/stored/btape.c:1157 src/stored/btape.c:1173
 #, c-format
 msgid "Wrote %d blocks of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:1213 src/stored/btape.c:1293
+#: src/stored/btape.c:1215 src/stored/btape.c:1295
 msgid "Rewind OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:1226 src/stored/btape.c:1345
+#: src/stored/btape.c:1228 src/stored/btape.c:1347
 msgid "Got EOF on tape.\n"
 msgstr ""
 
-#: src/stored/btape.c:1231
+#: src/stored/btape.c:1233
 #, c-format
 msgid "Read block %d failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1237
+#: src/stored/btape.c:1239
 #, c-format
 msgid "Read record failed. Block %d! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1243 src/stored/btape.c:1375
+#: src/stored/btape.c:1245 src/stored/btape.c:1377
 #, c-format
 msgid "Bad data in record. Expected %d, got %d at byte %d. Test failed!\n"
 msgstr ""
 
-#: src/stored/btape.c:1250
+#: src/stored/btape.c:1252
 #, c-format
 msgid "%d blocks re-read correctly.\n"
 msgstr ""
 
-#: src/stored/btape.c:1253 src/stored/btape.c:1382
+#: src/stored/btape.c:1255 src/stored/btape.c:1384
 msgid ""
 "=== Test Succeeded. End Write, rewind, and re-read test ===\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1281
+#: src/stored/btape.c:1283
 msgid "Block position test\n"
 msgstr ""
 
-#: src/stored/btape.c:1336
+#: src/stored/btape.c:1338
 #, c-format
 msgid "Reposition to file:block %d:%d\n"
 msgstr ""
 
-#: src/stored/btape.c:1338
+#: src/stored/btape.c:1340
 msgid "Reposition error.\n"
 msgstr ""
 
-#: src/stored/btape.c:1351
+#: src/stored/btape.c:1353
 #, c-format
 msgid ""
 "Read block %d failed! file=%d blk=%d. ERR=%s\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1353
+#: src/stored/btape.c:1355
 msgid ""
 "This may be because the tape drive block size is not\n"
 " set to variable blocking as normally used by Bacula.\n"
@@ -9931,17 +10004,17 @@ msgid ""
 " in your Device resource.\n"
 msgstr ""
 
-#: src/stored/btape.c:1369
+#: src/stored/btape.c:1371
 #, c-format
 msgid "Read record failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1380
+#: src/stored/btape.c:1382
 #, c-format
 msgid "Block %d re-read correctly.\n"
 msgstr ""
 
-#: src/stored/btape.c:1401
+#: src/stored/btape.c:1403
 msgid ""
 "\n"
 "\n"
@@ -9955,58 +10028,58 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1425
+#: src/stored/btape.c:1427
 msgid "Now moving to end of medium.\n"
 msgstr ""
 
-#: src/stored/btape.c:1427 src/stored/btape.c:1656
+#: src/stored/btape.c:1429 src/stored/btape.c:1658
 #, c-format
 msgid "We should be in file 3. I am at file %d. %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1428 src/stored/btape.c:1446 src/stored/btape.c:1645
-#: src/stored/btape.c:1657 src/stored/btape.c:1670 src/stored/btape.c:1687
+#: src/stored/btape.c:1430 src/stored/btape.c:1448 src/stored/btape.c:1647
+#: src/stored/btape.c:1659 src/stored/btape.c:1672 src/stored/btape.c:1689
 msgid "This is correct!"
 msgstr ""
 
-#: src/stored/btape.c:1428 src/stored/btape.c:1446 src/stored/btape.c:1645
-#: src/stored/btape.c:1657 src/stored/btape.c:1670 src/stored/btape.c:1687
+#: src/stored/btape.c:1430 src/stored/btape.c:1448 src/stored/btape.c:1647
+#: src/stored/btape.c:1659 src/stored/btape.c:1672 src/stored/btape.c:1689
 msgid "This is NOT correct!!!!"
 msgstr ""
 
-#: src/stored/btape.c:1434
+#: src/stored/btape.c:1436
 msgid ""
 "\n"
 "Now the important part, I am going to attempt to append to the tape.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1441
+#: src/stored/btape.c:1443
 msgid ""
 "Done appending, there should be no I/O errors\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1442
+#: src/stored/btape.c:1444
 msgid "Doing Bacula scan of blocks:\n"
 msgstr ""
 
-#: src/stored/btape.c:1444
+#: src/stored/btape.c:1446
 msgid "End scanning the tape.\n"
 msgstr ""
 
-#: src/stored/btape.c:1445 src/stored/btape.c:1669
+#: src/stored/btape.c:1447 src/stored/btape.c:1671
 #, c-format
 msgid "We should be in file 4. I am at file %d. %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1470
+#: src/stored/btape.c:1472
 msgid ""
 "\n"
 "Autochanger enabled, but no name or no command device specified.\n"
 msgstr ""
 
-#: src/stored/btape.c:1474
+#: src/stored/btape.c:1476
 msgid ""
 "\n"
 "Ah, I see you have an autochanger configured.\n"
@@ -10014,13 +10087,13 @@ msgid ""
 " that I can write on in Slot 1.\n"
 msgstr ""
 
-#: src/stored/btape.c:1477
+#: src/stored/btape.c:1479
 msgid ""
 "\n"
 "Do you wish to continue with the Autochanger test? (y/n): "
 msgstr ""
 
-#: src/stored/btape.c:1484
+#: src/stored/btape.c:1486
 msgid ""
 "\n"
 "\n"
@@ -10028,74 +10101,74 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1493
+#: src/stored/btape.c:1495
 msgid "3301 Issuing autochanger \"loaded\" command.\n"
 msgstr ""
 
-#: src/stored/btape.c:1502
+#: src/stored/btape.c:1504
 #, c-format
 msgid "3991 Bad autochanger command: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1503
+#: src/stored/btape.c:1505
 #, c-format
 msgid "3991 result=\"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1507
+#: src/stored/btape.c:1509
 #, c-format
 msgid "Slot %d loaded. I am going to unload it.\n"
 msgstr ""
 
-#: src/stored/btape.c:1509
+#: src/stored/btape.c:1511
 msgid "Nothing loaded in the drive. OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:1516
+#: src/stored/btape.c:1518
 #, c-format
 msgid "3302 Issuing autochanger \"unload %d %d\" command.\n"
 msgstr ""
 
-#: src/stored/btape.c:1521
+#: src/stored/btape.c:1523
 #, c-format
 msgid "unload status=%s %d\n"
 msgstr ""
 
-#: src/stored/btape.c:1521
+#: src/stored/btape.c:1523
 msgid "Bad"
 msgstr ""
 
-#: src/stored/btape.c:1524
+#: src/stored/btape.c:1526
 #, c-format
 msgid "3992 Bad autochanger command: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1525
+#: src/stored/btape.c:1527
 #, c-format
 msgid "3992 result=\"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1535
+#: src/stored/btape.c:1537
 #, c-format
 msgid "3303 Issuing autochanger \"load %d %d\" command.\n"
 msgstr ""
 
-#: src/stored/btape.c:1543
+#: src/stored/btape.c:1545
 #, c-format
 msgid "3303 Autochanger \"load %d %d\" status is OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:1547
+#: src/stored/btape.c:1549
 #, c-format
 msgid "3993 Bad autochanger command: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1548
+#: src/stored/btape.c:1550
 #, c-format
 msgid "3993 result=\"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1563
+#: src/stored/btape.c:1565
 msgid ""
 "\n"
 "The test failed, probably because you need to put\n"
@@ -10103,12 +10176,12 @@ msgid ""
 "Adding a 30 second sleep and trying again ...\n"
 msgstr ""
 
-#: src/stored/btape.c:1576
+#: src/stored/btape.c:1578
 #, c-format
 msgid "Wrote EOF to %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1580
+#: src/stored/btape.c:1582
 #, c-format
 msgid ""
 "\n"
@@ -10120,18 +10193,18 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1585
+#: src/stored/btape.c:1587
 msgid ""
 "\n"
 "The test autochanger worked!!\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1596
+#: src/stored/btape.c:1598
 msgid "You must correct this error or the Autochanger will not work.\n"
 msgstr ""
 
-#: src/stored/btape.c:1614
+#: src/stored/btape.c:1616
 msgid ""
 "\n"
 "\n"
@@ -10143,30 +10216,30 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1639
+#: src/stored/btape.c:1641
 msgid "Now forward spacing 1 file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1641 src/stored/btape.c:1653 src/stored/btape.c:1666
-#: src/stored/btape.c:1684 src/stored/btape.c:1860
+#: src/stored/btape.c:1643 src/stored/btape.c:1655 src/stored/btape.c:1668
+#: src/stored/btape.c:1686 src/stored/btape.c:1862
 #, c-format
 msgid "Bad status from fsr. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1644
+#: src/stored/btape.c:1646
 #, c-format
 msgid "We should be in file 1. I am at file %d. %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1651
+#: src/stored/btape.c:1653
 msgid "Now forward spacing 2 files.\n"
 msgstr ""
 
-#: src/stored/btape.c:1664
+#: src/stored/btape.c:1666
 msgid "Now forward spacing 4 files.\n"
 msgstr ""
 
-#: src/stored/btape.c:1676
+#: src/stored/btape.c:1678
 msgid ""
 "The test worked this time. Please add:\n"
 "\n"
@@ -10175,35 +10248,35 @@ msgid ""
 "to your Device resource for this drive.\n"
 msgstr ""
 
-#: src/stored/btape.c:1682
+#: src/stored/btape.c:1684
 msgid "Now forward spacing 1 more file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1686
+#: src/stored/btape.c:1688
 #, c-format
 msgid "We should be in file 5. I am at file %d. %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1691
+#: src/stored/btape.c:1693
 msgid ""
 "\n"
 "=== End Forward space files test ===\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1695
+#: src/stored/btape.c:1697
 msgid ""
 "\n"
 "The forward space file test failed.\n"
 msgstr ""
 
-#: src/stored/btape.c:1697
+#: src/stored/btape.c:1699
 msgid ""
 "You have Fast Forward Space File enabled.\n"
 "I am turning it off then retrying the test.\n"
 msgstr ""
 
-#: src/stored/btape.c:1703
+#: src/stored/btape.c:1705
 msgid ""
 "You must correct this error or Bacula will not work.\n"
 "Some systems, e.g. OpenBSD, require you to set\n"
@@ -10211,7 +10284,7 @@ msgid ""
 "in your device resource. Use with caution.\n"
 msgstr ""
 
-#: src/stored/btape.c:1737
+#: src/stored/btape.c:1739
 msgid ""
 "\n"
 "Append test failed. Attempting again.\n"
@@ -10221,7 +10294,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1745
+#: src/stored/btape.c:1747
 msgid ""
 "\n"
 "\n"
@@ -10233,14 +10306,14 @@ msgid ""
 "to your Device resource in the Storage conf file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1752
+#: src/stored/btape.c:1754
 msgid ""
 "\n"
 "\n"
 "That appears *NOT* to have corrected the problem.\n"
 msgstr ""
 
-#: src/stored/btape.c:1757
+#: src/stored/btape.c:1759
 msgid ""
 "\n"
 "\n"
@@ -10248,7 +10321,7 @@ msgid ""
 "Setting \"BSF at EOM = yes\" and retrying append test.\n"
 msgstr ""
 
-#: src/stored/btape.c:1762
+#: src/stored/btape.c:1764
 msgid ""
 "\n"
 "\n"
@@ -10261,7 +10334,7 @@ msgid ""
 "to your Device resource in the Storage conf file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1773
+#: src/stored/btape.c:1775
 msgid ""
 "\n"
 "Append test failed.\n"
@@ -10288,7 +10361,7 @@ msgid ""
 "in your device resource. Use with caution.\n"
 msgstr ""
 
-#: src/stored/btape.c:1795
+#: src/stored/btape.c:1797
 msgid ""
 "\n"
 "The above Bacula scan should have output identical to what follows.\n"
@@ -10312,111 +10385,111 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1838
+#: src/stored/btape.c:1840
 #, c-format
 msgid "Bad status from fsf. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1842
+#: src/stored/btape.c:1844
 msgid "Forward spaced 1 file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1845
+#: src/stored/btape.c:1847
 #, c-format
 msgid "Forward spaced %d files.\n"
 msgstr ""
 
-#: src/stored/btape.c:1864
+#: src/stored/btape.c:1866
 msgid "Forward spaced 1 record.\n"
 msgstr ""
 
-#: src/stored/btape.c:1867
+#: src/stored/btape.c:1869
 #, c-format
 msgid "Forward spaced %d records.\n"
 msgstr ""
 
-#: src/stored/btape.c:1912
+#: src/stored/btape.c:1914
 #, c-format
 msgid "Wrote one record of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:1914
+#: src/stored/btape.c:1916
 msgid "Wrote block to device.\n"
 msgstr ""
 
-#: src/stored/btape.c:1928
+#: src/stored/btape.c:1930
 msgid "Enter length to read: "
 msgstr ""
 
-#: src/stored/btape.c:1933
+#: src/stored/btape.c:1935
 msgid "Bad length entered, using default of 1024 bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:1942
+#: src/stored/btape.c:1944
 #, c-format
 msgid "Read of %d bytes gives stat=%d. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1965 src/stored/btape.c:2014
+#: src/stored/btape.c:1967 src/stored/btape.c:2016
 #, c-format
 msgid "End of tape\n"
 msgstr ""
 
-#: src/stored/btape.c:1970
+#: src/stored/btape.c:1972
 #, c-format
 msgid "Starting scan at file %u\n"
 msgstr ""
 
-#: src/stored/btape.c:1977
+#: src/stored/btape.c:1979
 #, c-format
 msgid "Bad status from read %d. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1980 src/stored/btape.c:1994 src/stored/btape.c:2058
-#: src/stored/btape.c:2070 src/stored/btape.c:2083 src/stored/btape.c:2099
+#: src/stored/btape.c:1982 src/stored/btape.c:1996 src/stored/btape.c:2060
+#: src/stored/btape.c:2072 src/stored/btape.c:2085 src/stored/btape.c:2101
 #, c-format
 msgid "1 block of %d bytes in file %d\n"
 msgstr ""
 
-#: src/stored/btape.c:1983 src/stored/btape.c:1997 src/stored/btape.c:2061
-#: src/stored/btape.c:2073 src/stored/btape.c:2086 src/stored/btape.c:2102
+#: src/stored/btape.c:1985 src/stored/btape.c:1999 src/stored/btape.c:2063
+#: src/stored/btape.c:2075 src/stored/btape.c:2088 src/stored/btape.c:2104
 #, c-format
 msgid "%d blocks of %d bytes in file %d\n"
 msgstr ""
 
-#: src/stored/btape.c:2005 src/stored/btape.c:2077
+#: src/stored/btape.c:2007 src/stored/btape.c:2079
 #, c-format
 msgid "End of File mark.\n"
 msgstr ""
 
-#: src/stored/btape.c:2026 src/stored/btape.c:2130
+#: src/stored/btape.c:2028 src/stored/btape.c:2132
 #, c-format
 msgid "Total files=%d, blocks=%d, bytes = %s\n"
 msgstr ""
 
-#: src/stored/btape.c:2090
+#: src/stored/btape.c:2092
 #, c-format
 msgid "Short block read.\n"
 msgstr ""
 
-#: src/stored/btape.c:2093
+#: src/stored/btape.c:2095
 #, c-format
 msgid "Error reading block. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2117
+#: src/stored/btape.c:2119
 #, c-format
 msgid ""
 "Block=%u file,blk=%u,%u blen=%u First rec FI=%s SessId=%u SessTim=%u Strm=%s "
 "rlen=%d\n"
 msgstr ""
 
-#: src/stored/btape.c:2139
+#: src/stored/btape.c:2141
 #, c-format
 msgid "Device status: %u. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2171
+#: src/stored/btape.c:2173
 #, c-format
 msgid ""
 "\n"
@@ -10442,79 +10515,79 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2189
+#: src/stored/btape.c:2191
 msgid ""
 "Do you want to run the simplified test (s) with one tape\n"
 "or the complete multiple tape (m) test: (s/m) "
 msgstr ""
 
-#: src/stored/btape.c:2192
+#: src/stored/btape.c:2194
 msgid "Simple test (single tape) selected.\n"
 msgstr ""
 
-#: src/stored/btape.c:2195
+#: src/stored/btape.c:2197
 msgid "Multiple tape test selected.\n"
 msgstr ""
 
-#: src/stored/btape.c:2237
+#: src/stored/btape.c:2239
 msgid "Wrote Start of Session label.\n"
 msgstr ""
 
-#: src/stored/btape.c:2256
+#: src/stored/btape.c:2258
 #, c-format
 msgid "%s Begin writing Bacula records to tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2258
+#: src/stored/btape.c:2260
 #, c-format
 msgid "%s Begin writing Bacula records to first tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2284
+#: src/stored/btape.c:2286
 msgid "Flush block failed.\n"
 msgstr ""
 
-#: src/stored/btape.c:2298
+#: src/stored/btape.c:2300
 #, c-format
 msgid "Wrote block=%u, file,blk=%u,%u VolBytes=%s rate=%sB/s\n"
 msgstr ""
 
-#: src/stored/btape.c:2309
+#: src/stored/btape.c:2311
 #, c-format
 msgid "%s Flush block, write EOF\n"
 msgstr ""
 
-#: src/stored/btape.c:2318
+#: src/stored/btape.c:2320
 msgid "Wrote 1000 blocks on second tape. Done.\n"
 msgstr ""
 
-#: src/stored/btape.c:2323
+#: src/stored/btape.c:2325
 msgid "Not OK\n"
 msgstr ""
 
-#: src/stored/btape.c:2347
+#: src/stored/btape.c:2349
 msgid "Job canceled.\n"
 msgstr ""
 
-#: src/stored/btape.c:2358
+#: src/stored/btape.c:2360
 msgid "Set ok=false after write_block_to_device.\n"
 msgstr ""
 
-#: src/stored/btape.c:2362
+#: src/stored/btape.c:2364
 msgid "Wrote End of Session label.\n"
 msgstr ""
 
-#: src/stored/btape.c:2386
+#: src/stored/btape.c:2388
 #, c-format
 msgid "Wrote state file last_block_num1=%d last_block_num2=%d\n"
 msgstr ""
 
-#: src/stored/btape.c:2390
+#: src/stored/btape.c:2392
 #, c-format
 msgid "Could not create state file: %s ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2401
+#: src/stored/btape.c:2403
 #, c-format
 msgid ""
 "\n"
@@ -10522,7 +10595,7 @@ msgid ""
 "%s Done filling tape at %d:%d. Now beginning re-read of tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2404
+#: src/stored/btape.c:2406
 #, c-format
 msgid ""
 "\n"
@@ -10530,23 +10603,23 @@ msgid ""
 "%s Done filling tapes at %d:%d. Now beginning re-read of first tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2410
+#: src/stored/btape.c:2412
 msgid "do_unfill failed.\n"
 msgstr ""
 
-#: src/stored/btape.c:2415
+#: src/stored/btape.c:2417
 #, c-format
 msgid "%s: Error during test.\n"
 msgstr ""
 
-#: src/stored/btape.c:2450
+#: src/stored/btape.c:2452
 msgid ""
 "\n"
 "The state file level has changed. You must redo\n"
 "the fill command.\n"
 msgstr ""
 
-#: src/stored/btape.c:2457
+#: src/stored/btape.c:2459
 #, c-format
 msgid ""
 "\n"
@@ -10554,95 +10627,95 @@ msgid ""
 "You must redo the fill command.\n"
 msgstr ""
 
-#: src/stored/btape.c:2523
+#: src/stored/btape.c:2525
 msgid "Mount first tape. Press enter when ready: "
 msgstr ""
 
-#: src/stored/btape.c:2539
+#: src/stored/btape.c:2541
 msgid "Rewinding.\n"
 msgstr ""
 
-#: src/stored/btape.c:2544
+#: src/stored/btape.c:2546
 #, c-format
 msgid "Reading the first 10000 records from %u:%u.\n"
 msgstr ""
 
-#: src/stored/btape.c:2548 src/stored/btape.c:2616
+#: src/stored/btape.c:2550 src/stored/btape.c:2618
 #, c-format
 msgid "Reposition from %u:%u to %u:%u\n"
 msgstr ""
 
-#: src/stored/btape.c:2551 src/stored/btape.c:2603 src/stored/btape.c:2619
+#: src/stored/btape.c:2553 src/stored/btape.c:2605 src/stored/btape.c:2621
 #, c-format
 msgid "Reposition error. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2554
+#: src/stored/btape.c:2556
 #, c-format
 msgid "Reading block %u.\n"
 msgstr ""
 
-#: src/stored/btape.c:2556 src/stored/btape.c:2608 src/stored/btape.c:2624
+#: src/stored/btape.c:2558 src/stored/btape.c:2610 src/stored/btape.c:2626
 #, c-format
 msgid "Error reading block: ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2561
+#: src/stored/btape.c:2563
 msgid ""
 "\n"
 "The last block on the tape matches. Test succeeded.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2564
+#: src/stored/btape.c:2566
 msgid ""
 "\n"
 "The last block of the first tape matches.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2588
+#: src/stored/btape.c:2590
 msgid "Mount second tape. Press enter when ready: "
 msgstr ""
 
-#: src/stored/btape.c:2601
+#: src/stored/btape.c:2603
 #, c-format
 msgid "Reposition from %u:%u to 0:1\n"
 msgstr ""
 
-#: src/stored/btape.c:2606 src/stored/btape.c:2622
+#: src/stored/btape.c:2608 src/stored/btape.c:2624
 #, c-format
 msgid "Reading block %d.\n"
 msgstr ""
 
-#: src/stored/btape.c:2612
+#: src/stored/btape.c:2614
 msgid ""
 "\n"
 "The first block on the second tape matches.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2628
+#: src/stored/btape.c:2630
 msgid ""
 "\n"
 "The last block on the second tape matches. Test succeeded.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2645
+#: src/stored/btape.c:2647
 #, c-format
 msgid "10000 records read now at %d:%d\n"
 msgstr ""
 
-#: src/stored/btape.c:2671 src/stored/btape.c:2682 src/stored/btape.c:2727
+#: src/stored/btape.c:2673 src/stored/btape.c:2684 src/stored/btape.c:2729
 msgid "Last block written"
 msgstr ""
 
-#: src/stored/btape.c:2673 src/stored/btape.c:2683
+#: src/stored/btape.c:2675 src/stored/btape.c:2685
 msgid "Block read back"
 msgstr ""
 
-#: src/stored/btape.c:2674
+#: src/stored/btape.c:2676
 #, c-format
 msgid ""
 "\n"
@@ -10650,7 +10723,7 @@ msgid ""
 "The blocks differ at byte %u\n"
 msgstr ""
 
-#: src/stored/btape.c:2675
+#: src/stored/btape.c:2677
 msgid ""
 "\n"
 "\n"
@@ -10660,172 +10733,172 @@ msgid ""
 "to write multi-tape Volumes.!!!!\n"
 msgstr ""
 
-#: src/stored/btape.c:2711
+#: src/stored/btape.c:2713
 #, c-format
 msgid "Last block at: %u:%u this_dev_block_num=%d\n"
 msgstr ""
 
-#: src/stored/btape.c:2725
+#: src/stored/btape.c:2727
 #, c-format
 msgid "Block not written: FileIndex=%u blk_block=%u Size=%u\n"
 msgstr ""
 
-#: src/stored/btape.c:2729
+#: src/stored/btape.c:2731
 msgid "Block not written"
 msgstr ""
 
-#: src/stored/btape.c:2744
+#: src/stored/btape.c:2746
 #, c-format
 msgid "End of tape %d:%d. Volume Bytes=%s. Write rate = %sB/s\n"
 msgstr ""
 
-#: src/stored/btape.c:2795
+#: src/stored/btape.c:2797
 msgid "Test writing blocks of 64512 bytes to tape.\n"
 msgstr ""
 
-#: src/stored/btape.c:2797
+#: src/stored/btape.c:2799
 msgid "How many blocks do you want to write? (1000): "
 msgstr ""
 
-#: src/stored/btape.c:2814
+#: src/stored/btape.c:2816
 #, c-format
 msgid "Begin writing %d Bacula blocks to tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2857
+#: src/stored/btape.c:2859
 #, c-format
 msgid "Begin writing raw blocks of %u bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:2888
+#: src/stored/btape.c:2890
 msgid "test autochanger"
 msgstr ""
 
-#: src/stored/btape.c:2889
+#: src/stored/btape.c:2891
 msgid "backspace file"
 msgstr ""
 
-#: src/stored/btape.c:2890
+#: src/stored/btape.c:2892
 msgid "backspace record"
 msgstr ""
 
-#: src/stored/btape.c:2891
+#: src/stored/btape.c:2893
 msgid "list device capabilities"
 msgstr ""
 
-#: src/stored/btape.c:2892
+#: src/stored/btape.c:2894
 msgid "clear tape errors"
 msgstr ""
 
-#: src/stored/btape.c:2893
+#: src/stored/btape.c:2895
 msgid "go to end of Bacula data for append"
 msgstr ""
 
-#: src/stored/btape.c:2894
+#: src/stored/btape.c:2896
 msgid "go to the physical end of medium"
 msgstr ""
 
-#: src/stored/btape.c:2895
+#: src/stored/btape.c:2897
 msgid "fill tape, write onto second volume"
 msgstr ""
 
-#: src/stored/btape.c:2896
+#: src/stored/btape.c:2898
 msgid "read filled tape"
 msgstr ""
 
-#: src/stored/btape.c:2897
+#: src/stored/btape.c:2899
 msgid "forward space a file"
 msgstr ""
 
-#: src/stored/btape.c:2898
+#: src/stored/btape.c:2900
 msgid "forward space a record"
 msgstr ""
 
-#: src/stored/btape.c:2899
+#: src/stored/btape.c:2901
 msgid "print this command"
 msgstr ""
 
-#: src/stored/btape.c:2900
+#: src/stored/btape.c:2902
 msgid "write a Bacula label to the tape"
 msgstr ""
 
-#: src/stored/btape.c:2901
+#: src/stored/btape.c:2903
 msgid "load a tape"
 msgstr ""
 
-#: src/stored/btape.c:2902
+#: src/stored/btape.c:2904
 msgid "quit btape"
 msgstr ""
 
-#: src/stored/btape.c:2903
+#: src/stored/btape.c:2905
 msgid "use write() to fill tape"
 msgstr ""
 
-#: src/stored/btape.c:2904
+#: src/stored/btape.c:2906
 msgid "read and print the Bacula tape label"
 msgstr ""
 
-#: src/stored/btape.c:2905
+#: src/stored/btape.c:2907
 msgid "test record handling functions"
 msgstr ""
 
-#: src/stored/btape.c:2906
+#: src/stored/btape.c:2908
 msgid "rewind the tape"
 msgstr ""
 
-#: src/stored/btape.c:2907
+#: src/stored/btape.c:2909
 msgid "read() tape block by block to EOT and report"
 msgstr ""
 
-#: src/stored/btape.c:2908
+#: src/stored/btape.c:2910
 msgid "Bacula read block by block to EOT and report"
 msgstr ""
 
-#: src/stored/btape.c:2909
+#: src/stored/btape.c:2911
 msgid ""
 "[file_size=n(GB)|nb_file=3|skip_zero|skip_random|skip_raw|skip_block] report "
 "drive speed"
 msgstr ""
 
-#: src/stored/btape.c:2910
+#: src/stored/btape.c:2912
 msgid "print tape status"
 msgstr ""
 
-#: src/stored/btape.c:2911
+#: src/stored/btape.c:2913
 msgid "General test Bacula tape functions"
 msgstr ""
 
-#: src/stored/btape.c:2912
+#: src/stored/btape.c:2914
 msgid "write an EOF on the tape"
 msgstr ""
 
-#: src/stored/btape.c:2913
+#: src/stored/btape.c:2915
 msgid "write a single Bacula block"
 msgstr ""
 
-#: src/stored/btape.c:2914
+#: src/stored/btape.c:2916
 msgid "read a single record"
 msgstr ""
 
-#: src/stored/btape.c:2915
+#: src/stored/btape.c:2917
 msgid "read a single Bacula block"
 msgstr ""
 
-#: src/stored/btape.c:2916
+#: src/stored/btape.c:2918
 msgid "quick fill command"
 msgstr ""
 
-#: src/stored/btape.c:2937
+#: src/stored/btape.c:2939
 #, c-format
 msgid "\"%s\" is an invalid command\n"
 msgstr ""
 
-#: src/stored/btape.c:2946
+#: src/stored/btape.c:2948
 #, c-format
 msgid "Interactive commands:\n"
 msgstr ""
 
-#: src/stored/btape.c:2957
+#: src/stored/btape.c:2959
 #, c-format
 msgid ""
 "\n"
@@ -10843,22 +10916,22 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:3045
+#: src/stored/btape.c:3047
 #, c-format
 msgid "Mount second Volume on device %s and press return when ready: "
 msgstr ""
 
-#: src/stored/btape.c:3073
+#: src/stored/btape.c:3075
 #, c-format
 msgid "Mount blank Volume on device %s and press return when ready: "
 msgstr ""
 
-#: src/stored/btape.c:3093
+#: src/stored/btape.c:3095
 #, c-format
 msgid "End of Volume \"%s\" %d records.\n"
 msgstr ""
 
-#: src/stored/btape.c:3107
+#: src/stored/btape.c:3109
 #, c-format
 msgid "Read block=%u, VolBytes=%s rate=%sB/s\n"
 msgstr ""
@@ -10930,220 +11003,242 @@ msgstr ""
 msgid "JobId=%s, Job %s waiting to reserve a device.\n"
 msgstr ""
 
-#: src/stored/block.c:89
+#: src/stored/block.c:102
 #, c-format
 msgid ""
 "Dump block %s %x: size=%d BlkNum=%d\n"
 "               Hdrcksum=%x cksum=%x\n"
 msgstr ""
 
-#: src/stored/block.c:102
+#: src/stored/block.c:115
 #, c-format
 msgid "   Rec: VId=%u VT=%u FI=%s Strm=%s len=%d p=%x\n"
 msgstr ""
 
-#: src/stored/block.c:158
+#: src/stored/block.c:171
 #, c-format
 msgid "%d block read errors not printed.\n"
 msgstr ""
 
-#: src/stored/block.c:248 src/stored/block.c:264 src/stored/block.c:274
+#: src/stored/block.c:264 src/stored/block.c:280 src/stored/block.c:290
 #, c-format
 msgid ""
 "Volume data error at %u:%u! Wanted ID: \"%s\", got \"%s\". Buffer "
 "discarded.\n"
 msgstr ""
 
-#: src/stored/block.c:289
+#: src/stored/block.c:305
 #, c-format
 msgid ""
 "Volume data error at %u:%u! Block length %u is insane (too large), probably "
 "due to a bad archive.\n"
 msgstr ""
 
-#: src/stored/block.c:315
+#: src/stored/block.c:331
 #, c-format
 msgid ""
 "Volume data error at %u:%u!\n"
 "Block checksum mismatch in block=%u len=%d: calc=%x blk=%x\n"
 msgstr ""
 
-#: src/stored/block.c:434
+#: src/stored/block.c:452
 #, c-format
 msgid "Cannot write block. Device at EOM. dev=%s\n"
 msgstr ""
 
-#: src/stored/block.c:439
+#: src/stored/block.c:458
 #, c-format
 msgid "Attempt to write on read-only Volume. dev=%s\n"
 msgstr ""
 
-#: src/stored/block.c:444
+#: src/stored/block.c:464
 #, c-format
 msgid "Attempt to write on closed device=%s\n"
 msgstr ""
 
-#: src/stored/block.c:491
+#: src/stored/block.c:513
 #, c-format
 msgid "User defined maximum volume capacity %s exceeded on device %s.\n"
 msgstr ""
 
-#: src/stored/block.c:506
+#: src/stored/block.c:528
 #, c-format
 msgid "Unable to write EOF. ERR=%s\n"
 msgstr ""
 
-#: src/stored/block.c:532 src/stored/block.c:557
+#: src/stored/block.c:554 src/stored/block.c:588
 msgid "Write block header zeroed.\n"
 msgstr ""
 
-#: src/stored/block.c:576
+#: src/stored/block.c:580
+#, c-format
+msgid "Block checksum changed during write: before=%ud after=%ud\n"
+msgstr ""
+
+#: src/stored/block.c:607
 #, c-format
 msgid "Write error at %u:%u on device %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/block.c:583
+#: src/stored/block.c:614
 #, c-format
 msgid "End of Volume \"%s\" at %u:%u on device %s. Write of %u bytes got %d.\n"
 msgstr ""
 
-#: src/stored/block.c:664 src/stored/block.c:670
+#: src/stored/block.c:695 src/stored/block.c:701
 #, c-format
 msgid "Backspace file at EOT failed. ERR=%s\n"
 msgstr ""
 
-#: src/stored/block.c:677
+#: src/stored/block.c:708
 #, c-format
 msgid "Backspace record at EOT failed. ERR=%s\n"
 msgstr ""
 
-#: src/stored/block.c:694
+#: src/stored/block.c:725
 #, c-format
 msgid "Re-read last block at EOT failed. ERR=%s"
 msgstr ""
 
-#: src/stored/block.c:704
+#: src/stored/block.c:735
 #, c-format
 msgid ""
 "Re-read of last block: block numbers differ by more than one.\n"
 "Probable tape misconfiguration and data loss. Read block=%u Want block=%u.\n"
 msgstr ""
 
-#: src/stored/block.c:709
+#: src/stored/block.c:740
 #, c-format
 msgid ""
 "Re-read of last block OK, but block numbers differ. Read block=%u Want block="
 "%u.\n"
 msgstr ""
 
-#: src/stored/block.c:713
+#: src/stored/block.c:744
 msgid "Re-read of last block succeeded.\n"
 msgstr ""
 
-#: src/stored/block.c:745
+#: src/stored/block.c:777
 #, c-format
 msgid ""
 "Error writing final EOF to tape. This Volume may not be readable.\n"
 "%s"
 msgstr ""
 
-#: src/stored/block.c:759
+#: src/stored/block.c:791
 #, c-format
 msgid ""
 "Error writing final part to DVD. This Volume may not be readable.\n"
 "%s"
 msgstr ""
 
-#: src/stored/block.c:861
+#: src/stored/block.c:801
+msgid "Error sending Volume info to Director.\n"
+msgstr ""
+
+#: src/stored/block.c:896
 #, c-format
 msgid ""
 "Error while writing, current part number is less than the total number of "
 "parts (%d/%d, device=%s)\n"
 msgstr ""
 
-#: src/stored/block.c:869
+#: src/stored/block.c:904
 #, c-format
 msgid "Unable to open device next part %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/block.c:889
+#: src/stored/block.c:924
 #, c-format
 msgid ""
 "End of Volume \"%s\" at %u:%u on device %s (part_size=%s, free_space=%s, "
 "free_space_errno=%d, errmsg=%s).\n"
 msgstr ""
 
-#: src/stored/block.c:902
+#: src/stored/block.c:937
 #, c-format
 msgid ""
 "End of Volume \"%s\" at %u:%u on device %s (part_size=%s, free_space=%s, "
 "free_space_errno=%d).\n"
 msgstr ""
 
-#: src/stored/block.c:962
+#: src/stored/block.c:980
+msgid "Job failed or canceled.\n"
+msgstr ""
+
+#: src/stored/block.c:986
+msgid "Attempt to read past end of tape or file.\n"
+msgstr ""
+
+#: src/stored/block.c:995
+#, c-format
+msgid "Attempt to read closed device: fd=%d at file:blk %u:%u on device %s\n"
+msgstr ""
+
+#: src/stored/block.c:1005
 #, c-format
 msgid "Block buffer size looping problem on device %s\n"
 msgstr ""
 
-#: src/stored/block.c:974
+#: src/stored/block.c:1017
 #, c-format
 msgid "Unable to open device part=%d %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/block.c:1000
+#: src/stored/block.c:1044
 #, c-format
 msgid "Read error on fd=%d at file:blk %u:%u on device %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/block.c:1013
+#: src/stored/block.c:1057
 #, c-format
 msgid "Read zero bytes at %u:%u on device %s.\n"
 msgstr ""
 
-#: src/stored/block.c:1037
+#: src/stored/block.c:1081
 #, c-format
 msgid ""
 "Volume data error at %u:%u! Very short block of %d bytes on device %s "
 "discarded.\n"
 msgstr ""
 
-#: src/stored/block.c:1062
+#: src/stored/block.c:1107
 #, c-format
 msgid "Block length %u is greater than buffer %u. Attempting recovery.\n"
 msgstr ""
 
-#: src/stored/block.c:1081
+#: src/stored/block.c:1127
 #, c-format
 msgid "Setting block buffer size to %u bytes.\n"
 msgstr ""
 
-#: src/stored/block.c:1096
+#: src/stored/block.c:1142
 #, c-format
 msgid ""
 "Volume data error at %u:%u! Short block of %d bytes on device %s discarded.\n"
 msgstr ""
 
-#: src/lib/plugins.c:112
+#: src/lib/plugins.c:117
 #, c-format
 msgid "Failed to open Plugin directory %s: ERR=%s\n"
 msgstr ""
 
-#: src/lib/plugins.c:129
+#: src/lib/plugins.c:134
 #, c-format
 msgid "Failed to find any plugins in %s\n"
 msgstr ""
 
-#: src/lib/plugins.c:163
+#: src/lib/plugins.c:168
 #, c-format
 msgid "dlopen plugin %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/plugins.c:174
+#: src/lib/plugins.c:179
 #, c-format
 msgid "Lookup of loadPlugin in plugin %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/plugins.c:183
+#: src/lib/plugins.c:188
 #, c-format
 msgid "Lookup of unloadPlugin in plugin %s failed: ERR=%s\n"
 msgstr ""
@@ -11313,56 +11408,72 @@ msgstr ""
 msgid "Damaged buffer:  %6u bytes allocated at line %d of %s %s\n"
 msgstr ""
 
-#: src/lib/rwlock.c:302
-msgid "rwl_writeunlock called too many times.\n"
+#: src/lib/sellist.c:69
+msgid "Negative numbers not permitted.\n"
+msgstr ""
+
+#: src/lib/sellist.c:106
+msgid "Selection items must be be greater than zero.\n"
+msgstr ""
+
+#: src/lib/sellist.c:110
+msgid "Selection item too large.\n"
+msgstr ""
+
+#: src/lib/sellist.c:167
+msgid "No input string given.\n"
 msgstr ""
 
 #: src/lib/rwlock.c:307
+msgid "rwl_writeunlock called too many times.\n"
+msgstr ""
+
+#: src/lib/rwlock.c:312
 msgid "rwl_writeunlock by non-owner.\n"
 msgstr ""
 
-#: src/lib/rwlock.c:432 src/lib/save/devlock.c:501 src/lib/devlock.c:501
+#: src/lib/rwlock.c:437 src/lib/save/devlock.c:501 src/lib/devlock.c:501
 #, c-format
 msgid "Thread %d found unchanged elements %d times\n"
 msgstr ""
 
-#: src/lib/rwlock.c:502 src/lib/save/devlock.c:571 src/lib/devlock.c:571
+#: src/lib/rwlock.c:507 src/lib/save/devlock.c:571 src/lib/devlock.c:571
 #, c-format
 msgid "%02d: interval %d, writes %d, reads %d\n"
 msgstr ""
 
-#: src/lib/rwlock.c:512 src/lib/save/devlock.c:581 src/lib/devlock.c:581
+#: src/lib/rwlock.c:517 src/lib/save/devlock.c:581 src/lib/devlock.c:581
 #, c-format
 msgid "data %02d: value %d, %d writes\n"
 msgstr ""
 
-#: src/lib/rwlock.c:517 src/lib/save/devlock.c:586 src/lib/devlock.c:586
+#: src/lib/rwlock.c:522 src/lib/save/devlock.c:586 src/lib/devlock.c:586
 #, c-format
 msgid "Total: %d thread writes, %d data writes\n"
 msgstr ""
 
-#: src/lib/rwlock.c:589 src/lib/save/devlock.c:658 src/lib/devlock.c:658
+#: src/lib/rwlock.c:594 src/lib/save/devlock.c:658 src/lib/devlock.c:658
 msgid "Try write lock"
 msgstr ""
 
-#: src/lib/rwlock.c:595 src/lib/save/devlock.c:664 src/lib/devlock.c:664
+#: src/lib/rwlock.c:600 src/lib/save/devlock.c:664 src/lib/devlock.c:664
 msgid "Try read lock"
 msgstr ""
 
-#: src/lib/rwlock.c:651 src/lib/save/devlock.c:720 src/lib/devlock.c:720
+#: src/lib/rwlock.c:656 src/lib/save/devlock.c:720 src/lib/devlock.c:720
 msgid "Create thread"
 msgstr ""
 
-#: src/lib/rwlock.c:661 src/lib/save/devlock.c:730 src/lib/devlock.c:730
+#: src/lib/rwlock.c:666 src/lib/save/devlock.c:730 src/lib/devlock.c:730
 msgid "Join thread"
 msgstr ""
 
-#: src/lib/rwlock.c:663 src/lib/save/devlock.c:732 src/lib/devlock.c:732
+#: src/lib/rwlock.c:668 src/lib/save/devlock.c:732 src/lib/devlock.c:732
 #, c-format
 msgid "%02d: interval %d, updates %d, r_collisions %d, w_collisions %d\n"
 msgstr ""
 
-#: src/lib/rwlock.c:675 src/lib/save/devlock.c:744 src/lib/devlock.c:744
+#: src/lib/rwlock.c:680 src/lib/save/devlock.c:744 src/lib/devlock.c:744
 #, c-format
 msgid "data %02d: value %d, %d updates\n"
 msgstr ""
@@ -11376,158 +11487,153 @@ msgstr ""
 msgid "bget_msg: unknown signal %d\n"
 msgstr ""
 
-#: src/lib/bsock.c:126
+#: src/lib/bsock.c:131
 #, c-format
 msgid ""
 "Could not connect to %s on %s:%d. ERR=%s\n"
 "Retrying ...\n"
 msgstr ""
 
-#: src/lib/bsock.c:132
+#: src/lib/bsock.c:137
 #, c-format
 msgid "Unable to connect to %s on %s:%d. ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:202
+#: src/lib/bsock.c:207
 #, c-format
-msgid "gethostbyname() for host \"%s\" failed: ERR=%s\n"
+msgid "bnet_host2ipaddrs() for host \"%s\" failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:222
+#: src/lib/bsock.c:260
 #, c-format
 msgid "Socket open error. proto=%d port=%d. ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:233
+#: src/lib/bsock.c:273
 #, c-format
 msgid "Source address bind error. proto=%d. ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:244 src/lib/bsock.c:280 src/lib/bnet_server.c:201
+#: src/lib/bsock.c:284 src/lib/bsock.c:320 src/lib/bnet_server.c:218
 #, c-format
 msgid "Cannot set SO_KEEPALIVE on socket: %s\n"
 msgstr ""
 
-#: src/lib/bsock.c:252
+#: src/lib/bsock.c:292
 #, c-format
-msgid "Cannot set SO_KEEPIDLE on socket: %s\n"
+msgid "Cannot set TCP_KEEPIDLE on socket: %s\n"
 msgstr ""
 
-#: src/lib/bsock.c:299
+#: src/lib/bsock.c:339
 #, c-format
 msgid "Could not init bsock mutex. ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:334
+#: src/lib/bsock.c:374
 #, c-format
 msgid "Socket has errors=%d on call to %s:%s:%d\n"
 msgstr ""
 
-#: src/lib/bsock.c:341
+#: src/lib/bsock.c:381
 #, c-format
 msgid "Socket is terminated=%d on call to %s:%s:%d\n"
 msgstr ""
 
-#: src/lib/bsock.c:349
+#: src/lib/bsock.c:389
 #, c-format
 msgid "Socket has insane msglen=%d on call to %s:%s:%d\n"
 msgstr ""
 
-#: src/lib/bsock.c:387
+#: src/lib/bsock.c:427
 #, c-format
 msgid "Write error sending %d bytes to %s:%s:%d: ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:393
+#: src/lib/bsock.c:433
 #, c-format
 msgid "Wrote %d bytes to %s:%s:%d, but only %d accepted.\n"
 msgstr ""
 
-#: src/lib/bsock.c:482 src/lib/bsock.c:543
+#: src/lib/bsock.c:522 src/lib/bsock.c:583
 #, c-format
 msgid "Read expected %d got %d from %s:%s:%d\n"
 msgstr ""
 
-#: src/lib/bsock.c:502
+#: src/lib/bsock.c:542
 #, c-format
 msgid "Packet size too big from \"%s:%s:%d. Terminating connection.\n"
 msgstr ""
 
-#: src/lib/bsock.c:532
+#: src/lib/bsock.c:572
 #, c-format
 msgid "Read error from %s:%s:%d: ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:623
+#: src/lib/bsock.c:663
 msgid "fread attr spool I/O error.\n"
 msgstr ""
 
-#: src/lib/bsock.c:684
+#: src/lib/bsock.c:724
 msgid "Could not malloc BSOCK data buffer\n"
 msgstr ""
 
-#: src/lib/bsock.c:702 src/lib/bsock.c:726
+#: src/lib/bsock.c:742 src/lib/bsock.c:761
 #, c-format
 msgid "sockopt error: %s\n"
 msgstr ""
 
-#: src/lib/bsock.c:708 src/lib/bsock.c:732
+#: src/lib/bsock.c:748 src/lib/bsock.c:767
 #, c-format
 msgid "Warning network buffer = %d bytes not max size.\n"
 msgstr ""
 
-#: src/lib/bsock.c:712 src/lib/bsock.c:736
-#, c-format
-msgid "Network buffer size %d not multiple of tape block size.\n"
-msgstr ""
-
-#: src/lib/bsock.c:757 src/lib/bsock.c:791
+#: src/lib/bsock.c:787 src/lib/bsock.c:821
 #, c-format
 msgid "fcntl F_GETFL error. ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:763 src/lib/bsock.c:797 src/lib/bsock.c:829
+#: src/lib/bsock.c:793 src/lib/bsock.c:827 src/lib/bsock.c:859
 #, c-format
 msgid "fcntl F_SETFL error. ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:1002 src/qt-console/bcomm/dircomm_auth.cpp:112
+#: src/lib/bsock.c:1032 src/qt-console/bcomm/dircomm_auth.cpp:112
 #, c-format
 msgid "Director authorization problem at \"%s:%d\"\n"
 msgstr ""
 
-#: src/lib/bsock.c:1009 src/qt-console/bcomm/dircomm_auth.cpp:119
+#: src/lib/bsock.c:1039 src/qt-console/bcomm/dircomm_auth.cpp:119
 #, c-format
 msgid ""
 "Authorization problem: Remote server at \"%s:%d\" did not advertise required "
 "TLS support.\n"
 msgstr ""
 
-#: src/lib/bsock.c:1017 src/qt-console/bcomm/dircomm_auth.cpp:127
+#: src/lib/bsock.c:1047 src/qt-console/bcomm/dircomm_auth.cpp:127
 #, c-format
 msgid ""
 "Authorization problem with Director at \"%s:%d\": Remote server requires "
 "TLS.\n"
 msgstr ""
 
-#: src/lib/bsock.c:1029 src/qt-console/bcomm/dircomm_auth.cpp:138
+#: src/lib/bsock.c:1059 src/qt-console/bcomm/dircomm_auth.cpp:138
 #, c-format
 msgid "TLS negotiation failed with Director at \"%s:%d\"\n"
 msgstr ""
 
-#: src/lib/bsock.c:1039 src/qt-console/bcomm/dircomm_auth.cpp:150
+#: src/lib/bsock.c:1069 src/qt-console/bcomm/dircomm_auth.cpp:150
 #, c-format
 msgid ""
 "Bad response to Hello command: ERR=%s\n"
 "The Director at \"%s:%d\" is probably not running.\n"
 msgstr ""
 
-#: src/lib/bsock.c:1048 src/qt-console/bcomm/dircomm_auth.cpp:159
+#: src/lib/bsock.c:1078 src/qt-console/bcomm/dircomm_auth.cpp:159
 #, c-format
 msgid "Director at \"%s:%d\" rejected Hello command\n"
 msgstr ""
 
-#: src/lib/bsock.c:1058 src/qt-console/bcomm/dircomm_auth.cpp:171
+#: src/lib/bsock.c:1088 src/qt-console/bcomm/dircomm_auth.cpp:171
 #, c-format
 msgid ""
 "Authorization problem with Director at \"%s:%d\"\n"
@@ -11537,40 +11643,40 @@ msgid ""
 "Please see "
 msgstr ""
 
-#: src/lib/message.c:340 src/lib/message.c:350
+#: src/lib/message.c:362 src/lib/message.c:372
 #, c-format
 msgid "Could not open console message file %s: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:355
+#: src/lib/message.c:377
 #, c-format
 msgid "Could not get con mutex: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:460
+#: src/lib/message.c:482
 msgid "Bacula Message"
 msgstr ""
 
-#: src/lib/message.c:464
+#: src/lib/message.c:486
 #, c-format
 msgid "open mail pipe %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:532
+#: src/lib/message.c:577
 msgid "open mail pipe failed.\n"
 msgstr ""
 
-#: src/lib/message.c:544
+#: src/lib/message.c:590
 #, c-format
 msgid "close error: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:555
+#: src/lib/message.c:601
 #, c-format
 msgid "Mail prog: %s"
 msgstr ""
 
-#: src/lib/message.c:564
+#: src/lib/message.c:610
 #, c-format
 msgid ""
 "Mail program terminated in error.\n"
@@ -11578,12 +11684,16 @@ msgid ""
 "ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:662
+#: src/lib/message.c:713
 #, c-format
 msgid "fopen %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:835
+#: src/lib/message.c:835 src/lib/message.c:838
+msgid "Msg delivery error: Unable to store data in database.\n"
+msgstr ""
+
+#: src/lib/message.c:890
 #, c-format
 msgid ""
 "Msg delivery error: Operator mail program terminated in error.\n"
@@ -11591,126 +11701,126 @@ msgid ""
 "ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:856
+#: src/lib/message.c:911
 #, c-format
 msgid "Msg delivery error: fopen %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:1175
+#: src/lib/message.c:1230
 #, c-format
 msgid "%s: ABORTING due to ERROR in %s:%d\n"
 msgstr ""
 
-#: src/lib/message.c:1179
+#: src/lib/message.c:1234
 #, c-format
 msgid "%s: ERROR TERMINATION at %s:%d\n"
 msgstr ""
 
-#: src/lib/message.c:1184
+#: src/lib/message.c:1239
 #, c-format
 msgid "%s: Fatal Error because: "
 msgstr ""
 
-#: src/lib/message.c:1186
+#: src/lib/message.c:1241
 #, c-format
 msgid "%s: Fatal Error at %s:%d because:\n"
 msgstr ""
 
-#: src/lib/message.c:1190
+#: src/lib/message.c:1245
 #, c-format
 msgid "%s: ERROR: "
 msgstr ""
 
-#: src/lib/message.c:1192
+#: src/lib/message.c:1247
 #, c-format
 msgid "%s: ERROR in %s:%d "
 msgstr ""
 
-#: src/lib/message.c:1195
+#: src/lib/message.c:1250
 #, c-format
 msgid "%s: Warning: "
 msgstr ""
 
-#: src/lib/message.c:1198
+#: src/lib/message.c:1253
 #, c-format
 msgid "%s: Security violation: "
 msgstr ""
 
-#: src/lib/message.c:1286
+#: src/lib/message.c:1341
 #, c-format
 msgid "%s ABORTING due to ERROR\n"
 msgstr ""
 
-#: src/lib/message.c:1289
+#: src/lib/message.c:1344
 #, c-format
 msgid "%s ERROR TERMINATION\n"
 msgstr ""
 
-#: src/lib/message.c:1292
+#: src/lib/message.c:1347
 #, c-format
 msgid "%s JobId %u: Fatal error: "
 msgstr ""
 
-#: src/lib/message.c:1301
+#: src/lib/message.c:1356
 #, c-format
 msgid "%s JobId %u: Error: "
 msgstr ""
 
-#: src/lib/message.c:1307
+#: src/lib/message.c:1362
 #, c-format
 msgid "%s JobId %u: Warning: "
 msgstr ""
 
-#: src/lib/message.c:1313
+#: src/lib/message.c:1368
 #, c-format
 msgid "%s JobId %u: Security violation: "
 msgstr ""
 
-#: src/lib/bnet_server.c:108
+#: src/lib/bnet_server.c:125
 #, c-format
 msgid "Cannot open stream socket. ERR=%s. Current %s All %s\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:121
+#: src/lib/bnet_server.c:138
 #, c-format
 msgid "Cannot set SO_REUSEADDR on socket: %s\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:130
+#: src/lib/bnet_server.c:147
 #, c-format
 msgid "Cannot bind port %d: ERR=%s: Retrying ...\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:135
+#: src/lib/bnet_server.c:152
 #, c-format
 msgid "Cannot bind port %d: ERR=%s.\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:146
+#: src/lib/bnet_server.c:163
 #, c-format
 msgid "Could not init client queue: ERR=%s\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:165
+#: src/lib/bnet_server.c:182
 #, c-format
 msgid "Error in select: %s\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:186
+#: src/lib/bnet_server.c:203
 #, c-format
 msgid "Connection from %s:%d refused by hosts.access\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:212
+#: src/lib/bnet_server.c:229
 msgid "Could not create client BSOCK.\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:219
+#: src/lib/bnet_server.c:236
 #, c-format
 msgid "Could not add job to client queue: ERR=%s\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:236
+#: src/lib/bnet_server.c:253
 #, c-format
 msgid "Could not destroy client queue: ERR=%s\n"
 msgstr ""
@@ -12164,7 +12274,7 @@ msgstr ""
 msgid "Truncate"
 msgstr ""
 
-#: src/lib/util.c:409 src/filed/restore.c:1158
+#: src/lib/util.c:409 src/filed/restore.c:1164
 msgid "None"
 msgstr ""
 
@@ -12214,7 +12324,7 @@ msgstr ""
 
 #: src/lib/util.c:753 src/lib/util.c:763 src/lib/util.c:771 src/lib/util.c:778
 #: src/lib/util.c:785 src/lib/util.c:799 src/lib/util.c:809 src/lib/util.c:822
-#: src/lib/util.c:833 src/filed/restore.c:1174
+#: src/lib/util.c:833 src/filed/restore.c:1180
 msgid "*none*"
 msgstr ""
 
@@ -12240,7 +12350,7 @@ msgstr ""
 msgid "writeunlock by non-owner.\n"
 msgstr ""
 
-#: src/lib/daemon.c:64
+#: src/lib/daemon.c:65
 #, c-format
 msgid "Cannot fork to become daemon: ERR=%s\n"
 msgstr ""
@@ -12426,20 +12536,20 @@ msgstr ""
 msgid "pthread_setspecific failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/jcr.c:1097
+#: src/lib/jcr.c:1103
 #, c-format
 msgid ""
 "Watchdog sending kill after %d secs to thread stalled reading Storage "
 "daemon.\n"
 msgstr ""
 
-#: src/lib/jcr.c:1109
+#: src/lib/jcr.c:1115
 #, c-format
 msgid ""
 "Watchdog sending kill after %d secs to thread stalled reading File daemon.\n"
 msgstr ""
 
-#: src/lib/jcr.c:1121
+#: src/lib/jcr.c:1127
 #, c-format
 msgid ""
 "Watchdog sending kill after %d secs to thread stalled reading Director.\n"
@@ -12659,31 +12769,31 @@ msgstr ""
 msgid "TLS enable but not configured.\n"
 msgstr ""
 
-#: src/lib/bnet.c:423
+#: src/lib/bnet.c:481
 msgid "No problem."
 msgstr ""
 
-#: src/lib/bnet.c:426
+#: src/lib/bnet.c:484
 msgid "Authoritative answer for host not found."
 msgstr ""
 
-#: src/lib/bnet.c:429
+#: src/lib/bnet.c:487
 msgid "Non-authoritative for host not found, or ServerFail."
 msgstr ""
 
-#: src/lib/bnet.c:432
+#: src/lib/bnet.c:490
 msgid "Non-recoverable errors, FORMERR, REFUSED, or NOTIMP."
 msgstr ""
 
-#: src/lib/bnet.c:435
+#: src/lib/bnet.c:493
 msgid "Valid name, no data record of resquested type."
 msgstr ""
 
-#: src/lib/bnet.c:438
+#: src/lib/bnet.c:496
 msgid "Unknown error."
 msgstr ""
 
-#: src/lib/bnet.c:697
+#: src/lib/bnet.c:755
 #, c-format
 msgid "Unknown sig %d"
 msgstr ""
@@ -12692,247 +12802,270 @@ msgstr ""
 msgid "Invalid signal number"
 msgstr ""
 
-#: src/lib/signal.c:151 src/lib/signal.c:153
+#: src/lib/signal.c:152 src/lib/signal.c:154
 #, c-format
 msgid "Bacula interrupted by signal %d: %s\n"
 msgstr ""
 
-#: src/lib/signal.c:166
+#: src/lib/signal.c:167
 #, c-format
 msgid "Kaboom! %s, %s got signal %d - %s. Attempting traceback.\n"
 msgstr ""
 
-#: src/lib/signal.c:168
+#: src/lib/signal.c:169
 #, c-format
 msgid "Kaboom! exepath=%s\n"
 msgstr ""
 
-#: src/lib/signal.c:202
+#: src/lib/signal.c:210
 #, c-format
 msgid "Fork error: ERR=%s\n"
 msgstr ""
 
-#: src/lib/signal.c:210
+#: src/lib/signal.c:218
 #, c-format
 msgid "Calling: %s %s %s %s\n"
 msgstr ""
 
-#: src/lib/signal.c:214
+#: src/lib/signal.c:222
 #, c-format
 msgid "execv: %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/signal.c:235
+#: src/lib/signal.c:244
+#, c-format
+msgid "It looks like the traceback worked...\n"
+msgstr ""
+
+#: src/lib/signal.c:246
 #, c-format
-msgid "It looks like the traceback worked ...\n"
+msgid "The btraceback call returned %d\n"
 msgstr ""
 
-#: src/lib/signal.c:289
+#: src/lib/signal.c:306
 #, c-format
 msgid "BA_NSIG too small (%d) should be (%d)\n"
 msgstr ""
 
-#: src/lib/signal.c:295
+#: src/lib/signal.c:312
 msgid "UNKNOWN SIGNAL"
 msgstr ""
 
-#: src/lib/signal.c:296
+#: src/lib/signal.c:313
 msgid "Hangup"
 msgstr ""
 
-#: src/lib/signal.c:297
+#: src/lib/signal.c:314
 msgid "Interrupt"
 msgstr ""
 
-#: src/lib/signal.c:298
+#: src/lib/signal.c:315
 msgid "Quit"
 msgstr ""
 
-#: src/lib/signal.c:299
+#: src/lib/signal.c:316
 msgid "Illegal instruction"
 msgstr ""
 
-#: src/lib/signal.c:300
+#: src/lib/signal.c:317
 msgid "Trace/Breakpoint trap"
 msgstr ""
 
-#: src/lib/signal.c:301
+#: src/lib/signal.c:318
 msgid "Abort"
 msgstr ""
 
-#: src/lib/signal.c:303
+#: src/lib/signal.c:320
 msgid "EMT instruction (Emulation Trap)"
 msgstr ""
 
-#: src/lib/signal.c:306
+#: src/lib/signal.c:323
 msgid "IOT trap"
 msgstr ""
 
-#: src/lib/signal.c:308
+#: src/lib/signal.c:325
 msgid "BUS error"
 msgstr ""
 
-#: src/lib/signal.c:309
+#: src/lib/signal.c:326
 msgid "Floating-point exception"
 msgstr ""
 
-#: src/lib/signal.c:310
+#: src/lib/signal.c:327
 msgid "Kill, unblockable"
 msgstr ""
 
-#: src/lib/signal.c:311
+#: src/lib/signal.c:328
 msgid "User-defined signal 1"
 msgstr ""
 
-#: src/lib/signal.c:312
+#: src/lib/signal.c:329
 msgid "Segmentation violation"
 msgstr ""
 
-#: src/lib/signal.c:313
+#: src/lib/signal.c:330
 msgid "User-defined signal 2"
 msgstr ""
 
-#: src/lib/signal.c:314
+#: src/lib/signal.c:331
 msgid "Broken pipe"
 msgstr ""
 
-#: src/lib/signal.c:315
+#: src/lib/signal.c:332
 msgid "Alarm clock"
 msgstr ""
 
-#: src/lib/signal.c:316
+#: src/lib/signal.c:333
 msgid "Termination"
 msgstr ""
 
-#: src/lib/signal.c:318
+#: src/lib/signal.c:335
 msgid "Stack fault"
 msgstr ""
 
-#: src/lib/signal.c:320
+#: src/lib/signal.c:337
 msgid "Child status has changed"
 msgstr ""
 
-#: src/lib/signal.c:321
+#: src/lib/signal.c:338
 msgid "Continue"
 msgstr ""
 
-#: src/lib/signal.c:322
+#: src/lib/signal.c:339
 msgid "Stop, unblockable"
 msgstr ""
 
-#: src/lib/signal.c:323
+#: src/lib/signal.c:340
 msgid "Keyboard stop"
 msgstr ""
 
-#: src/lib/signal.c:324
+#: src/lib/signal.c:341
 msgid "Background read from tty"
 msgstr ""
 
-#: src/lib/signal.c:325
+#: src/lib/signal.c:342
 msgid "Background write to tty"
 msgstr ""
 
-#: src/lib/signal.c:326
+#: src/lib/signal.c:343
 msgid "Urgent condition on socket"
 msgstr ""
 
-#: src/lib/signal.c:327
+#: src/lib/signal.c:344
 msgid "CPU limit exceeded"
 msgstr ""
 
-#: src/lib/signal.c:328
+#: src/lib/signal.c:345
 msgid "File size limit exceeded"
 msgstr ""
 
-#: src/lib/signal.c:329
+#: src/lib/signal.c:346
 msgid "Virtual alarm clock"
 msgstr ""
 
-#: src/lib/signal.c:330
+#: src/lib/signal.c:347
 msgid "Profiling alarm clock"
 msgstr ""
 
-#: src/lib/signal.c:331
+#: src/lib/signal.c:348
 msgid "Window size change"
 msgstr ""
 
-#: src/lib/signal.c:332
+#: src/lib/signal.c:349
 msgid "I/O now possible"
 msgstr ""
 
-#: src/lib/signal.c:334
+#: src/lib/signal.c:351
 msgid "Power failure restart"
 msgstr ""
 
-#: src/lib/signal.c:337
+#: src/lib/signal.c:354
 msgid "No runnable lwp"
 msgstr ""
 
-#: src/lib/signal.c:340
+#: src/lib/signal.c:357
 msgid "SIGLWP special signal used by thread library"
 msgstr ""
 
-#: src/lib/signal.c:343
+#: src/lib/signal.c:360
 msgid "Checkpoint Freeze"
 msgstr ""
 
-#: src/lib/signal.c:346
+#: src/lib/signal.c:363
 msgid "Checkpoint Thaw"
 msgstr ""
 
-#: src/lib/signal.c:349
+#: src/lib/signal.c:366
 msgid "Thread Cancellation"
 msgstr ""
 
-#: src/lib/signal.c:352
+#: src/lib/signal.c:369
 msgid "Resource Lost (e.g. record-lock lost)"
 msgstr ""
 
+#: src/lib/ini.c:106 src/lib/ini.c:118
+#, c-format
+msgid ""
+"Config file error: %s\n"
+"            : Line %d, col %d of file %s\n"
+"%s\n"
+msgstr ""
+
+#: src/lib/ini.c:308 src/lib/ini.c:383
+#, c-format
+msgid "Cannot open config file %s: %s\n"
+msgstr ""
+
 #: src/lib/btimers.c:265
 msgid "stop_btimer called with NULL btimer_id\n"
 msgstr ""
 
-#: src/lib/bsys.c:215 src/lib/bsys.c:232 src/lib/bsys.c:256 src/lib/bsys.c:269
+#: src/lib/bsys.c:72
+#, c-format
+msgid "safe_unlink could not compile regex pattern \"%s\" ERR=%s\n"
+msgstr ""
+
+#: src/lib/bsys.c:261 src/lib/bsys.c:278 src/lib/bsys.c:302 src/lib/bsys.c:315
 #, c-format
 msgid "Out of memory: ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsys.c:311
+#: src/lib/bsys.c:357
 msgid "Buffer overflow.\n"
 msgstr ""
 
-#: src/lib/bsys.c:377
+#: src/lib/bsys.c:423
 msgid "Bad errno"
 msgstr ""
 
-#: src/lib/bsys.c:392
+#: src/lib/bsys.c:438
 #, c-format
 msgid "Memset for %d bytes at %s:%d\n"
 msgstr ""
 
-#: src/lib/bsys.c:422
+#: src/lib/bsys.c:468
 #, c-format
 msgid "Cannot open pid file. %s ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsys.c:437
+#: src/lib/bsys.c:483
 #, c-format
 msgid ""
 "%s is already running. pid=%d\n"
 "Check file %s\n"
 msgstr ""
 
-#: src/lib/bsys.c:451
+#: src/lib/bsys.c:497
 #, c-format
 msgid "Could not open pid file. %s ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsys.c:562
+#: src/lib/bsys.c:608
 #, c-format
 msgid "Could not create state file. %s ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsys.c:581
+#: src/lib/bsys.c:627
 #, c-format
 msgid "Write final hdr error: ERR=%s\n"
 msgstr ""
@@ -12980,98 +13113,98 @@ msgstr ""
 msgid "Close of NULL file\n"
 msgstr ""
 
-#: src/lib/lex.c:224
+#: src/lib/lex.c:226
 msgid ""
 "get_char: called after EOF. You may have a open double quote without the "
 "closing double quote.\n"
 msgstr ""
 
-#: src/lib/lex.c:267
+#: src/lib/lex.c:268
 #, c-format
 msgid "Config token too long, file: %s, line %d, begins at line %d\n"
 msgstr ""
 
-#: src/lib/lex.c:291
+#: src/lib/lex.c:292
 msgid "none"
 msgstr ""
 
-#: src/lib/lex.c:292
+#: src/lib/lex.c:293
 msgid "comment"
 msgstr ""
 
-#: src/lib/lex.c:293
+#: src/lib/lex.c:294
 msgid "number"
 msgstr ""
 
-#: src/lib/lex.c:294
+#: src/lib/lex.c:295
 msgid "ip_addr"
 msgstr ""
 
-#: src/lib/lex.c:295
+#: src/lib/lex.c:296
 msgid "identifier"
 msgstr ""
 
-#: src/lib/lex.c:296
+#: src/lib/lex.c:297
 msgid "string"
 msgstr ""
 
-#: src/lib/lex.c:297
+#: src/lib/lex.c:298
 msgid "quoted_string"
 msgstr ""
 
-#: src/lib/lex.c:298
+#: src/lib/lex.c:299
 msgid "include"
 msgstr ""
 
-#: src/lib/lex.c:299
+#: src/lib/lex.c:300
 msgid "include_quoted_string"
 msgstr ""
 
-#: src/lib/lex.c:300
+#: src/lib/lex.c:301
 msgid "UTF-8 Byte Order Mark"
 msgstr ""
 
-#: src/lib/lex.c:301
+#: src/lib/lex.c:302
 msgid "UTF-16le Byte Order Mark"
 msgstr ""
 
-#: src/lib/lex.c:339 src/lib/lex.c:345 src/lib/lex.c:356 src/lib/lex.c:362
+#: src/lib/lex.c:340 src/lib/lex.c:346 src/lib/lex.c:357 src/lib/lex.c:363
 #, c-format
 msgid "expected a positive integer number, got: %s"
 msgstr ""
 
-#: src/lib/lex.c:478
+#: src/lib/lex.c:479
 msgid ""
 "This config file appears to be in an unsupported Unicode format (UTF-16be). "
 "Please resave as UTF-8\n"
 msgstr ""
 
-#: src/lib/lex.c:617 src/lib/lex.c:645
+#: src/lib/lex.c:625 src/lib/lex.c:653
 #, c-format
 msgid "Cannot open included config file %s: %s\n"
 msgstr ""
 
-#: src/lib/lex.c:704 src/lib/lex.c:761
+#: src/lib/lex.c:712 src/lib/lex.c:769
 #, c-format
 msgid "expected an integer or a range, got %s: %s"
 msgstr ""
 
-#: src/lib/lex.c:718 src/lib/lex.c:726 src/lib/lex.c:737 src/lib/lex.c:745
+#: src/lib/lex.c:726 src/lib/lex.c:734 src/lib/lex.c:745 src/lib/lex.c:753
 #, c-format
 msgid "expected an integer number, got %s: %s"
 msgstr ""
 
-#: src/lib/lex.c:775
+#: src/lib/lex.c:783
 #, c-format
 msgid "expected a name, got %s: %s"
 msgstr ""
 
-#: src/lib/lex.c:779
+#: src/lib/lex.c:787
 #, c-format
 msgid "name %s length %d too long, max is %d\n"
 msgstr ""
 
-#: src/lib/lex.c:787
+#: src/lib/lex.c:795
 #, c-format
 msgid "expected a string, got %s: %s"
 msgstr ""
@@ -13501,7 +13634,7 @@ msgstr ""
 msgid "bpkt already open fid=%d\n"
 msgstr ""
 
-#: src/findlib/create_file.c:226 src/filed/fd_plugins.c:890
+#: src/findlib/create_file.c:226 src/filed/fd_plugins.c:1009
 #, c-format
 msgid "Could not create %s: ERR=%s\n"
 msgstr ""
@@ -13745,86 +13878,98 @@ msgid "FreeBSD Specific NFSv4/ZFS ACL attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:191
-msgid "IRIX Specific Extended attribs"
+msgid "GNU Hurd Specific Default ACL attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:193
-msgid "TRU64 Specific Extended attribs"
+msgid "GNU Hurd Specific Access ACL attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:195
-msgid "AIX Specific Extended attribs"
+msgid "GNU Hurd Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:197
-msgid "OpenBSD Specific Extended attribs"
+msgid "IRIX Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:199
-msgid "Solaris Specific Extensible attribs or System Extended attribs"
+msgid "TRU64 Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:201
-msgid "Solaris Specific Extended attribs"
+msgid "AIX Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:203
-msgid "Darwin Specific Extended attribs"
+msgid "OpenBSD Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:205
-msgid "FreeBSD Specific Extended attribs"
+msgid "Solaris Specific Extensible attribs or System Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:207
-msgid "Linux Specific Extended attribs"
+msgid "Solaris Specific Extended attribs"
 msgstr ""
 
 #: src/findlib/bfile.c:209
+msgid "Darwin Specific Extended attribs"
+msgstr ""
+
+#: src/findlib/bfile.c:211
+msgid "FreeBSD Specific Extended attribs"
+msgstr ""
+
+#: src/findlib/bfile.c:213
+msgid "Linux Specific Extended attribs"
+msgstr ""
+
+#: src/findlib/bfile.c:215
 msgid "NetBSD Specific Extended attribs"
 msgstr ""
 
-#: src/findlib/find.c:226
+#: src/findlib/find.c:237
 #, c-format
 msgid "Plugin: \"%s\" not found.\n"
 msgstr ""
 
-#: src/findlib/match.c:210 src/tools/testfind.c:654 src/filed/job.c:1456
+#: src/findlib/match.c:210 src/tools/testfind.c:654 src/filed/job.c:1460
 #, c-format
 msgid "Unknown include/exclude option: %c\n"
 msgstr ""
 
-#: src/findlib/find_one.c:223
+#: src/findlib/find_one.c:227
 #, c-format
 msgid "     NODUMP flag set - will not process %s\n"
 msgstr ""
 
-#: src/findlib/find_one.c:244
+#: src/findlib/find_one.c:248
 #, c-format
 msgid "Cannot stat file %s: ERR=%s\n"
 msgstr ""
 
-#: src/findlib/find_one.c:250
+#: src/findlib/find_one.c:253
 #, c-format
 msgid "%s mtime changed during backup.\n"
 msgstr ""
 
-#: src/findlib/find_one.c:256
+#: src/findlib/find_one.c:260
 #, c-format
 msgid "%s ctime changed during backup.\n"
 msgstr ""
 
-#: src/findlib/find_one.c:262 src/findlib/find_one.c:269
+#: src/findlib/find_one.c:268 src/findlib/find_one.c:276
 #, c-format
 msgid "%s size changed during backup.\n"
 msgstr ""
 
-#: src/findlib/find_one.c:398
+#: src/findlib/find_one.c:403
 #, c-format
 msgid "Top level directory \"%s\" has unlisted fstype \"%s\"\n"
 msgstr ""
 
-#: src/findlib/find_one.c:413
+#: src/findlib/find_one.c:418
 #, c-format
 msgid "Top level directory \"%s\" has an unlisted drive type \"%s\"\n"
 msgstr ""
@@ -13914,24 +14059,24 @@ msgstr ""
 msgid "Create DB Client record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:588 src/cats/sql_get.c:251
+#: src/cats/sql_create.c:589 src/cats/sql_get.c:251
 #, c-format
 msgid "More than one Path!: %s for path: %s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:595 src/cats/sql_get.c:205 src/cats/sql_get.c:258
-#: src/cats/sql_get.c:640 src/cats/sql_get.c:722 src/cats/sql_get.c:1041
-#: src/cats/sql.c:340 src/cats/sql.c:347 src/cats/postgresql.c:158
+#: src/cats/sql_create.c:596 src/cats/sql_get.c:205 src/cats/sql_get.c:258
+#: src/cats/sql_get.c:640 src/cats/sql_get.c:722 src/cats/sql_get.c:1039
+#: src/cats/sql.c:340 src/cats/sql.c:347 src/cats/postgresql.c:165
 #, c-format
 msgid "error fetching row: %s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:620
+#: src/cats/sql_create.c:621
 #, c-format
 msgid "Create db Path record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:665
+#: src/cats/sql_create.c:666
 #, c-format
 msgid "Create DB Counters record %s failed. ERR=%s\n"
 msgstr ""
@@ -13951,40 +14096,40 @@ msgstr ""
 msgid "Create DB FileSet record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:994
+#: src/cats/sql_create.c:989
 #, c-format
 msgid "Create db File record %s failed. ERR=%s"
 msgstr ""
 
-#: src/cats/sql_create.c:1019
+#: src/cats/sql_create.c:1015
 #, c-format
 msgid "More than one Filename! %s for file: %s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:1025
+#: src/cats/sql_create.c:1021
 #, c-format
 msgid "Error fetching row for file=%s: ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:1042
+#: src/cats/sql_create.c:1038
 #, c-format
 msgid "Create db Filename record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:1061
+#: src/cats/sql_create.c:1058
 #, c-format
 msgid "Attempt to put non-attributes into catalog. Stream=%d\n"
 msgstr ""
 
 #: src/cats/sql_create.c:1074
-msgid "Cannot Copy/Migrate job using BaseJob"
+msgid "Cannot Copy/Migrate job using BaseJob.\n"
 msgstr ""
 
-#: src/cats/sql_create.c:1165 src/cats/sql_get.c:1138
+#: src/cats/sql_create.c:1166 src/cats/sql_get.c:1136
 msgid "ERR=JobIds are empty\n"
 msgstr ""
 
-#: src/cats/sql_create.c:1218
+#: src/cats/sql_create.c:1219
 #, c-format
 msgid "Create db Object record %s failed. ERR=%s"
 msgstr ""
@@ -14091,66 +14236,66 @@ msgstr ""
 msgid "Client record not found in Catalog.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:767
+#: src/cats/sql_get.c:765
 #, c-format
 msgid "More than one Counter!: %d\n"
 msgstr ""
 
-#: src/cats/sql_get.c:772
+#: src/cats/sql_get.c:770
 #, c-format
 msgid "error fetching Counter row: %s\n"
 msgstr ""
 
-#: src/cats/sql_get.c:792
+#: src/cats/sql_get.c:790
 #, c-format
 msgid "Counter record: %s not found in Catalog.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:832
+#: src/cats/sql_get.c:830
 #, c-format
 msgid "Error got %s FileSets but expected only one!\n"
 msgstr ""
 
-#: src/cats/sql_get.c:837
+#: src/cats/sql_get.c:835
 #, c-format
 msgid "FileSet record \"%s\" not found.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:847
+#: src/cats/sql_get.c:845
 msgid "FileSet record not found in Catalog.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:943
+#: src/cats/sql_get.c:941
 #, c-format
 msgid "Media id select failed: ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_get.c:981
+#: src/cats/sql_get.c:979
 #, c-format
 msgid "query dbids failed: ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_get.c:1036
+#: src/cats/sql_get.c:1034
 #, c-format
 msgid "More than one Volume!: %s\n"
 msgstr ""
 
-#: src/cats/sql_get.c:1092
+#: src/cats/sql_get.c:1090
 #, c-format
 msgid "Media record MediaId=%s not found.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:1095
+#: src/cats/sql_get.c:1093
 #, c-format
 msgid "Media record for Volume \"%s\" not found.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:1102
+#: src/cats/sql_get.c:1100
 #, c-format
 msgid "Media record for MediaId=%u not found in Catalog.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:1105
+#: src/cats/sql_get.c:1103
 #, c-format
 msgid "Media record for Vol=%s not found in Catalog.\n"
 msgstr ""
@@ -14203,29 +14348,29 @@ msgstr ""
 msgid "No Volume record found for item %d.\n"
 msgstr ""
 
-#: src/cats/sqlite.c:159 src/cats/ingres.c:248 src/cats/postgresql.c:203
-#: src/cats/dbi.c:221 src/cats/mysql.c:157
+#: src/cats/sqlite.c:166 src/cats/ingres.c:255 src/cats/postgresql.c:210
+#: src/cats/dbi.c:228 src/cats/mysql.c:164
 #, c-format
 msgid "Unable to initialize DB lock. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sqlite.c:174
+#: src/cats/sqlite.c:181
 #, c-format
 msgid "Database %s does not exist, please create it.\n"
 msgstr ""
 
-#: src/cats/sqlite.c:196
+#: src/cats/sqlite.c:203
 #, c-format
 msgid "Unable to open Database=%s. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sqlite.c:197
+#: src/cats/sqlite.c:204
 msgid "unknown"
 msgstr ""
 
-#: src/cats/sqlite.c:449 src/cats/ingres.c:483 src/cats/postgresql.c:493
-#: src/cats/postgresql.c:540 src/cats/dbi.c:618 src/cats/cats.c:147
-#: src/cats/mysql.c:380
+#: src/cats/sqlite.c:462 src/cats/ingres.c:496 src/cats/postgresql.c:506
+#: src/cats/postgresql.c:553 src/cats/dbi.c:631 src/cats/cats.c:149
+#: src/cats/mysql.c:393
 #, c-format
 msgid "Query failed: %s: ERR=%s\n"
 msgstr ""
@@ -14238,7 +14383,7 @@ msgstr ""
 msgid "Failed to allocate space for query filters.\n"
 msgstr ""
 
-#: src/cats/ingres.c:260
+#: src/cats/ingres.c:267
 #, c-format
 msgid ""
 "Unable to connect to Ingres server.\n"
@@ -14246,7 +14391,7 @@ msgid ""
 "It is probably not running or your password is incorrect.\n"
 msgstr ""
 
-#: src/cats/ingres.c:1074
+#: src/cats/ingres.c:1087
 msgid "A user name for Ingres must be supplied.\n"
 msgstr ""
 
@@ -14305,21 +14450,21 @@ msgstr ""
 msgid "No results to list.\n"
 msgstr ""
 
-#: src/cats/sql.c:724
-msgid "Could not init database batch connection"
+#: src/cats/sql.c:721
+msgid "Could not init database batch connection\n"
 msgstr ""
 
-#: src/cats/sql.c:730
+#: src/cats/sql.c:727
 #, c-format
 msgid "Could not open database \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/cats/postgresql.c:174
+#: src/cats/postgresql.c:181
 #, c-format
 msgid "Encoding error for database \"%s\". Wanted SQL_ASCII, got %s\n"
 msgstr ""
 
-#: src/cats/postgresql.c:239
+#: src/cats/postgresql.c:246
 #, c-format
 msgid ""
 "Unable to connect to PostgreSQL server. Database=%s User=%s\n"
@@ -14327,39 +14472,39 @@ msgid ""
 "exceeded.\n"
 msgstr ""
 
-#: src/cats/postgresql.c:337
+#: src/cats/postgresql.c:350
 msgid "PQescapeStringConn returned non-zero.\n"
 msgstr ""
 
-#: src/cats/postgresql.c:355
+#: src/cats/postgresql.c:368
 msgid "PQescapeByteaConn returned NULL.\n"
 msgstr ""
 
-#: src/cats/postgresql.c:386
+#: src/cats/postgresql.c:399
 msgid "PQunescapeByteaConn returned NULL.\n"
 msgstr ""
 
-#: src/cats/postgresql.c:800
+#: src/cats/postgresql.c:813
 #, c-format
 msgid "error fetching currval: %s\n"
 msgstr ""
 
-#: src/cats/postgresql.c:991 src/cats/dbi.c:1264
+#: src/cats/postgresql.c:1004 src/cats/dbi.c:1277
 #, c-format
 msgid "error starting batch mode: %s"
 msgstr ""
 
-#: src/cats/postgresql.c:1021 src/cats/postgresql.c:1028
+#: src/cats/postgresql.c:1034 src/cats/postgresql.c:1041
 #, c-format
 msgid "error ending batch mode: %s"
 msgstr ""
 
-#: src/cats/postgresql.c:1075
+#: src/cats/postgresql.c:1088
 #, c-format
 msgid "error copying in batch mode: %s"
 msgstr ""
 
-#: src/cats/postgresql.c:1097
+#: src/cats/postgresql.c:1110
 msgid "A user name for PostgreSQL must be supplied.\n"
 msgstr ""
 
@@ -14381,14 +14526,14 @@ msgstr ""
 msgid "Unknown database type: %s\n"
 msgstr ""
 
-#: src/cats/dbi.c:235
+#: src/cats/dbi.c:242
 #, c-format
 msgid ""
 "Unable to locate the DBD drivers to DBI interface in: \n"
 "db_driverdir=%s. It is probaly not found any drivers\n"
 msgstr ""
 
-#: src/cats/dbi.c:292
+#: src/cats/dbi.c:299
 #, c-format
 msgid ""
 "Unable to connect to DBI interface. Type=%s Database=%s User=%s\n"
@@ -14396,20 +14541,20 @@ msgid ""
 "exceeded.\n"
 msgstr ""
 
-#: src/cats/dbi.c:1426
+#: src/cats/dbi.c:1439
 #, c-format
 msgid "error inserting batch mode: %s"
 msgstr ""
 
-#: src/cats/dbi.c:1443
+#: src/cats/dbi.c:1456
 msgid "Driver type not specified in Catalog resource.\n"
 msgstr ""
 
-#: src/cats/dbi.c:1447
+#: src/cats/dbi.c:1460
 msgid "Invalid driver type, must be \"dbi:<type>\"\n"
 msgstr ""
 
-#: src/cats/dbi.c:1451
+#: src/cats/dbi.c:1464
 msgid "A user name for DBI must be supplied.\n"
 msgstr ""
 
@@ -14432,7 +14577,7 @@ msgstr ""
 msgid "Error fetching row %s\n"
 msgstr ""
 
-#: src/cats/mysql.c:200
+#: src/cats/mysql.c:207
 #, c-format
 msgid ""
 "Unable to connect to MySQL server.\n"
@@ -14441,7 +14586,7 @@ msgid ""
 "incorrect.\n"
 msgstr ""
 
-#: src/cats/mysql.c:639
+#: src/cats/mysql.c:692
 msgid "A user name for MySQL must be supplied.\n"
 msgstr ""
 
@@ -14579,13 +14724,13 @@ msgid "You must enter a number between 1 and %d\n"
 msgstr ""
 
 #: src/console/console.c:1160 src/wx-console/console_thread.cpp:399
-#: src/qt-console/bcomm/dircomm.cpp:129
+#: src/qt-console/bcomm/dircomm.cpp:131
 #, c-format
 msgid "Failed to initialize TLS context for Console \"%s\".\n"
 msgstr ""
 
 #: src/console/console.c:1180 src/wx-console/console_thread.cpp:420
-#: src/qt-console/bcomm/dircomm.cpp:152
+#: src/qt-console/bcomm/dircomm.cpp:154
 #, c-format
 msgid "Failed to initialize TLS context for Director \"%s\".\n"
 msgstr ""
@@ -14943,22 +15088,25 @@ msgstr ""
 msgid "Could not open, database \"%s\".\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:145
+#: src/tools/bsmtp.c:151
 #, c-format
 msgid "Fatal malformed reply from %s: %s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:153
+#: src/tools/bsmtp.c:159
 #, c-format
 msgid "Fatal fgets error: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:186
+#: src/tools/bsmtp.c:192
 #, c-format
 msgid ""
 "\n"
 "Usage: %s [-f from] [-h mailhost] [-s subject] [-c copy] [recipient ...]\n"
+"       -4          forces bsmtp to use IPv4 addresses only.\n"
+"       -6          forces bsmtp to use IPv6 addresses only.\n"
 "       -8          set charset to UTF-8\n"
+"       -a          use any ip protocol for address resolution\n"
 "       -c          set the Cc: field\n"
 "       -d <nn>     set debug level to <nn>\n"
 "       -dt         print a timestamp in debug output\n"
@@ -14972,56 +15120,66 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:343
+#: src/tools/bsmtp.c:379
 msgid "Fatal error: no recipient given.\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:372
+#: src/tools/bsmtp.c:407
 #, c-format
 msgid "Fatal gethostname error: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:376
+#: src/tools/bsmtp.c:418
+#, c-format
+msgid "Fatal getaddrinfo for myself failed \"%s\": ERR=%s\n"
+msgstr ""
+
+#: src/tools/bsmtp.c:426
 #, c-format
 msgid "Fatal gethostbyname for myself failed \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:412
+#: src/tools/bsmtp.c:486 src/tools/bsmtp.c:521
 #, c-format
 msgid "Error unknown mail host \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:415
+#: src/tools/bsmtp.c:489 src/tools/bsmtp.c:524
 msgid "Retrying connection using \"localhost\".\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:423
+#: src/tools/bsmtp.c:514
+#, c-format
+msgid "Failed to connect to mailhost %s\n"
+msgstr ""
+
+#: src/tools/bsmtp.c:532
 #, c-format
 msgid "Fatal error: Unknown address family for smtp host: %d\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:432 src/tools/bsmtp.c:437
+#: src/tools/bsmtp.c:541 src/tools/bsmtp.c:546
 #, c-format
 msgid "Fatal socket error: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:442
+#: src/tools/bsmtp.c:551
 #, c-format
 msgid "Fatal connect error to %s: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:450
+#: src/tools/bsmtp.c:560
 #, c-format
 msgid "Fatal _open_osfhandle error: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:457 src/tools/bsmtp.c:461 src/tools/bsmtp.c:470
-#: src/tools/bsmtp.c:474
+#: src/tools/bsmtp.c:567 src/tools/bsmtp.c:571 src/tools/bsmtp.c:580
+#: src/tools/bsmtp.c:584
 #, c-format
 msgid "Fatal fdopen error: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:466
+#: src/tools/bsmtp.c:576
 #, c-format
 msgid "Fatal dup error: ERR=%s\n"
 msgstr ""
@@ -15485,7 +15643,7 @@ msgstr ""
 msgid "Network error in send to Director: ERR=%s\n"
 msgstr ""
 
-#: src/filed/verify.c:247 src/filed/accurate.c:428 src/filed/backup.c:503
+#: src/filed/verify.c:247 src/filed/accurate.c:429 src/filed/backup.c:506
 #, c-format
 msgid "%s digest initialization failed\n"
 msgstr ""
@@ -15510,12 +15668,12 @@ msgstr ""
 msgid "Space saved with Base jobs: %lld MB\n"
 msgstr ""
 
-#: src/filed/accurate.c:399
+#: src/filed/accurate.c:400
 #, c-format
 msgid "Cannot verify checksum for %s\n"
 msgstr ""
 
-#: src/filed/accurate.c:507
+#: src/filed/accurate.c:508
 msgid "2991 Bad accurate command\n"
 msgstr ""
 
@@ -15571,6 +15729,11 @@ msgstr ""
 msgid " SDSocket=closed\n"
 msgstr ""
 
+#: src/filed/status.c:463 src/filed/status.c:496
+#, c-format
+msgid "Bad .status command: %s\n"
+msgstr ""
+
 #: src/filed/status.c:464
 msgid "2900 Bad .status command, missing argument.\n"
 msgstr ""
@@ -15599,316 +15762,317 @@ msgstr ""
 msgid "Bacula Client: Last Job had Warnings"
 msgstr ""
 
-#: src/filed/xattr.c:96 src/filed/xattr.c:111 src/filed/xattr.c:119
-#: src/filed/fd_plugins.c:696 src/filed/fd_plugins.c:710 src/filed/acl.c:105
-#: src/filed/acl.c:120 src/filed/acl.c:128 src/filed/backup.c:993
-#: src/filed/backup.c:1189 src/filed/backup.c:1226 src/filed/backup.c:1239
-#: src/filed/backup.c:1315 src/filed/backup.c:1413
+#: src/filed/xattr.c:97 src/filed/xattr.c:112 src/filed/xattr.c:120
+#: src/filed/fd_plugins.c:789 src/filed/fd_plugins.c:805 src/filed/acl.c:108
+#: src/filed/acl.c:123 src/filed/acl.c:131 src/filed/backup.c:999
+#: src/filed/backup.c:1199 src/filed/backup.c:1236 src/filed/backup.c:1249
+#: src/filed/backup.c:1325 src/filed/backup.c:1424
 #, c-format
 msgid "Network send error to SD. ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:244
+#: src/filed/xattr.c:245
 #, c-format
 msgid "Illegal xattr stream, no XATTR_MAGIC on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:258
+#: src/filed/xattr.c:259
 #, c-format
 msgid "Illegal xattr stream, xattr name length <= 0 on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:376 src/filed/xattr.c:408
+#: src/filed/xattr.c:381 src/filed/xattr.c:417
 #, c-format
 msgid "llistea error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:472 src/filed/xattr.c:500
+#: src/filed/xattr.c:467 src/filed/xattr.c:520
 #, c-format
 msgid "lgetea error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:519 src/filed/xattr.c:807 src/filed/xattr.c:1249
-#: src/filed/xattr.c:1702 src/filed/xattr.c:2064 src/filed/xattr.c:2843
+#: src/filed/xattr.c:556 src/filed/xattr.c:877 src/filed/xattr.c:1352
+#: src/filed/xattr.c:1820 src/filed/xattr.c:2176 src/filed/xattr.c:2968
 #, c-format
 msgid "Xattr stream on file \"%s\" exceeds maximum size of %d bytes\n"
 msgstr ""
 
-#: src/filed/xattr.c:550 src/filed/xattr.c:841 src/filed/xattr.c:1280
-#: src/filed/xattr.c:1743 src/filed/xattr.c:2089
+#: src/filed/xattr.c:576 src/filed/xattr.c:903 src/filed/xattr.c:1372
+#: src/filed/xattr.c:1850 src/filed/xattr.c:2193
 #, c-format
 msgid "Failed to serialize extended attributes on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:624
+#: src/filed/xattr.c:643
 #, c-format
 msgid "lsetea error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:710 src/filed/xattr.c:777 src/filed/xattr.c:789
+#: src/filed/xattr.c:731 src/filed/xattr.c:769 src/filed/xattr.c:832
+#: src/filed/xattr.c:844
 #, c-format
 msgid "attr_list error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:916
+#: src/filed/xattr.c:968
 #, c-format
 msgid "Received illegal xattr named %s on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:947 src/filed/xattr.c:957
+#: src/filed/xattr.c:1001 src/filed/xattr.c:1011
 #, c-format
 msgid "attr_set error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:1092 src/filed/xattr.c:1123
+#: src/filed/xattr.c:1161 src/filed/xattr.c:1196
 #, c-format
 msgid "llistxattr error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:1204 src/filed/xattr.c:1231
+#: src/filed/xattr.c:1264 src/filed/xattr.c:1316
 #, c-format
 msgid "lgetxattr error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:1350
+#: src/filed/xattr.c:1435
 #, c-format
 msgid "lsetxattr error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:1507 src/filed/xattr.c:1539
+#: src/filed/xattr.c:1593 src/filed/xattr.c:1628
 #, c-format
 msgid "extattr_list_link error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:1558
+#: src/filed/xattr.c:1648
 #, c-format
 msgid "Failed to convert %d into namespace on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:1653 src/filed/xattr.c:1682
+#: src/filed/xattr.c:1728 src/filed/xattr.c:1783
 #, c-format
 msgid "extattr_get_link error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:1809
+#: src/filed/xattr.c:1907
 #, c-format
 msgid "Failed to split %s into namespace and name part on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:1822
+#: src/filed/xattr.c:1920
 #, c-format
 msgid "Failed to convert %s into namespace on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:1841
+#: src/filed/xattr.c:1941
 #, c-format
 msgid "extattr_set_link error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:1943 src/filed/xattr.c:1965
+#: src/filed/xattr.c:2044 src/filed/xattr.c:2069
 #, c-format
 msgid "getproplist error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2169
+#: src/filed/xattr.c:2262
 #, c-format
 msgid "Unable create proper proplist to restore xattrs on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:2196
+#: src/filed/xattr.c:2291
 #, c-format
 msgid "setproplist error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2496 src/filed/xattr.c:2547
+#: src/filed/xattr.c:2609 src/filed/xattr.c:2662
 #, c-format
 msgid "Unable to get acl on xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2562
+#: src/filed/xattr.c:2679
 #, c-format
 msgid "Unable to get acl text on xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2632
+#: src/filed/xattr.c:2753
 #, c-format
 msgid "Unable to get status on xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2763
+#: src/filed/xattr.c:2886
 #, c-format
 msgid "Unable to open xattr %s on \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2784
+#: src/filed/xattr.c:2909
 #, c-format
 msgid "Unable to read symlin %s on \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2859
+#: src/filed/xattr.c:2984
 #, c-format
 msgid "Unable to read content of xattr %s on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:2897
+#: src/filed/xattr.c:3024
 #, c-format
 msgid "Unable to chdir to xattr space of file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2953 src/filed/xattr.c:3193
+#: src/filed/xattr.c:3081 src/filed/xattr.c:3330
 #, c-format
 msgid "Unable to open file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2979 src/filed/xattr.c:3246
+#: src/filed/xattr.c:3109 src/filed/xattr.c:3391
 #, c-format
 msgid "Unable to open xattr space %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2993 src/filed/xattr.c:3214
+#: src/filed/xattr.c:3125 src/filed/xattr.c:3355
 #, c-format
 msgid "Unable to chdir to xattr space on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3012
+#: src/filed/xattr.c:3146
 #, c-format
 msgid "Unable to list the xattr space on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3105
+#: src/filed/xattr.c:3238
 #, c-format
 msgid "Unable to convert acl from text on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:3113 src/filed/xattr.c:3135
+#: src/filed/xattr.c:3248 src/filed/xattr.c:3271
 #, c-format
 msgid "Unable to restore acl of xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3205
+#: src/filed/xattr.c:3344
 #, c-format
 msgid "Unable to open xattr space on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3231 src/filed/xattr.c:3379
+#: src/filed/xattr.c:3374 src/filed/xattr.c:3536
 #, c-format
 msgid "Unable to open xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3261
+#: src/filed/xattr.c:3408
 #, c-format
 msgid "Unable to chdir to xattr space %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3299
+#: src/filed/xattr.c:3448
 #, c-format
 msgid "Unable to mkfifo xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3315
+#: src/filed/xattr.c:3466
 #, c-format
 msgid "Unable to mknod xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3331
+#: src/filed/xattr.c:3484
 #, c-format
 msgid "Unable to mkdir xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3349
+#: src/filed/xattr.c:3504
 #, c-format
 msgid "Unable to link xattr %s to %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3400
+#: src/filed/xattr.c:3557
 #, c-format
 msgid ""
 "Unable to restore data of xattr %s on file \"%s\": Not all data available in "
 "xattr stream\n"
 msgstr ""
 
-#: src/filed/xattr.c:3411
+#: src/filed/xattr.c:3570
 #, c-format
 msgid "Unable to restore data of xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3432
+#: src/filed/xattr.c:3593
 #, c-format
 msgid "Unable to symlink xattr %s to %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3466
+#: src/filed/xattr.c:3629
 #, c-format
 msgid "Unable to restore owner of xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3492
+#: src/filed/xattr.c:3657
 #, c-format
 msgid "Unable to restore filetimes of xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3508
+#: src/filed/xattr.c:3673
 #, c-format
 msgid "Illegal xattr stream, failed to parse xattr stream on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:3570
+#: src/filed/xattr.c:3734
 #, c-format
 msgid "Failed to restore extensible attributes on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:3583
+#: src/filed/xattr.c:3747
 #, c-format
 msgid "Failed to restore extended attributes on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:3672 src/filed/acl.c:2109
+#: src/filed/xattr.c:3841 src/filed/acl.c:2265
 #, c-format
 msgid "Unable to stat file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3719
+#: src/filed/xattr.c:3891
 #, c-format
 msgid ""
 "Can't restore Extended Attributes of %s - incompatible xattr stream "
 "encountered - %d\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:480 src/filed/fd_plugins.c:619
+#: src/filed/fd_plugins.c:550 src/filed/fd_plugins.c:694
 #, c-format
 msgid "Command plugin \"%s\": no type in startBackupFile packet.\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:493
+#: src/filed/fd_plugins.c:563
 #, c-format
 msgid "Command plugin \"%s\": no object_name in startBackupFile packet.\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:505 src/filed/fd_plugins.c:626
+#: src/filed/fd_plugins.c:576 src/filed/fd_plugins.c:701
 #, c-format
 msgid "Command plugin \"%s\": no fname in startBackupFile packet.\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:683
+#: src/filed/fd_plugins.c:775
 msgid "Plugin save packet not found.\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:806
+#: src/filed/fd_plugins.c:910
 #, c-format
 msgid "Plugin=%s not found.\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:863
+#: src/filed/fd_plugins.c:977
 #, c-format
 msgid "Plugin createFile call failed. Stat=%d file=%s\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:874
+#: src/filed/fd_plugins.c:982
 #, c-format
 msgid "Plugin createFile call failed. Returned CF_ERROR file=%s\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:1621
+#: src/filed/fd_plugins.c:1859
 msgid "Command plugin: no fname in baculaCheckChanges packet.\n"
 msgstr ""
 
@@ -16006,179 +16170,189 @@ msgstr ""
 msgid "No Director resource defined in %s\n"
 msgstr ""
 
-#: src/filed/acl.c:225 src/filed/acl.c:248
+#: src/filed/acl.c:229 src/filed/acl.c:254
 #, c-format
 msgid "aclx_get error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:274
+#: src/filed/acl.c:280
 #, c-format
 msgid "Unknown acl type encountered on file \"%s\": %ld\n"
 msgstr ""
 
-#: src/filed/acl.c:298 src/filed/acl.c:307
+#: src/filed/acl.c:304 src/filed/acl.c:313
 #, c-format
 msgid "Failed to convert acl into text on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/acl.c:381
+#: src/filed/acl.c:386
 #, c-format
 msgid ""
 "Trying to restore POSIX acl on file \"%s\" on filesystem without AIXC acl "
 "support\n"
 msgstr ""
 
-#: src/filed/acl.c:389
+#: src/filed/acl.c:394
 #, c-format
 msgid ""
 "Trying to restore NFSv4 acl on file \"%s\" on filesystem without NFS4 acl "
 "support\n"
 msgstr ""
 
-#: src/filed/acl.c:433 src/filed/acl.c:443
+#: src/filed/acl.c:442 src/filed/acl.c:452
 #, c-format
 msgid "aclx_scanStr error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:467
+#: src/filed/acl.c:478
 #, c-format
 msgid "aclx_put error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:809
+#: src/filed/acl.c:823
 #, c-format
 msgid "acl_to_text error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:837
+#: src/filed/acl.c:853
 #, c-format
 msgid "acl_get_file error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:889
+#: src/filed/acl.c:906
 #, c-format
 msgid ""
 "acl_delete_def_file error on file \"%s\": filesystem doesn't support ACLs\n"
 msgstr ""
 
-#: src/filed/acl.c:895
+#: src/filed/acl.c:912
 #, c-format
 msgid "acl_delete_def_file error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:904
+#: src/filed/acl.c:923
 #, c-format
 msgid "acl_from_text error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:918
+#: src/filed/acl.c:939
 #, c-format
 msgid "acl_valid error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:948
+#: src/filed/acl.c:971
 #, c-format
 msgid "acl_set_file error on file \"%s\": filesystem doesn't support ACLs\n"
 msgstr ""
 
-#: src/filed/acl.c:957
+#: src/filed/acl.c:980
 #, c-format
 msgid "acl_set_file error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1063 src/filed/acl.c:1089 src/filed/acl.c:1201
-#: src/filed/acl.c:1692 src/filed/acl.c:1795
+#: src/filed/acl.c:1087 src/filed/acl.c:1116 src/filed/acl.c:1230
+#: src/filed/acl.c:1738 src/filed/acl.c:1845
 #, c-format
 msgid "pathconf error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1216
+#: src/filed/acl.c:1246
 #, c-format
 msgid ""
 "Trying to restore acl on file \"%s\" on filesystem without %s acl support\n"
 msgstr ""
 
-#: src/filed/acl.c:1492
+#: src/filed/acl.c:1531
 #, c-format
 msgid "getacl error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1525
+#: src/filed/acl.c:1566
 #, c-format
 msgid "acltostr error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1546 src/filed/acl.c:1554
+#: src/filed/acl.c:1588 src/filed/acl.c:1598
 #, c-format
 msgid "strtoacl error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1582
+#: src/filed/acl.c:1627
 #, c-format
 msgid "setacl error on file \"%s\": filesystem doesn't support ACLs\n"
 msgstr ""
 
-#: src/filed/acl.c:1590
+#: src/filed/acl.c:1635
 #, c-format
 msgid "setacl error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1711
+#: src/filed/acl.c:1760
 #, c-format
 msgid "acl_get error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1786
+#: src/filed/acl.c:1834
 #, c-format
 msgid ""
 "Trying to restore acl on file \"%s\" on filesystem without acl support\n"
 msgstr ""
 
-#: src/filed/acl.c:1812
+#: src/filed/acl.c:1863
 #, c-format
 msgid ""
 "Trying to restore POSIX acl on file \"%s\" on filesystem without aclent acl "
 "support\n"
 msgstr ""
 
-#: src/filed/acl.c:1823
+#: src/filed/acl.c:1874
 #, c-format
 msgid ""
 "Trying to restore NFSv4 acl on file \"%s\" on filesystem without ace acl "
 "support\n"
 msgstr ""
 
-#: src/filed/acl.c:1839
+#: src/filed/acl.c:1890
 #, c-format
 msgid "acl_fromtext error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1853 src/filed/acl.c:1861
+#: src/filed/acl.c:1904 src/filed/acl.c:1912
 #, c-format
 msgid "wrong encoding of acl type in acl stream on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/acl.c:1886
+#: src/filed/acl.c:1937
 #, c-format
 msgid "acl_set error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1971
+#: src/filed/acl.c:2023
 #, c-format
 msgid "acltotext error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1993
+#: src/filed/acl.c:2046
 #, c-format
 msgid "aclfromtext error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:2011
+#: src/filed/acl.c:2066
 #, c-format
 msgid "acl(SETACL) error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:2181
+#: src/filed/acl.c:2132
+#, c-format
+msgid "pioctl VIOCGETAL error on file \"%s\": ERR=%s\n"
+msgstr ""
+
+#: src/filed/acl.c:2160
+#, c-format
+msgid "pioctl VIOCSETAL error on file \"%s\": ERR=%s\n"
+msgstr ""
+
+#: src/filed/acl.c:2363
 #, c-format
 msgid "Can't restore ACLs of %s - incompatible acl stream encountered - %d\n"
 msgstr ""
@@ -16187,17 +16361,17 @@ msgstr ""
 msgid "Storage command not issued before Verify.\n"
 msgstr ""
 
-#: src/filed/verify_vol.c:97 src/filed/restore.c:483
+#: src/filed/verify_vol.c:97 src/filed/restore.c:486
 #, c-format
 msgid "Record header scan error: %s\n"
 msgstr ""
 
-#: src/filed/verify_vol.c:106 src/filed/restore.c:495
+#: src/filed/verify_vol.c:106 src/filed/restore.c:498
 #, c-format
 msgid "Data record error. ERR=%s\n"
 msgstr ""
 
-#: src/filed/verify_vol.c:110 src/filed/restore.c:499
+#: src/filed/verify_vol.c:110 src/filed/restore.c:502
 #, c-format
 msgid "Actual data size %d not same as header %d\n"
 msgstr ""
@@ -16275,89 +16449,89 @@ msgstr ""
 msgid "     Could not open directory \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/backup.c:463
+#: src/filed/backup.c:466
 #, c-format
 msgid "     Unknown file type %d; not saved: %s\n"
 msgstr ""
 
-#: src/filed/backup.c:519
+#: src/filed/backup.c:522
 #, c-format
 msgid "%s signature digest initialization failed\n"
 msgstr ""
 
-#: src/filed/backup.c:624
+#: src/filed/backup.c:630
 #, c-format
 msgid "     Cannot open \"%s\": ERR=%s.\n"
 msgstr ""
 
-#: src/filed/backup.c:661
+#: src/filed/backup.c:667
 #, c-format
 msgid "     Cannot open resource fork for \"%s\": ERR=%s.\n"
 msgstr ""
 
-#: src/filed/backup.c:757
+#: src/filed/backup.c:763
 msgid "Failed to allocate memory for crypto signature.\n"
 msgstr ""
 
-#: src/filed/backup.c:762 src/filed/backup.c:768 src/filed/backup.c:783
+#: src/filed/backup.c:768 src/filed/backup.c:774 src/filed/backup.c:789
 msgid "An error occurred while signing the stream.\n"
 msgstr ""
 
-#: src/filed/backup.c:807
+#: src/filed/backup.c:813
 msgid "An error occurred finalizing signing the stream.\n"
 msgstr ""
 
-#: src/filed/backup.c:925
+#: src/filed/backup.c:931
 #, c-format
 msgid "Compression deflateParams error: %d\n"
 msgstr ""
 
-#: src/filed/backup.c:962
+#: src/filed/backup.c:968
 msgid "Encrypting sparse or offset data not supported.\n"
 msgstr ""
 
-#: src/filed/backup.c:969
+#: src/filed/backup.c:975
 msgid "Failed to initialize encryption context.\n"
 msgstr ""
 
-#: src/filed/backup.c:1079
+#: src/filed/backup.c:1085
 #, c-format
 msgid "Compression deflate error: %d\n"
 msgstr ""
 
-#: src/filed/backup.c:1086
+#: src/filed/backup.c:1092
 #, c-format
 msgid "Compression deflateReset error: %d\n"
 msgstr ""
 
-#: src/filed/backup.c:1116
+#: src/filed/backup.c:1126
 #, c-format
 msgid "Compression LZO error: %d\n"
 msgstr ""
 
-#: src/filed/backup.c:1161 src/filed/backup.c:1177
+#: src/filed/backup.c:1171 src/filed/backup.c:1187
 msgid "Encryption error\n"
 msgstr ""
 
-#: src/filed/backup.c:1203
+#: src/filed/backup.c:1213
 #, c-format
 msgid "Read error on file %s. ERR=%s\n"
 msgstr ""
 
-#: src/filed/backup.c:1206
+#: src/filed/backup.c:1216
 #, c-format
 msgid "Too many errors. JobErrors=%d.\n"
 msgstr ""
 
-#: src/filed/backup.c:1216
+#: src/filed/backup.c:1226
 msgid "Encryption padding error\n"
 msgstr ""
 
-#: src/filed/backup.c:1280
+#: src/filed/backup.c:1290
 msgid "Invalid file flags, no supported data stream type.\n"
 msgstr ""
 
-#: src/filed/backup.c:1536
+#: src/filed/backup.c:1549
 #, c-format
 msgid "VSS Writer (BackupComplete): %s\n"
 msgstr ""
@@ -16377,434 +16551,436 @@ msgstr ""
 msgid "Could not set Finder Info on %s\n"
 msgstr ""
 
-#: src/filed/restore.c:415
+#: src/filed/restore.c:418
 msgid "LZO init failed\n"
 msgstr ""
 
-#: src/filed/restore.c:657
+#: src/filed/restore.c:660
 msgid "Unexpected cryptographic session data stream.\n"
 msgstr ""
 
-#: src/filed/restore.c:667
+#: src/filed/restore.c:670
 msgid ""
 "No private decryption keys have been defined to decrypt encrypted backup "
 "data.\n"
 msgstr ""
 
-#: src/filed/restore.c:678
+#: src/filed/restore.c:681
 msgid "Could not create digest.\n"
 msgstr ""
 
-#: src/filed/restore.c:696
+#: src/filed/restore.c:699
 msgid "Missing private key required to decrypt encrypted backup data.\n"
 msgstr ""
 
-#: src/filed/restore.c:699
+#: src/filed/restore.c:702
 msgid "Decrypt of the session key failed.\n"
 msgstr ""
 
-#: src/filed/restore.c:705
+#: src/filed/restore.c:708
 #, c-format
 msgid "An error occurred while decoding encrypted session data stream: %s\n"
 msgstr ""
 
-#: src/filed/restore.c:772 src/filed/restore.c:825
+#: src/filed/restore.c:775 src/filed/restore.c:828
 #, c-format
 msgid "Missing encryption session data stream for %s\n"
 msgstr ""
 
-#: src/filed/restore.c:780 src/filed/restore.c:832
+#: src/filed/restore.c:783 src/filed/restore.c:835
 #, c-format
 msgid "Failed to initialize decryption context for %s\n"
 msgstr ""
 
-#: src/filed/restore.c:844
+#: src/filed/restore.c:847
 #, c-format
 msgid "Cannot open resource fork for %s.\n"
 msgstr ""
 
-#: src/filed/restore.c:986
+#: src/filed/restore.c:992
 msgid "Unexpected cryptographic signature data stream.\n"
 msgstr ""
 
-#: src/filed/restore.c:994
+#: src/filed/restore.c:1000
 #, c-format
 msgid "Failed to decode message signature for %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1058
+#: src/filed/restore.c:1064
 #, c-format
 msgid "Encountered %ld acl errors while doing restore\n"
 msgstr ""
 
-#: src/filed/restore.c:1062
+#: src/filed/restore.c:1068
 #, c-format
 msgid "Encountered %ld xattr errors while doing restore\n"
 msgstr ""
 
-#: src/filed/restore.c:1066
+#: src/filed/restore.c:1072
 #, c-format
 msgid ""
 "%d non-supported data streams and %d non-supported attrib streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1070
+#: src/filed/restore.c:1076
 #, c-format
 msgid "%d non-supported resource fork streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1073
+#: src/filed/restore.c:1079
 #, c-format
 msgid "%d non-supported Finder Info streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1076
+#: src/filed/restore.c:1082
 #, c-format
 msgid "%d non-supported acl streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1079
+#: src/filed/restore.c:1085
 #, c-format
 msgid "%d non-supported crypto streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1082
+#: src/filed/restore.c:1088
 #, c-format
 msgid "%d non-supported xattr streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1162
+#: src/filed/restore.c:1168
 msgid "Zlib errno"
 msgstr ""
 
-#: src/filed/restore.c:1164
+#: src/filed/restore.c:1170
 msgid "Zlib stream error"
 msgstr ""
 
-#: src/filed/restore.c:1166
+#: src/filed/restore.c:1172
 msgid "Zlib data error"
 msgstr ""
 
-#: src/filed/restore.c:1168
+#: src/filed/restore.c:1174
 msgid "Zlib memory error"
 msgstr ""
 
-#: src/filed/restore.c:1170
+#: src/filed/restore.c:1176
 msgid "Zlib buffer error"
 msgstr ""
 
-#: src/filed/restore.c:1172
+#: src/filed/restore.c:1178
 msgid "Zlib version error"
 msgstr ""
 
-#: src/filed/restore.c:1212
+#: src/filed/restore.c:1218
 #, c-format
 msgid "Missing cryptographic signature for %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1245 src/filed/restore.c:1274
+#: src/filed/restore.c:1251 src/filed/restore.c:1280
 #, c-format
 msgid "Signature validation failed for file %s: ERR=%s\n"
 msgstr ""
 
-#: src/filed/restore.c:1262
+#: src/filed/restore.c:1268
 #, c-format
 msgid "Digest one file failed for file: %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1301
+#: src/filed/restore.c:1307
 #, c-format
 msgid "Signature validation failed for %s: %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1398
+#: src/filed/restore.c:1404
 #, c-format
 msgid "LZO uncompression error on file %s. ERR=%d\n"
 msgstr ""
 
-#: src/filed/restore.c:1435
+#: src/filed/restore.c:1441
 #, c-format
 msgid "Uncompression error on file %s. ERR=%s\n"
 msgstr ""
 
-#: src/filed/restore.c:1468
+#: src/filed/restore.c:1474
 #, c-format
 msgid "Write error in Win32 Block Decomposition on %s: %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1527
+#: src/filed/restore.c:1533
 msgid "Decryption error\n"
 msgstr ""
 
-#: src/filed/restore.c:1620
+#: src/filed/restore.c:1626
 msgid "Logic error: output file should be open\n"
 msgstr ""
 
-#: src/filed/restore.c:1658
+#: src/filed/restore.c:1664
 msgid "Logic error: output file should not be open\n"
 msgstr ""
 
-#: src/filed/restore.c:1692
+#: src/filed/restore.c:1698
 #, c-format
 msgid "Decryption error. buf_len=%d decrypt_len=%d on file %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1813
+#: src/filed/restore.c:1819
 msgid "Open File Manager paused\n"
 msgstr ""
 
-#: src/filed/restore.c:1817
+#: src/filed/restore.c:1823
 msgid "FAILED to pause Open File Manager\n"
 msgstr ""
 
-#: src/filed/restore.c:1825
+#: src/filed/restore.c:1831
 #, c-format
 msgid "Running as '%s'. Privmask=%#08x\n"
 msgstr ""
 
-#: src/filed/restore.c:1827
+#: src/filed/restore.c:1833
 msgid "Failed to retrieve current UserName\n"
 msgstr ""
 
-#: src/filed/job.c:458
+#: src/filed/job.c:456
 #, c-format
 msgid "2901 Job %s not found.\n"
 msgstr ""
 
-#: src/filed/job.c:468
+#: src/filed/job.c:466
 #, c-format
 msgid "2001 Job %s marked to be canceled.\n"
 msgstr ""
 
-#: src/filed/job.c:471
+#: src/filed/job.c:469
 msgid "2902 Error scanning cancel command.\n"
 msgstr ""
 
-#: src/filed/job.c:494
+#: src/filed/job.c:492
 #, c-format
 msgid "2991 Bad setdebug command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:517
+#: src/filed/job.c:515
 #, c-format
 msgid "Bad estimate command: %s"
 msgstr ""
 
-#: src/filed/job.c:518
+#: src/filed/job.c:516
 msgid "2992 Bad estimate command.\n"
 msgstr ""
 
-#: src/filed/job.c:541
+#: src/filed/job.c:539
 #, c-format
 msgid "Bad Job Command: %s"
 msgstr ""
 
-#: src/filed/job.c:580
+#: src/filed/job.c:578
 #, c-format
 msgid "Bad RunBeforeJob command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:581 src/filed/job.c:600
+#: src/filed/job.c:579 src/filed/job.c:598
 msgid "2905 Bad RunBeforeJob command.\n"
 msgstr ""
 
-#: src/filed/job.c:611
+#: src/filed/job.c:609
 msgid "2905 Bad RunBeforeNow command.\n"
 msgstr ""
 
-#: src/filed/job.c:630
+#: src/filed/job.c:628
 #, c-format
 msgid "Bad RunAfter command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:631
+#: src/filed/job.c:629
 msgid "2905 Bad RunAfterJob command.\n"
 msgstr ""
 
-#: src/filed/job.c:667
+#: src/filed/job.c:665
 #, c-format
 msgid "Bad RunScript command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:668
+#: src/filed/job.c:666
 msgid "2905 Bad RunScript command.\n"
 msgstr ""
 
-#: src/filed/job.c:722
+#: src/filed/job.c:720
 #, c-format
 msgid "Bad RestoreObject command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:789
+#: src/filed/job.c:785
 msgid "2909 Bad RestoreObject command.\n"
 msgstr ""
 
-#: src/filed/job.c:828
+#: src/filed/job.c:824
 #, c-format
 msgid "Plugin Directory not defined. Cannot use plugin: \"%s\"\n"
 msgstr ""
 
-#: src/filed/job.c:870
+#: src/filed/job.c:866
 #, c-format
 msgid "Error running program: %s. stat=%d: ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:881
+#: src/filed/job.c:877
 #, c-format
 msgid "Cannot open FileSet input file: %s. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:1027
+#: src/filed/job.c:1031
 #, c-format
 msgid "REGEX %s compile error. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:1178
+#: src/filed/job.c:1182
 #, c-format
 msgid "Invalid FileSet command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:1651
+#: src/filed/job.c:1655
 #, c-format
 msgid ""
 "DIR and FD clocks differ by %lld seconds, FD automatically compensating.\n"
 msgstr ""
 
-#: src/filed/job.c:1660
+#: src/filed/job.c:1664
 #, c-format
 msgid "Unknown backup level: %s\n"
 msgstr ""
 
-#: src/filed/job.c:1673
+#: src/filed/job.c:1677
 #, c-format
 msgid "Bad level command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:1695
+#: src/filed/job.c:1699
 #, c-format
 msgid "Bad session command: %s"
 msgstr ""
 
-#: src/filed/job.c:1756
+#: src/filed/job.c:1760
 #, c-format
 msgid "Bad storage command: %s"
 msgstr ""
 
-#: src/filed/job.c:1777
+#: src/filed/job.c:1781
 #, c-format
 msgid "Failed to connect to Storage daemon: %s:%d\n"
 msgstr ""
 
-#: src/filed/job.c:1789
+#: src/filed/job.c:1793
 msgid "Failed to authenticate Storage daemon.\n"
 msgstr ""
 
-#: src/filed/job.c:1836
+#: src/filed/job.c:1840
 msgid "ACL support not configured for your machine.\n"
 msgstr ""
 
-#: src/filed/job.c:1840
+#: src/filed/job.c:1844
 msgid "XATTR support not configured for your machine.\n"
 msgstr ""
 
-#: src/filed/job.c:1849
+#: src/filed/job.c:1853
 msgid "Cannot contact Storage daemon\n"
 msgstr ""
 
-#: src/filed/job.c:1868
+#: src/filed/job.c:1872
 #, c-format
 msgid "Bad response to append open: %s\n"
 msgstr ""
 
-#: src/filed/job.c:1873
+#: src/filed/job.c:1877
 msgid "Bad response from stored to open command\n"
 msgstr ""
 
-#: src/filed/job.c:1904
+#: src/filed/job.c:1909
 #, c-format
 msgid "Generate VSS snapshots. Driver=\"%s\", Drive(s)=\"%s\"\n"
 msgstr ""
 
-#: src/filed/job.c:1906
-msgid "CreateSGenerate VSS snapshots failed.\n"
+#: src/filed/job.c:1912
+#, c-format
+msgid "CreateSGenerate VSS snapshots failed. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:1912
+#: src/filed/job.c:1919
 #, c-format
 msgid "Generate VSS snapshot of drive \"%c:\\\" failed.\n"
 msgstr ""
 
-#: src/filed/job.c:1918
+#: src/filed/job.c:1925
 #, c-format
 msgid "VSS Writer (PrepareForBackup): %s\n"
 msgstr ""
 
-#: src/filed/job.c:1923
+#: src/filed/job.c:1930
 msgid "No drive letters found for generating VSS snapshots.\n"
 msgstr ""
 
-#: src/filed/job.c:1926
-msgid "VSS was not initialized properly.\n"
+#: src/filed/job.c:1934
+#, c-format
+msgid "VSS was not initialized properly. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:1976
+#: src/filed/job.c:1985
 msgid "Append Close with SD failed.\n"
 msgstr ""
 
-#: src/filed/job.c:1980
+#: src/filed/job.c:1989
 #, c-format
 msgid "Bad status %d returned from Storage Daemon.\n"
 msgstr ""
 
-#: src/filed/job.c:2010
+#: src/filed/job.c:2019
 #, c-format
 msgid "2994 Bad verify command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:2025 src/filed/job.c:2066
+#: src/filed/job.c:2034 src/filed/job.c:2075
 #, c-format
 msgid "2994 Bad verify level: %s\n"
 msgstr ""
 
-#: src/filed/job.c:2138
+#: src/filed/job.c:2146
 #, c-format
 msgid "Bad replace command. CMD=%s\n"
 msgstr ""
 
-#: src/filed/job.c:2161
+#: src/filed/job.c:2169
 #, c-format
 msgid "Bad where regexp. where=%s\n"
 msgstr ""
 
-#: src/filed/job.c:2199
+#: src/filed/job.c:2207
 #, c-format
 msgid "VSS was not initialized properly. VSS support is disabled. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:2244
+#: src/filed/job.c:2252
 #, c-format
 msgid "VSS Writer (RestoreComplete): %s\n"
 msgstr ""
 
-#: src/filed/job.c:2292
+#: src/filed/job.c:2302
 msgid "Improper calling sequence.\n"
 msgstr ""
 
-#: src/filed/job.c:2312
+#: src/filed/job.c:2322
 #, c-format
 msgid "Bad response to SD read open: %s\n"
 msgstr ""
 
-#: src/filed/job.c:2317
+#: src/filed/job.c:2327
 msgid "Bad response from stored to read open command\n"
 msgstr ""
 
-#: src/filed/job.c:2385
+#: src/filed/job.c:2391
 #, c-format
 msgid "Comm error with SD. bad response to %s. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:2388
+#: src/filed/job.c:2394
 #, c-format
 msgid "Bad response to %s command. Wanted %s, got %s\n"
 msgstr ""
@@ -16839,7 +17015,7 @@ msgid ""
 "Version: "
 msgstr ""
 
-#: src/baconfig.h:72 src/baconfig.h:73
+#: src/baconfig.h:72 src/baconfig.h:73 src/baconfig.h:78 src/baconfig.h:79
 #, c-format
 msgid "Failed ASSERT: %s\n"
 msgstr ""
@@ -17768,47 +17944,47 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:90
+#: src/qt-console/bcomm/dircomm.cpp:92
 #, c-format
 msgid "Already connected\"%s\".\n"
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:103
+#: src/qt-console/bcomm/dircomm.cpp:105
 #, c-format
 msgid ""
 "Connecting to Director %s:%d\n"
 "\n"
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:206
+#: src/qt-console/bcomm/dircomm.cpp:208
 msgid "Initializing ..."
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:221 src/qt-console/console/console.cpp:142
+#: src/qt-console/bcomm/dircomm.cpp:224 src/qt-console/console/console.cpp:142
 msgid "Connected"
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:345
+#: src/qt-console/bcomm/dircomm.cpp:348
 msgid "Command completed ..."
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:352 src/qt-console/console/console.cpp:373
+#: src/qt-console/bcomm/dircomm.cpp:355 src/qt-console/console/console.cpp:379
 msgid "Processing command ..."
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:359
+#: src/qt-console/bcomm/dircomm.cpp:362
 msgid "At main prompt waiting for input ..."
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:366 src/qt-console/bcomm/dircomm.cpp:378
+#: src/qt-console/bcomm/dircomm.cpp:369 src/qt-console/bcomm/dircomm.cpp:382
 msgid "At prompt waiting for input ..."
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:386
+#: src/qt-console/bcomm/dircomm.cpp:390
 msgid "Command failed."
 msgstr ""
 
-#: src/qt-console/bcomm/dircomm.cpp:458
+#: src/qt-console/bcomm/dircomm.cpp:463
 msgid "Director disconnected."
 msgstr ""
 
diff --git a/po/uk.po b/po/uk.po
index e3e107b..70a7e3a 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bacula 3.0.3\n"
 "Report-Msgid-Bugs-To: bacula-devel at lists.sourceforge.net\n"
-"POT-Creation-Date: 2012-01-17 20:45+0100\n"
+"POT-Creation-Date: 2013-02-19 18:26+0100\n"
 "PO-Revision-Date: 2010-01-08 17:32+0300\n"
 "Last-Translator: Vitaliy Kosharskiy <kisa_co at ukrpost.net>\n"
 "Language-Team: Ukrainian\n"
@@ -49,8 +49,8 @@ msgstr ""
 msgid "Job %s waiting %d seconds for scheduled start time.\n"
 msgstr ""
 
-#: src/dird/jobq.c:220 src/dird/job.c:113 src/stored/dircmd.c:198
-#: src/stored/stored.c:503
+#: src/dird/jobq.c:220 src/dird/job.c:113 src/stored/dircmd.c:200
+#: src/stored/stored.c:560
 #, c-format
 msgid "Unable to init job cond variable: ERR=%s\n"
 msgstr ""
@@ -95,7 +95,7 @@ msgstr ""
 msgid "Continue? (yes/mod/no): "
 msgstr ""
 
-#: src/dird/ua_select.c:62 src/dird/ua_run.c:232
+#: src/dird/ua_select.c:62 src/dird/ua_run.c:219
 msgid "mod"
 msgstr ""
 
@@ -115,8 +115,8 @@ msgstr ""
 msgid "The defined Storage resources are:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:167 src/dird/ua_dotcmds.c:715 src/dird/ua_cmds.c:996
-#: src/dird/ua_run.c:237 src/wx-console/wxbrestorepanel.cpp:339
+#: src/dird/ua_select.c:167 src/dird/ua_dotcmds.c:734 src/dird/ua_cmds.c:995
+#: src/dird/ua_run.c:224 src/wx-console/wxbrestorepanel.cpp:339
 #: src/wx-console/wxbrestorepanel.cpp:355
 #: src/wx-console/wxbrestorepanel.cpp:479
 #: src/wx-console/wxbrestorepanel.cpp:480
@@ -137,7 +137,7 @@ msgstr ""
 msgid "The defined FileSet resources are:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:190 src/dird/ua_restore.c:1300 src/dird/ua_run.c:239
+#: src/dird/ua_select.c:190 src/dird/ua_restore.c:1300 src/dird/ua_run.c:226
 msgid "FileSet"
 msgstr ""
 
@@ -145,7 +145,7 @@ msgstr ""
 msgid "Select FileSet resource"
 msgstr ""
 
-#: src/dird/ua_select.c:220 src/dird/ua_cmds.c:1983
+#: src/dird/ua_select.c:220 src/dird/ua_cmds.c:2029
 msgid "Could not find a Catalog resource\n"
 msgstr ""
 
@@ -170,8 +170,8 @@ msgid "The defined Job resources are:\n"
 msgstr ""
 
 #: src/dird/ua_select.c:266 src/dird/ua_select.c:289 src/dird/ua_select.c:330
-#: src/dird/ua_select.c:1187 src/dird/dird_conf.c:650 src/dird/ua_prune.c:593
-#: src/dird/ua_run.c:238
+#: src/dird/ua_select.c:1186 src/dird/dird_conf.c:670 src/dird/ua_prune.c:601
+#: src/dird/ua_run.c:225
 msgid "Job"
 msgstr ""
 
@@ -196,8 +196,8 @@ msgstr ""
 msgid "The defined Client resources are:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:355 src/dird/ua_select.c:464 src/dird/ua_dotcmds.c:716
-#: src/dird/ua_cmds.c:997 src/dird/ua_run.c:243
+#: src/dird/ua_select.c:355 src/dird/ua_select.c:464 src/dird/ua_dotcmds.c:735
+#: src/dird/ua_cmds.c:996 src/dird/ua_run.c:230
 #: src/wx-console/wxbrestorepanel.cpp:336
 #: src/wx-console/wxbrestorepanel.cpp:354
 #: src/wx-console/wxbrestorepanel.cpp:431
@@ -256,7 +256,7 @@ msgstr ""
 msgid "Could not find Pool \"%s\": ERR=%s"
 msgstr ""
 
-#: src/dird/ua_select.c:532 src/dird/ua_output.c:474 src/dird/ua_update.c:437
+#: src/dird/ua_select.c:532 src/dird/ua_output.c:476 src/dird/ua_update.c:436
 #, c-format
 msgid "Error obtaining pool ids. ERR=%s\n"
 msgstr ""
@@ -269,13 +269,13 @@ msgstr ""
 msgid "Defined Pools:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:542 src/dird/ua_select.c:562 src/dird/ua_update.c:364
-#: src/baconfig.h:80
+#: src/dird/ua_select.c:542 src/dird/ua_select.c:562 src/dird/ua_update.c:365
+#: src/baconfig.h:88
 msgid "*None*"
 msgstr ""
 
-#: src/dird/ua_select.c:553 src/dird/ua_select.c:667 src/dird/ua_update.c:615
-#: src/dird/ua_run.c:251 src/wx-console/wxbrestorepanel.cpp:338
+#: src/dird/ua_select.c:553 src/dird/ua_select.c:666 src/dird/ua_update.c:616
+#: src/dird/ua_run.c:238 src/wx-console/wxbrestorepanel.cpp:338
 #: src/wx-console/wxbrestorepanel.cpp:527
 #: src/wx-console/wxbrestorepanel.cpp:537
 #: src/wx-console/wxbrestorepanel.cpp:1834
@@ -291,38 +291,38 @@ msgstr ""
 msgid "No access to Pool \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_select.c:624
+#: src/dird/ua_select.c:623
 msgid "Enter *MediaId or Volume name: "
 msgstr ""
 
-#: src/dird/ua_select.c:659
+#: src/dird/ua_select.c:658
 msgid "The defined Pool resources are:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:667
+#: src/dird/ua_select.c:666
 msgid "Select Pool resource"
 msgstr ""
 
-#: src/dird/ua_select.c:691 src/dird/ua_restore.c:555
+#: src/dird/ua_select.c:690 src/dird/ua_restore.c:555
 #, c-format
 msgid "Error: Pool resource \"%s\" does not exist.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:702
+#: src/dird/ua_select.c:701
 msgid "Enter the JobId to select: "
 msgstr ""
 
-#: src/dird/ua_select.c:740
+#: src/dird/ua_select.c:739
 #, c-format
 msgid "Could not find Job \"%s\": ERR=%s"
 msgstr ""
 
-#: src/dird/ua_select.c:820
+#: src/dird/ua_select.c:819
 #, c-format
 msgid "Automatically selected %s: %s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:831
+#: src/dird/ua_select.c:830
 #, c-format
 msgid ""
 "Your request has multiple choices for \"%s\". Selection is not possible in "
@@ -331,116 +331,116 @@ msgstr ""
 "Ваш запит до \"%s\" має декілька можливостей вибору. У пакетному режимі "
 "вибір не можливий.\n"
 
-#: src/dird/ua_select.c:849
+#: src/dird/ua_select.c:848
 #, c-format
 msgid "Selection list for \"%s\" is empty!\n"
 msgstr ""
 
-#: src/dird/ua_select.c:855
+#: src/dird/ua_select.c:854
 #, c-format
 msgid "Automatically selected: %s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:867
+#: src/dird/ua_select.c:866
 msgid "Selection aborted, nothing done.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:872
+#: src/dird/ua_select.c:871
 #, c-format
 msgid "Please enter a number between 1 and %d\n"
 msgstr ""
 
-#: src/dird/ua_select.c:921
+#: src/dird/ua_select.c:920
 msgid "Storage name given twice.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:938
+#: src/dird/ua_select.c:937
 #, c-format
 msgid "Expecting jobid=nn command, got: %s\n"
 msgstr ""
 
-#: src/dird/ua_select.c:942
+#: src/dird/ua_select.c:941
 #, c-format
 msgid "JobId %s is not running.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:952
+#: src/dird/ua_select.c:951
 #, c-format
 msgid "Expecting job=xxx, got: %s.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:956 src/dird/ua_select.c:968
+#: src/dird/ua_select.c:955 src/dird/ua_select.c:967
 #, c-format
 msgid "Job \"%s\" is not running.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:964
+#: src/dird/ua_select.c:963
 #, c-format
 msgid "Expecting ujobid=xxx, got: %s.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:984
+#: src/dird/ua_select.c:983
 #, c-format
 msgid "Storage resource \"%s\": not found\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1016
+#: src/dird/ua_select.c:1015
 msgid "Enter autochanger drive[0]: "
 msgstr ""
 
-#: src/dird/ua_select.c:1037
+#: src/dird/ua_select.c:1036
 msgid "Enter autochanger slot: "
 msgstr ""
 
-#: src/dird/ua_select.c:1067
+#: src/dird/ua_select.c:1066
 msgid "Media Types defined in conf file:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1073
+#: src/dird/ua_select.c:1072
 msgid "Media Type"
 msgstr ""
 
-#: src/dird/ua_select.c:1073
+#: src/dird/ua_select.c:1072
 msgid "Select the Media Type"
 msgstr ""
 
-#: src/dird/ua_select.c:1112
+#: src/dird/ua_select.c:1111
 #, c-format
 msgid "JobId %s is not running. Use Job name to %s inactive jobs.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1121 src/dird/ua_select.c:1131
+#: src/dird/ua_select.c:1120 src/dird/ua_select.c:1130
 #, c-format
 msgid "Warning Job %s is not running. Continuing anyway ...\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1141 src/dird/ua_cmds.c:693 src/dird/ua_cmds.c:739
+#: src/dird/ua_select.c:1140 src/dird/ua_cmds.c:692 src/dird/ua_cmds.c:738
 msgid "Unauthorized command from this console.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1166 src/stored/status.c:473 src/filed/status.c:241
+#: src/dird/ua_select.c:1165 src/stored/status.c:538 src/filed/status.c:241
 msgid "No Jobs running.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1168
+#: src/dird/ua_select.c:1167
 msgid "None of your jobs are running.\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1173
+#: src/dird/ua_select.c:1172
 msgid "Select Job:\n"
 msgstr ""
 
-#: src/dird/ua_select.c:1182
+#: src/dird/ua_select.c:1181
 #, c-format
 msgid "JobId=%s Job=%s"
 msgstr ""
 
-#: src/dird/ua_select.c:1186
+#: src/dird/ua_select.c:1185
 #, fuzzy, c-format
 msgid "Choose Job to %s"
 msgstr "Оберіть те, що Ви хочете вичистити"
 
-#: src/dird/ua_select.c:1193
+#: src/dird/ua_select.c:1192
 #, c-format
 msgid ""
 "Cancel: %s\n"
@@ -448,15 +448,15 @@ msgid ""
 "%s"
 msgstr ""
 
-#: src/dird/ua_select.c:1194
+#: src/dird/ua_select.c:1193
 msgid "Confirm cancel?"
 msgstr ""
 
-#: src/dird/ua_select.c:1200
+#: src/dird/ua_select.c:1199
 msgid "Confirm cancel (yes/no): "
 msgstr ""
 
-#: src/dird/ua_select.c:1209 src/dird/ua_cmds.c:734 src/dird/ua_cmds.c:1101
+#: src/dird/ua_select.c:1208 src/dird/ua_cmds.c:733 src/dird/ua_cmds.c:1100
 #, c-format
 msgid "Job \"%s\" not found.\n"
 msgstr ""
@@ -718,31 +718,31 @@ msgstr ""
 msgid "File: %s\n"
 msgstr ""
 
-#: src/dird/admin.c:66
+#: src/dird/admin.c:65
 #, c-format
 msgid "Start Admin JobId %d, Job=%s\n"
 msgstr ""
 
-#: src/dird/admin.c:92 src/dird/vbackup.c:304 src/dird/migrate.c:1226
-#: src/dird/backup.c:618
+#: src/dird/admin.c:90 src/dird/vbackup.c:306 src/dird/migrate.c:1227
+#: src/dird/backup.c:628
 #, c-format
 msgid "Error getting Job record for Job report: ERR=%s"
 msgstr ""
 
-#: src/dird/admin.c:100
+#: src/dird/admin.c:98
 msgid "Admin OK"
 msgstr ""
 
-#: src/dird/admin.c:104
+#: src/dird/admin.c:102
 msgid "*** Admin Error ***"
 msgstr ""
 
-#: src/dird/admin.c:108
+#: src/dird/admin.c:106
 msgid "Admin Canceled"
 msgstr ""
 
-#: src/dird/admin.c:112 src/dird/vbackup.c:354 src/dird/backup.c:674
-#: src/dird/restore.c:591
+#: src/dird/admin.c:110 src/dird/vbackup.c:356 src/dird/backup.c:684
+#: src/dird/restore.c:594
 #, c-format
 msgid "Inappropriate term code: %c\n"
 msgstr ""
@@ -751,13 +751,13 @@ msgstr ""
 msgid "Bacula "
 msgstr ""
 
-#: src/dird/dird.c:112
+#: src/dird/dird.c:150
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Version: %s (%s)\n"
 "\n"
-"Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
+"Usage: bacula-dir [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
 "       -c <file>   set configuration file to file\n"
 "       -d <nn>     set debug level to <nn>\n"
 "       -dt         print timestamp in debug output\n"
@@ -783,66 +783,66 @@ msgstr ""
 "       -?          print this message.\n"
 "\n"
 
-#: src/dird/dird.c:258 src/stored/stored.c:227 src/console/console.c:1109
+#: src/dird/dird.c:296 src/stored/stored.c:227 src/console/console.c:1109
 #: src/filed/filed.c:218 src/qt-console/main.cpp:165
 msgid "Cryptography library initialization failed.\n"
 msgstr "Ініціалізація криптографії невдала.\n"
 
-#: src/dird/dird.c:262 src/dird/dird.c:292 src/dird/dird.c:538
-#: src/dird/dird.c:541 src/stored/stored.c:231 src/console/console.c:1113
+#: src/dird/dird.c:300 src/dird/dird.c:328 src/dird/dird.c:560
+#: src/dird/dird.c:563 src/stored/stored.c:231 src/console/console.c:1113
 #: src/filed/filed.c:223 src/qt-console/main.cpp:169
 #, c-format
 msgid "Please correct configuration file: %s\n"
 msgstr "Будьласка виправте файл конфігурації: %s\n"
 
-#: src/dird/dird.c:524
+#: src/dird/dird.c:546
 msgid "Too many open reload requests. Request ignored.\n"
 msgstr ""
 
-#: src/dird/dird.c:539
+#: src/dird/dird.c:561
 msgid "Out of reload table entries. Giving up.\n"
 msgstr ""
 
-#: src/dird/dird.c:542
+#: src/dird/dird.c:564
 msgid "Resetting previous configuration.\n"
 msgstr ""
 
-#: src/dird/dird.c:606
+#: src/dird/dird.c:628
 #, c-format
 msgid ""
 "No Director resource defined in %s\n"
 "Without that I don't know who I am :-(\n"
 msgstr ""
 
-#: src/dird/dird.c:614 src/filed/filed.c:350
+#: src/dird/dird.c:636 src/filed/filed.c:350
 #, c-format
 msgid "No Messages resource defined in %s\n"
 msgstr ""
 
-#: src/dird/dird.c:619
+#: src/dird/dird.c:641
 #, c-format
 msgid "Only one Director resource permitted in %s\n"
 msgstr ""
 
-#: src/dird/dird.c:628 src/dird/dird.c:834 src/dird/dird.c:889
-#: src/dird/dird.c:1056 src/stored/stored.c:354 src/console/console.c:1296
+#: src/dird/dird.c:650 src/dird/dird.c:856 src/dird/dird.c:911
+#: src/dird/dird.c:950 src/stored/stored.c:354 src/console/console.c:1296
 #: src/console/console.c:1326 src/filed/filed.c:357 src/filed/filed.c:516
 #: src/wx-console/console_thread.cpp:118 src/wx-console/console_thread.cpp:144
 #: src/qt-console/main.cpp:224 src/qt-console/main.cpp:254
 msgid "TLS required but not configured in Bacula.\n"
 msgstr "TLS необхідний, але не налаштовано у Bacula.\n"
 
-#: src/dird/dird.c:636 src/stored/stored.c:410 src/filed/filed.c:526
+#: src/dird/dird.c:658 src/stored/stored.c:410 src/filed/filed.c:526
 #, c-format
 msgid "\"TLS Certificate\" file not defined for Director \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:642 src/stored/stored.c:416 src/filed/filed.c:532
+#: src/dird/dird.c:664 src/stored/stored.c:416 src/filed/filed.c:532
 #, c-format
 msgid "\"TLS Key\" file not defined for Director \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:649 src/stored/stored.c:422 src/filed/filed.c:538
+#: src/dird/dird.c:671 src/stored/stored.c:422 src/filed/filed.c:538
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
@@ -850,46 +850,46 @@ msgid ""
 "using \"TLS Verify Peer\".\n"
 msgstr ""
 
-#: src/dird/dird.c:668 src/stored/stored.c:441 src/filed/filed.c:557
+#: src/dird/dird.c:690 src/stored/stored.c:441 src/filed/filed.c:557
 #, c-format
 msgid "Failed to initialize TLS context for Director \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:676
+#: src/dird/dird.c:698
 #, c-format
 msgid "No Job records defined in %s\n"
 msgstr ""
 
-#: src/dird/dird.c:734 src/dird/dird.c:747
+#: src/dird/dird.c:756 src/dird/dird.c:769
 #, c-format
 msgid "Hey something is wrong. p=0x%lu\n"
 msgstr ""
 
-#: src/dird/dird.c:808
+#: src/dird/dird.c:830
 #, c-format
 msgid "\"%s\" directive in Job \"%s\" resource is required, but not found.\n"
 msgstr ""
 
-#: src/dird/dird.c:815
+#: src/dird/dird.c:837
 msgid "Too many items in Job resource\n"
 msgstr ""
 
-#: src/dird/dird.c:819
+#: src/dird/dird.c:841
 #, c-format
 msgid "No storage specified in Job \"%s\" nor in Pool.\n"
 msgstr ""
 
-#: src/dird/dird.c:843
+#: src/dird/dird.c:865
 #, c-format
 msgid "\"TLS Certificate\" file not defined for Console \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:849
+#: src/dird/dird.c:871
 #, c-format
 msgid "\"TLS Key\" file not defined for Console \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:856
+#: src/dird/dird.c:878
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
@@ -897,48 +897,53 @@ msgid ""
 "using \"TLS Verify Peer\".\n"
 msgstr ""
 
-#: src/dird/dird.c:873 src/dird/dird.c:913 src/filed/filed.c:382
+#: src/dird/dird.c:895 src/dird/dird.c:935 src/filed/filed.c:382
 #, c-format
 msgid "Failed to initialize TLS context for File daemon \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:896
+#: src/dird/dird.c:918
 #, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
 "File daemon \"%s\" in %s.\n"
 msgstr ""
 
-#: src/dird/dird.c:953 src/dird/dird.c:955
+#: src/dird/dird.c:959
+#, c-format
+msgid ""
+"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
+"Storage \"%s\" in %s.\n"
+msgstr ""
+
+#: src/dird/dird.c:975 src/stored/stored.c:394
+#, c-format
+msgid "Failed to initialize TLS context for Storage \"%s\" in %s.\n"
+msgstr ""
+
+#: src/dird/dird.c:1014 src/dird/dird.c:1016
 #, c-format
 msgid "Could not open Catalog \"%s\", database \"%s\".\n"
 msgstr ""
 
-#: src/dird/dird.c:958 src/tools/cats_test.c:377
+#: src/dird/dird.c:1019 src/tools/cats_test.c:377
 #, c-format
 msgid "%s"
 msgstr ""
 
-#: src/dird/dird.c:1037
+#: src/dird/dird.c:1098
 #, fuzzy, c-format
 msgid "Could not create storage record for %s\n"
 msgstr "Не вдалось відновити прапорці для файлу %s: ERR=%s\n"
 
-#: src/dird/dird.c:1045
+#: src/dird/dird.c:1106
 #, fuzzy, c-format
 msgid "Could not update storage record for %s\n"
 msgstr "Не вдалось відновити прапорці для файлу %s: ERR=%s\n"
 
-#: src/dird/dird.c:1064
-#, c-format
-msgid ""
-"Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
-"Storage \"%s\" in %s.\n"
-msgstr ""
-
-#: src/dird/dird.c:1080 src/stored/stored.c:394
+#: src/dird/dird.c:1181 src/dird/migrate.c:1072 src/stored/stored.c:491
 #, c-format
-msgid "Failed to initialize TLS context for Storage \"%s\" in %s.\n"
+msgid "Could not compile regex pattern \"%s\" ERR=%s\n"
 msgstr ""
 
 #: src/dird/inc_conf.c:312
@@ -955,18 +960,18 @@ msgstr ""
 msgid "Old style Include/Exclude not supported\n"
 msgstr ""
 
-#: src/dird/inc_conf.c:393 src/dird/inc_conf.c:739 src/dird/dird_conf.c:1993
+#: src/dird/inc_conf.c:393 src/dird/inc_conf.c:739 src/dird/dird_conf.c:2022
 #, c-format
 msgid "Expecting keyword, got: %s\n"
 msgstr ""
 
-#: src/dird/inc_conf.c:401 src/dird/inc_conf.c:745 src/dird/dird_conf.c:1999
+#: src/dird/inc_conf.c:401 src/dird/inc_conf.c:745 src/dird/dird_conf.c:2028
 #: src/lib/parse_conf.c:976
 #, c-format
 msgid "expected an equals, got: %s"
 msgstr ""
 
-#: src/dird/inc_conf.c:411 src/dird/inc_conf.c:754 src/dird/dird_conf.c:2010
+#: src/dird/inc_conf.c:411 src/dird/inc_conf.c:754 src/dird/dird_conf.c:2039
 #, c-format
 msgid "Keyword %s not permitted in this resource"
 msgstr ""
@@ -1018,7 +1023,7 @@ msgstr ""
 msgid "Options section not permitted in Exclude\n"
 msgstr ""
 
-#: src/dird/inc_conf.c:724 src/dird/dird_conf.c:1979
+#: src/dird/inc_conf.c:724 src/dird/dird_conf.c:2008
 #, c-format
 msgid "Expecting open brace. Got %s"
 msgstr ""
@@ -1074,7 +1079,7 @@ msgstr ""
 msgid "End query mode.\n"
 msgstr ""
 
-#: src/dird/newvol.c:91
+#: src/dird/newvol.c:90
 #, c-format
 msgid "Illegal character in Volume name \"%s\"\n"
 msgstr "Заборонені символи у назві Тому \"%s\"\n"
@@ -1089,12 +1094,12 @@ msgstr "У картотеці створено новий Том \"%s\".\n"
 msgid "SQL failed, but ignored. ERR=%s\n"
 msgstr "Проігноровано помилку SQL. ERR=%s\n"
 
-#: src/dird/newvol.c:142
+#: src/dird/newvol.c:141
 #, c-format
 msgid "Wanted to create Volume \"%s\", but it already exists. Trying again.\n"
 msgstr "Спроба створити вже існуючий Том \"%s\". Спробуйте ще раз.\n"
 
-#: src/dird/newvol.c:151
+#: src/dird/newvol.c:150
 msgid "Too many failures. Giving up creating Volume name.\n"
 msgstr "Занадто багато провалів. Відмова у створенні імені Тому.\n"
 
@@ -1133,7 +1138,7 @@ msgstr ""
 msgid "Cannot destroy var context: ERR=%s\n"
 msgstr ""
 
-#: src/dird/recycle.c:65
+#: src/dird/recycle.c:69
 #, c-format
 msgid "Recycled volume \"%s\"\n"
 msgstr ""
@@ -1207,27 +1212,27 @@ msgid ""
 "There are no more Jobs associated with Volume \"%s\". Marking it purged.\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:556 src/dird/ua_label.c:759
+#: src/dird/ua_purge.c:556 src/dird/ua_label.c:774
 #, c-format
 msgid "Connecting to Storage daemon %s at %s:%d ...\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:559 src/dird/ua_dotcmds.c:606 src/dird/ua_cmds.c:772
-#: src/dird/ua_cmds.c:1531 src/dird/ua_label.c:762 src/dird/job.c:448
+#: src/dird/ua_purge.c:559 src/dird/ua_dotcmds.c:625 src/dird/ua_cmds.c:771
+#: src/dird/ua_cmds.c:1577 src/dird/ua_label.c:777 src/dird/job.c:448
 msgid "Failed to connect to Storage daemon.\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:622
+#: src/dird/ua_purge.c:623
 #, fuzzy
 msgid "Can't update volume size in the catalog\n"
 msgstr "У картотеці створено новий Том \"%s\".\n"
 
-#: src/dird/ua_purge.c:624
+#: src/dird/ua_purge.c:625
 #, c-format
 msgid "The volume \"%s\" has been truncated\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:626
+#: src/dird/ua_purge.c:627
 #, c-format
 msgid "Unable to truncate volume \"%s\"\n"
 msgstr ""
@@ -1237,17 +1242,17 @@ msgstr ""
 msgid "No Volumes found to perform %s action.\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:785
+#: src/dird/ua_purge.c:786
 #, c-format
 msgid "Unable move recycled Volume in full Pool \"%s\" MaxVols=%d\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:799
+#: src/dird/ua_purge.c:800
 #, c-format
 msgid "All records pruned from Volume \"%s\"; marking it \"Purged\"\n"
 msgstr ""
 
-#: src/dird/ua_purge.c:804
+#: src/dird/ua_purge.c:805
 #, c-format
 msgid "Cannot purge Volume with VolStatus=%s\n"
 msgstr ""
@@ -1257,8 +1262,8 @@ msgid "Could not get or create a Pool record.\n"
 msgstr ""
 
 #: src/dird/vbackup.c:89 src/dird/migrate.c:227 src/dird/migrate.c:228
-#: src/dird/backup.c:93 src/dird/job.c:185 src/dird/job.c:868
-#: src/dird/job.c:1123 src/dird/job.c:1169 src/dird/job.c:1183
+#: src/dird/backup.c:93 src/dird/job.c:185 src/dird/job.c:871
+#: src/dird/job.c:1126 src/dird/job.c:1172 src/dird/job.c:1186
 msgid "Pool resource"
 msgstr ""
 
@@ -1289,34 +1294,34 @@ msgstr ""
 msgid "Could not get or create the FileSet record.\n"
 msgstr ""
 
-#: src/dird/vbackup.c:311 src/dird/backup.c:625
+#: src/dird/vbackup.c:313 src/dird/backup.c:635
 #, c-format
 msgid "Error getting Client record for Job report: ERR=%s"
 msgstr ""
 
-#: src/dird/vbackup.c:317 src/dird/migrate.c:1256 src/dird/backup.c:631
+#: src/dird/vbackup.c:319 src/dird/migrate.c:1257 src/dird/backup.c:641
 #, c-format
 msgid "Error getting Media record for Volume \"%s\": ERR=%s"
 msgstr ""
 
-#: src/dird/vbackup.c:327 src/dird/backup.c:641 src/dird/backup.c:650
-#: src/stored/bscan.c:1210
+#: src/dird/vbackup.c:329 src/dird/backup.c:651 src/dird/backup.c:660
+#: src/stored/bscan.c:1214
 msgid "Backup OK -- with warnings"
 msgstr ""
 
-#: src/dird/vbackup.c:329 src/dird/backup.c:643 src/stored/bscan.c:1207
+#: src/dird/vbackup.c:331 src/dird/backup.c:653 src/stored/bscan.c:1211
 msgid "Backup OK"
 msgstr ""
 
-#: src/dird/vbackup.c:334 src/dird/backup.c:654 src/stored/bscan.c:1214
+#: src/dird/vbackup.c:336 src/dird/backup.c:664 src/stored/bscan.c:1218
 msgid "*** Backup Error ***"
 msgstr ""
 
-#: src/dird/vbackup.c:344 src/dird/backup.c:664 src/stored/bscan.c:1217
+#: src/dird/vbackup.c:346 src/dird/backup.c:674 src/stored/bscan.c:1221
 msgid "Backup Canceled"
 msgstr ""
 
-#: src/dird/vbackup.c:391
+#: src/dird/vbackup.c:393
 #, c-format
 msgid ""
 "%s %s %s (%s):\n"
@@ -1363,93 +1368,93 @@ msgstr ""
 msgid "disabled"
 msgstr ""
 
-#: src/dird/ua_output.c:208
+#: src/dird/ua_output.c:211
 msgid "Keywords for the show command are:\n"
 msgstr ""
 
-#: src/dird/ua_output.c:214
+#: src/dird/ua_output.c:217
 #, c-format
 msgid "%s resource %s not found.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:217
+#: src/dird/ua_output.c:220
 #, c-format
 msgid "Resource %s not found\n"
 msgstr ""
 
-#: src/dird/ua_output.c:288
+#: src/dird/ua_output.c:290
 msgid "Hey! DB is NULL\n"
 msgstr ""
 
-#: src/dird/ua_output.c:445
+#: src/dird/ua_output.c:447
 #, c-format
 msgid "Jobid %d used %d Volume(s): %s\n"
 msgstr ""
 
-#: src/dird/ua_output.c:463
+#: src/dird/ua_output.c:465
 msgid "No Pool specified.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:484
+#: src/dird/ua_output.c:486
 #, c-format
 msgid "Pool: %s\n"
 msgstr ""
 
-#: src/dird/ua_output.c:500
+#: src/dird/ua_output.c:502
 msgid "Ignoring invalid value for days. Max is 50.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:522
+#: src/dird/ua_output.c:524
 #, c-format
 msgid "Unknown list keyword: %s\n"
 msgstr ""
 
-#: src/dird/ua_output.c:548
+#: src/dird/ua_output.c:549
 #, c-format
 msgid "%s is not a job name.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:562
+#: src/dird/ua_output.c:563
 #, c-format
 msgid "Could not find Pool for Job %s\n"
 msgstr ""
 
-#: src/dird/ua_output.c:575
+#: src/dird/ua_output.c:576
 #, c-format
 msgid "Could not find next Volume for Job %s (Pool=%s, Level=%s).\n"
 msgstr ""
 
-#: src/dird/ua_output.c:579
+#: src/dird/ua_output.c:580
 #, c-format
 msgid ""
 "The next Volume to be used by Job \"%s\" (Pool=%s, Level=%s) will be %s\n"
 msgstr ""
 
-#: src/dird/ua_output.c:592
+#: src/dird/ua_output.c:593
 #, c-format
 msgid "Could not find next Volume for Job %s.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:719 src/dird/job.c:133 src/tools/cats_test.c:375
+#: src/dird/ua_output.c:720 src/dird/job.c:133 src/tools/cats_test.c:375
 #, c-format
 msgid "Could not open database \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_output.c:732
+#: src/dird/ua_output.c:733
 #, c-format
 msgid "Pool %s not in database. %s"
 msgstr ""
 
-#: src/dird/ua_output.c:740
+#: src/dird/ua_output.c:741
 #, c-format
 msgid "Pool %s created in database.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:793
+#: src/dird/ua_output.c:794
 msgid "You have no messages.\n"
 msgstr ""
 
-#: src/dird/ua_output.c:873
+#: src/dird/ua_output.c:874
 msgid "Message too long to display.\n"
 msgstr ""
 
@@ -1462,188 +1467,188 @@ msgstr ""
 msgid ": is an invalid command.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:540 src/dird/ua_restore.c:780
+#: src/dird/ua_dotcmds.c:553 src/dird/ua_restore.c:780
 #: src/dird/ua_restore.c:823
 #, c-format
 msgid "Unable to get Job record for JobId=%s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:600 src/dird/ua_cmds.c:766 src/dird/ua_cmds.c:1520
+#: src/dird/ua_dotcmds.c:619 src/dird/ua_cmds.c:765 src/dird/ua_cmds.c:1566
 #: src/dird/ua_status.c:352 src/dird/job.c:147 src/dird/job.c:153
-#: src/dird/job.c:1157 src/dird/job.c:1161
+#: src/dird/job.c:1160 src/dird/job.c:1164
 msgid "unknown source"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:603 src/dird/ua_cmds.c:769 src/dird/ua_status.c:355
+#: src/dird/ua_dotcmds.c:622 src/dird/ua_cmds.c:768 src/dird/ua_status.c:355
 #, c-format
 msgid "Connecting to Storage daemon %s at %s:%d\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:609 src/dird/ua_cmds.c:775 src/dird/ua_status.c:366
+#: src/dird/ua_dotcmds.c:628 src/dird/ua_cmds.c:774 src/dird/ua_status.c:366
 msgid "Connected to storage daemon\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:629 src/dird/ua_cmds.c:804 src/dird/ua_cmds.c:1202
+#: src/dird/ua_dotcmds.c:648 src/dird/ua_cmds.c:803 src/dird/ua_cmds.c:1208
 #: src/dird/ua_status.c:397
 #, c-format
 msgid "Connecting to Client %s at %s:%d\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:632 src/dird/ua_cmds.c:807 src/dird/ua_cmds.c:1205
+#: src/dird/ua_dotcmds.c:651 src/dird/ua_cmds.c:806 src/dird/ua_cmds.c:1211
 msgid "Failed to connect to Client.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:675 src/dird/ua_dotcmds.c:769
+#: src/dird/ua_dotcmds.c:694 src/dird/ua_dotcmds.c:788
 #, c-format
 msgid "Unknown command: %s\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:713 src/dird/ua_cmds.c:994
+#: src/dird/ua_dotcmds.c:732 src/dird/ua_cmds.c:993
 msgid "Available daemons are: \n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:714 src/dird/ua_cmds.c:995
+#: src/dird/ua_dotcmds.c:733 src/dird/ua_cmds.c:994
 msgid "Director"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:717
+#: src/dird/ua_dotcmds.c:736
 msgid "Select daemon type to make die"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:743
+#: src/dird/ua_dotcmds.c:762
 msgid "The Director will generate a deadlock.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:747
+#: src/dird/ua_dotcmds.c:766
 msgid "The Director will segment fault.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:936
+#: src/dird/ua_dotcmds.c:955
 msgid "Access to specified Client or FileSet not allowed.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:941 src/dird/ua_dotcmds.c:985
+#: src/dird/ua_dotcmds.c:960 src/dird/ua_dotcmds.c:1004
 #: src/dird/ua_restore.c:941 src/dird/ua_restore.c:969
 #: src/dird/ua_restore.c:990
 #, c-format
 msgid "Query failed: %s. ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:980
+#: src/dird/ua_dotcmds.c:999
 msgid "query keyword not found.\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:1007
+#: src/dird/ua_dotcmds.c:1026
 #, c-format
 msgid "List MediaType failed: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:1021
+#: src/dird/ua_dotcmds.c:1040
 #, c-format
 msgid "List Media failed: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_dotcmds.c:1035
+#: src/dird/ua_dotcmds.c:1054
 #, fuzzy, c-format
 msgid "List Location failed: ERR=%s\n"
 msgstr "Невдале встановлення з'єднання TLS\n"
 
-#: src/dird/next_vol.c:149
+#: src/dird/next_vol.c:166
 #, c-format
 msgid "Purging oldest volume \"%s\"\n"
 msgstr ""
 
-#: src/dird/next_vol.c:155
+#: src/dird/next_vol.c:172
 #, c-format
 msgid "Pruning oldest volume \"%s\"\n"
 msgstr ""
 
-#: src/dird/next_vol.c:174
+#: src/dird/next_vol.c:191
 msgid "We seem to be looping trying to find the next volume. I give up.\n"
 msgstr ""
 
-#: src/dird/next_vol.c:201
+#: src/dird/next_vol.c:218
 #, c-format
 msgid "Max Volume bytes=%s exceeded. Marking Volume \"%s\" as Full.\n"
 msgstr ""
 
-#: src/dird/next_vol.c:209
+#: src/dird/next_vol.c:226
 #, c-format
 msgid "Volume used once. Marking Volume \"%s\" as Used.\n"
 msgstr ""
 
-#: src/dird/next_vol.c:216
+#: src/dird/next_vol.c:233
 #, c-format
 msgid "Max Volume jobs=%s exceeded. Marking Volume \"%s\" as Used.\n"
 msgstr ""
 
-#: src/dird/next_vol.c:226
+#: src/dird/next_vol.c:243
 #, c-format
 msgid "Max Volume files=%s exceeded. Marking Volume \"%s\" as Used.\n"
 msgstr ""
 
-#: src/dird/next_vol.c:237
+#: src/dird/next_vol.c:254
 #, c-format
 msgid ""
 "Max configured use duration=%s sec. exceeded. Marking Volume \"%s\" as "
 "Used.\n"
 msgstr ""
 
-#: src/dird/next_vol.c:249
+#: src/dird/next_vol.c:267
 #, c-format
 msgid "Catalog error updating volume \"%s\". ERR=%s"
 msgstr ""
 
-#: src/dird/next_vol.c:271
+#: src/dird/next_vol.c:289
 msgid "volume has expired"
 msgstr ""
 
-#: src/dird/next_vol.c:289 src/dird/next_vol.c:333
+#: src/dird/next_vol.c:307 src/dird/next_vol.c:351
 #, c-format
 msgid "Recycled current volume \"%s\"\n"
 msgstr ""
 
-#: src/dird/next_vol.c:294
+#: src/dird/next_vol.c:312
 msgid "and recycling of current volume failed"
 msgstr ""
 
-#: src/dird/next_vol.c:300
+#: src/dird/next_vol.c:318
 msgid "but should be Append, Purged or Recycle"
 msgstr ""
 
-#: src/dird/next_vol.c:309
+#: src/dird/next_vol.c:327
 msgid "volume has recycling disabled"
 msgstr ""
 
-#: src/dird/next_vol.c:336
+#: src/dird/next_vol.c:354
 msgid ""
 "but should be Append, Purged or Recycle (recycling of the current volume "
 "failed)"
 msgstr ""
 
-#: src/dird/next_vol.c:340
+#: src/dird/next_vol.c:358
 msgid ""
 "but should be Append, Purged or Recycle (cannot automatically recycle "
 "current volume, as it still contains unpruned data or the Volume Retention "
 "time has not expired.)"
 msgstr ""
 
-#: src/dird/next_vol.c:402
+#: src/dird/next_vol.c:421
 #, c-format
 msgid "Unable to get Pool record: ERR=%s"
 msgstr ""
 
-#: src/dird/next_vol.c:409
+#: src/dird/next_vol.c:428
 #, c-format
 msgid "Unable add Scratch Volume, Pool \"%s\" full MaxVols=%d\n"
 msgstr ""
 
-#: src/dird/next_vol.c:428
+#: src/dird/next_vol.c:448
 #, c-format
 msgid "Failed to move Scratch Volume. ERR=%s\n"
 msgstr ""
 
-#: src/dird/next_vol.c:433
+#: src/dird/next_vol.c:453
 #, c-format
 msgid "Using Volume \"%s\" from 'Scratch' pool.\n"
 msgstr ""
@@ -1830,165 +1835,165 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:307
+#: src/dird/ua_cmds.c:306
 #, c-format
 msgid "Pool already has maximum volumes=%d\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:308
+#: src/dird/ua_cmds.c:307
 msgid "Enter new maximum (zero for unlimited): "
 msgstr ""
 
-#: src/dird/ua_cmds.c:328
+#: src/dird/ua_cmds.c:327
 #, c-format
 msgid "Enter number of Volumes to create. 0=>fixed name. Max=%d: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:334
+#: src/dird/ua_cmds.c:333
 #, c-format
 msgid "The number must be between 0 and %d\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:342
+#: src/dird/ua_cmds.c:341
 msgid "Enter Volume name: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:346
+#: src/dird/ua_cmds.c:345
 msgid "Enter base volume name: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:355 src/dird/ua_label.c:648
+#: src/dird/ua_cmds.c:354 src/dird/ua_label.c:663
 msgid "Volume name too long.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:359 src/dird/ua_label.c:654 src/lib/edit.c:501
+#: src/dird/ua_cmds.c:358 src/dird/ua_label.c:669 src/lib/edit.c:501
 msgid "Volume name must be at least one character long.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:370
+#: src/dird/ua_cmds.c:369
 msgid "Enter the starting number: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:375
+#: src/dird/ua_cmds.c:374
 msgid "Start number must be greater than zero.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:386
+#: src/dird/ua_cmds.c:385
 msgid "Enter slot (0 for none): "
 msgstr ""
 
-#: src/dird/ua_cmds.c:390
+#: src/dird/ua_cmds.c:389
 msgid "InChanger? yes/no: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:415
+#: src/dird/ua_cmds.c:414
 #, c-format
 msgid "%d Volumes created in pool %s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:431 src/dird/ua_cmds.c:1033
+#: src/dird/ua_cmds.c:430 src/dird/ua_cmds.c:1032
 msgid "Turn on or off? "
 msgstr ""
 
-#: src/dird/ua_cmds.c:545
+#: src/dird/ua_cmds.c:544
 #, c-format
 msgid ""
 "Can't set %s RecyclePool to %s, %s is not in database.\n"
 "Try to update it with 'update pool=%s'\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:563
+#: src/dird/ua_cmds.c:562
 #, c-format
 msgid ""
 "Can't set %s ScratchPool to %s, %s is not in database.\n"
 "Try to update it with 'update pool=%s'\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:632
+#: src/dird/ua_cmds.c:631
 #, c-format
 msgid ""
 "Error: Pool %s already exists.\n"
 "Use update to change it.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:643
+#: src/dird/ua_cmds.c:642
 #, c-format
 msgid "Pool %s created.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:673
+#: src/dird/ua_cmds.c:672
 msgid "Python interpreter restarted.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:676 src/dird/ua_cmds.c:1331
+#: src/dird/ua_cmds.c:675 src/dird/ua_cmds.c:1337
 msgid "Nothing done.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:700 src/dird/ua_cmds.c:1084 src/dird/ua_run.c:1582
+#: src/dird/ua_cmds.c:699 src/dird/ua_cmds.c:1083 src/dird/ua_run.c:1588
 #, c-format
 msgid "Client \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:709
+#: src/dird/ua_cmds.c:708
 #, c-format
 msgid "Client \"%s\" address set to %s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:743
+#: src/dird/ua_cmds.c:742
 #, c-format
 msgid "Job \"%s\" %sabled\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:921
+#: src/dird/ua_cmds.c:920
 msgid "Enter new debug level: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:998
+#: src/dird/ua_cmds.c:997
 msgid "All"
 msgstr ""
 
-#: src/dird/ua_cmds.c:999
+#: src/dird/ua_cmds.c:998
 msgid "Select daemon type to set debug level"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1088 src/dird/ua_cmds.c:1926
+#: src/dird/ua_cmds.c:1087 src/dird/ua_cmds.c:1972
 #, c-format
 msgid "No authorization for Client \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1093
+#: src/dird/ua_cmds.c:1092
 msgid "Client name missing.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1105 src/dird/ua_cmds.c:1166 src/dird/ua_cmds.c:1948
+#: src/dird/ua_cmds.c:1104 src/dird/ua_cmds.c:1171 src/dird/ua_cmds.c:1994
 #, c-format
 msgid "No authorization for Job \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1110
+#: src/dird/ua_cmds.c:1109
 msgid "Job name missing.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1119
+#: src/dird/ua_cmds.c:1118
 #, c-format
 msgid "Fileset \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1123
+#: src/dird/ua_cmds.c:1122
 #, c-format
 msgid "No authorization for FileSet \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1128
+#: src/dird/ua_cmds.c:1127
 msgid "Fileset name missing.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1139 src/dird/ua_run.c:563
+#: src/dird/ua_cmds.c:1138 src/dird/ua_run.c:550
 #, c-format
 msgid "Level \"%s\" not valid.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1143
+#: src/dird/ua_cmds.c:1142
 msgid "Level value missing.\n"
 msgstr ""
 
@@ -1996,39 +2001,63 @@ msgstr ""
 msgid "Invalid value for accurate. It must be yes or no.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1162
+#: src/dird/ua_cmds.c:1154
+msgid "Accurate value missing.\n"
+msgstr ""
+
+#: src/dird/ua_cmds.c:1167
 msgid "No job specified.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1210
+#: src/dird/ua_cmds.c:1227
 msgid "Error sending include list.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1215
+#: src/dird/ua_cmds.c:1232
 msgid "Error sending exclude list.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1317
+#: src/dird/ua_cmds.c:1323
 msgid ""
 "In general it is not a good idea to delete either a\n"
 "Pool or a Volume since they may contain data.\n"
 "\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1320
+#: src/dird/ua_cmds.c:1326
 msgid "Choose catalog item to delete"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1384
+#: src/dird/ua_cmds.c:1376 src/dird/ua_cmds.c:1391 src/dird/ua_cmds.c:1401
+#, c-format
+msgid "Illegal JobId %s ignored\n"
+msgstr ""
+
+#: src/dird/ua_cmds.c:1404
 msgid "Enter JobId to delete: "
 msgstr ""
 
-#: src/dird/ua_cmds.c:1423
+#: src/dird/ua_cmds.c:1440
+#, c-format
+msgid "Are you sure you want to delete %d JobIds ? (yes/no): "
+msgstr ""
+
+#: src/dird/ua_cmds.c:1450
+#, c-format
+msgid "Illegal JobId range %s - %s should define increasing JobIds, ignored\n"
+msgstr ""
+
+#: src/dird/ua_cmds.c:1454
+#, c-format
+msgid "Illegal JobId range %s - %s, ignored\n"
+msgstr ""
+
+#: src/dird/ua_cmds.c:1469
 #, c-format
-msgid "Job %s and associated records deleted from the catalog.\n"
+msgid "Jobid %s and associated records deleted from the catalog.\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1438
+#: src/dird/ua_cmds.c:1484
 #, c-format
 msgid ""
 "\n"
@@ -2036,44 +2065,44 @@ msgid ""
 "and all Jobs saved on that volume from the Catalog\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1445
+#: src/dird/ua_cmds.c:1491
 #, c-format
 msgid "Are you sure you want to delete Volume \"%s\"? (yes/no): "
 msgstr ""
 
-#: src/dird/ua_cmds.c:1458
+#: src/dird/ua_cmds.c:1504
 msgid "Can't list jobs on this volume\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1483
+#: src/dird/ua_cmds.c:1529
 #, c-format
 msgid "Are you sure you want to delete Pool \"%s\"? (yes/no): "
 msgstr ""
 
-#: src/dird/ua_cmds.c:1598
+#: src/dird/ua_cmds.c:1644
 #, c-format
 msgid "Using Catalog name=%s DB=%s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1666
+#: src/dird/ua_cmds.c:1712
 msgid "ERR: Can't open db\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1713
+#: src/dird/ua_cmds.c:1759
 msgid "Wait on mount timed out\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1723
+#: src/dird/ua_cmds.c:1769
 msgid "ERR: Job was not found\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1799
+#: src/dird/ua_cmds.c:1845
 msgid ""
 "  Command       Description\n"
 "  =======       ===========\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1803
+#: src/dird/ua_cmds.c:1849
 #, c-format
 msgid ""
 "  %-13s %s\n"
@@ -2082,12 +2111,12 @@ msgid ""
 "\t%s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1808
+#: src/dird/ua_cmds.c:1854
 #, c-format
 msgid "  %-13s %s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1812
+#: src/dird/ua_cmds.c:1858
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -2095,29 +2124,29 @@ msgid ""
 "\n"
 msgstr ": неправильна команда\n"
 
-#: src/dird/ua_cmds.c:1814
+#: src/dird/ua_cmds.c:1860
 msgid ""
 "\n"
 "When at a prompt, entering a period cancels the command.\n"
 "\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1850 src/filed/status.c:85
+#: src/dird/ua_cmds.c:1896 src/filed/status.c:85
 #, c-format
 msgid "%s Version: %s (%s) %s %s %s %s\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:1909 src/dird/ua_cmds.c:1936 src/dird/ua_cmds.c:1958
+#: src/dird/ua_cmds.c:1955 src/dird/ua_cmds.c:1982 src/dird/ua_cmds.c:2004
 #, c-format
 msgid "No authorization for Catalog \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:2003
+#: src/dird/ua_cmds.c:2049
 #, c-format
 msgid "Could not open catalog database \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_cmds.c:2013
+#: src/dird/ua_cmds.c:2059
 #, c-format
 msgid "Using Catalog \"%s\"\n"
 msgstr ""
@@ -2212,7 +2241,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:129 src/dird/ua_tree.c:827
+#: src/dird/ua_tree.c:129 src/dird/ua_tree.c:831
 #, c-format
 msgid "cwd is: %s\n"
 msgstr ""
@@ -2222,142 +2251,150 @@ msgstr ""
 msgid "Invalid command \"%s\". Enter \"done\" to exit.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:370 src/dird/ua_tree.c:382 src/dird/ua_tree.c:399
+#: src/dird/ua_tree.c:227
+#, c-format
+msgid ""
+"Something is wrong with the Delta sequence of %s, skiping new parts. Current "
+"sequence is %d\n"
+msgstr ""
+
+#: src/dird/ua_tree.c:373 src/dird/ua_tree.c:385 src/dird/ua_tree.c:402
 msgid "No files marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:384
+#: src/dird/ua_tree.c:387
 msgid "1 file marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:386
+#: src/dird/ua_tree.c:389
 #, c-format
 msgid "%s files marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:414
+#: src/dird/ua_tree.c:417
 msgid "No directories marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:416
+#: src/dird/ua_tree.c:419
 msgid "1 directory marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:418
+#: src/dird/ua_tree.c:421
 #, c-format
 msgid "%s directories marked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:439
+#: src/dird/ua_tree.c:442
 #, c-format
 msgid "%s total files/dirs. %s marked to be restored.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:450
+#: src/dird/ua_tree.c:453
 msgid "No file specification given.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:671
+#: src/dird/ua_tree.c:674
 #, c-format
 msgid "Node %s has no children.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:764
+#: src/dird/ua_tree.c:767
 #, c-format
 msgid "%d total files; %d marked to be restored; %s bytes.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:775 src/stored/btape.c:2947
+#: src/dird/ua_tree.c:778 src/stored/btape.c:2949
 #, c-format
 msgid ""
 "  Command    Description\n"
 "  =======    ===========\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:798
+#: src/dird/ua_tree.c:801
 msgid "Too few or too many arguments. Try using double quotes.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:810
+#: src/dird/ua_tree.c:814
 msgid "Invalid path given.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:846 src/dird/ua_tree.c:858
+#: src/dird/ua_tree.c:850 src/dird/ua_tree.c:862
 msgid "No files unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:860
+#: src/dird/ua_tree.c:864
 msgid "1 file unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:863
+#: src/dird/ua_tree.c:867
 #, c-format
 msgid "%s files unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:874 src/dird/ua_tree.c:891
+#: src/dird/ua_tree.c:878 src/dird/ua_tree.c:895
 msgid "No directories unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:893
+#: src/dird/ua_tree.c:897
 msgid "1 directory unmarked.\n"
 msgstr ""
 
-#: src/dird/ua_tree.c:895
+#: src/dird/ua_tree.c:899
 #, c-format
 msgid "%d directories unmarked.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:559 src/tray-monitor/tray_conf.c:168
+#: src/dird/dird_conf.c:567 src/tray-monitor/tray_conf.c:168
 #: src/qt-console/tray-monitor/tray_conf.cpp:168
 #, c-format
 msgid "No %s resource defined\n"
 msgstr "Ресурс %s не визначено\n"
 
-#: src/dird/dird_conf.c:568
+#: src/dird/dird_conf.c:576
 #, c-format
 msgid "Director: name=%s MaxJobs=%d FDtimeout=%s SDtimeout=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:573
+#: src/dird/dird_conf.c:581
 #, c-format
 msgid "   query_file=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:576 src/dird/dird_conf.c:596 src/dird/dird_conf.c:610
-#: src/dird/dird_conf.c:669 src/dird/dird_conf.c:673 src/dird/dird_conf.c:677
-#: src/dird/dird_conf.c:710 src/dird/dird_conf.c:733 src/dird/dird_conf.c:737
-#: src/dird/dird_conf.c:741 src/dird/dird_conf.c:745 src/dird/dird_conf.c:749
-#: src/dird/dird_conf.c:762 src/dird/dird_conf.c:989 src/dird/dird_conf.c:996
+#: src/dird/dird_conf.c:584 src/dird/dird_conf.c:604 src/dird/dird_conf.c:621
+#: src/dird/dird_conf.c:689 src/dird/dird_conf.c:693 src/dird/dird_conf.c:697
+#: src/dird/dird_conf.c:730 src/dird/dird_conf.c:753 src/dird/dird_conf.c:757
+#: src/dird/dird_conf.c:761 src/dird/dird_conf.c:765 src/dird/dird_conf.c:769
+#: src/dird/dird_conf.c:782 src/dird/dird_conf.c:1018
+#: src/dird/dird_conf.c:1025
 msgid "  --> "
 msgstr ""
 
-#: src/dird/dird_conf.c:581
+#: src/dird/dird_conf.c:589
 #, c-format
 msgid "Console: name=%s SSL=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:586
+#: src/dird/dird_conf.c:594
 #, c-format
 msgid "Counter: name=%s min=%d max=%d cur=%d wrapcntr=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:591
+#: src/dird/dird_conf.c:599
 #, c-format
 msgid "Counter: name=%s min=%d max=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:602
+#: src/dird/dird_conf.c:613
 #, c-format
 msgid "Client: name=%s address=%s FDport=%d MaxJobs=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:605
+#: src/dird/dird_conf.c:616
 #, c-format
 msgid "      JobRetention=%s FileRetention=%s AutoPrune=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:618
+#: src/dird/dird_conf.c:629
 #, c-format
 msgid ""
 "Device: name=%s ok=%d num_writers=%d max_writers=%d\n"
@@ -2366,286 +2403,286 @@ msgid ""
 "      poolid=%s volname=%s MediaType=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:629
+#: src/dird/dird_conf.c:643
 #, c-format
 msgid ""
 "Storage: name=%s address=%s SDport=%d MaxJobs=%u\n"
 "      DeviceName=%s MediaType=%s StorageId=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:639
+#: src/dird/dird_conf.c:656
 #, c-format
 msgid ""
 "Catalog: name=%s address=%s DBport=%d db_name=%s\n"
 "      db_driver=%s db_user=%s MutliDBConn=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:649
+#: src/dird/dird_conf.c:669
 #, c-format
 msgid "%s: name=%s JobType=%d level=%s Priority=%d Enabled=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:650
+#: src/dird/dird_conf.c:670
 msgid "JobDefs"
 msgstr ""
 
-#: src/dird/dird_conf.c:654
+#: src/dird/dird_conf.c:674
 #, c-format
 msgid ""
 "     MaxJobs=%u Resched=%d Times=%d Interval=%s Spool=%d WritePartAfterJob="
 "%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:660
+#: src/dird/dird_conf.c:680
 #, c-format
 msgid "     SpoolSize=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:663
+#: src/dird/dird_conf.c:683
 #, c-format
 msgid "     Accurate=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:666
+#: src/dird/dird_conf.c:686
 #, c-format
 msgid "     SelectionType=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:681
+#: src/dird/dird_conf.c:701
 #, c-format
 msgid "  --> Where=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:684
+#: src/dird/dird_conf.c:704
 #, c-format
 msgid "  --> RegexWhere=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:687
+#: src/dird/dird_conf.c:707
 #, c-format
 msgid "  --> Bootstrap=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:690
+#: src/dird/dird_conf.c:710
 #, c-format
 msgid "  --> WriteBootstrap=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:693
+#: src/dird/dird_conf.c:713
 #, c-format
 msgid "  --> PluginOptions=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:696
+#: src/dird/dird_conf.c:716
 #, c-format
 msgid "  --> MaxRunTime=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:699
+#: src/dird/dird_conf.c:719
 #, c-format
 msgid "  --> MaxWaitTime=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:702
+#: src/dird/dird_conf.c:722
 #, c-format
 msgid "  --> MaxStartDelay=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:705
+#: src/dird/dird_conf.c:725
 #, c-format
 msgid "  --> MaxRunSchedTime=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:717
+#: src/dird/dird_conf.c:737
 #, c-format
 msgid "  --> Base %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:723 src/lib/runscript.c:297
+#: src/dird/dird_conf.c:743 src/lib/runscript.c:297
 msgid " --> RunScript\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:724 src/lib/runscript.c:298
+#: src/dird/dird_conf.c:744 src/lib/runscript.c:298
 #, c-format
 msgid "  --> Command=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:725 src/lib/runscript.c:299
+#: src/dird/dird_conf.c:745 src/lib/runscript.c:299
 #, c-format
 msgid "  --> Target=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:726 src/lib/runscript.c:300
+#: src/dird/dird_conf.c:746 src/lib/runscript.c:300
 #, c-format
 msgid "  --> RunOnSuccess=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:727 src/lib/runscript.c:301
+#: src/dird/dird_conf.c:747 src/lib/runscript.c:301
 #, c-format
 msgid "  --> RunOnFailure=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:728 src/lib/runscript.c:302
+#: src/dird/dird_conf.c:748 src/lib/runscript.c:302
 #, c-format
 msgid "  --> FailJobOnError=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:729 src/lib/runscript.c:303
+#: src/dird/dird_conf.c:749 src/lib/runscript.c:303
 #, c-format
 msgid "  --> RunWhen=%u\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:755
+#: src/dird/dird_conf.c:775
 #, c-format
 msgid "  --> Run=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:759
+#: src/dird/dird_conf.c:779
 #, c-format
 msgid "  --> SelectionPattern=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:770
+#: src/dird/dird_conf.c:793
 #, c-format
 msgid "FileSet: name=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:861 src/dird/dird_conf.c:940
+#: src/dird/dird_conf.c:887 src/dird/dird_conf.c:966
 #, c-format
 msgid "Schedule: name=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:866
+#: src/dird/dird_conf.c:892
 #, c-format
 msgid "  --> Run Level=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:867
+#: src/dird/dird_conf.c:893
 msgid "      hour="
 msgstr ""
 
-#: src/dird/dird_conf.c:876
+#: src/dird/dird_conf.c:902
 msgid "      mday="
 msgstr ""
 
-#: src/dird/dird_conf.c:885
+#: src/dird/dird_conf.c:911
 msgid "      month="
 msgstr ""
 
-#: src/dird/dird_conf.c:894
+#: src/dird/dird_conf.c:920
 msgid "      wday="
 msgstr ""
 
-#: src/dird/dird_conf.c:903
+#: src/dird/dird_conf.c:929
 msgid "      wom="
 msgstr ""
 
-#: src/dird/dird_conf.c:912
+#: src/dird/dird_conf.c:938
 msgid "      woy="
 msgstr ""
 
-#: src/dird/dird_conf.c:921
+#: src/dird/dird_conf.c:947
 #, c-format
 msgid "      mins=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:923 src/dird/dird_conf.c:927 src/dird/dird_conf.c:931
+#: src/dird/dird_conf.c:949 src/dird/dird_conf.c:953 src/dird/dird_conf.c:957
 msgid "     --> "
 msgstr ""
 
-#: src/dird/dird_conf.c:945
+#: src/dird/dird_conf.c:974
 #, c-format
 msgid "Pool: name=%s PoolType=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:947
+#: src/dird/dird_conf.c:976
 #, c-format
 msgid "      use_cat=%d use_once=%d cat_files=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:950
+#: src/dird/dird_conf.c:979
 #, c-format
 msgid "      max_vols=%d auto_prune=%d VolRetention=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:953
+#: src/dird/dird_conf.c:982
 #, c-format
 msgid "      VolUse=%s recycle=%d LabelFormat=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:957
+#: src/dird/dird_conf.c:986
 #, c-format
 msgid "      CleaningPrefix=%s LabelType=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:959
+#: src/dird/dird_conf.c:988
 #, c-format
 msgid "      RecyleOldest=%d PurgeOldest=%d ActionOnPurge=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:963
+#: src/dird/dird_conf.c:992
 #, c-format
 msgid "      MaxVolJobs=%d MaxVolFiles=%d MaxVolBytes=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:967
+#: src/dird/dird_conf.c:996
 #, c-format
 msgid "      MigTime=%s MigHiBytes=%s MigLoBytes=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:971
+#: src/dird/dird_conf.c:1000
 #, c-format
 msgid "      JobRetention=%s FileRetention=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:975
+#: src/dird/dird_conf.c:1004
 #, c-format
 msgid "      NextPool=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:978
+#: src/dird/dird_conf.c:1007
 #, c-format
 msgid "      RecyclePool=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:981
+#: src/dird/dird_conf.c:1010
 #, c-format
 msgid "      ScratchPool=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:984
+#: src/dird/dird_conf.c:1013
 #, c-format
 msgid "      Catalog=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1004
+#: src/dird/dird_conf.c:1033
 #, c-format
 msgid "Messages: name=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1006
+#: src/dird/dird_conf.c:1035
 #, c-format
 msgid "      mailcmd=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1008
+#: src/dird/dird_conf.c:1037
 #, c-format
 msgid "      opcmd=%s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1012 src/tray-monitor/tray_conf.c:199
+#: src/dird/dird_conf.c:1041 src/tray-monitor/tray_conf.c:199
 #: src/qt-console/tray-monitor/tray_conf.cpp:199
 #, c-format
 msgid "Unknown resource type %d in dump_resource.\n"
 msgstr "Невідомий тип ресурсу %d у dump_resource.\n"
 
-#: src/dird/dird_conf.c:1343 src/tray-monitor/tray_conf.c:257
+#: src/dird/dird_conf.c:1372 src/tray-monitor/tray_conf.c:257
 #: src/qt-console/tray-monitor/tray_conf.cpp:257
 #, c-format
 msgid "Unknown resource type %d in free_resource.\n"
 msgstr "Невідомий тип ресурсу %d у free_resource.\n"
 
-#: src/dird/dird_conf.c:1375 src/dird/dird_conf.c:1390
+#: src/dird/dird_conf.c:1404 src/dird/dird_conf.c:1419
 #: src/tray-monitor/tray_conf.c:288 src/wx-console/console_conf.c:265
 #: src/console/console_conf.c:259 src/filed/filed_conf.c:361
 #: src/qt-console/tray-monitor/tray_conf.cpp:288
@@ -2654,54 +2691,54 @@ msgstr "Невідомий тип ресурсу %d у free_resource.\n"
 msgid "%s item is required in %s resource, but not found.\n"
 msgstr "Не знайдено необхідний елемент %s для ресурсу %s.\n"
 
-#: src/dird/dird_conf.c:1381 src/tray-monitor/tray_conf.c:294
+#: src/dird/dird_conf.c:1410 src/tray-monitor/tray_conf.c:294
 #: src/lib/parse_conf.c:225 src/qt-console/tray-monitor/tray_conf.cpp:294
 #, c-format
 msgid "Too many items in %s resource\n"
 msgstr "Забагато елементів у ресурсі %s\n"
 
-#: src/dird/dird_conf.c:1421
+#: src/dird/dird_conf.c:1450
 #, c-format
 msgid "Cannot find Pool resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1432
+#: src/dird/dird_conf.c:1461
 #, c-format
 msgid "Cannot find Console resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1438 src/stored/stored_conf.c:611
+#: src/dird/dird_conf.c:1467 src/stored/stored_conf.c:611
 #: src/filed/filed_conf.c:381
 #, c-format
 msgid "Cannot find Director resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1445 src/stored/stored_conf.c:617
+#: src/dird/dird_conf.c:1474 src/stored/stored_conf.c:617
 #, c-format
 msgid "Cannot find Storage resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1454
+#: src/dird/dird_conf.c:1483
 #, c-format
 msgid "Cannot find Job resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1504
+#: src/dird/dird_conf.c:1533
 #, c-format
 msgid "Cannot find Counter resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1512 src/filed/filed_conf.c:387
+#: src/dird/dird_conf.c:1541 src/filed/filed_conf.c:387
 #, c-format
 msgid "Cannot find Client resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1525
+#: src/dird/dird_conf.c:1554
 #, c-format
 msgid "Cannot find Schedule resource %s\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1530 src/dird/dird_conf.c:1590
+#: src/dird/dird_conf.c:1559 src/dird/dird_conf.c:1619
 #: src/tray-monitor/tray_conf.c:314 src/tray-monitor/tray_conf.c:352
 #: src/qt-console/tray-monitor/tray_conf.cpp:314
 #: src/qt-console/tray-monitor/tray_conf.cpp:352
@@ -2709,12 +2746,12 @@ msgstr ""
 msgid "Unknown resource type %d in save_resource.\n"
 msgstr "Невідомий тип ресурсу %d у save_resource.\n"
 
-#: src/dird/dird_conf.c:1605
+#: src/dird/dird_conf.c:1634
 #, c-format
 msgid "Name item is required in %s resource, but not found.\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1613 src/tray-monitor/tray_conf.c:372
+#: src/dird/dird_conf.c:1642 src/tray-monitor/tray_conf.c:372
 #: src/wx-console/console_conf.c:328 src/console/console_conf.c:322
 #: src/filed/filed_conf.c:446 src/qt-console/tray-monitor/tray_conf.cpp:372
 #: src/qt-console/bat_conf.cpp:334
@@ -2722,43 +2759,43 @@ msgstr ""
 msgid "Attempt to define second %s resource named \"%s\" is not permitted.\n"
 msgstr "Спроба визначити другий %s ресурс із назвою \"%s\" не дозволяється.\n"
 
-#: src/dird/dird_conf.c:1618
+#: src/dird/dird_conf.c:1647
 #, c-format
 msgid "Inserting %s res: %s index=%d pass=%d\n"
 msgstr ""
 
-#: src/dird/dird_conf.c:1631
+#: src/dird/dird_conf.c:1660
 #, c-format
 msgid "Expected one of: %s, got: %s"
 msgstr ""
 
-#: src/dird/dird_conf.c:1703
+#: src/dird/dird_conf.c:1732
 #, c-format
 msgid "Expected a Migration Job Type keyword, got: %s"
 msgstr ""
 
-#: src/dird/dird_conf.c:1729
+#: src/dird/dird_conf.c:1758
 #, c-format
 msgid "Expected a Job Type keyword, got: %s"
 msgstr ""
 
-#: src/dird/dird_conf.c:1753
+#: src/dird/dird_conf.c:1782
 #, c-format
 msgid "Expected a Job Level keyword, got: %s"
 msgstr ""
 
-#: src/dird/dird_conf.c:1773
+#: src/dird/dird_conf.c:1802
 #, c-format
 msgid "Expected a Restore replacement option, got: %s"
 msgstr ""
 
-#: src/dird/dird_conf.c:1823 src/dird/dird_conf.c:1939
-#: src/lib/parse_conf.c:761 src/lib/parse_conf.c:777
+#: src/dird/dird_conf.c:1852 src/dird/dird_conf.c:1968
+#: src/lib/parse_conf.c:761 src/lib/parse_conf.c:777 src/lib/ini.c:593
 #, c-format
 msgid "Expect %s, got: %s"
 msgstr ""
 
-#: src/dird/dird_conf.c:1845 src/lib/parse_conf.c:478
+#: src/dird/dird_conf.c:1874 src/lib/parse_conf.c:478
 #, c-format
 msgid "Could not find config Resource %s referenced on line %d : %s\n"
 msgstr ""
@@ -2886,7 +2923,7 @@ msgstr ""
 msgid "Select full restore to a specified Job date"
 msgstr ""
 
-#: src/dird/ua_restore.c:446 src/dird/ua_status.c:863 src/stored/status.c:546
+#: src/dird/ua_restore.c:446 src/dird/ua_status.c:862 src/stored/status.c:611
 #: src/filed/status.c:373 src/wx-console/wxbconfigpanel.cpp:220
 msgid "Cancel"
 msgstr ""
@@ -2896,7 +2933,7 @@ msgstr ""
 msgid "Unknown keyword: %s\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:520 src/dird/ua_update.c:955
+#: src/dird/ua_restore.c:520 src/dird/ua_update.c:957
 #, c-format
 msgid "Improper date format: %s\n"
 msgstr ""
@@ -3130,12 +3167,17 @@ msgstr ""
 msgid "Warning default storage overridden by \"%s\" on command line.\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1533
+#: src/dird/ua_restore.c:1534
+#, c-format
+msgid "Using Storage \"%s\" from MediaType \"%s\".\n"
+msgstr ""
+
+#: src/dird/ua_restore.c:1537
 #, c-format
 msgid "Storage \"%s\" not found, using Storage \"%s\" from MediaType \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_restore.c:1541
+#: src/dird/ua_restore.c:1546
 #, c-format
 msgid ""
 "\n"
@@ -3197,7 +3239,7 @@ msgid ""
 "resource.\n"
 msgstr ""
 
-#: src/dird/fd_cmds.c:500 src/filed/job.c:858
+#: src/dird/fd_cmds.c:500 src/filed/job.c:854
 #, c-format
 msgid "Cannot run program: %s. ERR=%s\n"
 msgstr ""
@@ -3239,9 +3281,9 @@ msgid ""
 "msglen=%d msg=%s\n"
 msgstr ""
 
-#: src/dird/fd_cmds.c:825 src/dird/fd_cmds.c:884 src/dird/catreq.c:443
-#: src/cats/sqlite.c:374 src/cats/ingres.c:451 src/cats/postgresql.c:441
-#: src/cats/dbi.c:552 src/cats/mysql.c:358
+#: src/dird/fd_cmds.c:825 src/dird/fd_cmds.c:884 src/cats/sqlite.c:387
+#: src/cats/ingres.c:464 src/cats/postgresql.c:454 src/cats/dbi.c:565
+#: src/cats/mysql.c:371
 #, c-format
 msgid "Attribute create error. %s"
 msgstr ""
@@ -3260,19 +3302,19 @@ msgstr ""
 msgid "Negative numbers not permitted\n"
 msgstr ""
 
-#: src/dird/ua_label.c:110
+#: src/dird/ua_label.c:110 src/lib/sellist.c:76
 msgid "Range end is not integer.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:115
+#: src/dird/ua_label.c:115 src/lib/sellist.c:81
 msgid "Range start is not an integer.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:121
+#: src/dird/ua_label.c:121 src/lib/sellist.c:87
 msgid "Range end not bigger than start.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:127
+#: src/dird/ua_label.c:127 src/lib/sellist.c:94
 msgid "Input value is not an integer.\n"
 msgstr ""
 
@@ -3284,179 +3326,179 @@ msgstr ""
 msgid "Slot too large.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:187 src/dird/ua_label.c:352 src/dird/ua_label.c:1214
-#: src/dird/ua_run.c:1557
+#: src/dird/ua_label.c:189 src/dird/ua_label.c:366 src/dird/ua_label.c:1228
+#: src/dird/ua_run.c:1563
 msgid "command line"
 msgstr ""
 
-#: src/dird/ua_label.c:205 src/dird/ua_label.c:516 src/dird/ua_label.c:1221
+#: src/dird/ua_label.c:207 src/dird/ua_label.c:531 src/dird/ua_label.c:1235
 msgid "No slots in changer to scan.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:217 src/dird/ua_label.c:527
+#: src/dird/ua_label.c:219 src/dird/ua_label.c:542
 msgid "No Volumes found to label, or no barcodes.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:227 src/dird/ua_label.c:1242
+#: src/dird/ua_label.c:229 src/dird/ua_label.c:1256
 #, c-format
 msgid "Slot %d greater than max %d ignored.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:256
+#: src/dird/ua_label.c:267
 #, c-format
 msgid "No VolName for Slot=%d InChanger set to zero.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:274
+#: src/dird/ua_label.c:288
 #, c-format
 msgid "Catalog record for Volume \"%s\" updated to reference slot %d.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:278
+#: src/dird/ua_label.c:292
 #, c-format
 msgid "Catalog record for Volume \"%s\" is up to date.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:284
+#: src/dird/ua_label.c:298
 #, c-format
 msgid "Volume \"%s\" not found in catalog. Slot=%d InChanger set to zero.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:381
+#: src/dird/ua_label.c:394
 #, c-format
 msgid ""
 "Volume \"%s\" has VolStatus %s. It must be Purged or Recycled before "
 "relabeling.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:397
+#: src/dird/ua_label.c:410
 msgid "Enter new Volume name: "
 msgstr ""
 
-#: src/dird/ua_label.c:410
+#: src/dird/ua_label.c:425
 #, c-format
 msgid "Media record for new Volume \"%s\" already exists.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:428
+#: src/dird/ua_label.c:443
 msgid "Enter slot (0 or Enter for none): "
 msgstr ""
 
-#: src/dird/ua_label.c:456
+#: src/dird/ua_label.c:471
 #, c-format
 msgid "Delete of Volume \"%s\" failed. ERR=%s"
 msgstr ""
 
-#: src/dird/ua_label.c:459
+#: src/dird/ua_label.c:474
 #, c-format
 msgid "Old volume \"%s\" deleted from catalog.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:470
+#: src/dird/ua_label.c:485
 #, c-format
 msgid "Requesting to mount %s ...\n"
 msgstr ""
 
-#: src/dird/ua_label.c:492
+#: src/dird/ua_label.c:507
 msgid "Do not forget to mount the drive!!!\n"
 msgstr ""
 
-#: src/dird/ua_label.c:532
+#: src/dird/ua_label.c:547
 msgid ""
 "The following Volumes will be labeled:\n"
 "Slot  Volume\n"
 "==============\n"
 msgstr ""
 
-#: src/dird/ua_label.c:541
+#: src/dird/ua_label.c:556
 msgid "Do you want to label these Volumes? (yes|no): "
 msgstr ""
 
-#: src/dird/ua_label.c:562
+#: src/dird/ua_label.c:576
 #, c-format
 msgid "Media record for Slot %d Volume \"%s\" already exists.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:568
+#: src/dird/ua_label.c:582
 #, c-format
 msgid "Error setting InChanger: ERR=%s"
 msgstr ""
 
-#: src/dird/ua_label.c:591
+#: src/dird/ua_label.c:605
 #, c-format
 msgid "Maximum pool Volumes=%d reached.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:598
+#: src/dird/ua_label.c:613
 #, c-format
 msgid "Catalog record for cleaning tape \"%s\" successfully created.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:605
+#: src/dird/ua_label.c:620
 #, c-format
 msgid "Catalog error on cleaning tape: %s"
 msgstr ""
 
-#: src/dird/ua_label.c:641
+#: src/dird/ua_label.c:656
 #, c-format
 msgid "Illegal character \"%c\" in a volume name.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:688
+#: src/dird/ua_label.c:703
 #, c-format
 msgid "Sending relabel command from \"%s\" to \"%s\" ...\n"
 msgstr ""
 
-#: src/dird/ua_label.c:695
+#: src/dird/ua_label.c:710
 #, c-format
 msgid "Sending label command for Volume \"%s\" Slot %d ...\n"
 msgstr ""
 
-#: src/dird/ua_label.c:736
+#: src/dird/ua_label.c:751
 #, c-format
 msgid "Catalog record for Volume \"%s\", Slot %d  successfully created.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:749
+#: src/dird/ua_label.c:764
 #, c-format
 msgid "Label command failed for Volume %s.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:787
+#: src/dird/ua_label.c:802
 msgid "Could not open SD socket.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:859 src/dird/ua_label.c:869
+#: src/dird/ua_label.c:874 src/dird/ua_label.c:884
 #, c-format
 msgid "Invalid Slot number: %s\n"
 msgstr ""
 
-#: src/dird/ua_label.c:878
+#: src/dird/ua_label.c:893
 #, c-format
 msgid "Invalid Volume name: %s\n"
 msgstr ""
 
-#: src/dird/ua_label.c:972
+#: src/dird/ua_label.c:987
 #, c-format
 msgid "Device \"%s\" has %d slots.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:1018
+#: src/dird/ua_label.c:1033
 #, c-format
 msgid "Pool \"%s\" resource not found for volume \"%s\"!\n"
 msgstr ""
 
-#: src/dird/ua_label.c:1233
+#: src/dird/ua_label.c:1247
 msgid "No Volumes found, or no barcodes.\n"
 msgstr ""
 
-#: src/dird/ua_label.c:1236
+#: src/dird/ua_label.c:1250
 msgid ""
 " Slot |   Volume Name    |   Status  |     Media Type       |      "
 "Pool          |\n"
 msgstr ""
 
-#: src/dird/ua_label.c:1237
+#: src/dird/ua_label.c:1251
 msgid ""
 "------+------------------+-----------+----------------------"
 "+--------------------|\n"
@@ -3676,16 +3718,16 @@ msgstr ""
 msgid "New Recycle flag is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:257 src/dird/ua_update.c:277 src/dird/ua_update.c:698
-#: src/dird/ua_run.c:180 src/dird/backup.c:778 src/dird/backup.c:779
-#: src/dird/backup.c:780 src/dird/ua_input.c:131 src/stored/parse_bsr.c:864
+#: src/dird/ua_update.c:257 src/dird/ua_update.c:277 src/dird/ua_update.c:699
+#: src/dird/ua_run.c:180 src/dird/backup.c:788 src/dird/backup.c:789
+#: src/dird/backup.c:790 src/dird/ua_input.c:131 src/stored/parse_bsr.c:863
 #: src/tools/dbcheck.c:1352
 msgid "yes"
 msgstr ""
 
-#: src/dird/ua_update.c:257 src/dird/ua_update.c:277 src/dird/ua_update.c:698
-#: src/dird/backup.c:778 src/dird/backup.c:779 src/dird/backup.c:780
-#: src/dird/ua_input.c:135 src/stored/parse_bsr.c:864
+#: src/dird/ua_update.c:257 src/dird/ua_update.c:277 src/dird/ua_update.c:699
+#: src/dird/ua_run.c:200 src/dird/backup.c:788 src/dird/backup.c:789
+#: src/dird/backup.c:790 src/dird/ua_input.c:135 src/stored/parse_bsr.c:863
 msgid "no"
 msgstr ""
 
@@ -3699,47 +3741,47 @@ msgstr ""
 msgid "Invalid slot, it must be between 0 and MaxVols=%d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:303 src/dird/ua_update.c:726
+#: src/dird/ua_update.c:304 src/dird/ua_update.c:728
 #, c-format
 msgid "Error updating media record Slot: ERR=%s"
 msgstr ""
 
-#: src/dird/ua_update.c:305
+#: src/dird/ua_update.c:306
 #, c-format
 msgid "New Slot is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:330
+#: src/dird/ua_update.c:331
 #, c-format
 msgid "New Pool is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:373
+#: src/dird/ua_update.c:374
 #, c-format
 msgid "New RecyclePool is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:393
+#: src/dird/ua_update.c:394
 #, c-format
 msgid "Error updating Volume record: ERR=%s"
 msgstr ""
 
-#: src/dird/ua_update.c:395
+#: src/dird/ua_update.c:396
 #, c-format
 msgid "Volume defaults updated from \"%s\" Pool record.\n"
 msgstr ""
 
-#: src/dird/ua_update.c:419 src/dird/ua_update.c:452
+#: src/dird/ua_update.c:419 src/dird/ua_update.c:451
 #, c-format
 msgid "Error updating Volume records: ERR=%s"
 msgstr ""
 
-#: src/dird/ua_update.c:421 src/dird/ua_update.c:454
+#: src/dird/ua_update.c:421 src/dird/ua_update.c:453
 #, c-format
 msgid "All Volume defaults updated from \"%s\" Pool record.\n"
 msgstr ""
 
-#: src/dird/ua_update.c:444
+#: src/dird/ua_update.c:443
 #, c-format
 msgid "Updating all pools, but skipped PoolId=%d. ERR=%s\n"
 msgstr ""
@@ -3754,276 +3796,276 @@ msgstr ""
 msgid "New Enabled is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:486
+#: src/dird/ua_update.c:487
 #, c-format
 msgid "Error updating media record ActionOnPurge: ERR=%s"
 msgstr ""
 
-#: src/dird/ua_update.c:489
+#: src/dird/ua_update.c:490
 #, c-format
 msgid "New ActionOnPurge is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:604 src/dird/ua_run.c:235
+#: src/dird/ua_update.c:605 src/dird/ua_run.c:222
 msgid "Parameters to modify:\n"
 msgstr ""
 
-#: src/dird/ua_update.c:605
+#: src/dird/ua_update.c:606
 msgid "Volume Status"
 msgstr ""
 
-#: src/dird/ua_update.c:606
+#: src/dird/ua_update.c:607
 msgid "Volume Retention Period"
 msgstr ""
 
-#: src/dird/ua_update.c:607
+#: src/dird/ua_update.c:608
 msgid "Volume Use Duration"
 msgstr ""
 
-#: src/dird/ua_update.c:608
+#: src/dird/ua_update.c:609
 msgid "Maximum Volume Jobs"
 msgstr ""
 
-#: src/dird/ua_update.c:609
+#: src/dird/ua_update.c:610
 msgid "Maximum Volume Files"
 msgstr ""
 
-#: src/dird/ua_update.c:610
+#: src/dird/ua_update.c:611
 msgid "Maximum Volume Bytes"
 msgstr ""
 
-#: src/dird/ua_update.c:611
+#: src/dird/ua_update.c:612
 msgid "Recycle Flag"
 msgstr ""
 
-#: src/dird/ua_update.c:612
+#: src/dird/ua_update.c:613
 msgid "Slot"
 msgstr ""
 
-#: src/dird/ua_update.c:613
+#: src/dird/ua_update.c:614
 msgid "InChanger Flag"
 msgstr ""
 
-#: src/dird/ua_update.c:614
+#: src/dird/ua_update.c:615
 msgid "Volume Files"
 msgstr ""
 
-#: src/dird/ua_update.c:616
+#: src/dird/ua_update.c:617
 msgid "Volume from Pool"
 msgstr ""
 
-#: src/dird/ua_update.c:617
+#: src/dird/ua_update.c:618
 msgid "All Volumes from Pool"
 msgstr ""
 
-#: src/dird/ua_update.c:618
+#: src/dird/ua_update.c:619
 msgid "All Volumes from all Pools"
 msgstr ""
 
-#: src/dird/ua_update.c:619
+#: src/dird/ua_update.c:620
 msgid "Enabled"
 msgstr ""
 
-#: src/dird/ua_update.c:620
+#: src/dird/ua_update.c:621
 msgid "RecyclePool"
 msgstr ""
 
-#: src/dird/ua_update.c:621
+#: src/dird/ua_update.c:622
 msgid "Action On Purge"
 msgstr ""
 
-#: src/dird/ua_update.c:622
+#: src/dird/ua_update.c:623
 msgid "Done"
 msgstr ""
 
-#: src/dird/ua_update.c:623 src/dird/ua_run.c:265 src/dird/ua_run.c:594
+#: src/dird/ua_update.c:624 src/dird/ua_run.c:252 src/dird/ua_run.c:600
 msgid "Select parameter to modify"
 msgstr ""
 
-#: src/dird/ua_update.c:631
+#: src/dird/ua_update.c:632
 #, c-format
 msgid "Updating Volume \"%s\"\n"
 msgstr ""
 
-#: src/dird/ua_update.c:636
+#: src/dird/ua_update.c:637
 #, c-format
 msgid "Current Volume status is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:637
+#: src/dird/ua_update.c:638
 msgid "Possible Values are:\n"
 msgstr ""
 
-#: src/dird/ua_update.c:648
+#: src/dird/ua_update.c:649
 msgid "Choose new Volume Status"
 msgstr ""
 
-#: src/dird/ua_update.c:654
+#: src/dird/ua_update.c:655
 #, c-format
 msgid "Current retention period is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:656
+#: src/dird/ua_update.c:657
 msgid "Enter Volume Retention period: "
 msgstr ""
 
-#: src/dird/ua_update.c:663
+#: src/dird/ua_update.c:664
 #, c-format
 msgid "Current use duration is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:665
+#: src/dird/ua_update.c:666
 msgid "Enter Volume Use Duration: "
 msgstr ""
 
-#: src/dird/ua_update.c:672
+#: src/dird/ua_update.c:673
 #, c-format
 msgid "Current max jobs is: %u\n"
 msgstr ""
 
-#: src/dird/ua_update.c:673
+#: src/dird/ua_update.c:674
 msgid "Enter new Maximum Jobs: "
 msgstr ""
 
-#: src/dird/ua_update.c:680
+#: src/dird/ua_update.c:681
 #, c-format
 msgid "Current max files is: %u\n"
 msgstr ""
 
-#: src/dird/ua_update.c:681
+#: src/dird/ua_update.c:682
 msgid "Enter new Maximum Files: "
 msgstr ""
 
-#: src/dird/ua_update.c:688
+#: src/dird/ua_update.c:689
 #, c-format
 msgid "Current value is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:689
+#: src/dird/ua_update.c:690
 msgid "Enter new Maximum Bytes: "
 msgstr ""
 
-#: src/dird/ua_update.c:697
+#: src/dird/ua_update.c:698
 #, c-format
 msgid "Current recycle flag is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:699
+#: src/dird/ua_update.c:700
 msgid "Enter new Recycle status: "
 msgstr ""
 
-#: src/dird/ua_update.c:706
+#: src/dird/ua_update.c:707
 #, c-format
 msgid "Current Slot is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:707
+#: src/dird/ua_update.c:708
 msgid "Enter new Slot: "
 msgstr ""
 
-#: src/dird/ua_update.c:714
+#: src/dird/ua_update.c:715
 #, c-format
 msgid "Current InChanger flag is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:715
+#: src/dird/ua_update.c:716
 #, c-format
 msgid "Set InChanger flag for Volume \"%s\": yes/no: "
 msgstr ""
 
-#: src/dird/ua_update.c:728
+#: src/dird/ua_update.c:730
 #, c-format
 msgid "New InChanger flag is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:735
+#: src/dird/ua_update.c:737
 msgid ""
 "Warning changing Volume Files can result\n"
 "in loss of data on your Volume\n"
 "\n"
 msgstr ""
 
-#: src/dird/ua_update.c:737
+#: src/dird/ua_update.c:739
 #, c-format
 msgid "Current Volume Files is: %u\n"
 msgstr ""
 
-#: src/dird/ua_update.c:738
+#: src/dird/ua_update.c:740
 msgid "Enter new number of Files for Volume: "
 msgstr ""
 
-#: src/dird/ua_update.c:743
+#: src/dird/ua_update.c:745
 msgid "Normally, you should only increase Volume Files by one!\n"
 msgstr ""
 
-#: src/dird/ua_update.c:744
+#: src/dird/ua_update.c:746
 msgid "Increase Volume Files? (yes/no): "
 msgstr ""
 
-#: src/dird/ua_update.c:754
+#: src/dird/ua_update.c:756
 #, c-format
 msgid "New Volume Files is: %u\n"
 msgstr ""
 
-#: src/dird/ua_update.c:766
+#: src/dird/ua_update.c:768
 #, c-format
 msgid "Current Pool is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:767
+#: src/dird/ua_update.c:769
 msgid "Enter new Pool name: "
 msgstr ""
 
-#: src/dird/ua_update.c:788
+#: src/dird/ua_update.c:790
 #, c-format
 msgid "Current Enabled is: %d\n"
 msgstr ""
 
-#: src/dird/ua_update.c:789
+#: src/dird/ua_update.c:791
 msgid "Enter new Enabled: "
 msgstr ""
 
-#: src/dird/ua_update.c:808
+#: src/dird/ua_update.c:810
 #, c-format
 msgid "Current RecyclePool is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:810
+#: src/dird/ua_update.c:812
 msgid "No current RecyclePool\n"
 msgstr ""
 
-#: src/dird/ua_update.c:820
+#: src/dird/ua_update.c:822
 #, c-format
 msgid "Current ActionOnPurge is: %s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:822
+#: src/dird/ua_update.c:824
 msgid "Enter new ActionOnPurge (one of: Truncate, None): "
 msgstr ""
 
-#: src/dird/ua_update.c:830
+#: src/dird/ua_update.c:832
 msgid "Selection terminated.\n"
 msgstr ""
 
-#: src/dird/ua_update.c:850
+#: src/dird/ua_update.c:852
 #, c-format
 msgid "Updating %i job(s).\n"
 msgstr ""
 
-#: src/dird/ua_update.c:882
+#: src/dird/ua_update.c:884
 #, c-format
 msgid "db_update_pool_record returned %d. ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_update.c:889
+#: src/dird/ua_update.c:891
 msgid "Pool DB record updated from resource.\n"
 msgstr ""
 
-#: src/dird/ua_update.c:916
+#: src/dird/ua_update.c:918
 msgid "Expect JobId keyword, not found.\n"
 msgstr ""
 
-#: src/dird/ua_update.c:941
+#: src/dird/ua_update.c:943
 msgid "Neither Client nor StartTime specified.\n"
 msgstr ""
 
@@ -4065,7 +4107,7 @@ msgstr ""
 msgid "Pool resource \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/migrate.c:316 src/dird/migrate.c:896
+#: src/dird/migrate.c:316 src/dird/migrate.c:898
 #, c-format
 msgid "Could not get job record for JobId %s to %s. ERR=%s"
 msgstr ""
@@ -4080,145 +4122,140 @@ msgstr ""
 msgid "Start %s JobId %s, Job=%s\n"
 msgstr ""
 
-#: src/dird/migrate.c:710
+#: src/dird/migrate.c:712
 #, c-format
 msgid "No %s SQL selection pattern specified.\n"
 msgstr ""
 
-#: src/dird/migrate.c:717 src/dird/migrate.c:736 src/dird/migrate.c:757
-#: src/dird/migrate.c:793 src/dird/migrate.c:820 src/dird/migrate.c:954
-#: src/dird/migrate.c:987 src/dird/migrate.c:1116
+#: src/dird/migrate.c:719 src/dird/migrate.c:738 src/dird/migrate.c:759
+#: src/dird/migrate.c:795 src/dird/migrate.c:822 src/dird/migrate.c:956
+#: src/dird/migrate.c:989 src/dird/migrate.c:1118
 #, c-format
 msgid "SQL failed. ERR=%s\n"
 msgstr ""
 
-#: src/dird/migrate.c:740 src/dird/migrate.c:747 src/dird/migrate.c:761
-#: src/dird/migrate.c:824
+#: src/dird/migrate.c:742 src/dird/migrate.c:749 src/dird/migrate.c:763
+#: src/dird/migrate.c:826
 #, c-format
 msgid "No Volumes found to %s.\n"
 msgstr ""
 
-#: src/dird/migrate.c:775 src/dird/migrate.c:864 src/dird/migrate.c:884
+#: src/dird/migrate.c:777 src/dird/migrate.c:866 src/dird/migrate.c:886
 msgid "Invalid JobId found.\n"
 msgstr ""
 
-#: src/dird/migrate.c:835
+#: src/dird/migrate.c:837
 #, c-format
 msgid "Unknown %s Selection Type.\n"
 msgstr ""
 
-#: src/dird/migrate.c:846 src/dird/migrate.c:867 src/dird/migrate.c:887
+#: src/dird/migrate.c:848 src/dird/migrate.c:869 src/dird/migrate.c:889
 #, c-format
 msgid "No JobIds found to %s.\n"
 msgstr ""
 
-#: src/dird/migrate.c:850
+#: src/dird/migrate.c:852
 #, c-format
 msgid "The following %u JobId%s chosen to be %s: %s\n"
 msgstr ""
 
-#: src/dird/migrate.c:851
+#: src/dird/migrate.c:853
 msgid " was"
 msgstr ""
 
-#: src/dird/migrate.c:851
+#: src/dird/migrate.c:853
 msgid "s were"
 msgstr ""
 
-#: src/dird/migrate.c:903
+#: src/dird/migrate.c:905
 #, c-format
 msgid "%s using JobId=%s Job=%s\n"
 msgstr ""
 
-#: src/dird/migrate.c:937
+#: src/dird/migrate.c:939
 msgid "Could not start migration job.\n"
 msgstr ""
 
-#: src/dird/migrate.c:939
+#: src/dird/migrate.c:941
 #, c-format
 msgid "%s JobId %d started.\n"
 msgstr ""
 
-#: src/dird/migrate.c:958
+#: src/dird/migrate.c:960
 #, c-format
 msgid "No %s found to %s.\n"
 msgstr ""
 
-#: src/dird/migrate.c:962
+#: src/dird/migrate.c:964
 #, c-format
 msgid "SQL error. Expected 1 MediaId got %d\n"
 msgstr ""
 
-#: src/dird/migrate.c:991 src/dird/migrate.c:1121
+#: src/dird/migrate.c:993 src/dird/migrate.c:1123
 #, c-format
 msgid "No %ss found to %s.\n"
 msgstr ""
 
-#: src/dird/migrate.c:1013
+#: src/dird/migrate.c:1015
 msgid "Selection Type 'pooluncopiedjobs' only applies to Copy Jobs"
 msgstr ""
 
-#: src/dird/migrate.c:1022
+#: src/dird/migrate.c:1024
 #, c-format
 msgid "SQL to get uncopied jobs failed. ERR=%s\n"
 msgstr ""
 
-#: src/dird/migrate.c:1045
+#: src/dird/migrate.c:1047
 #, c-format
 msgid "No %s %s selection pattern specified.\n"
 msgstr ""
 
-#: src/dird/migrate.c:1056
+#: src/dird/migrate.c:1058
 #, c-format
 msgid "SQL to get %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/dird/migrate.c:1061
+#: src/dird/migrate.c:1063
 #, c-format
 msgid "Query of Pool \"%s\" returned no Jobs to %s.\n"
 msgstr ""
 
-#: src/dird/migrate.c:1070
-#, c-format
-msgid "Could not compile regex pattern \"%s\" ERR=%s\n"
-msgstr ""
-
-#: src/dird/migrate.c:1099
+#: src/dird/migrate.c:1101
 #, c-format
 msgid "Regex pattern matched no Jobs to %s.\n"
 msgstr ""
 
-#: src/dird/migrate.c:1264
+#: src/dird/migrate.c:1265
 #, c-format
 msgid "%s OK -- with warnings"
 msgstr ""
 
-#: src/dird/migrate.c:1266
+#: src/dird/migrate.c:1267
 #, c-format
 msgid "%s OK"
 msgstr ""
 
-#: src/dird/migrate.c:1271
+#: src/dird/migrate.c:1272
 #, c-format
 msgid "*** %s Error ***"
 msgstr ""
 
-#: src/dird/migrate.c:1281
+#: src/dird/migrate.c:1282
 #, c-format
 msgid "%s Canceled"
 msgstr ""
 
-#: src/dird/migrate.c:1290
+#: src/dird/migrate.c:1291
 #, c-format
 msgid "Inappropriate %s term code"
 msgstr ""
 
-#: src/dird/migrate.c:1300
+#: src/dird/migrate.c:1301
 #, c-format
 msgid "%s -- no files to %s"
 msgstr ""
 
-#: src/dird/migrate.c:1315
+#: src/dird/migrate.c:1316
 #, c-format
 msgid ""
 "%s %s %s (%s):\n"
@@ -4253,17 +4290,17 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/migrate.c:1426
+#: src/dird/migrate.c:1427
 #, c-format
 msgid "No Next Pool specification found in Pool \"%s\".\n"
 msgstr ""
 
-#: src/dird/migrate.c:1432
+#: src/dird/migrate.c:1433
 #, c-format
 msgid "No Storage specification found in Next Pool \"%s\".\n"
 msgstr ""
 
-#: src/dird/migrate.c:1438
+#: src/dird/migrate.c:1439
 msgid "Storage from Pool's NextPool resource"
 msgstr ""
 
@@ -4271,48 +4308,48 @@ msgstr ""
 msgid "Choose item to prune"
 msgstr ""
 
-#: src/dird/ua_prune.c:171
+#: src/dird/ua_prune.c:175
 #, c-format
 msgid "Cannot prune Volume \"%s\" because it is archived.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:213
+#: src/dird/ua_prune.c:217
 msgid "Pruned Jobs from JobHisto catalog.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:301
+#: src/dird/ua_prune.c:305
 #, fuzzy
 msgid "Begin pruning Files.\n"
 msgstr "Починається чистка файлів Клієнта \"%s\"\n"
 
-#: src/dird/ua_prune.c:316
+#: src/dird/ua_prune.c:320
 msgid "No Files found to prune.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:339
+#: src/dird/ua_prune.c:343
 #, c-format
 msgid "Pruned Files from %s Jobs for client %s from catalog.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:481
+#: src/dird/ua_prune.c:489
 #, fuzzy, c-format
 msgid "Begin pruning Jobs older than %s.\n"
 msgstr "Починається чистка файлів Клієнта \"%s\"\n"
 
-#: src/dird/ua_prune.c:592
+#: src/dird/ua_prune.c:600
 #, c-format
 msgid "Pruned %d %s for client %s from catalog.\n"
 msgstr ""
 
-#: src/dird/ua_prune.c:593
+#: src/dird/ua_prune.c:601
 msgid "Jobs"
 msgstr ""
 
-#: src/dird/ua_prune.c:595
+#: src/dird/ua_prune.c:603
 msgid "No Jobs found to prune.\n"
 msgstr ""
 
-#: src/dird/autoprune.c:76
+#: src/dird/autoprune.c:75
 msgid ""
 "End auto prune.\n"
 "\n"
@@ -4331,50 +4368,58 @@ msgstr ""
 msgid "Job queued. JobId=%s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:202
+#: src/dird/ua_run.c:203
+#, c-format
+msgid ""
+"\n"
+"Bad response: %s. You must answer yes, mod, or no.\n"
+"\n"
+msgstr ""
+
+#: src/dird/ua_run.c:207
 msgid "Job not run.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:236
+#: src/dird/ua_run.c:223
 msgid "Level"
 msgstr ""
 
-#: src/dird/ua_run.c:241
+#: src/dird/ua_run.c:228
 msgid "Restore Client"
 msgstr ""
 
-#: src/dird/ua_run.c:245 src/wx-console/wxbrestorepanel.cpp:356
+#: src/dird/ua_run.c:232 src/wx-console/wxbrestorepanel.cpp:356
 #: src/wx-console/wxbrestorepanel.cpp:854
 #: src/wx-console/wxbrestorepanel.cpp:1918
 msgid "When"
 msgstr ""
 
-#: src/dird/ua_run.c:246 src/wx-console/wxbrestorepanel.cpp:357
+#: src/dird/ua_run.c:233 src/wx-console/wxbrestorepanel.cpp:357
 #: src/wx-console/wxbrestorepanel.cpp:1128
 #: src/wx-console/wxbrestorepanel.cpp:1921
 msgid "Priority"
 msgstr ""
 
-#: src/dird/ua_run.c:253
+#: src/dird/ua_run.c:240
 msgid "Verify Job"
 msgstr ""
 
-#: src/dird/ua_run.c:256 src/wx-console/wxbrestorepanel.cpp:349
+#: src/dird/ua_run.c:243 src/wx-console/wxbrestorepanel.cpp:349
 #: src/wx-console/wxbrestorepanel.cpp:1899
 msgid "Bootstrap"
 msgstr ""
 
-#: src/dird/ua_run.c:257 src/wx-console/wxbrestorepanel.cpp:350
+#: src/dird/ua_run.c:244 src/wx-console/wxbrestorepanel.cpp:350
 #: src/wx-console/wxbrestorepanel.cpp:1104
 #: src/wx-console/wxbrestorepanel.cpp:1901
 msgid "Where"
 msgstr ""
 
-#: src/dird/ua_run.c:258
+#: src/dird/ua_run.c:245
 msgid "File Relocation"
 msgstr ""
 
-#: src/dird/ua_run.c:259 src/wx-console/wxbrestorepanel.cpp:352
+#: src/dird/ua_run.c:246 src/wx-console/wxbrestorepanel.cpp:352
 #: src/wx-console/wxbrestorepanel.cpp:1112
 #: src/wx-console/wxbrestorepanel.cpp:1905
 #: src/wx-console/wxbrestorepanel.cpp:1906
@@ -4384,212 +4429,212 @@ msgstr ""
 msgid "Replace"
 msgstr ""
 
-#: src/dird/ua_run.c:260
+#: src/dird/ua_run.c:247
 msgid "JobId"
 msgstr ""
 
-#: src/dird/ua_run.c:263
+#: src/dird/ua_run.c:250
 msgid "Plugin Options"
 msgstr ""
 
-#: src/dird/ua_run.c:274 src/dird/ua_run.c:1563
+#: src/dird/ua_run.c:261 src/dird/ua_run.c:1569
 msgid "user selection"
 msgstr ""
 
-#: src/dird/ua_run.c:306
+#: src/dird/ua_run.c:293
 msgid ""
 "Please enter desired start time as YYYY-MM-DD HH:MM:SS (return for now): "
 msgstr ""
 
-#: src/dird/ua_run.c:314 src/dird/ua_run.c:490
+#: src/dird/ua_run.c:301 src/dird/ua_run.c:477
 msgid "Invalid time, using current time.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:321
+#: src/dird/ua_run.c:308
 msgid "Enter new Priority: "
 msgstr ""
 
-#: src/dird/ua_run.c:325
+#: src/dird/ua_run.c:312
 msgid "Priority must be a positive integer.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:346
+#: src/dird/ua_run.c:333
 msgid "Please enter the Bootstrap file name: "
 msgstr ""
 
-#: src/dird/ua_run.c:358
+#: src/dird/ua_run.c:345
 #, c-format
 msgid "Warning cannot open %s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:377
-msgid "Please enter path prefix for restore (/ for none): "
+#: src/dird/ua_run.c:364
+msgid "Please enter the full path prefix for restore (/ for none): "
 msgstr ""
 
-#: src/dird/ua_run.c:399
+#: src/dird/ua_run.c:386
 msgid "Replace:\n"
 msgstr ""
 
-#: src/dird/ua_run.c:403
+#: src/dird/ua_run.c:390
 msgid "Select replace option"
 msgstr ""
 
-#: src/dird/ua_run.c:414
+#: src/dird/ua_run.c:401
 msgid ""
 "You must set the bootstrap file to NULL to be able to specify a JobId.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:419
+#: src/dird/ua_run.c:406
 msgid "Please Plugin Options string: "
 msgstr ""
 
-#: src/dird/ua_run.c:457 src/dird/ua_run.c:466
+#: src/dird/ua_run.c:444 src/dird/ua_run.c:453
 msgid "User input"
 msgstr ""
 
-#: src/dird/ua_run.c:520
+#: src/dird/ua_run.c:507
 #, c-format
 msgid "Invalid replace option: %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:583
+#: src/dird/ua_run.c:589
 #, c-format
 msgid "strip_prefix=%s add_prefix=%s add_suffix=%s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:586
+#: src/dird/ua_run.c:592
 msgid "This will replace your current Where value\n"
 msgstr ""
 
-#: src/dird/ua_run.c:587
+#: src/dird/ua_run.c:593
 msgid "Strip prefix"
 msgstr ""
 
-#: src/dird/ua_run.c:588
+#: src/dird/ua_run.c:594
 msgid "Add prefix"
 msgstr ""
 
-#: src/dird/ua_run.c:589
+#: src/dird/ua_run.c:595
 msgid "Add file suffix"
 msgstr ""
 
-#: src/dird/ua_run.c:590
+#: src/dird/ua_run.c:596
 msgid "Enter a regexp"
 msgstr ""
 
-#: src/dird/ua_run.c:591
+#: src/dird/ua_run.c:597
 msgid "Test filename manipulation"
 msgstr ""
 
-#: src/dird/ua_run.c:592
+#: src/dird/ua_run.c:598
 msgid "Use this ?"
 msgstr ""
 
-#: src/dird/ua_run.c:597
-msgid "Please enter path prefix to strip: "
+#: src/dird/ua_run.c:603
+msgid "Please enter the path prefix to strip: "
 msgstr ""
 
-#: src/dird/ua_run.c:605
-msgid "Please enter path prefix to add (/ for none): "
+#: src/dird/ua_run.c:611
+msgid "Please enter the path prefix to add (/ for none): "
 msgstr ""
 
-#: src/dird/ua_run.c:616
-msgid "Please enter file suffix to add: "
+#: src/dird/ua_run.c:622
+msgid "Please enter the file suffix to add: "
 msgstr ""
 
-#: src/dird/ua_run.c:623
+#: src/dird/ua_run.c:629
 msgid "Please enter a valid regexp (!from!to!): "
 msgstr ""
 
-#: src/dird/ua_run.c:636
+#: src/dird/ua_run.c:642
 #, c-format
 msgid "regexwhere=%s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:642
+#: src/dird/ua_run.c:648
 #, c-format
 msgid "strip_prefix=%s add_prefix=%s add_suffix=%s result=%s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:649
+#: src/dird/ua_run.c:655
 msgid "Cannot use your regexp\n"
 msgstr ""
 
-#: src/dird/ua_run.c:652
+#: src/dird/ua_run.c:658
 msgid "Enter a period (.) to stop this test\n"
 msgstr ""
 
-#: src/dird/ua_run.c:653
+#: src/dird/ua_run.c:659
 msgid "Please enter filename to test: "
 msgstr ""
 
-#: src/dird/ua_run.c:655
+#: src/dird/ua_run.c:661
 #, c-format
 msgid "%s -> %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:699
+#: src/dird/ua_run.c:705
 msgid "Cannot use your regexp.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:712 src/dird/ua_run.c:742
+#: src/dird/ua_run.c:718 src/dird/ua_run.c:748
 msgid "Levels:\n"
 msgstr ""
 
-#: src/dird/ua_run.c:714 src/stored/status.c:600 src/lib/util.c:426
+#: src/dird/ua_run.c:720 src/stored/status.c:665 src/lib/util.c:426
 #: src/lib/util.c:472 src/filed/status.c:519
 msgid "Full"
 msgstr ""
 
-#: src/dird/ua_run.c:715 src/stored/status.c:603 src/lib/util.c:429
+#: src/dird/ua_run.c:721 src/stored/status.c:668 src/lib/util.c:429
 #: src/filed/status.c:522
 msgid "Incremental"
 msgstr ""
 
-#: src/dird/ua_run.c:716 src/stored/status.c:606 src/lib/util.c:432
+#: src/dird/ua_run.c:722 src/stored/status.c:671 src/lib/util.c:432
 #: src/filed/status.c:525
 msgid "Differential"
 msgstr ""
 
-#: src/dird/ua_run.c:717 src/stored/status.c:609 src/lib/util.c:435
+#: src/dird/ua_run.c:723 src/stored/status.c:674 src/lib/util.c:435
 #: src/filed/status.c:528
 msgid "Since"
 msgstr ""
 
-#: src/dird/ua_run.c:718
+#: src/dird/ua_run.c:724
 msgid "VirtualFull"
 msgstr ""
 
-#: src/dird/ua_run.c:719 src/dird/ua_run.c:748
+#: src/dird/ua_run.c:725 src/dird/ua_run.c:754
 msgid "Select level"
 msgstr ""
 
-#: src/dird/ua_run.c:743
+#: src/dird/ua_run.c:749
 msgid "Initialize Catalog"
 msgstr ""
 
-#: src/dird/ua_run.c:744 src/stored/status.c:612 src/lib/util.c:438
+#: src/dird/ua_run.c:750 src/stored/status.c:677 src/lib/util.c:438
 #: src/filed/status.c:531
 msgid "Verify Catalog"
 msgstr ""
 
-#: src/dird/ua_run.c:745 src/lib/util.c:444
+#: src/dird/ua_run.c:751 src/lib/util.c:444
 msgid "Verify Volume to Catalog"
 msgstr ""
 
-#: src/dird/ua_run.c:746 src/lib/util.c:447
+#: src/dird/ua_run.c:752 src/lib/util.c:447
 msgid "Verify Disk to Catalog"
 msgstr ""
 
-#: src/dird/ua_run.c:747
+#: src/dird/ua_run.c:753
 msgid "Verify Volume Data (not yet implemented)"
 msgstr ""
 
-#: src/dird/ua_run.c:768
+#: src/dird/ua_run.c:774
 msgid "Level not appropriate for this Job. Cannot be changed.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:799
+#: src/dird/ua_run.c:805
 #, c-format
 msgid ""
 "Run Admin Job\n"
@@ -4601,7 +4646,7 @@ msgid ""
 "Priority: %d\n"
 msgstr ""
 
-#: src/dird/ua_run.c:843
+#: src/dird/ua_run.c:849
 #, c-format
 msgid ""
 "Run Backup job\n"
@@ -4616,12 +4661,12 @@ msgid ""
 "%s%s%s"
 msgstr ""
 
-#: src/dird/ua_run.c:874
+#: src/dird/ua_run.c:880
 #, fuzzy, c-format
 msgid "Could not get job record for selected JobId. ERR=%s"
 msgstr "Не вдалось відновити прапорці для файлу %s: ERR=%s\n"
 
-#: src/dird/ua_run.c:913
+#: src/dird/ua_run.c:919
 #, c-format
 msgid ""
 "Run Verify Job\n"
@@ -4637,11 +4682,11 @@ msgid ""
 "Priority:    %d\n"
 msgstr ""
 
-#: src/dird/ua_run.c:942
+#: src/dird/ua_run.c:948
 msgid "Please enter a JobId for restore: "
 msgstr ""
 
-#: src/dird/ua_run.c:982
+#: src/dird/ua_run.c:988
 #, c-format
 msgid ""
 "Run Restore job\n"
@@ -4659,7 +4704,7 @@ msgid ""
 "Plugin Options:  %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1038
+#: src/dird/ua_run.c:1044
 #, c-format
 msgid ""
 "Run Restore job\n"
@@ -4677,7 +4722,7 @@ msgid ""
 "Plugin Options:  %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1069
+#: src/dird/ua_run.c:1075
 #, c-format
 msgid ""
 "Run Restore job\n"
@@ -4685,17 +4730,17 @@ msgid ""
 "Bootstrap:  %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1077
+#: src/dird/ua_run.c:1083
 #, c-format
 msgid "RegexWhere: %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1080
+#: src/dird/ua_run.c:1086
 #, c-format
 msgid "Where:      %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1084
+#: src/dird/ua_run.c:1090
 #, c-format
 msgid ""
 "Replace:         %s\n"
@@ -4708,245 +4753,245 @@ msgid ""
 "Plugin Options:  %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1139
+#: src/dird/ua_run.c:1145
 msgid "Run Copy job\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1141
+#: src/dird/ua_run.c:1147
 msgid "Run Migration job\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1170
+#: src/dird/ua_run.c:1176
 #, c-format
 msgid "Unknown Job Type=%d\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1239
+#: src/dird/ua_run.c:1245
 #, c-format
 msgid "Value missing for keyword %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1246
+#: src/dird/ua_run.c:1252
 msgid "Job name specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1254
+#: src/dird/ua_run.c:1260
 msgid "JobId specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1263 src/dird/ua_run.c:1403
+#: src/dird/ua_run.c:1269 src/dird/ua_run.c:1409
 msgid "Client specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1271
+#: src/dird/ua_run.c:1277
 msgid "FileSet specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1279
+#: src/dird/ua_run.c:1285
 msgid "Level specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1288
+#: src/dird/ua_run.c:1294
 msgid "Storage specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1296
+#: src/dird/ua_run.c:1302
 msgid "RegexWhere or Where specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1301
+#: src/dird/ua_run.c:1307
 msgid "No authorization for \"regexwhere\" specification.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1308
+#: src/dird/ua_run.c:1314
 msgid "Where or RegexWhere specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1313
+#: src/dird/ua_run.c:1319
 msgid "No authoriztion for \"where\" specification.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1320
+#: src/dird/ua_run.c:1326
 msgid "Bootstrap specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1328
+#: src/dird/ua_run.c:1334
 msgid "Replace specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1336
+#: src/dird/ua_run.c:1342
 msgid "When specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1344
+#: src/dird/ua_run.c:1350
 msgid "Priority specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1349
+#: src/dird/ua_run.c:1355
 msgid "Priority must be positive nonzero setting it to 10.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1359
+#: src/dird/ua_run.c:1365
 msgid "Verify Job specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1387
+#: src/dird/ua_run.c:1393
 msgid "Migration Job specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1395
+#: src/dird/ua_run.c:1401
 msgid "Pool specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1411
+#: src/dird/ua_run.c:1417
 msgid "Restore Client specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1418
+#: src/dird/ua_run.c:1424
 msgid "Plugin Options not yet implemented.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1421
+#: src/dird/ua_run.c:1427
 msgid "Plugin Options specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1426
+#: src/dird/ua_run.c:1432
 msgid "No authoriztion for \"PluginOptions\" specification.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1433
+#: src/dird/ua_run.c:1439
 msgid "Spool flag specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1440
+#: src/dird/ua_run.c:1446
 msgid "Invalid spooldata flag.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1449
+#: src/dird/ua_run.c:1455
 msgid "IgnoreDuplicateCheck flag specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1456
+#: src/dird/ua_run.c:1462
 msgid "Invalid ignoreduplicatecheck flag.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1461
+#: src/dird/ua_run.c:1467
 msgid "Accurate flag specified twice.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1468
+#: src/dird/ua_run.c:1474
 msgid "Invalid accurate flag.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1489
+#: src/dird/ua_run.c:1495
 #, c-format
 msgid "Invalid keyword: %s\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1504
+#: src/dird/ua_run.c:1510
 #, c-format
 msgid "Catalog \"%s\" not found\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1508
+#: src/dird/ua_run.c:1514
 #, c-format
 msgid "No authorization. Catalog \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1519
+#: src/dird/ua_run.c:1525
 #, c-format
 msgid "Job \"%s\" not found\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1526
+#: src/dird/ua_run.c:1532
 msgid "A job name must be specified.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1532
+#: src/dird/ua_run.c:1538
 #, c-format
 msgid "No authorization. Job \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1540
+#: src/dird/ua_run.c:1546
 #, c-format
 msgid "Pool \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1550
+#: src/dird/ua_run.c:1556
 #, c-format
 msgid "No authorization. Pool \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1560
+#: src/dird/ua_run.c:1566
 #, c-format
 msgid "Storage \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1569 src/dird/job.c:1242
+#: src/dird/ua_run.c:1575 src/dird/job.c:1245
 msgid "No storage specified.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1572
+#: src/dird/ua_run.c:1578
 #, c-format
 msgid "No authorization. Storage \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1592 src/dird/ua_run.c:1612
+#: src/dird/ua_run.c:1598 src/dird/ua_run.c:1618
 #, c-format
 msgid "No authorization. Client \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1602
+#: src/dird/ua_run.c:1608
 #, c-format
 msgid "Restore Client \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1621
+#: src/dird/ua_run.c:1627
 #, c-format
 msgid "FileSet \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1630
+#: src/dird/ua_run.c:1636
 #, c-format
 msgid "No authorization. FileSet \"%s\".\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1638
+#: src/dird/ua_run.c:1644
 #, c-format
 msgid "Verify Job \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/ua_run.c:1648
+#: src/dird/ua_run.c:1654
 #, c-format
 msgid "Migration Job \"%s\" not found.\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:180 src/stored/sd_plugins.c:183
-#: src/filed/fd_plugins.c:973
+#: src/dird/dir_plugins.c:181 src/stored/sd_plugins.c:194
+#: src/filed/fd_plugins.c:1130
 #, c-format
 msgid "Loaded plugin: %s\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:200 src/stored/sd_plugins.c:203
-#: src/filed/fd_plugins.c:992
+#: src/dird/dir_plugins.c:201 src/stored/sd_plugins.c:214
+#: src/filed/fd_plugins.c:1151
 #, c-format
 msgid "Plugin magic wrong. Plugin=%s wanted=%s got=%s\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:208 src/stored/sd_plugins.c:211
-#: src/filed/fd_plugins.c:1000
+#: src/dird/dir_plugins.c:209 src/stored/sd_plugins.c:222
+#: src/filed/fd_plugins.c:1159
 #, c-format
 msgid "Plugin version incorrect. Plugin=%s wanted=%d got=%d\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:217 src/stored/sd_plugins.c:220
-#: src/filed/fd_plugins.c:1008
+#: src/dird/dir_plugins.c:218 src/stored/sd_plugins.c:231
+#: src/filed/fd_plugins.c:1167
 #, c-format
 msgid "Plugin license incompatible. Plugin=%s license=%s\n"
 msgstr ""
 
-#: src/dird/dir_plugins.c:225 src/stored/sd_plugins.c:228
-#: src/filed/fd_plugins.c:1016
+#: src/dird/dir_plugins.c:226 src/stored/sd_plugins.c:239
+#: src/filed/fd_plugins.c:1175
 #, c-format
 msgid "Plugin size incorrect. Plugin=%s wanted=%d got=%d\n"
 msgstr ""
@@ -4973,25 +5018,25 @@ msgstr ""
 msgid "Start Backup JobId %s, Job=%s\n"
 msgstr ""
 
-#: src/dird/backup.c:517
+#: src/dird/backup.c:521
 #, c-format
 msgid "Unexpected Client Job message: %s\n"
 msgstr ""
 
-#: src/dird/backup.c:530
+#: src/dird/backup.c:534
 #, c-format
 msgid "Network error with FD during %s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/backup.c:565
+#: src/dird/backup.c:569
 msgid "No Job status returned from FD.\n"
 msgstr ""
 
-#: src/dird/backup.c:647
+#: src/dird/backup.c:657
 msgid "Backup failed -- incomplete"
 msgstr ""
 
-#: src/dird/backup.c:720
+#: src/dird/backup.c:730
 #, c-format
 msgid ""
 "%s %s %s (%s):\n"
@@ -5030,19 +5075,19 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/dird/backup.c:822
+#: src/dird/backup.c:832
 #, c-format
 msgid "Could not get Job Volume Parameters to update Bootstrap file. ERR=%s\n"
 msgstr ""
 
-#: src/dird/backup.c:858
+#: src/dird/backup.c:868
 #, c-format
 msgid ""
 "Could not open WriteBootstrap file:\n"
 "%s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/restore.c:137 src/dird/msgchan.c:463 src/filed/job.c:2409
+#: src/dird/restore.c:137 src/dird/msgchan.c:476
 #, c-format
 msgid "Could not open bootstrap file %s: ERR=%s\n"
 msgstr ""
@@ -5057,39 +5102,39 @@ msgstr "Не вдалось відновити прапорці для файл
 msgid "Could not acquire read storage lock for \"%s\""
 msgstr "Не вдалось відновити прапорці для файлу %s: ERR=%s\n"
 
-#: src/dird/restore.c:502
+#: src/dird/restore.c:505
 msgid ""
 "Cannot restore without a bootstrap file.\n"
 "You probably ran a restore job directly. All restore jobs must\n"
 "be run using the restore command.\n"
 msgstr ""
 
-#: src/dird/restore.c:510
+#: src/dird/restore.c:513
 #, c-format
 msgid "Start Restore Job %s\n"
 msgstr ""
 
-#: src/dird/restore.c:561
+#: src/dird/restore.c:564
 msgid "Restore OK -- warning file count mismatch"
 msgstr ""
 
-#: src/dird/restore.c:563
+#: src/dird/restore.c:566
 msgid "Restore OK"
 msgstr ""
 
-#: src/dird/restore.c:567
+#: src/dird/restore.c:570
 msgid "Restore OK -- with warnings"
 msgstr ""
 
-#: src/dird/restore.c:571
+#: src/dird/restore.c:574
 msgid "*** Restore Error ***"
 msgstr ""
 
-#: src/dird/restore.c:581
+#: src/dird/restore.c:584
 msgid "Restore Canceled"
 msgstr ""
 
-#: src/dird/restore.c:608
+#: src/dird/restore.c:611
 #, c-format
 msgid ""
 "%s %s %s (%s):\n"
@@ -5118,7 +5163,7 @@ msgstr ""
 msgid "Select daemon type for status"
 msgstr ""
 
-#: src/dird/ua_status.c:294 src/stored/status.c:218
+#: src/dird/ua_status.c:294 src/stored/status.c:248
 #, c-format
 msgid "%s Version: %s (%s) %s %s %s\n"
 msgstr ""
@@ -5128,7 +5173,7 @@ msgstr ""
 msgid "Daemon started %s. Jobs: run=%d, running=%d mode=%d,%d\n"
 msgstr ""
 
-#: src/dird/ua_status.c:300 src/stored/status.c:228 src/filed/status.c:142
+#: src/dird/ua_status.c:300 src/stored/status.c:258 src/filed/status.c:142
 #, c-format
 msgid " Heap: heap=%s smbytes=%s max_bytes=%s bufs=%s max_bufs=%s\n"
 msgstr ""
@@ -5167,242 +5212,242 @@ msgstr ""
 msgid "===================================================================================\n"
 msgstr ""
 
-#: src/dird/ua_status.c:487
+#: src/dird/ua_status.c:486
 #, c-format
 msgid "%-14s\t%-8s\t%3d\t%-18s\t%-18s\t%s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:491
+#: src/dird/ua_status.c:490
 #, c-format
 msgid "%-14s %-8s %3d  %-18s %-18s %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:545
+#: src/dird/ua_status.c:544
 msgid "Ignoring invalid value for days. Max is 500.\n"
 msgstr ""
 
-#: src/dird/ua_status.c:588
+#: src/dird/ua_status.c:587
 msgid "No Scheduled Jobs.\n"
 msgstr ""
 
-#: src/dird/ua_status.c:605 src/stored/status.c:396 src/filed/status.c:183
+#: src/dird/ua_status.c:604 src/stored/status.c:450 src/filed/status.c:183
 msgid ""
 "\n"
 "Running Jobs:\n"
 msgstr ""
 
-#: src/dird/ua_status.c:613
+#: src/dird/ua_status.c:612
 #, c-format
 msgid "Console connected at %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:623
+#: src/dird/ua_status.c:622
 msgid ""
 "No Jobs running.\n"
 "====\n"
 msgstr ""
 
-#: src/dird/ua_status.c:629
+#: src/dird/ua_status.c:628
 msgid " JobId Level   Name                       Status\n"
 msgstr ""
 
-#: src/dird/ua_status.c:630 src/filed/status.c:342
+#: src/dird/ua_status.c:629 src/filed/status.c:342
 msgid "======================================================================\n"
 msgstr ""
 
-#: src/dird/ua_status.c:639
+#: src/dird/ua_status.c:638
 msgid "is waiting execution"
 msgstr ""
 
-#: src/dird/ua_status.c:642
+#: src/dird/ua_status.c:641
 msgid "is running"
 msgstr ""
 
-#: src/dird/ua_status.c:645
+#: src/dird/ua_status.c:644
 msgid "is blocked"
 msgstr ""
 
-#: src/dird/ua_status.c:648
+#: src/dird/ua_status.c:647
 msgid "has terminated"
 msgstr ""
 
-#: src/dird/ua_status.c:651
+#: src/dird/ua_status.c:650
 msgid "has terminated with warnings"
 msgstr ""
 
-#: src/dird/ua_status.c:654
+#: src/dird/ua_status.c:653
 msgid "has erred"
 msgstr ""
 
-#: src/dird/ua_status.c:657
+#: src/dird/ua_status.c:656
 msgid "has errors"
 msgstr ""
 
-#: src/dird/ua_status.c:660
+#: src/dird/ua_status.c:659
 msgid "has a fatal error"
 msgstr ""
 
-#: src/dird/ua_status.c:663
+#: src/dird/ua_status.c:662
 msgid "has verify differences"
 msgstr ""
 
-#: src/dird/ua_status.c:666
+#: src/dird/ua_status.c:665
 msgid "has been canceled"
 msgstr ""
 
-#: src/dird/ua_status.c:671
+#: src/dird/ua_status.c:670
 msgid "is waiting on Client"
 msgstr ""
 
-#: src/dird/ua_status.c:673
+#: src/dird/ua_status.c:672
 #, c-format
 msgid "is waiting on Client %s"
 msgstr ""
 
-#: src/dird/ua_status.c:681 src/dird/ua_status.c:683
+#: src/dird/ua_status.c:680 src/dird/ua_status.c:682
 #, fuzzy, c-format
 msgid "is waiting on Storage \"%s\""
 msgstr "Від'єднуюсь від Зберігача %s:%d\n"
 
-#: src/dird/ua_status.c:685
+#: src/dird/ua_status.c:684
 msgid "is waiting on Storage"
 msgstr ""
 
-#: src/dird/ua_status.c:691
+#: src/dird/ua_status.c:690
 msgid "is waiting on max Storage jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:694
+#: src/dird/ua_status.c:693
 msgid "is waiting on max Client jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:697
+#: src/dird/ua_status.c:696
 msgid "is waiting on max Job jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:700
+#: src/dird/ua_status.c:699
 msgid "is waiting on max total jobs"
 msgstr ""
 
-#: src/dird/ua_status.c:703
+#: src/dird/ua_status.c:702
 msgid "is waiting for its start time"
 msgstr ""
 
-#: src/dird/ua_status.c:706
+#: src/dird/ua_status.c:705
 msgid "is waiting for higher priority jobs to finish"
 msgstr ""
 
-#: src/dird/ua_status.c:709 src/dird/ua_status.c:760 src/lib/util.c:241
+#: src/dird/ua_status.c:708 src/dird/ua_status.c:759 src/lib/util.c:241
 msgid "SD committing Data"
 msgstr ""
 
-#: src/dird/ua_status.c:712 src/dird/ua_status.c:763 src/lib/util.c:244
+#: src/dird/ua_status.c:711 src/dird/ua_status.c:762 src/lib/util.c:244
 msgid "SD despooling Data"
 msgstr ""
 
-#: src/dird/ua_status.c:715 src/dird/ua_status.c:766 src/lib/util.c:247
+#: src/dird/ua_status.c:714 src/dird/ua_status.c:765 src/lib/util.c:247
 msgid "SD despooling Attributes"
 msgstr ""
 
-#: src/dird/ua_status.c:718 src/dird/ua_status.c:769 src/lib/util.c:250
+#: src/dird/ua_status.c:717 src/dird/ua_status.c:768 src/lib/util.c:250
 msgid "Dir inserting Attributes"
 msgstr ""
 
-#: src/dird/ua_status.c:723
+#: src/dird/ua_status.c:722
 #, c-format
 msgid "is in unknown state %c"
 msgstr ""
 
-#: src/dird/ua_status.c:737
+#: src/dird/ua_status.c:736
 msgid "is waiting for a mount request"
 msgstr ""
 
-#: src/dird/ua_status.c:744
+#: src/dird/ua_status.c:743
 msgid "is waiting for an appendable Volume"
 msgstr ""
 
-#: src/dird/ua_status.c:752
+#: src/dird/ua_status.c:751
 msgid "is waiting for Client to connect to Storage daemon"
 msgstr ""
 
-#: src/dird/ua_status.c:754
+#: src/dird/ua_status.c:753
 #, c-format
 msgid "is waiting for Client %s to connect to Storage %s"
 msgstr ""
 
-#: src/dird/ua_status.c:785
+#: src/dird/ua_status.c:784
 #, c-format
 msgid "%6d\t%-6s\t%-20s\t%s\t%s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:789
+#: src/dird/ua_status.c:788
 #, c-format
 msgid "%6d %-6s  %-20s %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:793
+#: src/dird/ua_status.c:792
 #, c-format
 msgid "               %-30s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:813
+#: src/dird/ua_status.c:812
 msgid "No Terminated Jobs.\n"
 msgstr ""
 
-#: src/dird/ua_status.c:819 src/stored/status.c:507 src/filed/status.c:330
+#: src/dird/ua_status.c:818 src/stored/status.c:572 src/filed/status.c:330
 msgid ""
 "\n"
 "Terminated Jobs:\n"
 msgstr ""
 
-#: src/dird/ua_status.c:820 src/stored/status.c:514 src/filed/status.c:340
+#: src/dird/ua_status.c:819 src/stored/status.c:579 src/filed/status.c:340
 msgid " JobId  Level    Files      Bytes   Status   Finished        Name \n"
 msgstr ""
 
-#: src/dird/ua_status.c:821
+#: src/dird/ua_status.c:820
 msgid "====================================================================\n"
 msgstr ""
 
-#: src/dird/ua_status.c:853 src/stored/status.c:536 src/lib/util.c:180
+#: src/dird/ua_status.c:852 src/stored/status.c:601 src/lib/util.c:180
 #: src/filed/status.c:363
 msgid "Created"
 msgstr ""
 
-#: src/dird/ua_status.c:857 src/stored/status.c:540 src/lib/util.c:196
+#: src/dird/ua_status.c:856 src/stored/status.c:605 src/lib/util.c:196
 #: src/lib/util.c:331 src/lib/util.c:478 src/filed/status.c:367
 msgid "Error"
 msgstr ""
 
-#: src/dird/ua_status.c:860 src/stored/status.c:543 src/filed/status.c:370
+#: src/dird/ua_status.c:859 src/stored/status.c:608 src/filed/status.c:370
 msgid "Diffs"
 msgstr ""
 
-#: src/dird/ua_status.c:866 src/stored/status.c:549 src/stored/btape.c:1521
+#: src/dird/ua_status.c:865 src/stored/status.c:614 src/stored/btape.c:1523
 #: src/lib/util.c:189 src/lib/util.c:324 src/filed/status.c:376
 #: src/wx-console/wxbconfigpanel.cpp:209
 msgid "OK"
 msgstr ""
 
-#: src/dird/ua_status.c:869 src/stored/status.c:552 src/lib/util.c:202
+#: src/dird/ua_status.c:868 src/stored/status.c:617 src/lib/util.c:202
 #: src/lib/util.c:327
 msgid "OK -- with warnings"
 msgstr ""
 
-#: src/dird/ua_status.c:872 src/stored/status.c:555 src/filed/status.c:379
+#: src/dird/ua_status.c:871 src/stored/status.c:620 src/filed/status.c:379
 msgid "Other"
 msgstr ""
 
-#: src/dird/ua_status.c:876 src/stored/status.c:567 src/filed/status.c:391
+#: src/dird/ua_status.c:875 src/stored/status.c:632 src/filed/status.c:391
 #, c-format
 msgid "%6d\t%-6s\t%8s\t%10s\t%-7s\t%-8s\t%s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:884 src/stored/status.c:575 src/filed/status.c:399
+#: src/dird/ua_status.c:883 src/stored/status.c:640 src/filed/status.c:399
 #, c-format
 msgid "%6d  %-6s %8s %10s  %-7s  %-8s %s\n"
 msgstr ""
 
-#: src/dird/ua_status.c:893
+#: src/dird/ua_status.c:892
 msgid "\n"
 msgstr ""
 
@@ -5479,8 +5524,8 @@ msgid "Could not add job queue: ERR=%s\n"
 msgstr ""
 
 #: src/dird/job.c:183 src/dird/job.c:433 src/dird/job.c:435 src/dird/job.c:485
-#: src/dird/job.c:487 src/dird/job.c:1126 src/dird/job.c:1167
-#: src/dird/job.c:1176
+#: src/dird/job.c:487 src/dird/job.c:1129 src/dird/job.c:1170
+#: src/dird/job.c:1179
 msgid "Job resource"
 msgstr ""
 
@@ -5528,77 +5573,77 @@ msgstr ""
 msgid "Created database record for Pool \"%s\".\n"
 msgstr ""
 
-#: src/dird/job.c:765 src/dird/job.c:806
+#: src/dird/job.c:766 src/dird/job.c:809
 #, c-format
 msgid "JobId %d already running. Duplicate job not allowed.\n"
 msgstr ""
 
-#: src/dird/job.c:796
+#: src/dird/job.c:797
 #, c-format
 msgid "Cancelling duplicate JobId=%d.\n"
 msgstr ""
 
-#: src/dird/job.c:825 src/dird/job.c:1113
+#: src/dird/job.c:828 src/dird/job.c:1116
 msgid "Run pool override"
 msgstr ""
 
-#: src/dird/job.c:836
+#: src/dird/job.c:839
 msgid "Run FullPool override"
 msgstr ""
 
-#: src/dird/job.c:838
+#: src/dird/job.c:841
 msgid "Job FullPool override"
 msgstr ""
 
-#: src/dird/job.c:847
+#: src/dird/job.c:850
 msgid "Run IncPool override"
 msgstr ""
 
-#: src/dird/job.c:849
+#: src/dird/job.c:852
 msgid "Job IncPool override"
 msgstr ""
 
-#: src/dird/job.c:858
+#: src/dird/job.c:861
 msgid "Run DiffPool override"
 msgstr ""
 
-#: src/dird/job.c:860
+#: src/dird/job.c:863
 msgid "Job DiffPool override"
 msgstr ""
 
-#: src/dird/job.c:890 src/stored/bscan.c:1052
+#: src/dird/job.c:893 src/stored/bscan.c:1056
 #, c-format
 msgid "Could not create Client record. ERR=%s\n"
 msgstr ""
 
-#: src/dird/job.c:926
+#: src/dird/job.c:929
 msgid "FileSet MD5 digest not found.\n"
 msgstr "Не знайдено відбиток MD5 Набору Файлів.\n"
 
-#: src/dird/job.c:931
+#: src/dird/job.c:934
 #, c-format
 msgid "Could not create FileSet \"%s\" record. ERR=%s\n"
 msgstr ""
 
-#: src/dird/job.c:973
+#: src/dird/job.c:976
 #, c-format
 msgid "Error updating job record. %s"
 msgstr ""
 
-#: src/dird/job.c:1118
+#: src/dird/job.c:1121
 msgid "Run storage override"
 msgstr ""
 
-#: src/dird/job.c:1186
+#: src/dird/job.c:1189
 msgid "Client resource"
 msgstr ""
 
-#: src/dird/job.c:1403
+#: src/dird/job.c:1406
 #, c-format
 msgid "Could not start clone job: \"%s\".\n"
 msgstr ""
 
-#: src/dird/job.c:1406
+#: src/dird/job.c:1409
 #, c-format
 msgid "Clone JobId %d started.\n"
 msgstr ""
@@ -5752,90 +5797,91 @@ msgstr ""
 msgid "1000 OK: %s Version: %s (%s)\n"
 msgstr ""
 
-#: src/dird/catreq.c:129 src/dird/catreq.c:356
+#: src/dird/catreq.c:128 src/dird/catreq.c:355
 #, c-format
 msgid "1990 Invalid Catalog Request: %s"
 msgstr ""
 
-#: src/dird/catreq.c:130
+#: src/dird/catreq.c:129
 #, c-format
 msgid "Invalid Catalog request; DB not open: %s"
 msgstr ""
 
-#: src/dird/catreq.c:155
+#: src/dird/catreq.c:154
 msgid "1901 No Media.\n"
 msgstr ""
 
-#: src/dird/catreq.c:183
+#: src/dird/catreq.c:182
 msgid "not in Pool"
 msgstr ""
 
-#: src/dird/catreq.c:185
+#: src/dird/catreq.c:184
 msgid "not correct MediaType"
 msgstr ""
 
-#: src/dird/catreq.c:195
+#: src/dird/catreq.c:194
 msgid "is not Enabled"
 msgstr ""
 
-#: src/dird/catreq.c:204
+#: src/dird/catreq.c:203
 #, c-format
 msgid "1998 Volume \"%s\" catalog status is %s, %s.\n"
 msgstr ""
 
-#: src/dird/catreq.c:209
+#: src/dird/catreq.c:208
 #, c-format
 msgid "1997 Volume \"%s\" not in catalog.\n"
 msgstr ""
 
-#: src/dird/catreq.c:231
+#: src/dird/catreq.c:230
 #, c-format
 msgid "Unable to get Media record for Volume %s: ERR=%s\n"
 msgstr ""
 
-#: src/dird/catreq.c:233
+#: src/dird/catreq.c:232
 #, c-format
 msgid "1991 Catalog Request for vol=%s failed: %s"
 msgstr ""
 
-#: src/dird/catreq.c:260
+#: src/dird/catreq.c:259
 #, c-format
 msgid ""
 "Volume Files at %u being set to %u for Volume \"%s\". This is incorrect.\n"
 msgstr ""
 
-#: src/dird/catreq.c:263
+#: src/dird/catreq.c:262
 #, c-format
 msgid "1992 Update Media error. VolFiles=%u, CatFiles=%u\n"
 msgstr ""
 
-#: src/dird/catreq.c:288
-msgid "Attempt to set StorageId to zero.\n"
-msgstr ""
-
-#: src/dird/catreq.c:319
+#: src/dird/catreq.c:318
 #, c-format
 msgid "Catalog error updating Media record. %s"
 msgstr ""
 
-#: src/dird/catreq.c:321
+#: src/dird/catreq.c:320
 msgid "1993 Update Media error\n"
 msgstr ""
 
-#: src/dird/catreq.c:345
+#: src/dird/catreq.c:344
 #, c-format
 msgid "Catalog error creating JobMedia record. %s"
 msgstr ""
 
-#: src/dird/catreq.c:347
+#: src/dird/catreq.c:346
 msgid "1992 Create JobMedia error\n"
 msgstr ""
 
-#: src/dird/catreq.c:357
+#: src/dird/catreq.c:356
 #, c-format
 msgid "Invalid Catalog request: %s"
 msgstr ""
 
+#: src/dird/catreq.c:443
+#, fuzzy, c-format
+msgid "Attribute create error: ERR=%s"
+msgstr "Не вдалось створити %s: ERR=%s\n"
+
 #: src/dird/catreq.c:538
 #, c-format
 msgid "Restore object create error. %s"
@@ -5843,41 +5889,41 @@ msgstr ""
 
 #: src/dird/catreq.c:544
 #, c-format
-msgid "Got %s but not same File as attributes\n"
+msgid "%s not same File=%d as attributes=%d\n"
 msgstr ""
 
-#: src/dird/catreq.c:570
+#: src/dird/catreq.c:571
 #, c-format
 msgid "Catalog error updating file digest. Unsupported digest stream type: %d"
 msgstr ""
 
-#: src/dird/catreq.c:585
+#: src/dird/catreq.c:586
 #, c-format
 msgid "attribute create error. %s"
 msgstr ""
 
-#: src/dird/catreq.c:591
+#: src/dird/catreq.c:592
 #, c-format
 msgid "Catalog error updating file digest. %s"
 msgstr "Помилка під час оновлення відбитку файлу. %s"
 
-#: src/dird/catreq.c:614
+#: src/dird/catreq.c:615
 #, c-format
 msgid "1994 Invalid Catalog Update: %s"
 msgstr "1994 Помилка оновлення Каталогу: %s"
 
-#: src/dird/catreq.c:615
+#: src/dird/catreq.c:616
 #, c-format
 msgid "Invalid Catalog Update; DB not open: %s"
 msgstr "Помилка оновлення Каталогу: БД не відкрита: %s"
 
-#: src/dird/catreq.c:670 src/dird/catreq.c:685 src/lib/bsock.c:605
+#: src/dird/catreq.c:671 src/dird/catreq.c:686 src/lib/bsock.c:645
 #, c-format
 msgid "fread attr spool error. ERR=%s\n"
 msgstr ""
 
 #: src/dird/msgchan.c:106 src/tray-monitor/tray-monitor.c:952
-#: src/filed/job.c:1771 src/qt-console/tray-monitor/tray-monitor.cpp:375
+#: src/filed/job.c:1775 src/qt-console/tray-monitor/tray-monitor.cpp:375
 msgid "Storage daemon"
 msgstr "Зберігач"
 
@@ -5891,7 +5937,17 @@ msgstr ""
 msgid "<stored: bad response to Job command: %s\n"
 msgstr ""
 
-#: src/dird/msgchan.c:312
+#: src/dird/msgchan.c:273
+#, c-format
+msgid "Using Device \"%s\" to read.\n"
+msgstr ""
+
+#: src/dird/msgchan.c:311
+#, c-format
+msgid "Using Device \"%s\" to write.\n"
+msgstr ""
+
+#: src/dird/msgchan.c:318
 #, c-format
 msgid ""
 "\n"
@@ -5899,21 +5955,20 @@ msgid ""
 "     %s"
 msgstr ""
 
-#: src/dird/msgchan.c:316
+#: src/dird/msgchan.c:322
 #, c-format
 msgid ""
 "\n"
 "     Storage daemon didn't accept Device \"%s\" command.\n"
 msgstr ""
 
-#: src/dird/msgchan.c:321
+#: src/dird/msgchan.c:345 src/dird/msgchan.c:542
 #, c-format
-msgid "Using Device \"%s\"\n"
+msgid "Cannot create message thread: %s\n"
 msgstr ""
 
-#: src/dird/msgchan.c:341 src/dird/msgchan.c:529
-#, c-format
-msgid "Cannot create message thread: %s\n"
+#: src/dird/msgchan.c:417
+msgid "Director's comm line to SD dropped.\n"
 msgstr ""
 
 #: src/tray-monitor/tray_conf.c:177
@@ -6213,14 +6268,14 @@ msgstr "Підключаюсь до Керівника %s:%d\n"
 
 #: src/tray-monitor/tray-monitor.c:937
 #: src/qt-console/tray-monitor/tray-monitor.cpp:359
-#: src/qt-console/bcomm/dircomm.cpp:101
+#: src/qt-console/bcomm/dircomm.cpp:103
 #, c-format
 msgid "Connecting to Director %s:%d"
 msgstr "Приєднуюсь до Керівника %s:%d"
 
 #: src/tray-monitor/tray-monitor.c:938 src/wx-console/console_thread.cpp:428
 #: src/qt-console/tray-monitor/tray-monitor.cpp:361
-#: src/qt-console/bcomm/dircomm.cpp:171
+#: src/qt-console/bcomm/dircomm.cpp:173
 msgid "Director daemon"
 msgstr "Керівник"
 
@@ -6382,7 +6437,7 @@ msgid ""
 "Please see "
 msgstr ""
 
-#: src/stored/reserve.c:86
+#: src/stored/reserve.c:87
 #, c-format
 msgid "Unable to initialize reservation lock. ERR=%s\n"
 msgstr ""
@@ -6392,21 +6447,21 @@ msgstr ""
 msgid "Hey! num_writers=%d!!!!\n"
 msgstr ""
 
-#: src/stored/reserve.c:255
+#: src/stored/reserve.c:256
 msgid "3939 Could not get dcr\n"
 msgstr ""
 
-#: src/stored/reserve.c:357
+#: src/stored/reserve.c:364
 #, c-format
 msgid "Device reservation failed for JobId=%d: %s\n"
 msgstr ""
 
-#: src/stored/reserve.c:366
+#: src/stored/reserve.c:373
 #, c-format
 msgid "Failed command: %s\n"
 msgstr ""
 
-#: src/stored/reserve.c:625 src/stored/dircmd.c:618
+#: src/stored/reserve.c:632 src/stored/dircmd.c:633
 #, c-format
 msgid ""
 "\n"
@@ -6414,85 +6469,85 @@ msgid ""
 "does not exist.\n"
 msgstr ""
 
-#: src/stored/reserve.c:629 src/stored/dircmd.c:596
+#: src/stored/reserve.c:636 src/stored/dircmd.c:611
 #, c-format
 msgid ""
 "\n"
 "     Device \"%s\" requested by DIR could not be opened or does not exist.\n"
 msgstr ""
 
-#: src/stored/reserve.c:645
+#: src/stored/reserve.c:652
 #, c-format
 msgid "3926 Could not get dcr for device: %s\n"
 msgstr ""
 
-#: src/stored/reserve.c:771
+#: src/stored/reserve.c:778
 #, c-format
 msgid "3601 JobId=%u device %s is BLOCKED due to user unmount.\n"
 msgstr ""
 
-#: src/stored/reserve.c:781
+#: src/stored/reserve.c:788
 #, c-format
 msgid "3602 JobId=%u device %s is busy (already reading/writing).\n"
 msgstr ""
 
-#: src/stored/reserve.c:833
+#: src/stored/reserve.c:840
 #, c-format
 msgid "3603 JobId=%u device %s is busy reading.\n"
 msgstr ""
 
-#: src/stored/reserve.c:842
+#: src/stored/reserve.c:849
 #, c-format
 msgid "3604 JobId=%u device %s is BLOCKED due to user unmount.\n"
 msgstr ""
 
-#: src/stored/reserve.c:884
+#: src/stored/reserve.c:891
 #, c-format
 msgid ""
 "3608 JobId=%u wants Pool=\"%s\" but have Pool=\"%s\" nreserve=%d on drive "
 "%s.\n"
 msgstr ""
 
-#: src/stored/reserve.c:907
+#: src/stored/reserve.c:914
 #, c-format
 msgid "3609 JobId=%u Max concurrent jobs exceeded on drive %s.\n"
 msgstr ""
 
-#: src/stored/reserve.c:919
+#: src/stored/reserve.c:926
 #, c-format
 msgid "3610 JobId=%u Volume max jobs exceeded on drive %s.\n"
 msgstr ""
 
-#: src/stored/reserve.c:971
+#: src/stored/reserve.c:978
 #, c-format
 msgid "3605 JobId=%u wants free drive but device %s is busy.\n"
 msgstr ""
 
-#: src/stored/reserve.c:980
+#: src/stored/reserve.c:987
 #, c-format
 msgid "3606 JobId=%u prefers mounted drives, but drive %s has no Volume.\n"
 msgstr ""
 
-#: src/stored/reserve.c:1002
+#: src/stored/reserve.c:1009
 #, c-format
 msgid "3607 JobId=%u wants Vol=\"%s\" drive has Vol=\"%s\" on drive %s.\n"
 msgstr ""
 
-#: src/stored/reserve.c:1057
+#: src/stored/reserve.c:1064
 #, c-format
 msgid "Logic error!!!! JobId=%u Should not get here.\n"
 msgstr ""
 
-#: src/stored/reserve.c:1058
+#: src/stored/reserve.c:1065
 #, c-format
 msgid "3910 JobId=%u Logic error!!!! drive %s Should not get here.\n"
 msgstr ""
 
-#: src/stored/reserve.c:1061
+#: src/stored/reserve.c:1068
 msgid "Logic error!!!! Should not get here.\n"
 msgstr ""
 
-#: src/stored/reserve.c:1064
+#: src/stored/reserve.c:1071
 #, c-format
 msgid "3911 JobId=%u failed reserve drive %s.\n"
 msgstr ""
@@ -6582,23 +6637,23 @@ msgstr ""
 msgid "FileIndex=%d VolSessionId=%d VolSessionTime=%d Stream=%d DataLen=%d\n"
 msgstr ""
 
-#: src/stored/bls.c:425 src/stored/read_record.c:414 src/stored/bcopy.c:332
+#: src/stored/bls.c:425 src/stored/read_record.c:414 src/stored/bcopy.c:330
 msgid "Fresh Volume Label"
 msgstr ""
 
-#: src/stored/bls.c:428 src/stored/read_record.c:417 src/stored/bcopy.c:335
+#: src/stored/bls.c:428 src/stored/read_record.c:417 src/stored/bcopy.c:333
 msgid "Volume Label"
 msgstr ""
 
-#: src/stored/bls.c:432 src/stored/label.c:1033 src/stored/bcopy.c:339
+#: src/stored/bls.c:432 src/stored/label.c:1028 src/stored/bcopy.c:337
 msgid "Begin Job Session"
 msgstr ""
 
-#: src/stored/bls.c:437 src/stored/label.c:1036 src/stored/bcopy.c:343
+#: src/stored/bls.c:437 src/stored/label.c:1031 src/stored/bcopy.c:341
 msgid "End Job Session"
 msgstr ""
 
-#: src/stored/bls.c:441 src/stored/bcopy.c:348
+#: src/stored/bls.c:441 src/stored/bcopy.c:346
 msgid "End of Medium"
 msgstr ""
 
@@ -6614,17 +6669,17 @@ msgstr ""
 msgid "End of object"
 msgstr ""
 
-#: src/stored/bls.c:453 src/stored/label.c:1045 src/stored/bcopy.c:351
+#: src/stored/bls.c:453 src/stored/label.c:1040 src/stored/bcopy.c:349
 msgid "Unknown"
 msgstr ""
 
-#: src/stored/bls.c:460 src/stored/read_record.c:435 src/stored/bcopy.c:357
+#: src/stored/bls.c:460 src/stored/read_record.c:435 src/stored/bcopy.c:355
 #, c-format
 msgid "%s Record: VolSessionId=%d VolSessionTime=%d JobId=%d DataLen=%d\n"
 msgstr ""
 
-#: src/stored/bls.c:479 src/stored/bextract.c:612 src/stored/bcopy.c:375
-#: src/stored/bscan.c:1370 src/stored/btape.c:3048
+#: src/stored/bls.c:479 src/stored/bextract.c:612 src/stored/bcopy.c:373
+#: src/stored/bscan.c:1374 src/stored/btape.c:3050
 #, c-format
 msgid "Mount Volume \"%s\" on device %s and press return when ready: "
 msgstr ""
@@ -6634,292 +6689,292 @@ msgstr ""
 msgid "Connection request from %s failed.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:165
+#: src/stored/dircmd.c:166
 #, c-format
 msgid "Invalid connection from %s. Len=%d\n"
 msgstr ""
 
-#: src/stored/dircmd.c:208 src/filed/authenticate.c:208
+#: src/stored/dircmd.c:210 src/filed/authenticate.c:208
 msgid "Unable to authenticate Director\n"
 msgstr ""
 
-#: src/stored/dircmd.c:294
+#: src/stored/dircmd.c:299
 #, c-format
 msgid "3991 Bad setdebug command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:317
-#, c-format
-msgid "3904 Job %s not found.\n"
+#: src/stored/dircmd.c:326
+msgid "3903 Error scanning cancel command.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:345
+#: src/stored/dircmd.c:330
 #, c-format
-msgid "3000 JobId=%ld Job=\"%s\" marked to be canceled.\n"
+msgid "3904 Job %s not found.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:349
-msgid "3903 Error scanning cancel command.\n"
+#: src/stored/dircmd.c:358
+#, c-format
+msgid "3000 JobId=%ld Job=\"%s\" marked to be %s.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:425 src/stored/dircmd.c:791 src/stored/dircmd.c:883
-#: src/stored/dircmd.c:994 src/stored/dircmd.c:1116 src/stored/dircmd.c:1159
+#: src/stored/dircmd.c:437 src/stored/dircmd.c:812 src/stored/dircmd.c:904
+#: src/stored/dircmd.c:1015 src/stored/dircmd.c:1137 src/stored/dircmd.c:1179
 #, c-format
 msgid "3999 Device \"%s\" not found or could not be opened.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:430
+#: src/stored/dircmd.c:442
 #, c-format
 msgid "3903 Error scanning label command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:480
+#: src/stored/dircmd.c:492
 #, fuzzy, c-format
 msgid "3910 Unable to open device \"%s\": ERR=%s\n"
 msgstr "Не можливо встановити час файлу %s: ERR=%s\n"
 
-#: src/stored/dircmd.c:497
+#: src/stored/dircmd.c:509
 #, c-format
 msgid "3920 Cannot label Volume because it is already labeled: \"%s\"\n"
 msgstr ""
 
-#: src/stored/dircmd.c:504
+#: src/stored/dircmd.c:516
 msgid "3921 Wrong volume mounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:508
+#: src/stored/dircmd.c:520
 msgid "3922 Cannot relabel an ANSI/IBM labeled Volume.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:516
+#: src/stored/dircmd.c:528
 #, c-format
 msgid "3912 Failed to label Volume: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:526
+#: src/stored/dircmd.c:538
 #, c-format
 msgid "3914 Failed to label Volume (no media): ERR=%s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:529
+#: src/stored/dircmd.c:541
 #, c-format
 msgid "3913 Cannot label Volume. Unknown status %d from read_volume_label()\n"
 msgstr ""
 
-#: src/stored/dircmd.c:563
+#: src/stored/dircmd.c:578
 #, c-format
 msgid "3001 Mounted Volume: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:567 src/stored/dircmd.c:1195
+#: src/stored/dircmd.c:582 src/stored/dircmd.c:1215
 #, c-format
 msgid ""
 "3902 Cannot mount Volume on Storage Device \"%s\" because:\n"
 "%s"
 msgstr ""
 
-#: src/stored/dircmd.c:680
+#: src/stored/dircmd.c:696
 msgid "Specified slot ignored. "
 msgstr ""
 
-#: src/stored/dircmd.c:695 src/stored/dircmd.c:752
+#: src/stored/dircmd.c:712 src/stored/dircmd.c:770
 #, fuzzy, c-format
 msgid "3901 Unable to open device \"%s\": ERR=%s\n"
 msgstr "Не можливо встановити час файлу %s: ERR=%s\n"
 
-#: src/stored/dircmd.c:715 src/stored/dircmd.c:743
+#: src/stored/dircmd.c:732 src/stored/dircmd.c:761
 #, c-format
 msgid "3001 Device \"%s\" is mounted with Volume \"%s\"\n"
 msgstr ""
 
-#: src/stored/dircmd.c:718 src/stored/dircmd.c:746 src/stored/dircmd.c:761
+#: src/stored/dircmd.c:735 src/stored/dircmd.c:764 src/stored/dircmd.c:779
 #, c-format
 msgid ""
 "3905 Device \"%s\" open but no Bacula volume is mounted.\n"
 "If this is not a blank tape, try unmounting and remounting the Volume.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:728
+#: src/stored/dircmd.c:745
 #, c-format
 msgid "3001 Device \"%s\" is doing acquire.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:733 src/stored/dircmd.c:854
+#: src/stored/dircmd.c:750 src/stored/dircmd.c:875
 #, c-format
 msgid "3903 Device \"%s\" is being labeled.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:758
+#: src/stored/dircmd.c:776
 #, c-format
 msgid "3001 Device \"%s\" is already mounted with Volume \"%s\"\n"
 msgstr ""
 
-#: src/stored/dircmd.c:767
+#: src/stored/dircmd.c:788
 #, c-format
 msgid "3002 Device \"%s\" is mounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:769 src/stored/dircmd.c:826 src/stored/dircmd.c:842
-#: src/stored/dircmd.c:874
+#: src/stored/dircmd.c:790 src/stored/dircmd.c:847 src/stored/dircmd.c:863
+#: src/stored/dircmd.c:895
 #, c-format
 msgid "3907 %s"
 msgstr ""
 
-#: src/stored/dircmd.c:772
+#: src/stored/dircmd.c:793
 #, c-format
 msgid "3906 File device \"%s\" is always mounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:781
+#: src/stored/dircmd.c:802
 #, c-format
 msgid "3930 Device \"%s\" is being released.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:785
+#: src/stored/dircmd.c:806
 #, fuzzy, c-format
 msgid "3905 Unknown wait state %d\n"
 msgstr "Невідомий статус задачі %c. "
 
-#: src/stored/dircmd.c:795
+#: src/stored/dircmd.c:816
 #, c-format
 msgid "3909 Error scanning mount command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:823 src/stored/dircmd.c:876
+#: src/stored/dircmd.c:844 src/stored/dircmd.c:897
 #, c-format
 msgid "3002 Device \"%s\" unmounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:830
+#: src/stored/dircmd.c:851
 #, c-format
 msgid "3901 Device \"%s\" is already unmounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:845
+#: src/stored/dircmd.c:866
 #, c-format
 msgid "3001 Device \"%s\" unmounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:850
+#: src/stored/dircmd.c:871
 #, c-format
 msgid "3902 Device \"%s\" is busy in acquire.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:888
+#: src/stored/dircmd.c:909
 #, c-format
 msgid "3907 Error scanning unmount command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:916
+#: src/stored/dircmd.c:937
 msgid "3916 Error scanning action_on_purge command\n"
 msgstr ""
 
-#: src/stored/dircmd.c:959
+#: src/stored/dircmd.c:980
 #, c-format
 msgid "3921 Device \"%s\" already released.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:966
+#: src/stored/dircmd.c:987
 #, c-format
 msgid "3922 Device \"%s\" waiting for sysop.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:972
+#: src/stored/dircmd.c:993
 #, c-format
 msgid "3922 Device \"%s\" waiting for mount.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:976
+#: src/stored/dircmd.c:997
 #, c-format
 msgid "3923 Device \"%s\" is busy in acquire.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:980
+#: src/stored/dircmd.c:1001
 #, c-format
 msgid "3914 Device \"%s\" is being labeled.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:988
+#: src/stored/dircmd.c:1009
 #, c-format
 msgid "3022 Device \"%s\" released.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:999
+#: src/stored/dircmd.c:1020
 #, c-format
 msgid "3927 Error scanning release command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1028 src/filed/job.c:1531
+#: src/stored/dircmd.c:1049 src/filed/job.c:1535
 #, c-format
 msgid "Could not create bootstrap file %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1041
+#: src/stored/dircmd.c:1062
 msgid "Error parsing bootstrap file.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1103
+#: src/stored/dircmd.c:1124
 #, c-format
-msgid "3995 Device \"%s\" is not an autochanger.\n"
+msgid "3998 Device \"%s\" is not an autochanger.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1120
+#: src/stored/dircmd.c:1141
 #, c-format
 msgid "3908 Error scanning autochanger drives/list/slots command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1163
+#: src/stored/dircmd.c:1183
 #, c-format
 msgid "3909 Error scanning readlabel command: %s\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1191
+#: src/stored/dircmd.c:1211
 #, c-format
 msgid "3001 Volume=%s Slot=%d\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1223
+#: src/stored/dircmd.c:1243
 #, c-format
 msgid "3931 Device \"%s\" is BLOCKED. user unmounted.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1227
+#: src/stored/dircmd.c:1247
 #, c-format
 msgid ""
 "3932 Device \"%s\" is BLOCKED. user unmounted during wait for media/mount.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1231
+#: src/stored/dircmd.c:1251
 #, c-format
 msgid "3933 Device \"%s\" is BLOCKED waiting for media.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1235
+#: src/stored/dircmd.c:1255
 #, c-format
 msgid "3934 Device \"%s\" is being initialized.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1239
+#: src/stored/dircmd.c:1259
 #, c-format
 msgid "3935 Device \"%s\" is blocked labeling a Volume.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1243
+#: src/stored/dircmd.c:1263
 #, c-format
 msgid "3935 Device \"%s\" is blocked for unknown reason.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1248
+#: src/stored/dircmd.c:1268
 #, c-format
 msgid "3936 Device \"%s\" is busy reading.\n"
 msgstr ""
 
-#: src/stored/dircmd.c:1251
+#: src/stored/dircmd.c:1271
 #, c-format
 msgid "3937 Device \"%s\" is busy with writers=%d reserved=%d.\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:123 src/stored/parse_bsr.c:127
+#: src/stored/parse_bsr.c:122 src/stored/parse_bsr.c:126
 #, c-format
 msgid ""
 "Bootstrap file error: %s\n"
@@ -6927,154 +6982,154 @@ msgid ""
 "%s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:149
+#: src/stored/parse_bsr.c:148
 #, c-format
 msgid "Cannot open bootstrap file %s: %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:280
+#: src/stored/parse_bsr.c:279
 #, c-format
 msgid "MediaType %s in bsr at inappropriate place.\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:312
+#: src/stored/parse_bsr.c:311
 #, c-format
 msgid "Device \"%s\" in bsr at inappropriate place.\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:485
+#: src/stored/parse_bsr.c:484
 #, c-format
 msgid "REGEX '%s' compile error. ERR=%s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:495
+#: src/stored/parse_bsr.c:494
 msgid "JobType not yet implemented\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:503
+#: src/stored/parse_bsr.c:502
 msgid "JobLevel not yet implemented\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:720
+#: src/stored/parse_bsr.c:719
 #, c-format
 msgid "Slot %d in bsr at inappropriate place.\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:744
+#: src/stored/parse_bsr.c:743
 #, c-format
 msgid "VolFile     : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:752
+#: src/stored/parse_bsr.c:751
 #, c-format
 msgid "VolBlock    : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:760
+#: src/stored/parse_bsr.c:759
 #, c-format
 msgid "VolAddr    : %llu-%llu\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:769
+#: src/stored/parse_bsr.c:768
 #, c-format
 msgid "FileIndex   : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:771
+#: src/stored/parse_bsr.c:770
 #, c-format
 msgid "FileIndex   : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:781
+#: src/stored/parse_bsr.c:780
 #, c-format
 msgid "JobId       : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:783
+#: src/stored/parse_bsr.c:782
 #, c-format
 msgid "JobId       : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:793
+#: src/stored/parse_bsr.c:792
 #, c-format
 msgid "SessId      : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:795
+#: src/stored/parse_bsr.c:794
 #, c-format
 msgid "SessId      : %u-%u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:804
+#: src/stored/parse_bsr.c:803
 #, c-format
 msgid "VolumeName  : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:805
+#: src/stored/parse_bsr.c:804
 #, c-format
 msgid "  MediaType : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:806
+#: src/stored/parse_bsr.c:805
 #, c-format
 msgid "  Device    : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:807
+#: src/stored/parse_bsr.c:806
 #, c-format
 msgid "  Slot      : %d\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:816
+#: src/stored/parse_bsr.c:815
 #, c-format
 msgid "Client      : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:824
+#: src/stored/parse_bsr.c:823
 #, c-format
 msgid "Job          : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:832
+#: src/stored/parse_bsr.c:831
 #, c-format
 msgid "SessTime    : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:843
+#: src/stored/parse_bsr.c:842
 msgid "BSR is NULL\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:847
+#: src/stored/parse_bsr.c:846
 #, c-format
 msgid "Next        : 0x%x\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:848
+#: src/stored/parse_bsr.c:847
 #, c-format
 msgid "Root bsr    : 0x%x\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:860
+#: src/stored/parse_bsr.c:859
 #, c-format
 msgid "count       : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:861
+#: src/stored/parse_bsr.c:860
 #, c-format
 msgid "found       : %u\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:864
+#: src/stored/parse_bsr.c:863
 #, c-format
 msgid "done        : %s\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:865
+#: src/stored/parse_bsr.c:864
 #, c-format
 msgid "positioning : %d\n"
 msgstr ""
 
-#: src/stored/parse_bsr.c:866
+#: src/stored/parse_bsr.c:865
 #, c-format
 msgid "fast_reject : %d\n"
 msgstr ""
@@ -7158,76 +7213,69 @@ msgstr ""
 msgid "Unable to set network buffer size.\n"
 msgstr ""
 
-#: src/stored/append.c:96 src/stored/append.c:105 src/stored/append.c:117
-#: src/stored/append.c:297 src/stored/append.c:298 src/stored/askdir.c:339
-#: src/stored/askdir.c:340
+#: src/stored/append.c:95 src/stored/append.c:104 src/stored/append.c:116
+#: src/stored/askdir.c:340 src/stored/askdir.c:341
 msgid "NULL Volume name. This shouldn't happen!!!\n"
 msgstr ""
 
-#: src/stored/append.c:111 src/stored/btape.c:2233
+#: src/stored/append.c:110 src/stored/btape.c:2235
 #, c-format
 msgid "Write session label failed. ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:123
+#: src/stored/append.c:122
 #, c-format
 msgid "Network send error to FD. ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:160
+#: src/stored/append.c:159
 #, c-format
 msgid "Error reading data header from FD. ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:168
+#: src/stored/append.c:167
 #, c-format
 msgid "Malformed data header from FD: %s\n"
 msgstr ""
 
-#: src/stored/append.c:188
+#: src/stored/append.c:187
 #, c-format
 msgid "FI=%d from FD not positive or sequential=%d\n"
 msgstr ""
 
-#: src/stored/append.c:244
+#: src/stored/append.c:235
 #, c-format
 msgid "Network error reading from FD. ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:274
-#, c-format
-msgid ""
-"Job write elapsed time = %02d:%02d:%02d, Transfer rate = %s Bytes/second\n"
-msgstr ""
-
-#: src/stored/append.c:289 src/stored/btape.c:2352
+#: src/stored/append.c:265 src/stored/btape.c:2354
 #, fuzzy, c-format
 msgid "Error writing end session label. ERR=%s\n"
 msgstr "Помилка надсилання Hello до Збирача. ERR=%s\n"
 
-#: src/stored/append.c:305 src/stored/mac.c:126 src/stored/mac.c:247
+#: src/stored/append.c:277 src/stored/mac.c:126 src/stored/mac.c:261
 #: src/stored/spool.c:300
 #, c-format
 msgid "Fatal append error on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/append.c:307 src/stored/mac.c:128
+#: src/stored/append.c:279 src/stored/mac.c:128
 msgid "Set ok=FALSE after write_block_to_device.\n"
 msgstr ""
 
-#: src/stored/append.c:360
+#: src/stored/append.c:308 src/stored/mac.c:151
 #, c-format
-msgid "Error updating file attributes. ERR=%s\n"
+msgid "Elapsed time=%02d:%02d:%02d, Transfer rate=%s Bytes/second\n"
 msgstr ""
 
-#: src/stored/vol_mgr.c:93
+#: src/stored/append.c:345
 #, c-format
-msgid "Unable to initialize volume list lock. ERR=%s\n"
+msgid "Error updating file attributes. ERR=%s\n"
 msgstr ""
 
-#: src/stored/vol_mgr.c:491
+#: src/stored/vol_mgr.c:93
 #, c-format
-msgid "Device switch. New device %s chosen.\n"
+msgid "Unable to initialize volume list lock. ERR=%s\n"
 msgstr ""
 
 #: src/stored/label.c:93
@@ -7275,67 +7323,67 @@ msgstr ""
 msgid "Volume on %s has bad Bacula label type: %x\n"
 msgstr ""
 
-#: src/stored/label.c:236 src/stored/label.c:399 src/stored/mount.c:460
+#: src/stored/label.c:236 src/stored/label.c:397 src/stored/mount.c:463
 #, c-format
 msgid "Could not reserve volume %s on %s\n"
 msgstr ""
 
-#: src/stored/label.c:276
+#: src/stored/label.c:277
 #, c-format
 msgid "Cannot write Volume label to block for device %s\n"
 msgstr ""
 
-#: src/stored/label.c:328 src/stored/label.c:429 src/stored/mount.c:216
+#: src/stored/label.c:328 src/stored/label.c:426 src/stored/mount.c:218
 #, c-format
 msgid "Open device %s Volume \"%s\" failed: ERR=%s\n"
 msgstr ""
 
-#: src/stored/label.c:454
+#: src/stored/label.c:451
 #, c-format
 msgid "Rewind error on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/label.c:462
+#: src/stored/label.c:458
 #, c-format
 msgid "Truncate error on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/label.c:468
+#: src/stored/label.c:464
 #, c-format
 msgid "Failed to re-open DVD after truncate on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/label.c:491
+#: src/stored/label.c:487
 #, c-format
 msgid "Unable to write device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/label.c:522
+#: src/stored/label.c:518
 #, c-format
 msgid "Recycled volume \"%s\" on device %s, all previous data lost.\n"
 msgstr ""
 
-#: src/stored/label.c:525
+#: src/stored/label.c:521
 #, c-format
 msgid "Wrote label to prelabeled Volume \"%s\" on device %s\n"
 msgstr ""
 
-#: src/stored/label.c:726
+#: src/stored/label.c:721
 #, c-format
 msgid "Bad Volume session label = %d\n"
 msgstr ""
 
-#: src/stored/label.c:781
+#: src/stored/label.c:776
 #, c-format
 msgid "Expecting Volume Label, got FI=%s Stream=%s len=%d\n"
 msgstr ""
 
-#: src/stored/label.c:908
+#: src/stored/label.c:903
 #, c-format
 msgid "Unknown %d"
 msgstr ""
 
-#: src/stored/label.c:912
+#: src/stored/label.c:907
 #, c-format
 msgid ""
 "\n"
@@ -7352,17 +7400,17 @@ msgid ""
 "HostName          : %s\n"
 msgstr ""
 
-#: src/stored/label.c:934
+#: src/stored/label.c:929
 #, c-format
 msgid "Date label written: %s\n"
 msgstr ""
 
-#: src/stored/label.c:940
+#: src/stored/label.c:935
 #, c-format
 msgid "Date label written: %04d-%02d-%02d at %02d:%02d\n"
 msgstr ""
 
-#: src/stored/label.c:960
+#: src/stored/label.c:955
 #, c-format
 msgid ""
 "\n"
@@ -7375,7 +7423,7 @@ msgid ""
 "ClientName        : %s\n"
 msgstr ""
 
-#: src/stored/label.c:973
+#: src/stored/label.c:968
 #, c-format
 msgid ""
 "Job (unique name) : %s\n"
@@ -7384,7 +7432,7 @@ msgid ""
 "JobLevel          : %c\n"
 msgstr ""
 
-#: src/stored/label.c:982
+#: src/stored/label.c:977
 #, c-format
 msgid ""
 "JobFiles          : %s\n"
@@ -7397,52 +7445,52 @@ msgid ""
 "JobStatus         : %c\n"
 msgstr ""
 
-#: src/stored/label.c:1003
+#: src/stored/label.c:998
 #, c-format
 msgid "Date written      : %s\n"
 msgstr ""
 
-#: src/stored/label.c:1008
+#: src/stored/label.c:1003
 #, c-format
 msgid "Date written      : %04d-%02d-%02d at %02d:%02d\n"
 msgstr ""
 
-#: src/stored/label.c:1027
+#: src/stored/label.c:1022
 msgid "Fresh Volume"
 msgstr ""
 
-#: src/stored/label.c:1030
+#: src/stored/label.c:1025
 msgid "Volume"
 msgstr ""
 
-#: src/stored/label.c:1039 src/stored/read_record.c:428
+#: src/stored/label.c:1034 src/stored/read_record.c:428
 msgid "End of Media"
 msgstr ""
 
-#: src/stored/label.c:1042
+#: src/stored/label.c:1037
 msgid "End of Tape"
 msgstr ""
 
-#: src/stored/label.c:1062 src/stored/label.c:1070 src/stored/label.c:1103
+#: src/stored/label.c:1057 src/stored/label.c:1065 src/stored/label.c:1098
 #, c-format
 msgid "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d DataLen=%d\n"
 msgstr ""
 
-#: src/stored/label.c:1067
+#: src/stored/label.c:1062
 msgid "End of physical tape.\n"
 msgstr ""
 
-#: src/stored/label.c:1082 src/stored/label.c:1091
+#: src/stored/label.c:1077 src/stored/label.c:1086
 #, c-format
 msgid "%s Record: File:blk=%u:%u SessId=%d SessTime=%d JobId=%d\n"
 msgstr ""
 
-#: src/stored/label.c:1084
+#: src/stored/label.c:1079
 #, c-format
 msgid "   Job=%s Date=%s Level=%c Type=%c\n"
 msgstr ""
 
-#: src/stored/label.c:1093
+#: src/stored/label.c:1088
 #, c-format
 msgid "   Date=%s Level=%c Type=%c Files=%s Bytes=%s Errors=%d Status=%c\n"
 msgstr ""
@@ -7451,82 +7499,101 @@ msgstr ""
 msgid "Used Volume status:\n"
 msgstr ""
 
-#: src/stored/status.c:107 src/stored/status.c:109
+#: src/stored/status.c:117
 msgid ""
-"====\n"
 "\n"
+"SD Resources:\n"
 msgstr ""
 
-#: src/stored/status.c:128
+#: src/stored/status.c:153
 msgid ""
 "\n"
 "Device status:\n"
 msgstr ""
 
-#: src/stored/status.c:132
+#: src/stored/status.c:157
 #, c-format
 msgid "Autochanger \"%s\" with devices:\n"
 msgstr ""
 
-#: src/stored/status.c:150
+#: src/stored/status.c:177
 #, c-format
 msgid ""
-"Device %s is mounted with:\n"
+"\n"
+"Device %s is %s:\n"
 "    Volume:      %s\n"
 "    Pool:        %s\n"
 "    Media type:  %s\n"
 msgstr ""
 
-#: src/stored/status.c:160
+#: src/stored/status.c:182
+msgid "waiting for"
+msgstr ""
+
+#: src/stored/status.c:182
+msgid "mounted with"
+msgstr ""
+
+#: src/stored/status.c:184
+msgid "*unknown*"
+msgstr ""
+
+#: src/stored/status.c:188
 #, c-format
-msgid "Device %s open but no Bacula volume is currently mounted.\n"
+msgid ""
+"\n"
+"Device %s open but no Bacula volume is currently mounted.\n"
 msgstr ""
 
-#: src/stored/status.c:171
+#: src/stored/status.c:199
 #, c-format
 msgid "    Total Bytes=%s Blocks=%s Bytes/block=%s\n"
 msgstr ""
 
-#: src/stored/status.c:186
+#: src/stored/status.c:214
 #, c-format
 msgid "    Total Bytes Read=%s Blocks Read=%s Bytes/block=%s\n"
 msgstr ""
 
-#: src/stored/status.c:192
+#: src/stored/status.c:220
 #, c-format
 msgid "    Positioned at File=%s Block=%s\n"
 msgstr ""
 
-#: src/stored/status.c:199
+#: src/stored/status.c:227
 #, c-format
-msgid "Device %s is not open.\n"
+msgid ""
+"\n"
+"Device %s is not open.\n"
 msgstr ""
 
-#: src/stored/status.c:203
+#: src/stored/status.c:231
 #, c-format
-msgid "Device \"%s\" is not open or does not exist.\n"
+msgid ""
+"\n"
+"Device \"%s\" is not open or does not exist.\n"
 msgstr ""
 
-#: src/stored/status.c:225
+#: src/stored/status.c:255
 #, c-format
 msgid "Daemon started %s. Jobs: run=%d, running=%d.\n"
 msgstr ""
 
-#: src/stored/status.c:248
+#: src/stored/status.c:293
 msgid ""
 "No DEVICE structure.\n"
 "\n"
 msgstr ""
 
-#: src/stored/status.c:254
+#: src/stored/status.c:299
 msgid "    Device is BLOCKED. User unmounted.\n"
 msgstr ""
 
-#: src/stored/status.c:258
+#: src/stored/status.c:303
 msgid "    Device is BLOCKED. User unmounted during wait for media/mount.\n"
 msgstr ""
 
-#: src/stored/status.c:270
+#: src/stored/status.c:313
 #, c-format
 msgid ""
 "    Device is BLOCKED waiting for mount of volume \"%s\",\n"
@@ -7534,7 +7601,7 @@ msgid ""
 "       Media type:  %s\n"
 msgstr ""
 
-#: src/stored/status.c:279
+#: src/stored/status.c:322
 #, c-format
 msgid ""
 "    Device is BLOCKED waiting to create a volume for:\n"
@@ -7542,172 +7609,165 @@ msgid ""
 "       Media type:  %s\n"
 msgstr ""
 
-#: src/stored/status.c:291
+#: src/stored/status.c:333
 msgid "    Device is BLOCKED waiting for media.\n"
 msgstr ""
 
-#: src/stored/status.c:297
+#: src/stored/status.c:339
 msgid "    Device is being initialized.\n"
 msgstr ""
 
-#: src/stored/status.c:301
+#: src/stored/status.c:343
 msgid "    Device is blocked labeling a Volume.\n"
 msgstr ""
 
-#: src/stored/status.c:310
+#: src/stored/status.c:352
 #, c-format
-msgid "    Slot %d is loaded in drive %d.\n"
+msgid "    Slot %d %s loaded in drive %d.\n"
 msgstr ""
 
-#: src/stored/status.c:314
+#: src/stored/status.c:356
 #, c-format
 msgid "    Drive %d is not loaded.\n"
 msgstr ""
 
-#: src/stored/status.c:317
-#, c-format
-msgid "    Drive %d status unknown.\n"
-msgstr ""
-
-#: src/stored/status.c:331 src/stored/btape.c:688
+#: src/stored/status.c:371 src/stored/btape.c:688
 #, c-format
 msgid "Configured device capabilities:\n"
 msgstr ""
 
-#: src/stored/status.c:349
+#: src/stored/status.c:389
 msgid "Device state:\n"
 msgstr ""
 
-#: src/stored/status.c:367
+#: src/stored/status.c:405
 #, c-format
-msgid ""
-"num_writers=%d reserved=%d block=%d\n"
-"\n"
+msgid "  num_writers=%d reserves=%d block=%d\n"
+msgstr ""
+
+#: src/stored/status.c:409
+msgid "Attached Jobs: "
 msgstr ""
 
-#: src/stored/status.c:371 src/stored/btape.c:720
+#: src/stored/status.c:427 src/stored/btape.c:720
 #, c-format
 msgid "Device parameters:\n"
 msgstr ""
 
-#: src/stored/status.c:374
+#: src/stored/status.c:429
 #, c-format
-msgid "Archive name: %s Device name: %s\n"
+msgid "  Archive name: %s Device name: %s\n"
 msgstr ""
 
-#: src/stored/status.c:378
+#: src/stored/status.c:432
 #, c-format
-msgid "File=%u block=%u\n"
+msgid "  File=%u block=%u\n"
 msgstr ""
 
-#: src/stored/status.c:381
+#: src/stored/status.c:434
 #, c-format
-msgid "Min block=%u Max block=%u\n"
+msgid "  Min block=%u Max block=%u\n"
 msgstr ""
 
-#: src/stored/status.c:401
+#: src/stored/status.c:455
 #, c-format
 msgid "%s Job %s waiting for Client connection.\n"
 msgstr ""
 
-#: src/stored/status.c:417
+#: src/stored/status.c:471
 #, c-format
 msgid ""
 "Reading: %s %s job %s JobId=%d Volume=\"%s\"\n"
 "    pool=\"%s\" device=%s\n"
 msgstr ""
 
-#: src/stored/status.c:430
+#: src/stored/status.c:484
 #, c-format
 msgid ""
 "Writing: %s %s job %s JobId=%d Volume=\"%s\"\n"
 "    pool=\"%s\" device=%s\n"
 msgstr ""
 
-#: src/stored/status.c:441
+#: src/stored/status.c:495
 #, c-format
 msgid "    spooling=%d despooling=%d despool_wait=%d\n"
 msgstr ""
 
-#: src/stored/status.c:450
+#: src/stored/status.c:511
 #, c-format
-msgid "    Files=%s Bytes=%s Bytes/sec=%s\n"
+msgid "    Files=%s Bytes=%s AveBytes/sec=%s LastBytes/sec=%s\n"
 msgstr ""
 
-#: src/stored/status.c:458
+#: src/stored/status.c:523
 #, c-format
 msgid "    FDReadSeqNo=%s in_msg=%u out_msg=%d fd=%d\n"
 msgstr ""
 
-#: src/stored/status.c:464
+#: src/stored/status.c:529
 msgid "    FDSocket closed\n"
 msgstr ""
 
-#: src/stored/status.c:485
+#: src/stored/status.c:550
 msgid ""
 "\n"
 "Jobs waiting to reserve a drive:\n"
 msgstr ""
 
-#: src/stored/status.c:516
+#: src/stored/status.c:581
 msgid "===================================================================\n"
 msgstr ""
 
-#: src/stored/status.c:598 src/lib/util.c:423 src/filed/status.c:517
+#: src/stored/status.c:663 src/lib/util.c:423 src/filed/status.c:517
 msgid "Base"
 msgstr ""
 
-#: src/stored/status.c:615 src/filed/status.c:534
+#: src/stored/status.c:680 src/filed/status.c:534
 msgid "Init Catalog"
 msgstr ""
 
-#: src/stored/status.c:618 src/filed/status.c:537
+#: src/stored/status.c:683 src/filed/status.c:537
 msgid "Volume to Catalog"
 msgstr ""
 
-#: src/stored/status.c:621 src/filed/status.c:540
+#: src/stored/status.c:686 src/filed/status.c:540
 msgid "Disk to Catalog"
 msgstr ""
 
-#: src/stored/status.c:624 src/filed/status.c:543
+#: src/stored/status.c:689 src/filed/status.c:543
 msgid "Data"
 msgstr ""
 
-#: src/stored/status.c:630 src/lib/util.c:459 src/filed/status.c:549
+#: src/stored/status.c:695 src/lib/util.c:459 src/filed/status.c:549
 msgid "Unknown Job Level"
 msgstr ""
 
-#: src/stored/status.c:698 src/stored/status.c:744 src/filed/status.c:463
-#: src/filed/status.c:496
+#: src/stored/status.c:763
 #, c-format
-msgid "Bad .status command: %s\n"
+msgid "3900 No arg in .status command: %s\n"
 msgstr ""
 
-#: src/stored/status.c:699
-msgid "3900 Bad .status command, missing argument.\n"
-msgstr ""
-
-#: src/stored/status.c:745
-msgid "3900 Bad .status command, wrong argument.\n"
-msgstr ""
+#: src/stored/status.c:811
+#, fuzzy, c-format
+msgid "3900 Unknown arg in .status command: %s\n"
+msgstr "Невідомий статус задачі %c. "
 
-#: src/stored/status.c:760
+#: src/stored/status.c:826
 msgid "Bacula Storage: Idle"
 msgstr ""
 
-#: src/stored/status.c:771
+#: src/stored/status.c:837
 msgid "Bacula Storage: Running"
 msgstr ""
 
-#: src/stored/status.c:785
+#: src/stored/status.c:851
 msgid "Bacula Storage: Last Job Canceled"
 msgstr ""
 
-#: src/stored/status.c:789
+#: src/stored/status.c:855
 msgid "Bacula Storage: Last Job Failed"
 msgstr ""
 
-#: src/stored/status.c:793
+#: src/stored/status.c:859
 msgid "Bacula Storage: Last Job had Warnings"
 msgstr ""
 
@@ -7776,7 +7836,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/bextract.c:196 src/stored/bcopy.c:163 src/stored/bscan.c:248
+#: src/stored/bextract.c:196 src/stored/bcopy.c:161 src/stored/bscan.c:248
 #: src/tools/bvfs_test.c:201 src/tools/bbatch.c:190 src/tools/ing_test.c:185
 #: src/tools/cats_test.c:321
 msgid "Wrong number of arguments: \n"
@@ -7808,7 +7868,7 @@ msgid "%u files restored.\n"
 msgstr ""
 
 #: src/stored/bextract.c:284 src/stored/bextract.c:290
-#: src/filed/restore.c:1474
+#: src/filed/restore.c:1480
 #, c-format
 msgid "Write error on %s: %s\n"
 msgstr ""
@@ -7817,7 +7877,7 @@ msgstr ""
 msgid "Logic error output file should be open but is not.\n"
 msgstr ""
 
-#: src/stored/bextract.c:335 src/filed/restore.c:566
+#: src/stored/bextract.c:335 src/filed/restore.c:569
 #, c-format
 msgid "%s stream not supported on this Client.\n"
 msgstr ""
@@ -7833,7 +7893,7 @@ msgid "Seek error on %s: %s\n"
 msgstr ""
 
 #: src/stored/bextract.c:429 src/stored/bextract.c:494
-#: src/filed/restore.c:1329
+#: src/filed/restore.c:1335
 #, c-format
 msgid "Seek to %s error on %s: ERR=%s\n"
 msgstr ""
@@ -7843,16 +7903,16 @@ msgstr ""
 msgid "Uncompression error. ERR=%d\n"
 msgstr ""
 
-#: src/stored/bextract.c:462 src/filed/restore.c:1444
+#: src/stored/bextract.c:462 src/filed/restore.c:1450
 msgid "GZIP data stream found, but GZIP not configured!\n"
 msgstr ""
 
-#: src/stored/bextract.c:517 src/filed/restore.c:1370
+#: src/stored/bextract.c:517 src/filed/restore.c:1376
 #, c-format
 msgid "Compressed header version error. version=0x%x\n"
 msgstr ""
 
-#: src/stored/bextract.c:522 src/filed/restore.c:1375
+#: src/stored/bextract.c:522 src/filed/restore.c:1381
 #, c-format
 msgid "Compressed header size error. comp_len=%d, msglen=%d\n"
 msgstr ""
@@ -7862,7 +7922,7 @@ msgstr ""
 msgid "LZO uncompression error. ERR=%d\n"
 msgstr ""
 
-#: src/stored/bextract.c:556 src/filed/restore.c:1408
+#: src/stored/bextract.c:556 src/filed/restore.c:1414
 #, c-format
 msgid "Compression algorithm 0x%x found, but not supported!\n"
 msgstr ""
@@ -7871,12 +7931,12 @@ msgstr ""
 msgid "Got Program Name or Data Stream. Ignored.\n"
 msgstr ""
 
-#: src/stored/bextract.c:592 src/filed/restore.c:325 src/filed/restore.c:1027
+#: src/stored/bextract.c:592 src/filed/restore.c:328 src/filed/restore.c:1033
 #, c-format
 msgid "Unknown stream=%d ignored. This shouldn't happen!\n"
 msgstr ""
 
-#: src/stored/bcopy.c:76
+#: src/stored/bcopy.c:74
 #, c-format
 msgid ""
 "\n"
@@ -7896,48 +7956,48 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/bcopy.c:204 src/stored/device.c:298 src/stored/btape.c:473
+#: src/stored/bcopy.c:202 src/stored/device.c:298 src/stored/btape.c:473
 #, c-format
 msgid "dev open failed: %s\n"
 msgstr ""
 
-#: src/stored/bcopy.c:219
+#: src/stored/bcopy.c:217
 msgid "Write of last block failed.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:223
+#: src/stored/bcopy.c:221
 #, c-format
 msgid "%u Jobs copied. %u records copied.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:240 src/stored/bscan.c:428
+#: src/stored/bcopy.c:238 src/stored/bscan.c:428
 #, c-format
 msgid "Record: SessId=%u SessTim=%u FileIndex=%d Stream=%d len=%u\n"
 msgstr ""
 
-#: src/stored/bcopy.c:256
+#: src/stored/bcopy.c:254
 msgid "Volume is prelabeled. This volume cannot be copied.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:259
+#: src/stored/bcopy.c:257
 msgid "Volume label not copied.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:265
+#: src/stored/bcopy.c:263
 msgid "Copy skipped. Record does not match BSR filter.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:282 src/stored/bcopy.c:290 src/stored/bcopy.c:318
-#: src/stored/btape.c:2754
+#: src/stored/bcopy.c:280 src/stored/bcopy.c:288 src/stored/bcopy.c:316
+#: src/stored/btape.c:2756
 #, c-format
 msgid "Cannot fixup device error. %s\n"
 msgstr ""
 
-#: src/stored/bcopy.c:296
+#: src/stored/bcopy.c:294
 msgid "EOM label not copied.\n"
 msgstr ""
 
-#: src/stored/bcopy.c:299
+#: src/stored/bcopy.c:297
 msgid "EOT label not copied.\n"
 msgstr ""
 
@@ -7975,19 +8035,14 @@ msgstr ""
 msgid "Next Volume part already exists on DVD. Cannot continue: %s\n"
 msgstr ""
 
-#: src/stored/dvd.c:377
-#, c-format
-msgid "open_next_part can't unlink existing part %s, ERR=%s\n"
-msgstr ""
-
-#: src/stored/dvd.c:583
+#: src/stored/dvd.c:563
 #, c-format
 msgid ""
 "Error writing. Current part less than total number of parts (%d/%d, device="
 "%s)\n"
 msgstr ""
 
-#: src/stored/dvd.c:590
+#: src/stored/dvd.c:570
 #, c-format
 msgid "Unable to write last on %s: ERR=%s\n"
 msgstr ""
@@ -8066,125 +8121,125 @@ msgstr ""
 msgid "Unexpected Tape is Off-line\n"
 msgstr ""
 
-#: src/stored/acquire.c:70
+#: src/stored/acquire.c:74
 #, c-format
 msgid "Acquire read: num_writers=%d not zero. Job %d canceled.\n"
 msgstr ""
 
-#: src/stored/acquire.c:79
+#: src/stored/acquire.c:83
 #, c-format
 msgid "No volumes specified for reading. Job %s canceled.\n"
 msgstr ""
 
-#: src/stored/acquire.c:88
+#: src/stored/acquire.c:92
 #, c-format
 msgid "Logic error: no next volume to read. Numvol=%d Curvol=%d\n"
 msgstr ""
 
-#: src/stored/acquire.c:95 src/stored/acquire.c:163 src/stored/acquire.c:431
-msgid "generate_plugin_event(bsdEventDeviceOpen) Failed\n"
-msgstr ""
-
-#: src/stored/acquire.c:119
+#: src/stored/acquire.c:118
 #, c-format
 msgid ""
 "Changing read device. Want Media Type=\"%s\" have=\"%s\"\n"
 "  device=%s\n"
 msgstr ""
 
-#: src/stored/acquire.c:159
+#: src/stored/acquire.c:162
 #, c-format
 msgid "Media Type change.  New read device %s chosen.\n"
 msgstr ""
 
-#: src/stored/acquire.c:175
+#: src/stored/acquire.c:174
 #, c-format
 msgid "No suitable device found to read Volume \"%s\"\n"
 msgstr ""
 
-#: src/stored/acquire.c:214
+#: src/stored/acquire.c:213
 #, c-format
 msgid "Job %s canceled.\n"
 msgstr ""
 
-#: src/stored/acquire.c:232
+#: src/stored/acquire.c:231
 #, c-format
 msgid "Read open device %s Volume \"%s\" failed: ERR=%s\n"
 msgstr ""
 
-#: src/stored/acquire.c:322
+#: src/stored/acquire.c:321
 #, c-format
 msgid "Too many errors trying to mount device %s for reading.\n"
 msgstr ""
 
-#: src/stored/acquire.c:330
+#: src/stored/acquire.c:329
 #, c-format
 msgid "Ready to read from volume \"%s\" on device %s.\n"
 msgstr ""
 
-#: src/stored/acquire.c:383
+#: src/stored/acquire.c:381
 #, c-format
 msgid "Want to append, but device %s is busy reading.\n"
 msgstr ""
 
-#: src/stored/acquire.c:416
+#: src/stored/acquire.c:414
 #, c-format
 msgid "Could not ready device %s for append.\n"
 msgstr ""
 
-#: src/stored/acquire.c:508 src/stored/spool.c:321 src/stored/block.c:368
-#: src/stored/block.c:738 src/stored/block.c:812
+#: src/stored/acquire.c:501 src/stored/spool.c:321 src/stored/block.c:386
+#: src/stored/block.c:769 src/stored/block.c:847
 #, c-format
 msgid "Could not create JobMedia record for Volume=\"%s\" Job=%s\n"
 msgstr ""
 
-#: src/stored/acquire.c:559
+#: src/stored/acquire.c:552
 #, c-format
 msgid "Alert: %s"
 msgstr ""
 
-#: src/stored/acquire.c:567
+#: src/stored/acquire.c:560
 #, c-format
 msgid "3997 Bad alert command: %s: ERR=%s.\n"
 msgstr ""
 
-#: src/stored/acquire.c:637 src/stored/dev.c:263 src/stored/dev.c:281
-#: src/stored/dev.c:287 src/stored/dev.c:298 src/lib/openssl.c:122
-#: src/lib/openssl.c:181
+#: src/stored/acquire.c:629 src/stored/dev.c:270 src/stored/dev.c:311
+#: src/lib/openssl.c:122 src/lib/openssl.c:181
 #, c-format
 msgid "Unable to init mutex: ERR=%s\n"
 msgstr ""
 
-#: src/stored/askdir.c:178
+#: src/stored/acquire.c:635
+#, fuzzy, c-format
+msgid "Unable to init r_mutex: ERR=%s\n"
+msgstr "Не можливо встановити власника файлу %s: ERR=%s\n"
+
+#: src/stored/askdir.c:179
 msgid "Network error on bnet_recv in req_vol_info.\n"
 msgstr ""
 
-#: src/stored/askdir.c:196
+#: src/stored/askdir.c:197
 #, c-format
 msgid "Error getting Volume info: %s"
 msgstr ""
 
-#: src/stored/askdir.c:374
+#: src/stored/askdir.c:376
 #, c-format
 msgid "Didn't get vol info vol=%s: ERR=%s"
 msgstr ""
 
-#: src/stored/askdir.c:429
+#: src/stored/askdir.c:432
 #, c-format
 msgid "Error creating JobMedia record: ERR=%s\n"
 msgstr ""
 
-#: src/stored/askdir.c:436
+#: src/stored/askdir.c:439
 #, c-format
 msgid "Error creating JobMedia record: %s\n"
 msgstr ""
 
-#: src/stored/askdir.c:519
+#: src/stored/askdir.c:522
 #, c-format
 msgid "Job %s canceled while waiting for mount on Storage Device \"%s\".\n"
 msgstr ""
 
-#: src/stored/askdir.c:530
+#: src/stored/askdir.c:533
 #, c-format
 msgid ""
 "Job %s is waiting. Cannot find any appendable volumes.\n"
@@ -8194,38 +8249,38 @@ msgid ""
 "    Media type:   %s\n"
 msgstr ""
 
-#: src/stored/askdir.c:556 src/stored/askdir.c:658
+#: src/stored/askdir.c:558 src/stored/askdir.c:658
 #, c-format
 msgid "Max time exceeded waiting to mount Storage Device %s for Job %s\n"
 msgstr ""
 
-#: src/stored/askdir.c:566
+#: src/stored/askdir.c:568
 msgid "pthread error in mount_next_volume.\n"
 msgstr ""
 
-#: src/stored/askdir.c:600
+#: src/stored/askdir.c:601
 msgid "Cannot request another volume: no volume name given.\n"
 msgstr ""
 
-#: src/stored/askdir.c:606
+#: src/stored/askdir.c:607
 #, c-format
 msgid "Job %s canceled while waiting for mount on Storage Device %s.\n"
 msgstr ""
 
-#: src/stored/askdir.c:623
+#: src/stored/askdir.c:624
 #, c-format
 msgid ""
-"Please mount Volume \"%s\" or label a new one for:\n"
+"Please mount append Volume \"%s\" or label a new one for:\n"
 "    Job:          %s\n"
 "    Storage:      %s\n"
 "    Pool:         %s\n"
 "    Media type:   %s\n"
 msgstr ""
 
-#: src/stored/askdir.c:629
+#: src/stored/askdir.c:630
 #, c-format
 msgid ""
-"Please mount Volume \"%s\" for:\n"
+"Please mount read Volume \"%s\" for:\n"
 "    Job:          %s\n"
 "    Storage:      %s\n"
 "    Pool:         %s\n"
@@ -8241,11 +8296,11 @@ msgstr ""
 msgid "unknown: %d"
 msgstr ""
 
-#: src/stored/record.c:424
+#: src/stored/record.c:392
 msgid "Damaged buffer\n"
 msgstr ""
 
-#: src/stored/record.c:600
+#: src/stored/record.c:670
 #, c-format
 msgid "Sanity check failed. maxlen=%d datalen=%d. Block discarded.\n"
 msgstr ""
@@ -8279,128 +8334,122 @@ msgstr ""
 msgid "No Changer Command given for device %s. Cannot continue.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:84
-#, c-format
-msgid ""
-"Media Type not the same for all devices in changer %s. Cannot continue.\n"
-msgstr ""
-
-#: src/stored/autochanger.c:154
+#: src/stored/autochanger.c:139
 #, c-format
 msgid "No slot defined in catalog (slot=%d) for Volume \"%s\" on %s.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:156
+#: src/stored/autochanger.c:141
 msgid "Cartridge change or \"update slots\" may be required.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:162
+#: src/stored/autochanger.c:147
 #, c-format
 msgid "No \"Changer Device\" for %s. Manual load of Volume may be required.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:169
+#: src/stored/autochanger.c:154
 #, c-format
 msgid "No \"Changer Command\" for %s. Manual load of Volume may be requird.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:200
+#: src/stored/autochanger.c:185
 #, c-format
 msgid "3304 Issuing autochanger \"load slot %d, drive %d\" command.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:208
+#: src/stored/autochanger.c:193
 #, c-format
 msgid "3305 Autochanger \"load slot %d, drive %d\", status is OK.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:217
+#: src/stored/autochanger.c:206
 #, c-format
 msgid ""
 "3992 Bad autochanger \"load slot %d, drive %d\": ERR=%s.\n"
 "Results=%s\n"
 msgstr ""
 
-#: src/stored/autochanger.c:280
+#: src/stored/autochanger.c:268
 #, c-format
 msgid "3301 Issuing autochanger \"loaded? drive %d\" command.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:292
+#: src/stored/autochanger.c:280
 #, c-format
 msgid "3302 Autochanger \"loaded? drive %d\", result is Slot %d.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:299
+#: src/stored/autochanger.c:287
 #, c-format
 msgid "3302 Autochanger \"loaded? drive %d\", result: nothing loaded.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:311
+#: src/stored/autochanger.c:299
 #, c-format
 msgid ""
 "3991 Bad autochanger \"loaded? drive %d\" command: ERR=%s.\n"
 "Results=%s\n"
 msgstr ""
 
-#: src/stored/autochanger.c:328
+#: src/stored/autochanger.c:316
 #, fuzzy, c-format
 msgid "Lock failure on autochanger. ERR=%s\n"
 msgstr "Проігноровано помилку SQL. ERR=%s\n"
 
-#: src/stored/autochanger.c:342
+#: src/stored/autochanger.c:330
 #, c-format
 msgid "Unlock failure on autochanger. ERR=%s\n"
 msgstr ""
 
-#: src/stored/autochanger.c:386 src/stored/autochanger.c:508
+#: src/stored/autochanger.c:374 src/stored/autochanger.c:523
 #, c-format
 msgid "3307 Issuing autochanger \"unload slot %d, drive %d\" command.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:399
+#: src/stored/autochanger.c:387
 #, c-format
 msgid ""
 "3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s\n"
 "Results=%s\n"
 msgstr ""
 
-#: src/stored/autochanger.c:465
+#: src/stored/autochanger.c:473
 #, c-format
 msgid "Volume \"%s\" wanted on %s is in use by device %s\n"
 msgstr ""
 
-#: src/stored/autochanger.c:526
+#: src/stored/autochanger.c:541
 #, c-format
-msgid "3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
+msgid "3997 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:570
+#: src/stored/autochanger.c:585
 #, c-format
 msgid "3993 Device %s not an autochanger device.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:591
+#: src/stored/autochanger.c:612
 #, c-format
 msgid "3306 Issuing autochanger \"%s\" command.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:594
+#: src/stored/autochanger.c:615
 msgid "3996 Open bpipe failed.\n"
 msgstr ""
 
-#: src/stored/autochanger.c:621 src/console/console.c:1458
+#: src/stored/autochanger.c:642 src/console/console.c:1458
 #, c-format
 msgid "Autochanger error: ERR=%s\n"
 msgstr ""
 
 #: src/stored/stored.c:87
-#, c-format
+#, fuzzy, c-format
 msgid ""
 "\n"
 "Version: %s (%s)\n"
 "\n"
-"Usage: stored [options] [-c config_file] [config_file]\n"
+"Usage: bacula-sd [options] [-c config_file] [config_file]\n"
 "        -c <file>   use <file> as configuration file\n"
 "        -d <nn>     set debug level to <nn>\n"
 "        -dt         print timestamp in debug output\n"
@@ -8415,6 +8464,16 @@ msgid ""
 "        -?          print this message.\n"
 "\n"
 msgstr ""
+"\n"
+"Версія: %s (%s) %s %s %s\n"
+"\n"
+"Використання: bat [-s] [-c config_file] [-d debug_level] [config_file]\n"
+"       -c <file>   set configuration file to file\n"
+"       -dnn        set debug level to nn\n"
+"       -s          без сигналів\n"
+"       -t          перевірка - прочитати конфігурацію і вийти\n"
+"       -?          print this message.\n"
+"\n"
 
 #: src/stored/stored.c:136 src/stored/btape.c:178
 #, c-format
@@ -8483,17 +8542,17 @@ msgid ""
 "using \"TLS Verify Peer\".\n"
 msgstr ""
 
-#: src/stored/stored.c:511
+#: src/stored/stored.c:568
 #, c-format
 msgid "Could not initialize %s\n"
 msgstr ""
 
-#: src/stored/stored.c:525
+#: src/stored/stored.c:582
 #, c-format
 msgid "Could not open device %s\n"
 msgstr ""
 
-#: src/stored/stored.c:539
+#: src/stored/stored.c:596
 #, c-format
 msgid "Could not mount device %s\n"
 msgstr ""
@@ -8523,7 +8582,7 @@ msgstr ""
 msgid "Catastrophic error. Cannot write overflow block to device %s. ERR=%s"
 msgstr ""
 
-#: src/stored/device.c:327 src/stored/dev.c:499
+#: src/stored/device.c:327 src/stored/dev.c:512
 #, c-format
 msgid "Unable to open device %s: ERR=%s\n"
 msgstr ""
@@ -8571,32 +8630,32 @@ msgstr ""
 msgid "Attempt to open read on non-open session.\n"
 msgstr ""
 
-#: src/stored/mount.c:96
+#: src/stored/mount.c:98
 #, c-format
 msgid "Too many errors trying to mount device %s.\n"
 msgstr ""
 
-#: src/stored/mount.c:104
+#: src/stored/mount.c:106
 #, c-format
 msgid "Job %d canceled.\n"
 msgstr ""
 
-#: src/stored/mount.c:280
+#: src/stored/mount.c:282
 #, c-format
 msgid "Volume \"%s\" previously written, moving to end of data.\n"
 msgstr ""
 
-#: src/stored/mount.c:286
+#: src/stored/mount.c:288
 #, c-format
 msgid "Unable to position to end of data on device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/mount.c:408 src/stored/mount.c:730
+#: src/stored/mount.c:411 src/stored/mount.c:737
 #, c-format
 msgid "Volume \"%s\" not on device %s.\n"
 msgstr ""
 
-#: src/stored/mount.c:441
+#: src/stored/mount.c:444
 #, c-format
 msgid ""
 "Director wanted Volume \"%s\".\n"
@@ -8604,24 +8663,24 @@ msgid ""
 "    %s"
 msgstr ""
 
-#: src/stored/mount.c:596
+#: src/stored/mount.c:603
 #, c-format
 msgid "Ready to append to end of Volume \"%s\" part=%d size=%s\n"
 msgstr ""
 
-#: src/stored/mount.c:600
+#: src/stored/mount.c:607
 #, c-format
 msgid ""
 "Bacula cannot write on DVD Volume \"%s\" because: The sizes do not match! "
 "Volume=%s Catalog=%s\n"
 msgstr ""
 
-#: src/stored/mount.c:614
+#: src/stored/mount.c:621
 #, c-format
 msgid "Ready to append to end of Volume \"%s\" at file=%d.\n"
 msgstr ""
 
-#: src/stored/mount.c:617
+#: src/stored/mount.c:624
 #, c-format
 msgid ""
 "For Volume \"%s\":\n"
@@ -8629,23 +8688,23 @@ msgid ""
 "Correcting Catalog\n"
 msgstr ""
 
-#: src/stored/mount.c:624 src/stored/mount.c:652
+#: src/stored/mount.c:631 src/stored/mount.c:659
 msgid "Error updating Catalog\n"
 msgstr ""
 
-#: src/stored/mount.c:629
+#: src/stored/mount.c:636
 #, c-format
 msgid ""
 "Bacula cannot write on tape Volume \"%s\" because:\n"
 "The number of files mismatch! Volume=%u Catalog=%u\n"
 msgstr ""
 
-#: src/stored/mount.c:640
+#: src/stored/mount.c:647
 #, c-format
 msgid "Ready to append to end of Volume \"%s\" size=%s\n"
 msgstr ""
 
-#: src/stored/mount.c:644
+#: src/stored/mount.c:651
 #, c-format
 msgid ""
 "For Volume \"%s\":\n"
@@ -8653,46 +8712,46 @@ msgid ""
 "Correcting Catalog\n"
 msgstr ""
 
-#: src/stored/mount.c:657
+#: src/stored/mount.c:664
 #, c-format
 msgid ""
 "Bacula cannot write on disk Volume \"%s\" because: The sizes do not match! "
 "Volume=%s Catalog=%s\n"
 msgstr ""
 
-#: src/stored/mount.c:720
+#: src/stored/mount.c:727
 #, c-format
 msgid "Labeled new Volume \"%s\" on device %s.\n"
 msgstr ""
 
-#: src/stored/mount.c:725
+#: src/stored/mount.c:732
 #, c-format
 msgid "Device %s not configured to autolabel Volumes.\n"
 msgstr ""
 
-#: src/stored/mount.c:744
+#: src/stored/mount.c:751
 #, c-format
 msgid "Marking Volume \"%s\" in Error in Catalog.\n"
 msgstr ""
 
-#: src/stored/mount.c:761
+#: src/stored/mount.c:768
 #, c-format
 msgid ""
 "Autochanger Volume \"%s\" not found in slot %d.\n"
 "    Setting InChanger to zero in catalog.\n"
 msgstr ""
 
-#: src/stored/mount.c:780
+#: src/stored/mount.c:787
 msgid "Hey!!!!! WroteVol non-zero !!!!!\n"
 msgstr ""
 
-#: src/stored/mount.c:827
+#: src/stored/mount.c:834
 #, c-format
 msgid ""
 "Invalid tape position on volume \"%s\" on device %s. Expected %d, got %d\n"
 msgstr ""
 
-#: src/stored/mount.c:864 src/stored/btape.c:3120
+#: src/stored/mount.c:875 src/stored/btape.c:3122
 #, c-format
 msgid "Cannot open Dev=%s, Vol=%s\n"
 msgstr ""
@@ -8778,7 +8837,7 @@ msgid ""
 "Despooling elapsed time = %02d:%02d:%02d, Transfer rate = %s Bytes/second\n"
 msgstr ""
 
-#: src/stored/spool.c:348 src/stored/spool.c:546 src/stored/spool.c:592
+#: src/stored/spool.c:348 src/stored/spool.c:549 src/stored/spool.c:595
 #, c-format
 msgid "Ftruncate spool file failed: ERR=%s\n"
 msgstr ""
@@ -8808,77 +8867,86 @@ msgstr ""
 msgid "Spool data read error. Wanted %u bytes, got %d\n"
 msgstr ""
 
-#: src/stored/spool.c:487
-msgid "User specified spool size reached.\n"
+#: src/stored/spool.c:480
+#, c-format
+msgid ""
+"User specified Job spool size reached: JobSpoolSize=%s MaxJobSpoolSize=%s\n"
+msgstr ""
+
+#: src/stored/spool.c:485
+#, c-format
+msgid ""
+"User specified Device spool size reached: DevSpoolSize=%s MaxDevSpoolSize="
+"%s\n"
 msgstr ""
 
-#: src/stored/spool.c:489
+#: src/stored/spool.c:492
 msgid "Bad return from despool in write_block.\n"
 msgstr ""
 
-#: src/stored/spool.c:497
+#: src/stored/spool.c:500
 msgid "Spooling data again ...\n"
 msgstr ""
 
-#: src/stored/spool.c:529
+#: src/stored/spool.c:532
 #, c-format
 msgid "Error writing header to spool file. ERR=%s\n"
 msgstr ""
 
-#: src/stored/spool.c:534
+#: src/stored/spool.c:537
 #, c-format
 msgid ""
 "Error writing header to spool file. Disk probably full. Attempting recovery. "
 "Wanted to write=%d got=%d\n"
 msgstr ""
 
-#: src/stored/spool.c:552 src/stored/spool.c:598
+#: src/stored/spool.c:555 src/stored/spool.c:601
 msgid "Fatal despooling error."
 msgstr ""
 
-#: src/stored/spool.c:560
+#: src/stored/spool.c:563
 msgid "Retrying after header spooling error failed.\n"
 msgstr ""
 
-#: src/stored/spool.c:576
+#: src/stored/spool.c:579
 #, c-format
 msgid "Error writing data to spool file. ERR=%s\n"
 msgstr ""
 
-#: src/stored/spool.c:609
+#: src/stored/spool.c:612
 msgid "Retrying after data spooling error failed.\n"
 msgstr ""
 
-#: src/stored/spool.c:679
+#: src/stored/spool.c:682
 msgid "Network error on BlastAttributes.\n"
 msgstr ""
 
-#: src/stored/spool.c:703 src/stored/spool.c:727
+#: src/stored/spool.c:706 src/stored/spool.c:730
 #, c-format
 msgid "Fseek on attributes file failed: ERR=%s\n"
 msgstr ""
 
-#: src/stored/spool.c:715
+#: src/stored/spool.c:718
 #, fuzzy, c-format
 msgid "Truncate on attributes file failed: ERR=%s\n"
 msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/stored/spool.c:739
+#: src/stored/spool.c:742
 #, c-format
 msgid "Sending spooled attrs to the Director. Despooling %s bytes ...\n"
 msgstr ""
 
-#: src/stored/spool.c:765
+#: src/stored/spool.c:768
 #, c-format
 msgid "fopen attr spool file %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/stored/lock.c:235
+#: src/stored/lock.c:405
 #, c-format
 msgid "pthread_cond_wait failure. ERR=%s\n"
 msgstr ""
 
-#: src/stored/lock.c:335
+#: src/stored/lock.c:504
 msgid "unknown blocked code"
 msgstr ""
 
@@ -8947,252 +9015,267 @@ msgid ""
 "Attempt to define second \"%s\" resource named \"%s\" is not permitted.\n"
 msgstr ""
 
-#: src/stored/dev.c:119
+#: src/stored/dev.c:127
 #, c-format
 msgid "Unable to stat device %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:137
+#: src/stored/dev.c:145
 #, c-format
 msgid ""
 "%s is an unknown device type. Must be tape or directory\n"
 " or have RequiresMount=yes for DVD. st_mode=%x\n"
 msgstr ""
 
-#: src/stored/dev.c:147
+#: src/stored/dev.c:155
 msgid "DVD support is now deprecated\n"
 msgstr ""
 
-#: src/stored/dev.c:224
+#: src/stored/dev.c:231
 #, c-format
 msgid "Unable to stat mount point %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:229
+#: src/stored/dev.c:236
 msgid ""
 "Mount and unmount commands must defined for a device which requires mount.\n"
 msgstr ""
 
-#: src/stored/dev.c:240
+#: src/stored/dev.c:247
 #, c-format
 msgid "Min block size > max on device %s\n"
 msgstr ""
 
-#: src/stored/dev.c:244
+#: src/stored/dev.c:251
 #, c-format
 msgid "Block size %u on device %s is too large, using default %u\n"
 msgstr ""
 
-#: src/stored/dev.c:249
+#: src/stored/dev.c:256
 #, c-format
 msgid "Max block size %u not multiple of device %s block size=%d.\n"
 msgstr ""
 
-#: src/stored/dev.c:253
+#: src/stored/dev.c:260
 #, c-format
 msgid "Max Vol Size < 8 * Max Block Size for device %s\n"
 msgstr ""
 
-#: src/stored/dev.c:269 src/stored/dev.c:275
+#: src/stored/dev.c:276 src/stored/dev.c:282
 #, c-format
 msgid "Unable to init cond variable: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:403
+#: src/stored/dev.c:288
+#, fuzzy, c-format
+msgid "Unable to init spool mutex: ERR=%s\n"
+msgstr "Не можливо встановити власника файлу %s: ERR=%s\n"
+
+#: src/stored/dev.c:294
+#, fuzzy, c-format
+msgid "Unable to init acquire mutex: ERR=%s\n"
+msgstr "Не можливо встановити власника файлу %s: ERR=%s\n"
+
+#: src/stored/dev.c:300
+#, fuzzy, c-format
+msgid "Unable to init read acquire mutex: ERR=%s\n"
+msgstr "Не можливо встановити власника файлу %s: ERR=%s\n"
+
+#: src/stored/dev.c:416
 msgid "Illegal mode given to open dev.\n"
 msgstr ""
 
-#: src/stored/dev.c:538
+#: src/stored/dev.c:551
 #, c-format
 msgid "Could not open file device %s. No Volume name given.\n"
 msgstr ""
 
-#: src/stored/dev.c:561
+#: src/stored/dev.c:574
 #, c-format
 msgid "Could not open: %s, ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:626
+#: src/stored/dev.c:639
 #, c-format
 msgid "No tape loaded or drive offline on %s.\n"
 msgstr ""
 
-#: src/stored/dev.c:636
+#: src/stored/dev.c:649
 #, c-format
 msgid "Rewind error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:646 src/stored/dev.c:724 src/stored/dev.c:865
-#: src/stored/dev.c:1454
+#: src/stored/dev.c:659 src/stored/dev.c:737 src/stored/dev.c:878
+#: src/stored/dev.c:1469
 #, c-format
 msgid "lseek error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:695
+#: src/stored/dev.c:708
 #, c-format
 msgid "Bad call to eod. Device %s not open\n"
 msgstr ""
 
-#: src/stored/dev.c:762
+#: src/stored/dev.c:775
 #, c-format
 msgid "ioctl MTEOM error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:772 src/stored/dev.c:906
+#: src/stored/dev.c:785 src/stored/dev.c:919
 #, c-format
 msgid "ioctl MTIOCGET error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:852
+#: src/stored/dev.c:865
 msgid "Bad device call. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:864
+#: src/stored/dev.c:877
 #, c-format
 msgid "Seek error: ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:901
+#: src/stored/dev.c:914
 msgid " Bacula status:"
 msgstr ""
 
-#: src/stored/dev.c:902 src/stored/dev.c:985 src/stored/dev.c:987
+#: src/stored/dev.c:915 src/stored/dev.c:998 src/stored/dev.c:1000
 #, c-format
 msgid " file=%d block=%d\n"
 msgstr ""
 
-#: src/stored/dev.c:910
+#: src/stored/dev.c:923
 msgid " Device status:"
 msgstr ""
 
-#: src/stored/dev.c:1009
+#: src/stored/dev.c:1022
 msgid "Bad call to load_dev. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1020 src/stored/dev.c:1033
+#: src/stored/dev.c:1033 src/stored/dev.c:1046
 #, c-format
 msgid "ioctl MTLOAD error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1064
+#: src/stored/dev.c:1077
 #, c-format
 msgid "ioctl MTOFFL error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1105
+#: src/stored/dev.c:1118
 msgid "Bad call to fsf. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1116 src/stored/dev.c:1243
+#: src/stored/dev.c:1129 src/stored/dev.c:1256
 #, c-format
 msgid "Device %s at End of Tape.\n"
 msgstr ""
 
-#: src/stored/dev.c:1147 src/stored/dev.c:1223
+#: src/stored/dev.c:1160 src/stored/dev.c:1236
 #, c-format
 msgid "ioctl MTFSF error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1194 src/stored/btape.c:1975
+#: src/stored/dev.c:1207 src/stored/btape.c:1977
 #, c-format
 msgid "read error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1272
+#: src/stored/dev.c:1285
 msgid "Bad call to bsf. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1278
+#: src/stored/dev.c:1291
 #, c-format
 msgid "Device %s cannot BSF because it is not a tape.\n"
 msgstr ""
 
-#: src/stored/dev.c:1295
+#: src/stored/dev.c:1308
 #, c-format
 msgid "ioctl MTBSF error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1314
+#: src/stored/dev.c:1327
 msgid "Bad call to fsr. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1324
+#: src/stored/dev.c:1337
 #, c-format
 msgid "ioctl MTFSR not permitted on %s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1352
+#: src/stored/dev.c:1365
 #, c-format
 msgid "ioctl MTFSR %d error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1370
+#: src/stored/dev.c:1383
 msgid "Bad call to bsr_dev. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1380
+#: src/stored/dev.c:1393
 #, c-format
 msgid "ioctl MTBSR not permitted on %s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1394
+#: src/stored/dev.c:1407
 #, c-format
 msgid "ioctl MTBSR error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1443
+#: src/stored/dev.c:1458
 msgid "Bad call to reposition. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1522
+#: src/stored/dev.c:1537
 msgid "Bad call to weof_dev. Device not open\n"
 msgstr ""
 
-#: src/stored/dev.c:1532
+#: src/stored/dev.c:1547
 msgid "Attempt to WEOF on non-appendable Volume\n"
 msgstr ""
 
-#: src/stored/dev.c:1550
+#: src/stored/dev.c:1565
 #, c-format
 msgid "ioctl MTWEOF error on %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1649
+#: src/stored/dev.c:1664
 #, c-format
 msgid "unknown func code %d"
 msgstr ""
 
-#: src/stored/dev.c:1655
+#: src/stored/dev.c:1670
 #, c-format
 msgid "I/O function \"%s\" not supported on this device.\n"
 msgstr ""
 
-#: src/stored/dev.c:1824
+#: src/stored/dev.c:1844
 #, c-format
 msgid "Unable to truncate device %s. ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:1841
+#: src/stored/dev.c:1861
 #, c-format
 msgid "Unable to stat device %s. ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:1855
+#: src/stored/dev.c:1875
 #, c-format
 msgid "Device %s doesn't support ftruncate(). Recreating file %s.\n"
 msgstr ""
 
-#: src/stored/dev.c:1867
+#: src/stored/dev.c:1887
 #, c-format
 msgid "Could not reopen: %s, ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:1989 src/stored/dev.c:2060
+#: src/stored/dev.c:2010 src/stored/dev.c:2081
 #, c-format
 msgid "Device %s cannot be %smounted. ERR=%s\n"
 msgstr ""
 
-#: src/stored/dev.c:2456
+#: src/stored/dev.c:2481
 #, c-format
 msgid "Unable to set eotmodel on device %s: ERR=%s\n"
 msgstr ""
@@ -9346,7 +9429,7 @@ msgstr ""
 msgid "SOS_LABEL: PoolId mismatch for JobId=%u. DB=%d Vol=%d\n"
 msgstr ""
 
-#: src/stored/bscan.c:601 src/stored/bscan.c:1157
+#: src/stored/bscan.c:601 src/stored/bscan.c:1161
 #, c-format
 msgid "Could not find SessId=%d SessTime=%d for EOS record.\n"
 msgstr ""
@@ -9404,107 +9487,107 @@ msgstr ""
 msgid "Got Prog Data Stream record.\n"
 msgstr ""
 
-#: src/stored/bscan.c:858
+#: src/stored/bscan.c:862
 #, c-format
 msgid "Unknown stream type!!! stream=%d len=%i\n"
 msgstr ""
 
-#: src/stored/bscan.c:926
+#: src/stored/bscan.c:930
 #, c-format
 msgid "Could not create File Attributes record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:932
+#: src/stored/bscan.c:936
 #, c-format
 msgid "Created File record: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:977
+#: src/stored/bscan.c:981
 #, c-format
 msgid "Could not create media record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:981 src/stored/bscan.c:1002
+#: src/stored/bscan.c:985 src/stored/bscan.c:1006
 #, c-format
 msgid "Could not update media record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:985
+#: src/stored/bscan.c:989
 #, c-format
 msgid "Created Media record for Volume: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1006
+#: src/stored/bscan.c:1010
 #, c-format
 msgid "Updated Media record at end of Volume: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1023
+#: src/stored/bscan.c:1027
 #, c-format
 msgid "Could not create pool record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1027
+#: src/stored/bscan.c:1031
 #, c-format
 msgid "Created Pool record for Pool: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1046
+#: src/stored/bscan.c:1050
 #, c-format
 msgid "Could not get Client record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1056
+#: src/stored/bscan.c:1060
 #, c-format
 msgid "Created Client record for Client: %s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1073
+#: src/stored/bscan.c:1077
 #, c-format
 msgid "Fileset \"%s\" already exists.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1077
+#: src/stored/bscan.c:1081
 #, c-format
 msgid "Could not create FileSet record \"%s\". ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1082
+#: src/stored/bscan.c:1086
 #, c-format
 msgid "Created FileSet record \"%s\"\n"
 msgstr ""
 
-#: src/stored/bscan.c:1129
+#: src/stored/bscan.c:1133
 #, c-format
 msgid "Could not create JobId record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1135
+#: src/stored/bscan.c:1139
 #, c-format
 msgid "Could not update job start record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1138
+#: src/stored/bscan.c:1142
 #, c-format
 msgid "Created new JobId=%u record for original JobId=%u\n"
 msgstr ""
 
-#: src/stored/bscan.c:1191
+#: src/stored/bscan.c:1195
 #, c-format
 msgid "Could not update JobId=%u record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1196
+#: src/stored/bscan.c:1200
 #, c-format
 msgid "Updated Job termination record for JobId=%u Level=%s TermStat=%c\n"
 msgstr ""
 
-#: src/stored/bscan.c:1221
+#: src/stored/bscan.c:1225
 #, c-format
 msgid "Job Termination code: %d"
 msgstr ""
 
-#: src/stored/bscan.c:1226
+#: src/stored/bscan.c:1230
 #, c-format
 msgid ""
 "%s\n"
@@ -9524,45 +9607,45 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/bscan.c:1284
+#: src/stored/bscan.c:1288
 #, c-format
 msgid "Could not create JobMedia record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1288
+#: src/stored/bscan.c:1292
 #, c-format
 msgid "Created JobMedia record JobId %d, MediaId %d\n"
 msgstr ""
 
-#: src/stored/bscan.c:1304
+#: src/stored/bscan.c:1308
 #, c-format
 msgid "Could not find SessId=%d SessTime=%d for MD5/SHA1 record.\n"
 msgstr ""
 
-#: src/stored/bscan.c:1318
+#: src/stored/bscan.c:1322
 #, c-format
 msgid "Could not add MD5/SHA1 to File record. ERR=%s\n"
 msgstr ""
 
-#: src/stored/bscan.c:1323
+#: src/stored/bscan.c:1327
 msgid "Updated MD5/SHA1 record\n"
 msgstr ""
 
-#: src/stored/job.c:231
+#: src/stored/job.c:234
 #, c-format
 msgid "FD connect failed: Job name not found: %s\n"
 msgstr ""
 
-#: src/stored/job.c:241
+#: src/stored/job.c:244
 #, c-format
 msgid "Hey!!!! JobId %u Job %s already authenticated.\n"
 msgstr ""
 
-#: src/stored/job.c:258
+#: src/stored/job.c:261
 msgid "Unable to authenticate File daemon\n"
 msgstr ""
 
-#: src/stored/job.c:387
+#: src/stored/job.c:390
 msgid "In free_jcr(), but still attached to device!!!!\n"
 msgstr ""
 
@@ -9680,18 +9763,18 @@ msgstr ""
 msgid "Loaded %s\n"
 msgstr ""
 
-#: src/stored/btape.c:576 src/stored/btape.c:1137 src/stored/btape.c:1210
-#: src/stored/btape.c:1290 src/stored/btape.c:1561
+#: src/stored/btape.c:576 src/stored/btape.c:1139 src/stored/btape.c:1212
+#: src/stored/btape.c:1292 src/stored/btape.c:1563
 #, c-format
 msgid "Bad status from rewind. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:579 src/stored/btape.c:1569
+#: src/stored/btape.c:579 src/stored/btape.c:1571
 #, c-format
 msgid "Rewound %s\n"
 msgstr ""
 
-#: src/stored/btape.c:605 src/stored/btape.c:1573
+#: src/stored/btape.c:605 src/stored/btape.c:1575
 #, c-format
 msgid "Bad status from weof. ERR=%s\n"
 msgstr ""
@@ -9753,20 +9836,20 @@ msgstr ""
 msgid "Do you want to continue? (y/n): "
 msgstr ""
 
-#: src/stored/btape.c:748 src/stored/btape.c:2198
+#: src/stored/btape.c:748 src/stored/btape.c:2200
 msgid "Command aborted.\n"
 msgstr ""
 
-#: src/stored/btape.c:764
+#: src/stored/btape.c:765
 #, c-format
 msgid "Block %d i=%d\n"
 msgstr ""
 
-#: src/stored/btape.c:790
+#: src/stored/btape.c:792
 msgid "Skipping read backwards test because BSR turned off.\n"
 msgstr ""
 
-#: src/stored/btape.c:794
+#: src/stored/btape.c:796
 msgid ""
 "\n"
 "=== Write, backup, and re-read test ===\n"
@@ -9780,73 +9863,73 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:807 src/stored/btape.c:818 src/stored/btape.c:829
-#: src/stored/btape.c:1147 src/stored/btape.c:1163 src/stored/btape.c:1905
-#: src/stored/btape.c:2821
+#: src/stored/btape.c:809 src/stored/btape.c:820 src/stored/btape.c:831
+#: src/stored/btape.c:1149 src/stored/btape.c:1165 src/stored/btape.c:1907
+#: src/stored/btape.c:2823
 msgid "Error writing record to block.\n"
 msgstr ""
 
-#: src/stored/btape.c:811 src/stored/btape.c:822 src/stored/btape.c:833
-#: src/stored/btape.c:1151 src/stored/btape.c:1167 src/stored/btape.c:1909
-#: src/stored/btape.c:2825
+#: src/stored/btape.c:813 src/stored/btape.c:824 src/stored/btape.c:835
+#: src/stored/btape.c:1153 src/stored/btape.c:1169 src/stored/btape.c:1911
+#: src/stored/btape.c:2827
 msgid "Error writing block to device.\n"
 msgstr ""
 
-#: src/stored/btape.c:814
+#: src/stored/btape.c:816
 #, c-format
 msgid "Wrote first record of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:825
+#: src/stored/btape.c:827
 #, c-format
 msgid "Wrote second record of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:836
+#: src/stored/btape.c:838
 #, c-format
 msgid "Wrote third record of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:843 src/stored/btape.c:848
+#: src/stored/btape.c:845 src/stored/btape.c:850
 #, c-format
 msgid "Backspace file failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:852
+#: src/stored/btape.c:854
 msgid "Backspaced over EOF OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:854
+#: src/stored/btape.c:856
 #, c-format
 msgid "Backspace record failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:857
+#: src/stored/btape.c:859
 msgid "Backspace record OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:860 src/stored/btape.c:866
+#: src/stored/btape.c:862 src/stored/btape.c:868
 #, c-format
 msgid "Read block failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:871
+#: src/stored/btape.c:873
 msgid "Bad data in record. Test failed!\n"
 msgstr ""
 
-#: src/stored/btape.c:875
+#: src/stored/btape.c:877
 msgid ""
 "\n"
 "Block re-read correct. Test succeeded!\n"
 msgstr ""
 
-#: src/stored/btape.c:876
+#: src/stored/btape.c:878
 msgid ""
 "=== End Write, backup, and re-read test ===\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:883
+#: src/stored/btape.c:885
 msgid ""
 "This is not terribly serious since Bacula only uses\n"
 "this function to verify the last block written to the\n"
@@ -9858,50 +9941,50 @@ msgid ""
 "to your Storage daemon's Device resource definition.\n"
 msgstr ""
 
-#: src/stored/btape.c:905
+#: src/stored/btape.c:907
 #, c-format
 msgid "Begin writing %i files of %sB with raw blocks of %u bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:926 src/stored/btape.c:2877
+#: src/stored/btape.c:928 src/stored/btape.c:2879
 #, c-format
 msgid "Write failed at block %u. stat=%d ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:960
+#: src/stored/btape.c:962
 #, c-format
 msgid "Begin writing %i files of %sB with blocks of %u bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:969
+#: src/stored/btape.c:971
 msgid ""
 "\n"
 "Error writing record to block.\n"
 msgstr ""
 
-#: src/stored/btape.c:973
+#: src/stored/btape.c:975
 msgid ""
 "\n"
 "Error writing block to device.\n"
 msgstr ""
 
-#: src/stored/btape.c:1028
+#: src/stored/btape.c:1030
 msgid "The file_size is too big, stop this test with Ctrl-c.\n"
 msgstr ""
 
-#: src/stored/btape.c:1056
+#: src/stored/btape.c:1058
 msgid "Test with zero data, should give the maximum throughput.\n"
 msgstr ""
 
-#: src/stored/btape.c:1068 src/stored/btape.c:1094
+#: src/stored/btape.c:1070 src/stored/btape.c:1096
 msgid "Test with random data, should give the minimum throughput.\n"
 msgstr ""
 
-#: src/stored/btape.c:1083
+#: src/stored/btape.c:1085
 msgid "Test with zero data and bacula block structure.\n"
 msgstr ""
 
-#: src/stored/btape.c:1123
+#: src/stored/btape.c:1125
 #, c-format
 msgid ""
 "\n"
@@ -9915,66 +9998,66 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1155 src/stored/btape.c:1171
+#: src/stored/btape.c:1157 src/stored/btape.c:1173
 #, c-format
 msgid "Wrote %d blocks of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:1213 src/stored/btape.c:1293
+#: src/stored/btape.c:1215 src/stored/btape.c:1295
 msgid "Rewind OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:1226 src/stored/btape.c:1345
+#: src/stored/btape.c:1228 src/stored/btape.c:1347
 msgid "Got EOF on tape.\n"
 msgstr ""
 
-#: src/stored/btape.c:1231
+#: src/stored/btape.c:1233
 #, c-format
 msgid "Read block %d failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1237
+#: src/stored/btape.c:1239
 #, c-format
 msgid "Read record failed. Block %d! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1243 src/stored/btape.c:1375
+#: src/stored/btape.c:1245 src/stored/btape.c:1377
 #, c-format
 msgid "Bad data in record. Expected %d, got %d at byte %d. Test failed!\n"
 msgstr ""
 
-#: src/stored/btape.c:1250
+#: src/stored/btape.c:1252
 #, c-format
 msgid "%d blocks re-read correctly.\n"
 msgstr ""
 
-#: src/stored/btape.c:1253 src/stored/btape.c:1382
+#: src/stored/btape.c:1255 src/stored/btape.c:1384
 msgid ""
 "=== Test Succeeded. End Write, rewind, and re-read test ===\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1281
+#: src/stored/btape.c:1283
 msgid "Block position test\n"
 msgstr ""
 
-#: src/stored/btape.c:1336
+#: src/stored/btape.c:1338
 #, c-format
 msgid "Reposition to file:block %d:%d\n"
 msgstr ""
 
-#: src/stored/btape.c:1338
+#: src/stored/btape.c:1340
 msgid "Reposition error.\n"
 msgstr ""
 
-#: src/stored/btape.c:1351
+#: src/stored/btape.c:1353
 #, c-format
 msgid ""
 "Read block %d failed! file=%d blk=%d. ERR=%s\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1353
+#: src/stored/btape.c:1355
 msgid ""
 "This may be because the tape drive block size is not\n"
 " set to variable blocking as normally used by Bacula.\n"
@@ -9988,17 +10071,17 @@ msgid ""
 " in your Device resource.\n"
 msgstr ""
 
-#: src/stored/btape.c:1369
+#: src/stored/btape.c:1371
 #, c-format
 msgid "Read record failed! ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1380
+#: src/stored/btape.c:1382
 #, c-format
 msgid "Block %d re-read correctly.\n"
 msgstr ""
 
-#: src/stored/btape.c:1401
+#: src/stored/btape.c:1403
 msgid ""
 "\n"
 "\n"
@@ -10012,58 +10095,58 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1425
+#: src/stored/btape.c:1427
 msgid "Now moving to end of medium.\n"
 msgstr ""
 
-#: src/stored/btape.c:1427 src/stored/btape.c:1656
+#: src/stored/btape.c:1429 src/stored/btape.c:1658
 #, c-format
 msgid "We should be in file 3. I am at file %d. %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1428 src/stored/btape.c:1446 src/stored/btape.c:1645
-#: src/stored/btape.c:1657 src/stored/btape.c:1670 src/stored/btape.c:1687
+#: src/stored/btape.c:1430 src/stored/btape.c:1448 src/stored/btape.c:1647
+#: src/stored/btape.c:1659 src/stored/btape.c:1672 src/stored/btape.c:1689
 msgid "This is correct!"
 msgstr ""
 
-#: src/stored/btape.c:1428 src/stored/btape.c:1446 src/stored/btape.c:1645
-#: src/stored/btape.c:1657 src/stored/btape.c:1670 src/stored/btape.c:1687
+#: src/stored/btape.c:1430 src/stored/btape.c:1448 src/stored/btape.c:1647
+#: src/stored/btape.c:1659 src/stored/btape.c:1672 src/stored/btape.c:1689
 msgid "This is NOT correct!!!!"
 msgstr ""
 
-#: src/stored/btape.c:1434
+#: src/stored/btape.c:1436
 msgid ""
 "\n"
 "Now the important part, I am going to attempt to append to the tape.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1441
+#: src/stored/btape.c:1443
 msgid ""
 "Done appending, there should be no I/O errors\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1442
+#: src/stored/btape.c:1444
 msgid "Doing Bacula scan of blocks:\n"
 msgstr ""
 
-#: src/stored/btape.c:1444
+#: src/stored/btape.c:1446
 msgid "End scanning the tape.\n"
 msgstr ""
 
-#: src/stored/btape.c:1445 src/stored/btape.c:1669
+#: src/stored/btape.c:1447 src/stored/btape.c:1671
 #, c-format
 msgid "We should be in file 4. I am at file %d. %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1470
+#: src/stored/btape.c:1472
 msgid ""
 "\n"
 "Autochanger enabled, but no name or no command device specified.\n"
 msgstr ""
 
-#: src/stored/btape.c:1474
+#: src/stored/btape.c:1476
 msgid ""
 "\n"
 "Ah, I see you have an autochanger configured.\n"
@@ -10071,13 +10154,13 @@ msgid ""
 " that I can write on in Slot 1.\n"
 msgstr ""
 
-#: src/stored/btape.c:1477
+#: src/stored/btape.c:1479
 msgid ""
 "\n"
 "Do you wish to continue with the Autochanger test? (y/n): "
 msgstr ""
 
-#: src/stored/btape.c:1484
+#: src/stored/btape.c:1486
 msgid ""
 "\n"
 "\n"
@@ -10085,74 +10168,74 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1493
+#: src/stored/btape.c:1495
 msgid "3301 Issuing autochanger \"loaded\" command.\n"
 msgstr ""
 
-#: src/stored/btape.c:1502
+#: src/stored/btape.c:1504
 #, c-format
 msgid "3991 Bad autochanger command: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1503
+#: src/stored/btape.c:1505
 #, c-format
 msgid "3991 result=\"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1507
+#: src/stored/btape.c:1509
 #, c-format
 msgid "Slot %d loaded. I am going to unload it.\n"
 msgstr ""
 
-#: src/stored/btape.c:1509
+#: src/stored/btape.c:1511
 msgid "Nothing loaded in the drive. OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:1516
+#: src/stored/btape.c:1518
 #, c-format
 msgid "3302 Issuing autochanger \"unload %d %d\" command.\n"
 msgstr ""
 
-#: src/stored/btape.c:1521
+#: src/stored/btape.c:1523
 #, c-format
 msgid "unload status=%s %d\n"
 msgstr ""
 
-#: src/stored/btape.c:1521
+#: src/stored/btape.c:1523
 msgid "Bad"
 msgstr ""
 
-#: src/stored/btape.c:1524
+#: src/stored/btape.c:1526
 #, c-format
 msgid "3992 Bad autochanger command: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1525
+#: src/stored/btape.c:1527
 #, c-format
 msgid "3992 result=\"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1535
+#: src/stored/btape.c:1537
 #, c-format
 msgid "3303 Issuing autochanger \"load %d %d\" command.\n"
 msgstr ""
 
-#: src/stored/btape.c:1543
+#: src/stored/btape.c:1545
 #, c-format
 msgid "3303 Autochanger \"load %d %d\" status is OK.\n"
 msgstr ""
 
-#: src/stored/btape.c:1547
+#: src/stored/btape.c:1549
 #, c-format
 msgid "3993 Bad autochanger command: %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1548
+#: src/stored/btape.c:1550
 #, c-format
 msgid "3993 result=\"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1563
+#: src/stored/btape.c:1565
 msgid ""
 "\n"
 "The test failed, probably because you need to put\n"
@@ -10160,12 +10243,12 @@ msgid ""
 "Adding a 30 second sleep and trying again ...\n"
 msgstr ""
 
-#: src/stored/btape.c:1576
+#: src/stored/btape.c:1578
 #, c-format
 msgid "Wrote EOF to %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1580
+#: src/stored/btape.c:1582
 #, c-format
 msgid ""
 "\n"
@@ -10177,18 +10260,18 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1585
+#: src/stored/btape.c:1587
 msgid ""
 "\n"
 "The test autochanger worked!!\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1596
+#: src/stored/btape.c:1598
 msgid "You must correct this error or the Autochanger will not work.\n"
 msgstr ""
 
-#: src/stored/btape.c:1614
+#: src/stored/btape.c:1616
 msgid ""
 "\n"
 "\n"
@@ -10200,30 +10283,30 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1639
+#: src/stored/btape.c:1641
 msgid "Now forward spacing 1 file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1641 src/stored/btape.c:1653 src/stored/btape.c:1666
-#: src/stored/btape.c:1684 src/stored/btape.c:1860
+#: src/stored/btape.c:1643 src/stored/btape.c:1655 src/stored/btape.c:1668
+#: src/stored/btape.c:1686 src/stored/btape.c:1862
 #, c-format
 msgid "Bad status from fsr. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1644
+#: src/stored/btape.c:1646
 #, c-format
 msgid "We should be in file 1. I am at file %d. %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1651
+#: src/stored/btape.c:1653
 msgid "Now forward spacing 2 files.\n"
 msgstr ""
 
-#: src/stored/btape.c:1664
+#: src/stored/btape.c:1666
 msgid "Now forward spacing 4 files.\n"
 msgstr ""
 
-#: src/stored/btape.c:1676
+#: src/stored/btape.c:1678
 msgid ""
 "The test worked this time. Please add:\n"
 "\n"
@@ -10232,35 +10315,35 @@ msgid ""
 "to your Device resource for this drive.\n"
 msgstr ""
 
-#: src/stored/btape.c:1682
+#: src/stored/btape.c:1684
 msgid "Now forward spacing 1 more file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1686
+#: src/stored/btape.c:1688
 #, c-format
 msgid "We should be in file 5. I am at file %d. %s\n"
 msgstr ""
 
-#: src/stored/btape.c:1691
+#: src/stored/btape.c:1693
 msgid ""
 "\n"
 "=== End Forward space files test ===\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1695
+#: src/stored/btape.c:1697
 msgid ""
 "\n"
 "The forward space file test failed.\n"
 msgstr ""
 
-#: src/stored/btape.c:1697
+#: src/stored/btape.c:1699
 msgid ""
 "You have Fast Forward Space File enabled.\n"
 "I am turning it off then retrying the test.\n"
 msgstr ""
 
-#: src/stored/btape.c:1703
+#: src/stored/btape.c:1705
 msgid ""
 "You must correct this error or Bacula will not work.\n"
 "Some systems, e.g. OpenBSD, require you to set\n"
@@ -10268,7 +10351,7 @@ msgid ""
 "in your device resource. Use with caution.\n"
 msgstr ""
 
-#: src/stored/btape.c:1737
+#: src/stored/btape.c:1739
 msgid ""
 "\n"
 "Append test failed. Attempting again.\n"
@@ -10278,7 +10361,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1745
+#: src/stored/btape.c:1747
 msgid ""
 "\n"
 "\n"
@@ -10290,14 +10373,14 @@ msgid ""
 "to your Device resource in the Storage conf file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1752
+#: src/stored/btape.c:1754
 msgid ""
 "\n"
 "\n"
 "That appears *NOT* to have corrected the problem.\n"
 msgstr ""
 
-#: src/stored/btape.c:1757
+#: src/stored/btape.c:1759
 msgid ""
 "\n"
 "\n"
@@ -10305,7 +10388,7 @@ msgid ""
 "Setting \"BSF at EOM = yes\" and retrying append test.\n"
 msgstr ""
 
-#: src/stored/btape.c:1762
+#: src/stored/btape.c:1764
 msgid ""
 "\n"
 "\n"
@@ -10318,7 +10401,7 @@ msgid ""
 "to your Device resource in the Storage conf file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1773
+#: src/stored/btape.c:1775
 msgid ""
 "\n"
 "Append test failed.\n"
@@ -10345,7 +10428,7 @@ msgid ""
 "in your device resource. Use with caution.\n"
 msgstr ""
 
-#: src/stored/btape.c:1795
+#: src/stored/btape.c:1797
 msgid ""
 "\n"
 "The above Bacula scan should have output identical to what follows.\n"
@@ -10369,111 +10452,111 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:1838
+#: src/stored/btape.c:1840
 #, c-format
 msgid "Bad status from fsf. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1842
+#: src/stored/btape.c:1844
 msgid "Forward spaced 1 file.\n"
 msgstr ""
 
-#: src/stored/btape.c:1845
+#: src/stored/btape.c:1847
 #, c-format
 msgid "Forward spaced %d files.\n"
 msgstr ""
 
-#: src/stored/btape.c:1864
+#: src/stored/btape.c:1866
 msgid "Forward spaced 1 record.\n"
 msgstr ""
 
-#: src/stored/btape.c:1867
+#: src/stored/btape.c:1869
 #, c-format
 msgid "Forward spaced %d records.\n"
 msgstr ""
 
-#: src/stored/btape.c:1912
+#: src/stored/btape.c:1914
 #, c-format
 msgid "Wrote one record of %d bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:1914
+#: src/stored/btape.c:1916
 msgid "Wrote block to device.\n"
 msgstr ""
 
-#: src/stored/btape.c:1928
+#: src/stored/btape.c:1930
 msgid "Enter length to read: "
 msgstr ""
 
-#: src/stored/btape.c:1933
+#: src/stored/btape.c:1935
 msgid "Bad length entered, using default of 1024 bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:1942
+#: src/stored/btape.c:1944
 #, c-format
 msgid "Read of %d bytes gives stat=%d. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1965 src/stored/btape.c:2014
+#: src/stored/btape.c:1967 src/stored/btape.c:2016
 #, c-format
 msgid "End of tape\n"
 msgstr ""
 
-#: src/stored/btape.c:1970
+#: src/stored/btape.c:1972
 #, c-format
 msgid "Starting scan at file %u\n"
 msgstr ""
 
-#: src/stored/btape.c:1977
+#: src/stored/btape.c:1979
 #, c-format
 msgid "Bad status from read %d. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:1980 src/stored/btape.c:1994 src/stored/btape.c:2058
-#: src/stored/btape.c:2070 src/stored/btape.c:2083 src/stored/btape.c:2099
+#: src/stored/btape.c:1982 src/stored/btape.c:1996 src/stored/btape.c:2060
+#: src/stored/btape.c:2072 src/stored/btape.c:2085 src/stored/btape.c:2101
 #, c-format
 msgid "1 block of %d bytes in file %d\n"
 msgstr ""
 
-#: src/stored/btape.c:1983 src/stored/btape.c:1997 src/stored/btape.c:2061
-#: src/stored/btape.c:2073 src/stored/btape.c:2086 src/stored/btape.c:2102
+#: src/stored/btape.c:1985 src/stored/btape.c:1999 src/stored/btape.c:2063
+#: src/stored/btape.c:2075 src/stored/btape.c:2088 src/stored/btape.c:2104
 #, c-format
 msgid "%d blocks of %d bytes in file %d\n"
 msgstr ""
 
-#: src/stored/btape.c:2005 src/stored/btape.c:2077
+#: src/stored/btape.c:2007 src/stored/btape.c:2079
 #, c-format
 msgid "End of File mark.\n"
 msgstr ""
 
-#: src/stored/btape.c:2026 src/stored/btape.c:2130
+#: src/stored/btape.c:2028 src/stored/btape.c:2132
 #, c-format
 msgid "Total files=%d, blocks=%d, bytes = %s\n"
 msgstr ""
 
-#: src/stored/btape.c:2090
+#: src/stored/btape.c:2092
 #, c-format
 msgid "Short block read.\n"
 msgstr ""
 
-#: src/stored/btape.c:2093
+#: src/stored/btape.c:2095
 #, c-format
 msgid "Error reading block. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2117
+#: src/stored/btape.c:2119
 #, c-format
 msgid ""
 "Block=%u file,blk=%u,%u blen=%u First rec FI=%s SessId=%u SessTim=%u Strm=%s "
 "rlen=%d\n"
 msgstr ""
 
-#: src/stored/btape.c:2139
+#: src/stored/btape.c:2141
 #, c-format
 msgid "Device status: %u. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2171
+#: src/stored/btape.c:2173
 #, c-format
 msgid ""
 "\n"
@@ -10499,80 +10582,80 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2189
+#: src/stored/btape.c:2191
 msgid ""
 "Do you want to run the simplified test (s) with one tape\n"
 "or the complete multiple tape (m) test: (s/m) "
 msgstr ""
 
-#: src/stored/btape.c:2192
+#: src/stored/btape.c:2194
 msgid "Simple test (single tape) selected.\n"
 msgstr ""
 
-#: src/stored/btape.c:2195
+#: src/stored/btape.c:2197
 msgid "Multiple tape test selected.\n"
 msgstr ""
 
-#: src/stored/btape.c:2237
+#: src/stored/btape.c:2239
 msgid "Wrote Start of Session label.\n"
 msgstr ""
 
-#: src/stored/btape.c:2256
+#: src/stored/btape.c:2258
 #, c-format
 msgid "%s Begin writing Bacula records to tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2258
+#: src/stored/btape.c:2260
 #, c-format
 msgid "%s Begin writing Bacula records to first tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2284
+#: src/stored/btape.c:2286
 msgid "Flush block failed.\n"
 msgstr ""
 
-#: src/stored/btape.c:2298
+#: src/stored/btape.c:2300
 #, c-format
 msgid "Wrote block=%u, file,blk=%u,%u VolBytes=%s rate=%sB/s\n"
 msgstr ""
 
-#: src/stored/btape.c:2309
+#: src/stored/btape.c:2311
 #, c-format
 msgid "%s Flush block, write EOF\n"
 msgstr ""
 
-#: src/stored/btape.c:2318
+#: src/stored/btape.c:2320
 msgid "Wrote 1000 blocks on second tape. Done.\n"
 msgstr ""
 
-#: src/stored/btape.c:2323
+#: src/stored/btape.c:2325
 msgid "Not OK\n"
 msgstr ""
 
-#: src/stored/btape.c:2347
+#: src/stored/btape.c:2349
 #, fuzzy
 msgid "Job canceled.\n"
 msgstr "Статус задачі: Відмінена"
 
-#: src/stored/btape.c:2358
+#: src/stored/btape.c:2360
 msgid "Set ok=false after write_block_to_device.\n"
 msgstr ""
 
-#: src/stored/btape.c:2362
+#: src/stored/btape.c:2364
 msgid "Wrote End of Session label.\n"
 msgstr ""
 
-#: src/stored/btape.c:2386
+#: src/stored/btape.c:2388
 #, c-format
 msgid "Wrote state file last_block_num1=%d last_block_num2=%d\n"
 msgstr ""
 
-#: src/stored/btape.c:2390
+#: src/stored/btape.c:2392
 #, c-format
 msgid "Could not create state file: %s ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2401
+#: src/stored/btape.c:2403
 #, c-format
 msgid ""
 "\n"
@@ -10580,7 +10663,7 @@ msgid ""
 "%s Done filling tape at %d:%d. Now beginning re-read of tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2404
+#: src/stored/btape.c:2406
 #, c-format
 msgid ""
 "\n"
@@ -10588,24 +10671,24 @@ msgid ""
 "%s Done filling tapes at %d:%d. Now beginning re-read of first tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2410
+#: src/stored/btape.c:2412
 #, fuzzy
 msgid "do_unfill failed.\n"
 msgstr "Помилка команди"
 
-#: src/stored/btape.c:2415
+#: src/stored/btape.c:2417
 #, c-format
 msgid "%s: Error during test.\n"
 msgstr ""
 
-#: src/stored/btape.c:2450
+#: src/stored/btape.c:2452
 msgid ""
 "\n"
 "The state file level has changed. You must redo\n"
 "the fill command.\n"
 msgstr ""
 
-#: src/stored/btape.c:2457
+#: src/stored/btape.c:2459
 #, c-format
 msgid ""
 "\n"
@@ -10613,95 +10696,95 @@ msgid ""
 "You must redo the fill command.\n"
 msgstr ""
 
-#: src/stored/btape.c:2523
+#: src/stored/btape.c:2525
 msgid "Mount first tape. Press enter when ready: "
 msgstr ""
 
-#: src/stored/btape.c:2539
+#: src/stored/btape.c:2541
 msgid "Rewinding.\n"
 msgstr ""
 
-#: src/stored/btape.c:2544
+#: src/stored/btape.c:2546
 #, c-format
 msgid "Reading the first 10000 records from %u:%u.\n"
 msgstr ""
 
-#: src/stored/btape.c:2548 src/stored/btape.c:2616
+#: src/stored/btape.c:2550 src/stored/btape.c:2618
 #, c-format
 msgid "Reposition from %u:%u to %u:%u\n"
 msgstr ""
 
-#: src/stored/btape.c:2551 src/stored/btape.c:2603 src/stored/btape.c:2619
+#: src/stored/btape.c:2553 src/stored/btape.c:2605 src/stored/btape.c:2621
 #, c-format
 msgid "Reposition error. ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2554
+#: src/stored/btape.c:2556
 #, c-format
 msgid "Reading block %u.\n"
 msgstr ""
 
-#: src/stored/btape.c:2556 src/stored/btape.c:2608 src/stored/btape.c:2624
+#: src/stored/btape.c:2558 src/stored/btape.c:2610 src/stored/btape.c:2626
 #, c-format
 msgid "Error reading block: ERR=%s\n"
 msgstr ""
 
-#: src/stored/btape.c:2561
+#: src/stored/btape.c:2563
 msgid ""
 "\n"
 "The last block on the tape matches. Test succeeded.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2564
+#: src/stored/btape.c:2566
 msgid ""
 "\n"
 "The last block of the first tape matches.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2588
+#: src/stored/btape.c:2590
 msgid "Mount second tape. Press enter when ready: "
 msgstr ""
 
-#: src/stored/btape.c:2601
+#: src/stored/btape.c:2603
 #, c-format
 msgid "Reposition from %u:%u to 0:1\n"
 msgstr ""
 
-#: src/stored/btape.c:2606 src/stored/btape.c:2622
+#: src/stored/btape.c:2608 src/stored/btape.c:2624
 #, c-format
 msgid "Reading block %d.\n"
 msgstr ""
 
-#: src/stored/btape.c:2612
+#: src/stored/btape.c:2614
 msgid ""
 "\n"
 "The first block on the second tape matches.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2628
+#: src/stored/btape.c:2630
 msgid ""
 "\n"
 "The last block on the second tape matches. Test succeeded.\n"
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:2645
+#: src/stored/btape.c:2647
 #, c-format
 msgid "10000 records read now at %d:%d\n"
 msgstr ""
 
-#: src/stored/btape.c:2671 src/stored/btape.c:2682 src/stored/btape.c:2727
+#: src/stored/btape.c:2673 src/stored/btape.c:2684 src/stored/btape.c:2729
 msgid "Last block written"
 msgstr ""
 
-#: src/stored/btape.c:2673 src/stored/btape.c:2683
+#: src/stored/btape.c:2675 src/stored/btape.c:2685
 msgid "Block read back"
 msgstr ""
 
-#: src/stored/btape.c:2674
+#: src/stored/btape.c:2676
 #, c-format
 msgid ""
 "\n"
@@ -10709,7 +10792,7 @@ msgid ""
 "The blocks differ at byte %u\n"
 msgstr ""
 
-#: src/stored/btape.c:2675
+#: src/stored/btape.c:2677
 msgid ""
 "\n"
 "\n"
@@ -10719,172 +10802,172 @@ msgid ""
 "to write multi-tape Volumes.!!!!\n"
 msgstr ""
 
-#: src/stored/btape.c:2711
+#: src/stored/btape.c:2713
 #, c-format
 msgid "Last block at: %u:%u this_dev_block_num=%d\n"
 msgstr ""
 
-#: src/stored/btape.c:2725
+#: src/stored/btape.c:2727
 #, c-format
 msgid "Block not written: FileIndex=%u blk_block=%u Size=%u\n"
 msgstr ""
 
-#: src/stored/btape.c:2729
+#: src/stored/btape.c:2731
 msgid "Block not written"
 msgstr ""
 
-#: src/stored/btape.c:2744
+#: src/stored/btape.c:2746
 #, c-format
 msgid "End of tape %d:%d. Volume Bytes=%s. Write rate = %sB/s\n"
 msgstr ""
 
-#: src/stored/btape.c:2795
+#: src/stored/btape.c:2797
 msgid "Test writing blocks of 64512 bytes to tape.\n"
 msgstr ""
 
-#: src/stored/btape.c:2797
+#: src/stored/btape.c:2799
 msgid "How many blocks do you want to write? (1000): "
 msgstr ""
 
-#: src/stored/btape.c:2814
+#: src/stored/btape.c:2816
 #, c-format
 msgid "Begin writing %d Bacula blocks to tape ...\n"
 msgstr ""
 
-#: src/stored/btape.c:2857
+#: src/stored/btape.c:2859
 #, c-format
 msgid "Begin writing raw blocks of %u bytes.\n"
 msgstr ""
 
-#: src/stored/btape.c:2888
+#: src/stored/btape.c:2890
 msgid "test autochanger"
 msgstr ""
 
-#: src/stored/btape.c:2889
+#: src/stored/btape.c:2891
 msgid "backspace file"
 msgstr ""
 
-#: src/stored/btape.c:2890
+#: src/stored/btape.c:2892
 msgid "backspace record"
 msgstr ""
 
-#: src/stored/btape.c:2891
+#: src/stored/btape.c:2893
 msgid "list device capabilities"
 msgstr ""
 
-#: src/stored/btape.c:2892
+#: src/stored/btape.c:2894
 msgid "clear tape errors"
 msgstr ""
 
-#: src/stored/btape.c:2893
+#: src/stored/btape.c:2895
 msgid "go to end of Bacula data for append"
 msgstr ""
 
-#: src/stored/btape.c:2894
+#: src/stored/btape.c:2896
 msgid "go to the physical end of medium"
 msgstr ""
 
-#: src/stored/btape.c:2895
+#: src/stored/btape.c:2897
 msgid "fill tape, write onto second volume"
 msgstr ""
 
-#: src/stored/btape.c:2896
+#: src/stored/btape.c:2898
 msgid "read filled tape"
 msgstr ""
 
-#: src/stored/btape.c:2897
+#: src/stored/btape.c:2899
 msgid "forward space a file"
 msgstr ""
 
-#: src/stored/btape.c:2898
+#: src/stored/btape.c:2900
 msgid "forward space a record"
 msgstr ""
 
-#: src/stored/btape.c:2899
+#: src/stored/btape.c:2901
 msgid "print this command"
 msgstr ""
 
-#: src/stored/btape.c:2900
+#: src/stored/btape.c:2902
 msgid "write a Bacula label to the tape"
 msgstr ""
 
-#: src/stored/btape.c:2901
+#: src/stored/btape.c:2903
 msgid "load a tape"
 msgstr ""
 
-#: src/stored/btape.c:2902
+#: src/stored/btape.c:2904
 msgid "quit btape"
 msgstr ""
 
-#: src/stored/btape.c:2903
+#: src/stored/btape.c:2905
 msgid "use write() to fill tape"
 msgstr ""
 
-#: src/stored/btape.c:2904
+#: src/stored/btape.c:2906
 msgid "read and print the Bacula tape label"
 msgstr ""
 
-#: src/stored/btape.c:2905
+#: src/stored/btape.c:2907
 msgid "test record handling functions"
 msgstr ""
 
-#: src/stored/btape.c:2906
+#: src/stored/btape.c:2908
 msgid "rewind the tape"
 msgstr ""
 
-#: src/stored/btape.c:2907
+#: src/stored/btape.c:2909
 msgid "read() tape block by block to EOT and report"
 msgstr ""
 
-#: src/stored/btape.c:2908
+#: src/stored/btape.c:2910
 msgid "Bacula read block by block to EOT and report"
 msgstr ""
 
-#: src/stored/btape.c:2909
+#: src/stored/btape.c:2911
 msgid ""
 "[file_size=n(GB)|nb_file=3|skip_zero|skip_random|skip_raw|skip_block] report "
 "drive speed"
 msgstr ""
 
-#: src/stored/btape.c:2910
+#: src/stored/btape.c:2912
 msgid "print tape status"
 msgstr ""
 
-#: src/stored/btape.c:2911
+#: src/stored/btape.c:2913
 msgid "General test Bacula tape functions"
 msgstr ""
 
-#: src/stored/btape.c:2912
+#: src/stored/btape.c:2914
 msgid "write an EOF on the tape"
 msgstr ""
 
-#: src/stored/btape.c:2913
+#: src/stored/btape.c:2915
 msgid "write a single Bacula block"
 msgstr ""
 
-#: src/stored/btape.c:2914
+#: src/stored/btape.c:2916
 msgid "read a single record"
 msgstr ""
 
-#: src/stored/btape.c:2915
+#: src/stored/btape.c:2917
 msgid "read a single Bacula block"
 msgstr ""
 
-#: src/stored/btape.c:2916
+#: src/stored/btape.c:2918
 msgid "quick fill command"
 msgstr ""
 
-#: src/stored/btape.c:2937
+#: src/stored/btape.c:2939
 #, c-format
 msgid "\"%s\" is an invalid command\n"
 msgstr ""
 
-#: src/stored/btape.c:2946
+#: src/stored/btape.c:2948
 #, c-format
 msgid "Interactive commands:\n"
 msgstr ""
 
-#: src/stored/btape.c:2957
+#: src/stored/btape.c:2959
 #, c-format
 msgid ""
 "\n"
@@ -10902,22 +10985,22 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/stored/btape.c:3045
+#: src/stored/btape.c:3047
 #, c-format
 msgid "Mount second Volume on device %s and press return when ready: "
 msgstr ""
 
-#: src/stored/btape.c:3073
+#: src/stored/btape.c:3075
 #, c-format
 msgid "Mount blank Volume on device %s and press return when ready: "
 msgstr ""
 
-#: src/stored/btape.c:3093
+#: src/stored/btape.c:3095
 #, c-format
 msgid "End of Volume \"%s\" %d records.\n"
 msgstr ""
 
-#: src/stored/btape.c:3107
+#: src/stored/btape.c:3109
 #, c-format
 msgid "Read block=%u, VolBytes=%s rate=%sB/s\n"
 msgstr ""
@@ -10989,220 +11072,244 @@ msgstr ""
 msgid "JobId=%s, Job %s waiting to reserve a device.\n"
 msgstr ""
 
-#: src/stored/block.c:89
+#: src/stored/block.c:102
 #, c-format
 msgid ""
 "Dump block %s %x: size=%d BlkNum=%d\n"
 "               Hdrcksum=%x cksum=%x\n"
 msgstr ""
 
-#: src/stored/block.c:102
+#: src/stored/block.c:115
 #, c-format
 msgid "   Rec: VId=%u VT=%u FI=%s Strm=%s len=%d p=%x\n"
 msgstr ""
 
-#: src/stored/block.c:158
+#: src/stored/block.c:171
 #, c-format
 msgid "%d block read errors not printed.\n"
 msgstr ""
 
-#: src/stored/block.c:248 src/stored/block.c:264 src/stored/block.c:274
+#: src/stored/block.c:264 src/stored/block.c:280 src/stored/block.c:290
 #, c-format
 msgid ""
 "Volume data error at %u:%u! Wanted ID: \"%s\", got \"%s\". Buffer "
 "discarded.\n"
 msgstr ""
 
-#: src/stored/block.c:289
+#: src/stored/block.c:305
 #, c-format
 msgid ""
 "Volume data error at %u:%u! Block length %u is insane (too large), probably "
 "due to a bad archive.\n"
 msgstr ""
 
-#: src/stored/block.c:315
+#: src/stored/block.c:331
 #, c-format
 msgid ""
 "Volume data error at %u:%u!\n"
 "Block checksum mismatch in block=%u len=%d: calc=%x blk=%x\n"
 msgstr ""
 
-#: src/stored/block.c:434
+#: src/stored/block.c:452
 #, c-format
 msgid "Cannot write block. Device at EOM. dev=%s\n"
 msgstr ""
 
-#: src/stored/block.c:439
+#: src/stored/block.c:458
 #, c-format
 msgid "Attempt to write on read-only Volume. dev=%s\n"
 msgstr ""
 
-#: src/stored/block.c:444
+#: src/stored/block.c:464
 #, c-format
 msgid "Attempt to write on closed device=%s\n"
 msgstr ""
 
-#: src/stored/block.c:491
+#: src/stored/block.c:513
 #, c-format
 msgid "User defined maximum volume capacity %s exceeded on device %s.\n"
 msgstr ""
 
-#: src/stored/block.c:506
+#: src/stored/block.c:528
 #, c-format
 msgid "Unable to write EOF. ERR=%s\n"
 msgstr ""
 
-#: src/stored/block.c:532 src/stored/block.c:557
+#: src/stored/block.c:554 src/stored/block.c:588
 msgid "Write block header zeroed.\n"
 msgstr ""
 
-#: src/stored/block.c:576
+#: src/stored/block.c:580
+#, c-format
+msgid "Block checksum changed during write: before=%ud after=%ud\n"
+msgstr ""
+
+#: src/stored/block.c:607
 #, c-format
 msgid "Write error at %u:%u on device %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/block.c:583
+#: src/stored/block.c:614
 #, c-format
 msgid "End of Volume \"%s\" at %u:%u on device %s. Write of %u bytes got %d.\n"
 msgstr ""
 
-#: src/stored/block.c:664 src/stored/block.c:670
+#: src/stored/block.c:695 src/stored/block.c:701
 #, c-format
 msgid "Backspace file at EOT failed. ERR=%s\n"
 msgstr ""
 
-#: src/stored/block.c:677
+#: src/stored/block.c:708
 #, c-format
 msgid "Backspace record at EOT failed. ERR=%s\n"
 msgstr ""
 
-#: src/stored/block.c:694
+#: src/stored/block.c:725
 #, c-format
 msgid "Re-read last block at EOT failed. ERR=%s"
 msgstr ""
 
-#: src/stored/block.c:704
+#: src/stored/block.c:735
 #, c-format
 msgid ""
 "Re-read of last block: block numbers differ by more than one.\n"
 "Probable tape misconfiguration and data loss. Read block=%u Want block=%u.\n"
 msgstr ""
 
-#: src/stored/block.c:709
+#: src/stored/block.c:740
 #, c-format
 msgid ""
 "Re-read of last block OK, but block numbers differ. Read block=%u Want block="
 "%u.\n"
 msgstr ""
 
-#: src/stored/block.c:713
+#: src/stored/block.c:744
 msgid "Re-read of last block succeeded.\n"
 msgstr ""
 
-#: src/stored/block.c:745
+#: src/stored/block.c:777
 #, c-format
 msgid ""
 "Error writing final EOF to tape. This Volume may not be readable.\n"
 "%s"
 msgstr ""
 
-#: src/stored/block.c:759
+#: src/stored/block.c:791
 #, c-format
 msgid ""
 "Error writing final part to DVD. This Volume may not be readable.\n"
 "%s"
 msgstr ""
 
-#: src/stored/block.c:861
+#: src/stored/block.c:801
+#, fuzzy
+msgid "Error sending Volume info to Director.\n"
+msgstr "Помилка надсилання Hello до Збирача. ERR=%s\n"
+
+#: src/stored/block.c:896
 #, c-format
 msgid ""
 "Error while writing, current part number is less than the total number of "
 "parts (%d/%d, device=%s)\n"
 msgstr ""
 
-#: src/stored/block.c:869
+#: src/stored/block.c:904
 #, c-format
 msgid "Unable to open device next part %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/block.c:889
+#: src/stored/block.c:924
 #, c-format
 msgid ""
 "End of Volume \"%s\" at %u:%u on device %s (part_size=%s, free_space=%s, "
 "free_space_errno=%d, errmsg=%s).\n"
 msgstr ""
 
-#: src/stored/block.c:902
+#: src/stored/block.c:937
 #, c-format
 msgid ""
 "End of Volume \"%s\" at %u:%u on device %s (part_size=%s, free_space=%s, "
 "free_space_errno=%d).\n"
 msgstr ""
 
-#: src/stored/block.c:962
+#: src/stored/block.c:980
+#, fuzzy
+msgid "Job failed or canceled.\n"
+msgstr "Статус задачі: Відмінена"
+
+#: src/stored/block.c:986
+msgid "Attempt to read past end of tape or file.\n"
+msgstr ""
+
+#: src/stored/block.c:995
+#, c-format
+msgid "Attempt to read closed device: fd=%d at file:blk %u:%u on device %s\n"
+msgstr ""
+
+#: src/stored/block.c:1005
 #, c-format
 msgid "Block buffer size looping problem on device %s\n"
 msgstr ""
 
-#: src/stored/block.c:974
+#: src/stored/block.c:1017
 #, c-format
 msgid "Unable to open device part=%d %s: ERR=%s\n"
 msgstr ""
 
-#: src/stored/block.c:1000
+#: src/stored/block.c:1044
 #, c-format
 msgid "Read error on fd=%d at file:blk %u:%u on device %s. ERR=%s.\n"
 msgstr ""
 
-#: src/stored/block.c:1013
+#: src/stored/block.c:1057
 #, c-format
 msgid "Read zero bytes at %u:%u on device %s.\n"
 msgstr ""
 
-#: src/stored/block.c:1037
+#: src/stored/block.c:1081
 #, c-format
 msgid ""
 "Volume data error at %u:%u! Very short block of %d bytes on device %s "
 "discarded.\n"
 msgstr ""
 
-#: src/stored/block.c:1062
+#: src/stored/block.c:1107
 #, c-format
 msgid "Block length %u is greater than buffer %u. Attempting recovery.\n"
 msgstr ""
 
-#: src/stored/block.c:1081
+#: src/stored/block.c:1127
 #, c-format
 msgid "Setting block buffer size to %u bytes.\n"
 msgstr ""
 
-#: src/stored/block.c:1096
+#: src/stored/block.c:1142
 #, c-format
 msgid ""
 "Volume data error at %u:%u! Short block of %d bytes on device %s discarded.\n"
 msgstr ""
 
-#: src/lib/plugins.c:112
+#: src/lib/plugins.c:117
 #, c-format
 msgid "Failed to open Plugin directory %s: ERR=%s\n"
 msgstr ""
 
-#: src/lib/plugins.c:129
+#: src/lib/plugins.c:134
 #, c-format
 msgid "Failed to find any plugins in %s\n"
 msgstr ""
 
-#: src/lib/plugins.c:163
+#: src/lib/plugins.c:168
 #, fuzzy, c-format
 msgid "dlopen plugin %s failed: ERR=%s\n"
 msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/lib/plugins.c:174
+#: src/lib/plugins.c:179
 #, c-format
 msgid "Lookup of loadPlugin in plugin %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/plugins.c:183
+#: src/lib/plugins.c:188
 #, c-format
 msgid "Lookup of unloadPlugin in plugin %s failed: ERR=%s\n"
 msgstr ""
@@ -11372,56 +11479,72 @@ msgstr ""
 msgid "Damaged buffer:  %6u bytes allocated at line %d of %s %s\n"
 msgstr ""
 
-#: src/lib/rwlock.c:302
-msgid "rwl_writeunlock called too many times.\n"
+#: src/lib/sellist.c:69
+msgid "Negative numbers not permitted.\n"
+msgstr ""
+
+#: src/lib/sellist.c:106
+msgid "Selection items must be be greater than zero.\n"
+msgstr ""
+
+#: src/lib/sellist.c:110
+msgid "Selection item too large.\n"
+msgstr ""
+
+#: src/lib/sellist.c:167
+msgid "No input string given.\n"
 msgstr ""
 
 #: src/lib/rwlock.c:307
+msgid "rwl_writeunlock called too many times.\n"
+msgstr ""
+
+#: src/lib/rwlock.c:312
 msgid "rwl_writeunlock by non-owner.\n"
 msgstr ""
 
-#: src/lib/rwlock.c:432 src/lib/save/devlock.c:501 src/lib/devlock.c:501
+#: src/lib/rwlock.c:437 src/lib/save/devlock.c:501 src/lib/devlock.c:501
 #, c-format
 msgid "Thread %d found unchanged elements %d times\n"
 msgstr ""
 
-#: src/lib/rwlock.c:502 src/lib/save/devlock.c:571 src/lib/devlock.c:571
+#: src/lib/rwlock.c:507 src/lib/save/devlock.c:571 src/lib/devlock.c:571
 #, c-format
 msgid "%02d: interval %d, writes %d, reads %d\n"
 msgstr ""
 
-#: src/lib/rwlock.c:512 src/lib/save/devlock.c:581 src/lib/devlock.c:581
+#: src/lib/rwlock.c:517 src/lib/save/devlock.c:581 src/lib/devlock.c:581
 #, c-format
 msgid "data %02d: value %d, %d writes\n"
 msgstr ""
 
-#: src/lib/rwlock.c:517 src/lib/save/devlock.c:586 src/lib/devlock.c:586
+#: src/lib/rwlock.c:522 src/lib/save/devlock.c:586 src/lib/devlock.c:586
 #, c-format
 msgid "Total: %d thread writes, %d data writes\n"
 msgstr ""
 
-#: src/lib/rwlock.c:589 src/lib/save/devlock.c:658 src/lib/devlock.c:658
+#: src/lib/rwlock.c:594 src/lib/save/devlock.c:658 src/lib/devlock.c:658
 msgid "Try write lock"
 msgstr ""
 
-#: src/lib/rwlock.c:595 src/lib/save/devlock.c:664 src/lib/devlock.c:664
+#: src/lib/rwlock.c:600 src/lib/save/devlock.c:664 src/lib/devlock.c:664
 msgid "Try read lock"
 msgstr ""
 
-#: src/lib/rwlock.c:651 src/lib/save/devlock.c:720 src/lib/devlock.c:720
+#: src/lib/rwlock.c:656 src/lib/save/devlock.c:720 src/lib/devlock.c:720
 msgid "Create thread"
 msgstr ""
 
-#: src/lib/rwlock.c:661 src/lib/save/devlock.c:730 src/lib/devlock.c:730
+#: src/lib/rwlock.c:666 src/lib/save/devlock.c:730 src/lib/devlock.c:730
 msgid "Join thread"
 msgstr ""
 
-#: src/lib/rwlock.c:663 src/lib/save/devlock.c:732 src/lib/devlock.c:732
+#: src/lib/rwlock.c:668 src/lib/save/devlock.c:732 src/lib/devlock.c:732
 #, c-format
 msgid "%02d: interval %d, updates %d, r_collisions %d, w_collisions %d\n"
 msgstr ""
 
-#: src/lib/rwlock.c:675 src/lib/save/devlock.c:744 src/lib/devlock.c:744
+#: src/lib/rwlock.c:680 src/lib/save/devlock.c:744 src/lib/devlock.c:744
 #, c-format
 msgid "data %02d: value %d, %d updates\n"
 msgstr ""
@@ -11435,127 +11558,122 @@ msgstr ""
 msgid "bget_msg: unknown signal %d\n"
 msgstr ""
 
-#: src/lib/bsock.c:126
+#: src/lib/bsock.c:131
 #, c-format
 msgid ""
 "Could not connect to %s on %s:%d. ERR=%s\n"
 "Retrying ...\n"
 msgstr ""
 
-#: src/lib/bsock.c:132
+#: src/lib/bsock.c:137
 #, c-format
 msgid "Unable to connect to %s on %s:%d. ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:202
+#: src/lib/bsock.c:207
 #, c-format
-msgid "gethostbyname() for host \"%s\" failed: ERR=%s\n"
+msgid "bnet_host2ipaddrs() for host \"%s\" failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:222
+#: src/lib/bsock.c:260
 #, c-format
 msgid "Socket open error. proto=%d port=%d. ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:233
+#: src/lib/bsock.c:273
 #, c-format
 msgid "Source address bind error. proto=%d. ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:244 src/lib/bsock.c:280 src/lib/bnet_server.c:201
+#: src/lib/bsock.c:284 src/lib/bsock.c:320 src/lib/bnet_server.c:218
 #, c-format
 msgid "Cannot set SO_KEEPALIVE on socket: %s\n"
 msgstr ""
 
-#: src/lib/bsock.c:252
+#: src/lib/bsock.c:292
 #, c-format
-msgid "Cannot set SO_KEEPIDLE on socket: %s\n"
+msgid "Cannot set TCP_KEEPIDLE on socket: %s\n"
 msgstr ""
 
-#: src/lib/bsock.c:299
+#: src/lib/bsock.c:339
 #, c-format
 msgid "Could not init bsock mutex. ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:334
+#: src/lib/bsock.c:374
 #, c-format
 msgid "Socket has errors=%d on call to %s:%s:%d\n"
 msgstr ""
 
-#: src/lib/bsock.c:341
+#: src/lib/bsock.c:381
 #, c-format
 msgid "Socket is terminated=%d on call to %s:%s:%d\n"
 msgstr ""
 
-#: src/lib/bsock.c:349
+#: src/lib/bsock.c:389
 #, c-format
 msgid "Socket has insane msglen=%d on call to %s:%s:%d\n"
 msgstr ""
 
-#: src/lib/bsock.c:387
+#: src/lib/bsock.c:427
 #, c-format
 msgid "Write error sending %d bytes to %s:%s:%d: ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:393
+#: src/lib/bsock.c:433
 #, c-format
 msgid "Wrote %d bytes to %s:%s:%d, but only %d accepted.\n"
 msgstr ""
 
-#: src/lib/bsock.c:482 src/lib/bsock.c:543
+#: src/lib/bsock.c:522 src/lib/bsock.c:583
 #, c-format
 msgid "Read expected %d got %d from %s:%s:%d\n"
 msgstr ""
 
-#: src/lib/bsock.c:502
+#: src/lib/bsock.c:542
 #, c-format
 msgid "Packet size too big from \"%s:%s:%d. Terminating connection.\n"
 msgstr ""
 
-#: src/lib/bsock.c:532
+#: src/lib/bsock.c:572
 #, c-format
 msgid "Read error from %s:%s:%d: ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:623
+#: src/lib/bsock.c:663
 msgid "fread attr spool I/O error.\n"
 msgstr ""
 
-#: src/lib/bsock.c:684
+#: src/lib/bsock.c:724
 msgid "Could not malloc BSOCK data buffer\n"
 msgstr ""
 
-#: src/lib/bsock.c:702 src/lib/bsock.c:726
+#: src/lib/bsock.c:742 src/lib/bsock.c:761
 #, c-format
 msgid "sockopt error: %s\n"
 msgstr ""
 
-#: src/lib/bsock.c:708 src/lib/bsock.c:732
+#: src/lib/bsock.c:748 src/lib/bsock.c:767
 #, c-format
 msgid "Warning network buffer = %d bytes not max size.\n"
 msgstr ""
 
-#: src/lib/bsock.c:712 src/lib/bsock.c:736
-#, c-format
-msgid "Network buffer size %d not multiple of tape block size.\n"
-msgstr ""
-
-#: src/lib/bsock.c:757 src/lib/bsock.c:791
+#: src/lib/bsock.c:787 src/lib/bsock.c:821
 #, c-format
 msgid "fcntl F_GETFL error. ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:763 src/lib/bsock.c:797 src/lib/bsock.c:829
+#: src/lib/bsock.c:793 src/lib/bsock.c:827 src/lib/bsock.c:859
 #, c-format
 msgid "fcntl F_SETFL error. ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsock.c:1002 src/qt-console/bcomm/dircomm_auth.cpp:112
+#: src/lib/bsock.c:1032 src/qt-console/bcomm/dircomm_auth.cpp:112
 #, c-format
 msgid "Director authorization problem at \"%s:%d\"\n"
 msgstr "Проблеми авторизації Директора \"%s:%d\"\n"
 
-#: src/lib/bsock.c:1009 src/qt-console/bcomm/dircomm_auth.cpp:119
+#: src/lib/bsock.c:1039 src/qt-console/bcomm/dircomm_auth.cpp:119
 #, c-format
 msgid ""
 "Authorization problem: Remote server at \"%s:%d\" did not advertise required "
@@ -11564,7 +11682,7 @@ msgstr ""
 "Проблеми авторизації: Віддалений сервер \"%s:%d\" не повідомляє про "
 "необхідність використання TLS.\n"
 
-#: src/lib/bsock.c:1017 src/qt-console/bcomm/dircomm_auth.cpp:127
+#: src/lib/bsock.c:1047 src/qt-console/bcomm/dircomm_auth.cpp:127
 #, c-format
 msgid ""
 "Authorization problem with Director at \"%s:%d\": Remote server requires "
@@ -11572,12 +11690,12 @@ msgid ""
 msgstr ""
 "Проблеми авторизації Керівника \"%s:%d\": Віддалений сепвер вимагає TLS.\n"
 
-#: src/lib/bsock.c:1029 src/qt-console/bcomm/dircomm_auth.cpp:138
+#: src/lib/bsock.c:1059 src/qt-console/bcomm/dircomm_auth.cpp:138
 #, c-format
 msgid "TLS negotiation failed with Director at \"%s:%d\"\n"
 msgstr "Встановлення TLS із Керівником невдале \"%s:%d\"\n"
 
-#: src/lib/bsock.c:1039 src/qt-console/bcomm/dircomm_auth.cpp:150
+#: src/lib/bsock.c:1069 src/qt-console/bcomm/dircomm_auth.cpp:150
 #, c-format
 msgid ""
 "Bad response to Hello command: ERR=%s\n"
@@ -11586,12 +11704,12 @@ msgstr ""
 "Погана відповідь на команду Hello: ERR=%s\n"
 "Керівник \"%s:%d\" ймовірно не запущений.\n"
 
-#: src/lib/bsock.c:1048 src/qt-console/bcomm/dircomm_auth.cpp:159
+#: src/lib/bsock.c:1078 src/qt-console/bcomm/dircomm_auth.cpp:159
 #, c-format
 msgid "Director at \"%s:%d\" rejected Hello command\n"
 msgstr "Керівник \"%s:%d\" відкинув команду Hello\n"
 
-#: src/lib/bsock.c:1058 src/qt-console/bcomm/dircomm_auth.cpp:171
+#: src/lib/bsock.c:1088 src/qt-console/bcomm/dircomm_auth.cpp:171
 #, fuzzy, c-format
 msgid ""
 "Authorization problem with Director at \"%s:%d\"\n"
@@ -11607,40 +11725,40 @@ msgstr ""
 "Для отримання допомоги, будь ласка, перегляньте http://www.bacula.org/en/rel-"
 "manual/Bacula_Freque_Asked_Questi.html#SECTION003760000000000000000.\n"
 
-#: src/lib/message.c:340 src/lib/message.c:350
+#: src/lib/message.c:362 src/lib/message.c:372
 #, c-format
 msgid "Could not open console message file %s: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:355
+#: src/lib/message.c:377
 #, c-format
 msgid "Could not get con mutex: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:460
+#: src/lib/message.c:482
 msgid "Bacula Message"
 msgstr ""
 
-#: src/lib/message.c:464
+#: src/lib/message.c:486
 #, c-format
 msgid "open mail pipe %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:532
+#: src/lib/message.c:577
 msgid "open mail pipe failed.\n"
 msgstr ""
 
-#: src/lib/message.c:544
+#: src/lib/message.c:590
 #, c-format
 msgid "close error: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:555
+#: src/lib/message.c:601
 #, c-format
 msgid "Mail prog: %s"
 msgstr ""
 
-#: src/lib/message.c:564
+#: src/lib/message.c:610
 #, c-format
 msgid ""
 "Mail program terminated in error.\n"
@@ -11648,12 +11766,16 @@ msgid ""
 "ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:662
+#: src/lib/message.c:713
 #, c-format
 msgid "fopen %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:835
+#: src/lib/message.c:835 src/lib/message.c:838
+msgid "Msg delivery error: Unable to store data in database.\n"
+msgstr ""
+
+#: src/lib/message.c:890
 #, c-format
 msgid ""
 "Msg delivery error: Operator mail program terminated in error.\n"
@@ -11661,126 +11783,126 @@ msgid ""
 "ERR=%s\n"
 msgstr ""
 
-#: src/lib/message.c:856
+#: src/lib/message.c:911
 #, fuzzy, c-format
 msgid "Msg delivery error: fopen %s failed: ERR=%s\n"
 msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/lib/message.c:1175
+#: src/lib/message.c:1230
 #, c-format
 msgid "%s: ABORTING due to ERROR in %s:%d\n"
 msgstr ""
 
-#: src/lib/message.c:1179
+#: src/lib/message.c:1234
 #, c-format
 msgid "%s: ERROR TERMINATION at %s:%d\n"
 msgstr ""
 
-#: src/lib/message.c:1184
+#: src/lib/message.c:1239
 #, c-format
 msgid "%s: Fatal Error because: "
 msgstr ""
 
-#: src/lib/message.c:1186
+#: src/lib/message.c:1241
 #, c-format
 msgid "%s: Fatal Error at %s:%d because:\n"
 msgstr ""
 
-#: src/lib/message.c:1190
+#: src/lib/message.c:1245
 #, c-format
 msgid "%s: ERROR: "
 msgstr ""
 
-#: src/lib/message.c:1192
+#: src/lib/message.c:1247
 #, c-format
 msgid "%s: ERROR in %s:%d "
 msgstr ""
 
-#: src/lib/message.c:1195
+#: src/lib/message.c:1250
 #, c-format
 msgid "%s: Warning: "
 msgstr ""
 
-#: src/lib/message.c:1198
+#: src/lib/message.c:1253
 #, c-format
 msgid "%s: Security violation: "
 msgstr ""
 
-#: src/lib/message.c:1286
+#: src/lib/message.c:1341
 #, c-format
 msgid "%s ABORTING due to ERROR\n"
 msgstr ""
 
-#: src/lib/message.c:1289
+#: src/lib/message.c:1344
 #, c-format
 msgid "%s ERROR TERMINATION\n"
 msgstr ""
 
-#: src/lib/message.c:1292
+#: src/lib/message.c:1347
 #, c-format
 msgid "%s JobId %u: Fatal error: "
 msgstr ""
 
-#: src/lib/message.c:1301
+#: src/lib/message.c:1356
 #, c-format
 msgid "%s JobId %u: Error: "
 msgstr ""
 
-#: src/lib/message.c:1307
+#: src/lib/message.c:1362
 #, c-format
 msgid "%s JobId %u: Warning: "
 msgstr ""
 
-#: src/lib/message.c:1313
+#: src/lib/message.c:1368
 #, c-format
 msgid "%s JobId %u: Security violation: "
 msgstr ""
 
-#: src/lib/bnet_server.c:108
+#: src/lib/bnet_server.c:125
 #, c-format
 msgid "Cannot open stream socket. ERR=%s. Current %s All %s\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:121
+#: src/lib/bnet_server.c:138
 #, c-format
 msgid "Cannot set SO_REUSEADDR on socket: %s\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:130
+#: src/lib/bnet_server.c:147
 #, c-format
 msgid "Cannot bind port %d: ERR=%s: Retrying ...\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:135
+#: src/lib/bnet_server.c:152
 #, c-format
 msgid "Cannot bind port %d: ERR=%s.\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:146
+#: src/lib/bnet_server.c:163
 #, c-format
 msgid "Could not init client queue: ERR=%s\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:165
+#: src/lib/bnet_server.c:182
 #, c-format
 msgid "Error in select: %s\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:186
+#: src/lib/bnet_server.c:203
 #, c-format
 msgid "Connection from %s:%d refused by hosts.access\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:212
+#: src/lib/bnet_server.c:229
 msgid "Could not create client BSOCK.\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:219
+#: src/lib/bnet_server.c:236
 #, c-format
 msgid "Could not add job to client queue: ERR=%s\n"
 msgstr ""
 
-#: src/lib/bnet_server.c:236
+#: src/lib/bnet_server.c:253
 #, c-format
 msgid "Could not destroy client queue: ERR=%s\n"
 msgstr ""
@@ -12234,7 +12356,7 @@ msgstr ""
 msgid "Truncate"
 msgstr ""
 
-#: src/lib/util.c:409 src/filed/restore.c:1158
+#: src/lib/util.c:409 src/filed/restore.c:1164
 msgid "None"
 msgstr ""
 
@@ -12284,7 +12406,7 @@ msgstr ""
 
 #: src/lib/util.c:753 src/lib/util.c:763 src/lib/util.c:771 src/lib/util.c:778
 #: src/lib/util.c:785 src/lib/util.c:799 src/lib/util.c:809 src/lib/util.c:822
-#: src/lib/util.c:833 src/filed/restore.c:1174
+#: src/lib/util.c:833 src/filed/restore.c:1180
 msgid "*none*"
 msgstr ""
 
@@ -12310,7 +12432,7 @@ msgstr ""
 msgid "writeunlock by non-owner.\n"
 msgstr ""
 
-#: src/lib/daemon.c:64
+#: src/lib/daemon.c:65
 #, c-format
 msgid "Cannot fork to become daemon: ERR=%s\n"
 msgstr ""
@@ -12496,20 +12618,20 @@ msgstr ""
 msgid "pthread_setspecific failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/jcr.c:1097
+#: src/lib/jcr.c:1103
 #, c-format
 msgid ""
 "Watchdog sending kill after %d secs to thread stalled reading Storage "
 "daemon.\n"
 msgstr ""
 
-#: src/lib/jcr.c:1109
+#: src/lib/jcr.c:1115
 #, c-format
 msgid ""
 "Watchdog sending kill after %d secs to thread stalled reading File daemon.\n"
 msgstr ""
 
-#: src/lib/jcr.c:1121
+#: src/lib/jcr.c:1127
 #, c-format
 msgid ""
 "Watchdog sending kill after %d secs to thread stalled reading Director.\n"
@@ -12729,31 +12851,31 @@ msgstr ""
 msgid "TLS enable but not configured.\n"
 msgstr ""
 
-#: src/lib/bnet.c:423
+#: src/lib/bnet.c:481
 msgid "No problem."
 msgstr ""
 
-#: src/lib/bnet.c:426
+#: src/lib/bnet.c:484
 msgid "Authoritative answer for host not found."
 msgstr ""
 
-#: src/lib/bnet.c:429
+#: src/lib/bnet.c:487
 msgid "Non-authoritative for host not found, or ServerFail."
 msgstr ""
 
-#: src/lib/bnet.c:432
+#: src/lib/bnet.c:490
 msgid "Non-recoverable errors, FORMERR, REFUSED, or NOTIMP."
 msgstr ""
 
-#: src/lib/bnet.c:435
+#: src/lib/bnet.c:493
 msgid "Valid name, no data record of resquested type."
 msgstr ""
 
-#: src/lib/bnet.c:438
+#: src/lib/bnet.c:496
 msgid "Unknown error."
 msgstr ""
 
-#: src/lib/bnet.c:697
+#: src/lib/bnet.c:755
 #, c-format
 msgid "Unknown sig %d"
 msgstr ""
@@ -12762,247 +12884,270 @@ msgstr ""
 msgid "Invalid signal number"
 msgstr ""
 
-#: src/lib/signal.c:151 src/lib/signal.c:153
+#: src/lib/signal.c:152 src/lib/signal.c:154
 #, c-format
 msgid "Bacula interrupted by signal %d: %s\n"
 msgstr ""
 
-#: src/lib/signal.c:166
+#: src/lib/signal.c:167
 #, c-format
 msgid "Kaboom! %s, %s got signal %d - %s. Attempting traceback.\n"
 msgstr ""
 
-#: src/lib/signal.c:168
+#: src/lib/signal.c:169
 #, c-format
 msgid "Kaboom! exepath=%s\n"
 msgstr ""
 
-#: src/lib/signal.c:202
+#: src/lib/signal.c:210
 #, c-format
 msgid "Fork error: ERR=%s\n"
 msgstr ""
 
-#: src/lib/signal.c:210
+#: src/lib/signal.c:218
 #, c-format
 msgid "Calling: %s %s %s %s\n"
 msgstr ""
 
-#: src/lib/signal.c:214
+#: src/lib/signal.c:222
 #, c-format
 msgid "execv: %s failed: ERR=%s\n"
 msgstr ""
 
-#: src/lib/signal.c:235
+#: src/lib/signal.c:244
 #, c-format
-msgid "It looks like the traceback worked ...\n"
+msgid "It looks like the traceback worked...\n"
 msgstr ""
 
-#: src/lib/signal.c:289
+#: src/lib/signal.c:246
+#, c-format
+msgid "The btraceback call returned %d\n"
+msgstr ""
+
+#: src/lib/signal.c:306
 #, c-format
 msgid "BA_NSIG too small (%d) should be (%d)\n"
 msgstr ""
 
-#: src/lib/signal.c:295
+#: src/lib/signal.c:312
 msgid "UNKNOWN SIGNAL"
 msgstr ""
 
-#: src/lib/signal.c:296
+#: src/lib/signal.c:313
 msgid "Hangup"
 msgstr ""
 
-#: src/lib/signal.c:297
+#: src/lib/signal.c:314
 msgid "Interrupt"
 msgstr ""
 
-#: src/lib/signal.c:298
+#: src/lib/signal.c:315
 msgid "Quit"
 msgstr ""
 
-#: src/lib/signal.c:299
+#: src/lib/signal.c:316
 msgid "Illegal instruction"
 msgstr ""
 
-#: src/lib/signal.c:300
+#: src/lib/signal.c:317
 msgid "Trace/Breakpoint trap"
 msgstr ""
 
-#: src/lib/signal.c:301
+#: src/lib/signal.c:318
 msgid "Abort"
 msgstr ""
 
-#: src/lib/signal.c:303
+#: src/lib/signal.c:320
 msgid "EMT instruction (Emulation Trap)"
 msgstr ""
 
-#: src/lib/signal.c:306
+#: src/lib/signal.c:323
 msgid "IOT trap"
 msgstr ""
 
-#: src/lib/signal.c:308
+#: src/lib/signal.c:325
 msgid "BUS error"
 msgstr ""
 
-#: src/lib/signal.c:309
+#: src/lib/signal.c:326
 msgid "Floating-point exception"
 msgstr ""
 
-#: src/lib/signal.c:310
+#: src/lib/signal.c:327
 msgid "Kill, unblockable"
 msgstr ""
 
-#: src/lib/signal.c:311
+#: src/lib/signal.c:328
 msgid "User-defined signal 1"
 msgstr ""
 
-#: src/lib/signal.c:312
+#: src/lib/signal.c:329
 msgid "Segmentation violation"
 msgstr ""
 
-#: src/lib/signal.c:313
+#: src/lib/signal.c:330
 msgid "User-defined signal 2"
 msgstr ""
 
-#: src/lib/signal.c:314
+#: src/lib/signal.c:331
 msgid "Broken pipe"
 msgstr ""
 
-#: src/lib/signal.c:315
+#: src/lib/signal.c:332
 msgid "Alarm clock"
 msgstr ""
 
-#: src/lib/signal.c:316
+#: src/lib/signal.c:333
 msgid "Termination"
 msgstr ""
 
-#: src/lib/signal.c:318
+#: src/lib/signal.c:335
 msgid "Stack fault"
 msgstr ""
 
-#: src/lib/signal.c:320
+#: src/lib/signal.c:337
 msgid "Child status has changed"
 msgstr ""
 
-#: src/lib/signal.c:321
+#: src/lib/signal.c:338
 msgid "Continue"
 msgstr ""
 
-#: src/lib/signal.c:322
+#: src/lib/signal.c:339
 msgid "Stop, unblockable"
 msgstr ""
 
-#: src/lib/signal.c:323
+#: src/lib/signal.c:340
 msgid "Keyboard stop"
 msgstr ""
 
-#: src/lib/signal.c:324
+#: src/lib/signal.c:341
 msgid "Background read from tty"
 msgstr ""
 
-#: src/lib/signal.c:325
+#: src/lib/signal.c:342
 msgid "Background write to tty"
 msgstr ""
 
-#: src/lib/signal.c:326
+#: src/lib/signal.c:343
 msgid "Urgent condition on socket"
 msgstr ""
 
-#: src/lib/signal.c:327
+#: src/lib/signal.c:344
 msgid "CPU limit exceeded"
 msgstr ""
 
-#: src/lib/signal.c:328
+#: src/lib/signal.c:345
 msgid "File size limit exceeded"
 msgstr ""
 
-#: src/lib/signal.c:329
+#: src/lib/signal.c:346
 msgid "Virtual alarm clock"
 msgstr ""
 
-#: src/lib/signal.c:330
+#: src/lib/signal.c:347
 msgid "Profiling alarm clock"
 msgstr ""
 
-#: src/lib/signal.c:331
+#: src/lib/signal.c:348
 msgid "Window size change"
 msgstr ""
 
-#: src/lib/signal.c:332
+#: src/lib/signal.c:349
 msgid "I/O now possible"
 msgstr ""
 
-#: src/lib/signal.c:334
+#: src/lib/signal.c:351
 msgid "Power failure restart"
 msgstr ""
 
-#: src/lib/signal.c:337
+#: src/lib/signal.c:354
 msgid "No runnable lwp"
 msgstr ""
 
-#: src/lib/signal.c:340
+#: src/lib/signal.c:357
 msgid "SIGLWP special signal used by thread library"
 msgstr ""
 
-#: src/lib/signal.c:343
+#: src/lib/signal.c:360
 msgid "Checkpoint Freeze"
 msgstr ""
 
-#: src/lib/signal.c:346
+#: src/lib/signal.c:363
 msgid "Checkpoint Thaw"
 msgstr ""
 
-#: src/lib/signal.c:349
+#: src/lib/signal.c:366
 msgid "Thread Cancellation"
 msgstr ""
 
-#: src/lib/signal.c:352
+#: src/lib/signal.c:369
 msgid "Resource Lost (e.g. record-lock lost)"
 msgstr ""
 
+#: src/lib/ini.c:106 src/lib/ini.c:118
+#, c-format
+msgid ""
+"Config file error: %s\n"
+"            : Line %d, col %d of file %s\n"
+"%s\n"
+msgstr ""
+
+#: src/lib/ini.c:308 src/lib/ini.c:383
+#, fuzzy, c-format
+msgid "Cannot open config file %s: %s\n"
+msgstr "Не можливо створити чергу(fifo) %s: ERR=%s\n"
+
 #: src/lib/btimers.c:265
 msgid "stop_btimer called with NULL btimer_id\n"
 msgstr ""
 
-#: src/lib/bsys.c:215 src/lib/bsys.c:232 src/lib/bsys.c:256 src/lib/bsys.c:269
+#: src/lib/bsys.c:72
+#, fuzzy, c-format
+msgid "safe_unlink could not compile regex pattern \"%s\" ERR=%s\n"
+msgstr "Не вдалось створити %s: ERR=%s\n"
+
+#: src/lib/bsys.c:261 src/lib/bsys.c:278 src/lib/bsys.c:302 src/lib/bsys.c:315
 #, c-format
 msgid "Out of memory: ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsys.c:311
+#: src/lib/bsys.c:357
 msgid "Buffer overflow.\n"
 msgstr ""
 
-#: src/lib/bsys.c:377
+#: src/lib/bsys.c:423
 msgid "Bad errno"
 msgstr ""
 
-#: src/lib/bsys.c:392
+#: src/lib/bsys.c:438
 #, c-format
 msgid "Memset for %d bytes at %s:%d\n"
 msgstr ""
 
-#: src/lib/bsys.c:422
+#: src/lib/bsys.c:468
 #, c-format
 msgid "Cannot open pid file. %s ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsys.c:437
+#: src/lib/bsys.c:483
 #, c-format
 msgid ""
 "%s is already running. pid=%d\n"
 "Check file %s\n"
 msgstr ""
 
-#: src/lib/bsys.c:451
+#: src/lib/bsys.c:497
 #, c-format
 msgid "Could not open pid file. %s ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsys.c:562
+#: src/lib/bsys.c:608
 #, c-format
 msgid "Could not create state file. %s ERR=%s\n"
 msgstr ""
 
-#: src/lib/bsys.c:581
+#: src/lib/bsys.c:627
 #, c-format
 msgid "Write final hdr error: ERR=%s\n"
 msgstr ""
@@ -13050,98 +13195,98 @@ msgstr ""
 msgid "Close of NULL file\n"
 msgstr ""
 
-#: src/lib/lex.c:224
+#: src/lib/lex.c:226
 msgid ""
 "get_char: called after EOF. You may have a open double quote without the "
 "closing double quote.\n"
 msgstr ""
 
-#: src/lib/lex.c:267
+#: src/lib/lex.c:268
 #, c-format
 msgid "Config token too long, file: %s, line %d, begins at line %d\n"
 msgstr ""
 
-#: src/lib/lex.c:291
+#: src/lib/lex.c:292
 msgid "none"
 msgstr ""
 
-#: src/lib/lex.c:292
+#: src/lib/lex.c:293
 msgid "comment"
 msgstr ""
 
-#: src/lib/lex.c:293
+#: src/lib/lex.c:294
 msgid "number"
 msgstr ""
 
-#: src/lib/lex.c:294
+#: src/lib/lex.c:295
 msgid "ip_addr"
 msgstr ""
 
-#: src/lib/lex.c:295
+#: src/lib/lex.c:296
 msgid "identifier"
 msgstr ""
 
-#: src/lib/lex.c:296
+#: src/lib/lex.c:297
 msgid "string"
 msgstr ""
 
-#: src/lib/lex.c:297
+#: src/lib/lex.c:298
 msgid "quoted_string"
 msgstr ""
 
-#: src/lib/lex.c:298
+#: src/lib/lex.c:299
 msgid "include"
 msgstr ""
 
-#: src/lib/lex.c:299
+#: src/lib/lex.c:300
 msgid "include_quoted_string"
 msgstr ""
 
-#: src/lib/lex.c:300
+#: src/lib/lex.c:301
 msgid "UTF-8 Byte Order Mark"
 msgstr ""
 
-#: src/lib/lex.c:301
+#: src/lib/lex.c:302
 msgid "UTF-16le Byte Order Mark"
 msgstr ""
 
-#: src/lib/lex.c:339 src/lib/lex.c:345 src/lib/lex.c:356 src/lib/lex.c:362
+#: src/lib/lex.c:340 src/lib/lex.c:346 src/lib/lex.c:357 src/lib/lex.c:363
 #, c-format
 msgid "expected a positive integer number, got: %s"
 msgstr ""
 
-#: src/lib/lex.c:478
+#: src/lib/lex.c:479
 msgid ""
 "This config file appears to be in an unsupported Unicode format (UTF-16be). "
 "Please resave as UTF-8\n"
 msgstr ""
 
-#: src/lib/lex.c:617 src/lib/lex.c:645
+#: src/lib/lex.c:625 src/lib/lex.c:653
 #, c-format
 msgid "Cannot open included config file %s: %s\n"
 msgstr ""
 
-#: src/lib/lex.c:704 src/lib/lex.c:761
+#: src/lib/lex.c:712 src/lib/lex.c:769
 #, c-format
 msgid "expected an integer or a range, got %s: %s"
 msgstr ""
 
-#: src/lib/lex.c:718 src/lib/lex.c:726 src/lib/lex.c:737 src/lib/lex.c:745
+#: src/lib/lex.c:726 src/lib/lex.c:734 src/lib/lex.c:745 src/lib/lex.c:753
 #, c-format
 msgid "expected an integer number, got %s: %s"
 msgstr ""
 
-#: src/lib/lex.c:775
+#: src/lib/lex.c:783
 #, c-format
 msgid "expected a name, got %s: %s"
 msgstr ""
 
-#: src/lib/lex.c:779
+#: src/lib/lex.c:787
 #, c-format
 msgid "name %s length %d too long, max is %d\n"
 msgstr ""
 
-#: src/lib/lex.c:787
+#: src/lib/lex.c:795
 #, c-format
 msgid "expected a string, got %s: %s"
 msgstr ""
@@ -13573,7 +13718,7 @@ msgstr "Файл %s існує та його не вдалось замінит
 msgid "bpkt already open fid=%d\n"
 msgstr ""
 
-#: src/findlib/create_file.c:226 src/filed/fd_plugins.c:890
+#: src/findlib/create_file.c:226 src/filed/fd_plugins.c:1009
 #, c-format
 msgid "Could not create %s: ERR=%s\n"
 msgstr "Не вдалось створити %s: ERR=%s\n"
@@ -13831,89 +13976,104 @@ msgstr "Специфічні атрибути FreeBSD Access ACL"
 
 #: src/findlib/bfile.c:191
 #, fuzzy
+msgid "GNU Hurd Specific Default ACL attribs"
+msgstr "Специфічні атрибути Irix Default ACL"
+
+#: src/findlib/bfile.c:193
+#, fuzzy
+msgid "GNU Hurd Specific Access ACL attribs"
+msgstr "Специфічні атрибути Irix Access ACL"
+
+#: src/findlib/bfile.c:195
+#, fuzzy
+msgid "GNU Hurd Specific Extended attribs"
+msgstr "Специфічні додаткові атрибути Linux"
+
+#: src/findlib/bfile.c:197
+#, fuzzy
 msgid "IRIX Specific Extended attribs"
 msgstr "Специфічні додаткові атрибути Linux"
 
-#: src/findlib/bfile.c:193
+#: src/findlib/bfile.c:199
 #, fuzzy
 msgid "TRU64 Specific Extended attribs"
 msgstr "Специфічні додаткові атрибути Linux"
 
-#: src/findlib/bfile.c:195
+#: src/findlib/bfile.c:201
 #, fuzzy
 msgid "AIX Specific Extended attribs"
 msgstr "Специфічні додаткові атрибути Linux"
 
-#: src/findlib/bfile.c:197
+#: src/findlib/bfile.c:203
 #, fuzzy
 msgid "OpenBSD Specific Extended attribs"
 msgstr "Специфічні додаткові атрибути NetBSD"
 
-#: src/findlib/bfile.c:199
+#: src/findlib/bfile.c:205
 msgid "Solaris Specific Extensible attribs or System Extended attribs"
 msgstr ""
 
-#: src/findlib/bfile.c:201
+#: src/findlib/bfile.c:207
 msgid "Solaris Specific Extended attribs"
 msgstr "Специфічні додаткові атрибути Solaris"
 
-#: src/findlib/bfile.c:203
+#: src/findlib/bfile.c:209
 msgid "Darwin Specific Extended attribs"
 msgstr "Специфічні додаткові атрибути Darwin"
 
-#: src/findlib/bfile.c:205
+#: src/findlib/bfile.c:211
 msgid "FreeBSD Specific Extended attribs"
 msgstr "Специфічні додаткові атрибути FreeBS"
 
-#: src/findlib/bfile.c:207
+#: src/findlib/bfile.c:213
 msgid "Linux Specific Extended attribs"
 msgstr "Специфічні додаткові атрибути Linux"
 
-#: src/findlib/bfile.c:209
+#: src/findlib/bfile.c:215
 msgid "NetBSD Specific Extended attribs"
 msgstr "Специфічні додаткові атрибути NetBSD"
 
-#: src/findlib/find.c:226
+#: src/findlib/find.c:237
 #, c-format
 msgid "Plugin: \"%s\" not found.\n"
 msgstr ""
 
-#: src/findlib/match.c:210 src/tools/testfind.c:654 src/filed/job.c:1456
+#: src/findlib/match.c:210 src/tools/testfind.c:654 src/filed/job.c:1460
 #, c-format
 msgid "Unknown include/exclude option: %c\n"
 msgstr "Не зрозуміла опція параметру include/exclude: %c\n"
 
-#: src/findlib/find_one.c:223
+#: src/findlib/find_one.c:227
 #, c-format
 msgid "     NODUMP flag set - will not process %s\n"
 msgstr ""
 
-#: src/findlib/find_one.c:244
+#: src/findlib/find_one.c:248
 #, c-format
 msgid "Cannot stat file %s: ERR=%s\n"
 msgstr ""
 
-#: src/findlib/find_one.c:250
+#: src/findlib/find_one.c:253
 #, c-format
 msgid "%s mtime changed during backup.\n"
 msgstr "%s mtime змінився під час резервування.\n"
 
-#: src/findlib/find_one.c:256
+#: src/findlib/find_one.c:260
 #, c-format
 msgid "%s ctime changed during backup.\n"
 msgstr "%s ctime змінився під час резервування.\n"
 
-#: src/findlib/find_one.c:262 src/findlib/find_one.c:269
+#: src/findlib/find_one.c:268 src/findlib/find_one.c:276
 #, c-format
 msgid "%s size changed during backup.\n"
 msgstr "%s розмір змінився під час резервування.\n"
 
-#: src/findlib/find_one.c:398
+#: src/findlib/find_one.c:403
 #, c-format
 msgid "Top level directory \"%s\" has unlisted fstype \"%s\"\n"
 msgstr "Вища тека \"%s\" має незрозумілий тип файлової системи \"%s\"\n"
 
-#: src/findlib/find_one.c:413
+#: src/findlib/find_one.c:418
 #, c-format
 msgid "Top level directory \"%s\" has an unlisted drive type \"%s\"\n"
 msgstr "Вища тека \"%s\" має незрозумілий тип пристрою \"%s\"\n"
@@ -14003,24 +14163,24 @@ msgstr ""
 msgid "Create DB Client record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:588 src/cats/sql_get.c:251
+#: src/cats/sql_create.c:589 src/cats/sql_get.c:251
 #, c-format
 msgid "More than one Path!: %s for path: %s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:595 src/cats/sql_get.c:205 src/cats/sql_get.c:258
-#: src/cats/sql_get.c:640 src/cats/sql_get.c:722 src/cats/sql_get.c:1041
-#: src/cats/sql.c:340 src/cats/sql.c:347 src/cats/postgresql.c:158
+#: src/cats/sql_create.c:596 src/cats/sql_get.c:205 src/cats/sql_get.c:258
+#: src/cats/sql_get.c:640 src/cats/sql_get.c:722 src/cats/sql_get.c:1039
+#: src/cats/sql.c:340 src/cats/sql.c:347 src/cats/postgresql.c:165
 #, c-format
 msgid "error fetching row: %s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:620
+#: src/cats/sql_create.c:621
 #, c-format
 msgid "Create db Path record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:665
+#: src/cats/sql_create.c:666
 #, c-format
 msgid "Create DB Counters record %s failed. ERR=%s\n"
 msgstr ""
@@ -14040,40 +14200,40 @@ msgstr ""
 msgid "Create DB FileSet record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:994
+#: src/cats/sql_create.c:989
 #, c-format
 msgid "Create db File record %s failed. ERR=%s"
 msgstr ""
 
-#: src/cats/sql_create.c:1019
+#: src/cats/sql_create.c:1015
 #, c-format
 msgid "More than one Filename! %s for file: %s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:1025
+#: src/cats/sql_create.c:1021
 #, c-format
 msgid "Error fetching row for file=%s: ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:1042
+#: src/cats/sql_create.c:1038
 #, c-format
 msgid "Create db Filename record %s failed. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_create.c:1061
+#: src/cats/sql_create.c:1058
 #, c-format
 msgid "Attempt to put non-attributes into catalog. Stream=%d\n"
 msgstr ""
 
 #: src/cats/sql_create.c:1074
-msgid "Cannot Copy/Migrate job using BaseJob"
+msgid "Cannot Copy/Migrate job using BaseJob.\n"
 msgstr ""
 
-#: src/cats/sql_create.c:1165 src/cats/sql_get.c:1138
+#: src/cats/sql_create.c:1166 src/cats/sql_get.c:1136
 msgid "ERR=JobIds are empty\n"
 msgstr ""
 
-#: src/cats/sql_create.c:1218
+#: src/cats/sql_create.c:1219
 #, fuzzy, c-format
 msgid "Create db Object record %s failed. ERR=%s"
 msgstr "Не можливо створити теку %s: ERR=%s\n"
@@ -14180,66 +14340,66 @@ msgstr ""
 msgid "Client record not found in Catalog.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:767
+#: src/cats/sql_get.c:765
 #, c-format
 msgid "More than one Counter!: %d\n"
 msgstr ""
 
-#: src/cats/sql_get.c:772
+#: src/cats/sql_get.c:770
 #, c-format
 msgid "error fetching Counter row: %s\n"
 msgstr ""
 
-#: src/cats/sql_get.c:792
+#: src/cats/sql_get.c:790
 #, c-format
 msgid "Counter record: %s not found in Catalog.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:832
+#: src/cats/sql_get.c:830
 #, c-format
 msgid "Error got %s FileSets but expected only one!\n"
 msgstr ""
 
-#: src/cats/sql_get.c:837
+#: src/cats/sql_get.c:835
 #, c-format
 msgid "FileSet record \"%s\" not found.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:847
+#: src/cats/sql_get.c:845
 msgid "FileSet record not found in Catalog.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:943
+#: src/cats/sql_get.c:941
 #, c-format
 msgid "Media id select failed: ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_get.c:981
+#: src/cats/sql_get.c:979
 #, c-format
 msgid "query dbids failed: ERR=%s\n"
 msgstr ""
 
-#: src/cats/sql_get.c:1036
+#: src/cats/sql_get.c:1034
 #, c-format
 msgid "More than one Volume!: %s\n"
 msgstr ""
 
-#: src/cats/sql_get.c:1092
+#: src/cats/sql_get.c:1090
 #, c-format
 msgid "Media record MediaId=%s not found.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:1095
+#: src/cats/sql_get.c:1093
 #, c-format
 msgid "Media record for Volume \"%s\" not found.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:1102
+#: src/cats/sql_get.c:1100
 #, c-format
 msgid "Media record for MediaId=%u not found in Catalog.\n"
 msgstr ""
 
-#: src/cats/sql_get.c:1105
+#: src/cats/sql_get.c:1103
 #, c-format
 msgid "Media record for Vol=%s not found in Catalog.\n"
 msgstr ""
@@ -14292,29 +14452,29 @@ msgstr ""
 msgid "No Volume record found for item %d.\n"
 msgstr ""
 
-#: src/cats/sqlite.c:159 src/cats/ingres.c:248 src/cats/postgresql.c:203
-#: src/cats/dbi.c:221 src/cats/mysql.c:157
+#: src/cats/sqlite.c:166 src/cats/ingres.c:255 src/cats/postgresql.c:210
+#: src/cats/dbi.c:228 src/cats/mysql.c:164
 #, c-format
 msgid "Unable to initialize DB lock. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sqlite.c:174
+#: src/cats/sqlite.c:181
 #, c-format
 msgid "Database %s does not exist, please create it.\n"
 msgstr ""
 
-#: src/cats/sqlite.c:196
+#: src/cats/sqlite.c:203
 #, c-format
 msgid "Unable to open Database=%s. ERR=%s\n"
 msgstr ""
 
-#: src/cats/sqlite.c:197
+#: src/cats/sqlite.c:204
 msgid "unknown"
 msgstr ""
 
-#: src/cats/sqlite.c:449 src/cats/ingres.c:483 src/cats/postgresql.c:493
-#: src/cats/postgresql.c:540 src/cats/dbi.c:618 src/cats/cats.c:147
-#: src/cats/mysql.c:380
+#: src/cats/sqlite.c:462 src/cats/ingres.c:496 src/cats/postgresql.c:506
+#: src/cats/postgresql.c:553 src/cats/dbi.c:631 src/cats/cats.c:149
+#: src/cats/mysql.c:393
 #, c-format
 msgid "Query failed: %s: ERR=%s\n"
 msgstr ""
@@ -14327,7 +14487,7 @@ msgstr ""
 msgid "Failed to allocate space for query filters.\n"
 msgstr ""
 
-#: src/cats/ingres.c:260
+#: src/cats/ingres.c:267
 #, c-format
 msgid ""
 "Unable to connect to Ingres server.\n"
@@ -14335,7 +14495,7 @@ msgid ""
 "It is probably not running or your password is incorrect.\n"
 msgstr ""
 
-#: src/cats/ingres.c:1074
+#: src/cats/ingres.c:1087
 msgid "A user name for Ingres must be supplied.\n"
 msgstr ""
 
@@ -14394,21 +14554,22 @@ msgstr ""
 msgid "No results to list.\n"
 msgstr ""
 
-#: src/cats/sql.c:724
-msgid "Could not init database batch connection"
-msgstr ""
+#: src/cats/sql.c:721
+#, fuzzy
+msgid "Could not init database batch connection\n"
+msgstr "Не вдалось відкрити%s: ERR=%s\n"
 
-#: src/cats/sql.c:730
+#: src/cats/sql.c:727
 #, c-format
 msgid "Could not open database \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/cats/postgresql.c:174
+#: src/cats/postgresql.c:181
 #, c-format
 msgid "Encoding error for database \"%s\". Wanted SQL_ASCII, got %s\n"
 msgstr ""
 
-#: src/cats/postgresql.c:239
+#: src/cats/postgresql.c:246
 #, c-format
 msgid ""
 "Unable to connect to PostgreSQL server. Database=%s User=%s\n"
@@ -14416,39 +14577,39 @@ msgid ""
 "exceeded.\n"
 msgstr ""
 
-#: src/cats/postgresql.c:337
+#: src/cats/postgresql.c:350
 msgid "PQescapeStringConn returned non-zero.\n"
 msgstr ""
 
-#: src/cats/postgresql.c:355
+#: src/cats/postgresql.c:368
 msgid "PQescapeByteaConn returned NULL.\n"
 msgstr ""
 
-#: src/cats/postgresql.c:386
+#: src/cats/postgresql.c:399
 msgid "PQunescapeByteaConn returned NULL.\n"
 msgstr ""
 
-#: src/cats/postgresql.c:800
+#: src/cats/postgresql.c:813
 #, c-format
 msgid "error fetching currval: %s\n"
 msgstr ""
 
-#: src/cats/postgresql.c:991 src/cats/dbi.c:1264
+#: src/cats/postgresql.c:1004 src/cats/dbi.c:1277
 #, c-format
 msgid "error starting batch mode: %s"
 msgstr ""
 
-#: src/cats/postgresql.c:1021 src/cats/postgresql.c:1028
+#: src/cats/postgresql.c:1034 src/cats/postgresql.c:1041
 #, c-format
 msgid "error ending batch mode: %s"
 msgstr ""
 
-#: src/cats/postgresql.c:1075
+#: src/cats/postgresql.c:1088
 #, c-format
 msgid "error copying in batch mode: %s"
 msgstr ""
 
-#: src/cats/postgresql.c:1097
+#: src/cats/postgresql.c:1110
 msgid "A user name for PostgreSQL must be supplied.\n"
 msgstr ""
 
@@ -14470,14 +14631,14 @@ msgstr ""
 msgid "Unknown database type: %s\n"
 msgstr ""
 
-#: src/cats/dbi.c:235
+#: src/cats/dbi.c:242
 #, c-format
 msgid ""
 "Unable to locate the DBD drivers to DBI interface in: \n"
 "db_driverdir=%s. It is probaly not found any drivers\n"
 msgstr ""
 
-#: src/cats/dbi.c:292
+#: src/cats/dbi.c:299
 #, c-format
 msgid ""
 "Unable to connect to DBI interface. Type=%s Database=%s User=%s\n"
@@ -14485,20 +14646,20 @@ msgid ""
 "exceeded.\n"
 msgstr ""
 
-#: src/cats/dbi.c:1426
+#: src/cats/dbi.c:1439
 #, c-format
 msgid "error inserting batch mode: %s"
 msgstr ""
 
-#: src/cats/dbi.c:1443
+#: src/cats/dbi.c:1456
 msgid "Driver type not specified in Catalog resource.\n"
 msgstr ""
 
-#: src/cats/dbi.c:1447
+#: src/cats/dbi.c:1460
 msgid "Invalid driver type, must be \"dbi:<type>\"\n"
 msgstr ""
 
-#: src/cats/dbi.c:1451
+#: src/cats/dbi.c:1464
 msgid "A user name for DBI must be supplied.\n"
 msgstr ""
 
@@ -14521,7 +14682,7 @@ msgstr ""
 msgid "Error fetching row %s\n"
 msgstr ""
 
-#: src/cats/mysql.c:200
+#: src/cats/mysql.c:207
 #, c-format
 msgid ""
 "Unable to connect to MySQL server.\n"
@@ -14530,7 +14691,7 @@ msgid ""
 "incorrect.\n"
 msgstr ""
 
-#: src/cats/mysql.c:639
+#: src/cats/mysql.c:692
 msgid "A user name for MySQL must be supplied.\n"
 msgstr ""
 
@@ -14677,13 +14838,13 @@ msgid "You must enter a number between 1 and %d\n"
 msgstr "Ви повинні увести номер із проміжку 1..%d\n"
 
 #: src/console/console.c:1160 src/wx-console/console_thread.cpp:399
-#: src/qt-console/bcomm/dircomm.cpp:129
+#: src/qt-console/bcomm/dircomm.cpp:131
 #, c-format
 msgid "Failed to initialize TLS context for Console \"%s\".\n"
 msgstr "Ініціалізація контексту TLS для Консолі невдала \"%s\".\n"
 
 #: src/console/console.c:1180 src/wx-console/console_thread.cpp:420
-#: src/qt-console/bcomm/dircomm.cpp:152
+#: src/qt-console/bcomm/dircomm.cpp:154
 #, c-format
 msgid "Failed to initialize TLS context for Director \"%s\".\n"
 msgstr "Ініціалізація контексту TLS для Керівника невдала \"%s\".\n"
@@ -15048,22 +15209,25 @@ msgstr ""
 msgid "Could not open, database \"%s\".\n"
 msgstr "Не вдалось відкрити%s: ERR=%s\n"
 
-#: src/tools/bsmtp.c:145
+#: src/tools/bsmtp.c:151
 #, c-format
 msgid "Fatal malformed reply from %s: %s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:153
+#: src/tools/bsmtp.c:159
 #, c-format
 msgid "Fatal fgets error: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:186
+#: src/tools/bsmtp.c:192
 #, c-format
 msgid ""
 "\n"
 "Usage: %s [-f from] [-h mailhost] [-s subject] [-c copy] [recipient ...]\n"
+"       -4          forces bsmtp to use IPv4 addresses only.\n"
+"       -6          forces bsmtp to use IPv6 addresses only.\n"
 "       -8          set charset to UTF-8\n"
+"       -a          use any ip protocol for address resolution\n"
 "       -c          set the Cc: field\n"
 "       -d <nn>     set debug level to <nn>\n"
 "       -dt         print a timestamp in debug output\n"
@@ -15077,56 +15241,66 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:343
+#: src/tools/bsmtp.c:379
 msgid "Fatal error: no recipient given.\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:372
+#: src/tools/bsmtp.c:407
 #, c-format
 msgid "Fatal gethostname error: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:376
+#: src/tools/bsmtp.c:418
+#, fuzzy, c-format
+msgid "Fatal getaddrinfo for myself failed \"%s\": ERR=%s\n"
+msgstr "Помилка у %s файл %s: ERR=%s\n"
+
+#: src/tools/bsmtp.c:426
 #, c-format
 msgid "Fatal gethostbyname for myself failed \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:412
+#: src/tools/bsmtp.c:486 src/tools/bsmtp.c:521
 #, c-format
 msgid "Error unknown mail host \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:415
+#: src/tools/bsmtp.c:489 src/tools/bsmtp.c:524
 msgid "Retrying connection using \"localhost\".\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:423
+#: src/tools/bsmtp.c:514
+#, fuzzy, c-format
+msgid "Failed to connect to mailhost %s\n"
+msgstr "Ініціалізація контексту TLS для Консолі невдала \"%s\".\n"
+
+#: src/tools/bsmtp.c:532
 #, c-format
 msgid "Fatal error: Unknown address family for smtp host: %d\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:432 src/tools/bsmtp.c:437
+#: src/tools/bsmtp.c:541 src/tools/bsmtp.c:546
 #, c-format
 msgid "Fatal socket error: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:442
+#: src/tools/bsmtp.c:551
 #, c-format
 msgid "Fatal connect error to %s: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:450
+#: src/tools/bsmtp.c:560
 #, c-format
 msgid "Fatal _open_osfhandle error: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:457 src/tools/bsmtp.c:461 src/tools/bsmtp.c:470
-#: src/tools/bsmtp.c:474
+#: src/tools/bsmtp.c:567 src/tools/bsmtp.c:571 src/tools/bsmtp.c:580
+#: src/tools/bsmtp.c:584
 #, c-format
 msgid "Fatal fdopen error: ERR=%s\n"
 msgstr ""
 
-#: src/tools/bsmtp.c:466
+#: src/tools/bsmtp.c:576
 #, c-format
 msgid "Fatal dup error: ERR=%s\n"
 msgstr ""
@@ -15590,7 +15764,7 @@ msgstr ""
 msgid "Network error in send to Director: ERR=%s\n"
 msgstr ""
 
-#: src/filed/verify.c:247 src/filed/accurate.c:428 src/filed/backup.c:503
+#: src/filed/verify.c:247 src/filed/accurate.c:429 src/filed/backup.c:506
 #, c-format
 msgid "%s digest initialization failed\n"
 msgstr "Невдала ініціалізація відбитку %s\n"
@@ -15615,12 +15789,12 @@ msgstr ""
 msgid "Space saved with Base jobs: %lld MB\n"
 msgstr ""
 
-#: src/filed/accurate.c:399
+#: src/filed/accurate.c:400
 #, fuzzy, c-format
 msgid "Cannot verify checksum for %s\n"
 msgstr "Не вдається відкрити файл %s для виведення. ERR=%s\n"
 
-#: src/filed/accurate.c:507
+#: src/filed/accurate.c:508
 msgid "2991 Bad accurate command\n"
 msgstr ""
 
@@ -15676,6 +15850,11 @@ msgstr ""
 msgid " SDSocket=closed\n"
 msgstr ""
 
+#: src/filed/status.c:463 src/filed/status.c:496
+#, c-format
+msgid "Bad .status command: %s\n"
+msgstr ""
+
 #: src/filed/status.c:464
 msgid "2900 Bad .status command, missing argument.\n"
 msgstr ""
@@ -15704,316 +15883,317 @@ msgstr ""
 msgid "Bacula Client: Last Job had Warnings"
 msgstr ""
 
-#: src/filed/xattr.c:96 src/filed/xattr.c:111 src/filed/xattr.c:119
-#: src/filed/fd_plugins.c:696 src/filed/fd_plugins.c:710 src/filed/acl.c:105
-#: src/filed/acl.c:120 src/filed/acl.c:128 src/filed/backup.c:993
-#: src/filed/backup.c:1189 src/filed/backup.c:1226 src/filed/backup.c:1239
-#: src/filed/backup.c:1315 src/filed/backup.c:1413
+#: src/filed/xattr.c:97 src/filed/xattr.c:112 src/filed/xattr.c:120
+#: src/filed/fd_plugins.c:789 src/filed/fd_plugins.c:805 src/filed/acl.c:108
+#: src/filed/acl.c:123 src/filed/acl.c:131 src/filed/backup.c:999
+#: src/filed/backup.c:1199 src/filed/backup.c:1236 src/filed/backup.c:1249
+#: src/filed/backup.c:1325 src/filed/backup.c:1424
 #, c-format
 msgid "Network send error to SD. ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:244
+#: src/filed/xattr.c:245
 #, c-format
 msgid "Illegal xattr stream, no XATTR_MAGIC on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:258
+#: src/filed/xattr.c:259
 #, c-format
 msgid "Illegal xattr stream, xattr name length <= 0 on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:376 src/filed/xattr.c:408
+#: src/filed/xattr.c:381 src/filed/xattr.c:417
 #, fuzzy, c-format
 msgid "llistea error on file \"%s\": ERR=%s\n"
 msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/xattr.c:472 src/filed/xattr.c:500
+#: src/filed/xattr.c:467 src/filed/xattr.c:520
 #, fuzzy, c-format
 msgid "lgetea error on file \"%s\": ERR=%s\n"
 msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/xattr.c:519 src/filed/xattr.c:807 src/filed/xattr.c:1249
-#: src/filed/xattr.c:1702 src/filed/xattr.c:2064 src/filed/xattr.c:2843
+#: src/filed/xattr.c:556 src/filed/xattr.c:877 src/filed/xattr.c:1352
+#: src/filed/xattr.c:1820 src/filed/xattr.c:2176 src/filed/xattr.c:2968
 #, c-format
 msgid "Xattr stream on file \"%s\" exceeds maximum size of %d bytes\n"
 msgstr ""
 
-#: src/filed/xattr.c:550 src/filed/xattr.c:841 src/filed/xattr.c:1280
-#: src/filed/xattr.c:1743 src/filed/xattr.c:2089
+#: src/filed/xattr.c:576 src/filed/xattr.c:903 src/filed/xattr.c:1372
+#: src/filed/xattr.c:1850 src/filed/xattr.c:2193
 #, c-format
 msgid "Failed to serialize extended attributes on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:624
+#: src/filed/xattr.c:643
 #, fuzzy, c-format
 msgid "lsetea error on file \"%s\": ERR=%s\n"
 msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/xattr.c:710 src/filed/xattr.c:777 src/filed/xattr.c:789
+#: src/filed/xattr.c:731 src/filed/xattr.c:769 src/filed/xattr.c:832
+#: src/filed/xattr.c:844
 #, fuzzy, c-format
 msgid "attr_list error on file \"%s\": ERR=%s\n"
 msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/xattr.c:916
+#: src/filed/xattr.c:968
 #, c-format
 msgid "Received illegal xattr named %s on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:947 src/filed/xattr.c:957
+#: src/filed/xattr.c:1001 src/filed/xattr.c:1011
 #, fuzzy, c-format
 msgid "attr_set error on file \"%s\": ERR=%s\n"
 msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/xattr.c:1092 src/filed/xattr.c:1123
+#: src/filed/xattr.c:1161 src/filed/xattr.c:1196
 #, c-format
 msgid "llistxattr error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:1204 src/filed/xattr.c:1231
+#: src/filed/xattr.c:1264 src/filed/xattr.c:1316
 #, c-format
 msgid "lgetxattr error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:1350
+#: src/filed/xattr.c:1435
 #, c-format
 msgid "lsetxattr error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:1507 src/filed/xattr.c:1539
+#: src/filed/xattr.c:1593 src/filed/xattr.c:1628
 #, fuzzy, c-format
 msgid "extattr_list_link error on file \"%s\": ERR=%s\n"
 msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/xattr.c:1558
+#: src/filed/xattr.c:1648
 #, c-format
 msgid "Failed to convert %d into namespace on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:1653 src/filed/xattr.c:1682
+#: src/filed/xattr.c:1728 src/filed/xattr.c:1783
 #, fuzzy, c-format
 msgid "extattr_get_link error on file \"%s\": ERR=%s\n"
 msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/xattr.c:1809
+#: src/filed/xattr.c:1907
 #, c-format
 msgid "Failed to split %s into namespace and name part on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:1822
+#: src/filed/xattr.c:1920
 #, c-format
 msgid "Failed to convert %s into namespace on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:1841
+#: src/filed/xattr.c:1941
 #, fuzzy, c-format
 msgid "extattr_set_link error on file \"%s\": ERR=%s\n"
 msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/xattr.c:1943 src/filed/xattr.c:1965
+#: src/filed/xattr.c:2044 src/filed/xattr.c:2069
 #, fuzzy, c-format
 msgid "getproplist error on file \"%s\": ERR=%s\n"
 msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/xattr.c:2169
+#: src/filed/xattr.c:2262
 #, c-format
 msgid "Unable create proper proplist to restore xattrs on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:2196
+#: src/filed/xattr.c:2291
 #, fuzzy, c-format
 msgid "setproplist error on file \"%s\": ERR=%s\n"
 msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/xattr.c:2496 src/filed/xattr.c:2547
+#: src/filed/xattr.c:2609 src/filed/xattr.c:2662
 #, c-format
 msgid "Unable to get acl on xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2562
+#: src/filed/xattr.c:2679
 #, c-format
 msgid "Unable to get acl text on xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2632
+#: src/filed/xattr.c:2753
 #, c-format
 msgid "Unable to get status on xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2763
+#: src/filed/xattr.c:2886
 #, c-format
 msgid "Unable to open xattr %s on \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2784
+#: src/filed/xattr.c:2909
 #, c-format
 msgid "Unable to read symlin %s on \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2859
+#: src/filed/xattr.c:2984
 #, c-format
 msgid "Unable to read content of xattr %s on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:2897
+#: src/filed/xattr.c:3024
 #, c-format
 msgid "Unable to chdir to xattr space of file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2953 src/filed/xattr.c:3193
+#: src/filed/xattr.c:3081 src/filed/xattr.c:3330
 #, c-format
 msgid "Unable to open file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2979 src/filed/xattr.c:3246
+#: src/filed/xattr.c:3109 src/filed/xattr.c:3391
 #, c-format
 msgid "Unable to open xattr space %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:2993 src/filed/xattr.c:3214
+#: src/filed/xattr.c:3125 src/filed/xattr.c:3355
 #, c-format
 msgid "Unable to chdir to xattr space on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3012
+#: src/filed/xattr.c:3146
 #, c-format
 msgid "Unable to list the xattr space on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3105
+#: src/filed/xattr.c:3238
 #, c-format
 msgid "Unable to convert acl from text on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:3113 src/filed/xattr.c:3135
+#: src/filed/xattr.c:3248 src/filed/xattr.c:3271
 #, c-format
 msgid "Unable to restore acl of xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3205
+#: src/filed/xattr.c:3344
 #, c-format
 msgid "Unable to open xattr space on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3231 src/filed/xattr.c:3379
+#: src/filed/xattr.c:3374 src/filed/xattr.c:3536
 #, c-format
 msgid "Unable to open xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3261
+#: src/filed/xattr.c:3408
 #, c-format
 msgid "Unable to chdir to xattr space %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3299
+#: src/filed/xattr.c:3448
 #, c-format
 msgid "Unable to mkfifo xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3315
+#: src/filed/xattr.c:3466
 #, c-format
 msgid "Unable to mknod xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3331
+#: src/filed/xattr.c:3484
 #, c-format
 msgid "Unable to mkdir xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3349
+#: src/filed/xattr.c:3504
 #, c-format
 msgid "Unable to link xattr %s to %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3400
+#: src/filed/xattr.c:3557
 #, c-format
 msgid ""
 "Unable to restore data of xattr %s on file \"%s\": Not all data available in "
 "xattr stream\n"
 msgstr ""
 
-#: src/filed/xattr.c:3411
+#: src/filed/xattr.c:3570
 #, c-format
 msgid "Unable to restore data of xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3432
+#: src/filed/xattr.c:3593
 #, c-format
 msgid "Unable to symlink xattr %s to %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3466
+#: src/filed/xattr.c:3629
 #, c-format
 msgid "Unable to restore owner of xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3492
+#: src/filed/xattr.c:3657
 #, c-format
 msgid "Unable to restore filetimes of xattr %s on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/xattr.c:3508
+#: src/filed/xattr.c:3673
 #, c-format
 msgid "Illegal xattr stream, failed to parse xattr stream on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:3570
+#: src/filed/xattr.c:3734
 #, c-format
 msgid "Failed to restore extensible attributes on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:3583
+#: src/filed/xattr.c:3747
 #, c-format
 msgid "Failed to restore extended attributes on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/xattr.c:3672 src/filed/acl.c:2109
+#: src/filed/xattr.c:3841 src/filed/acl.c:2265
 #, fuzzy, c-format
 msgid "Unable to stat file \"%s\": ERR=%s\n"
 msgstr "Не можливо встановити власника файлу %s: ERR=%s\n"
 
-#: src/filed/xattr.c:3719
+#: src/filed/xattr.c:3891
 #, c-format
 msgid ""
 "Can't restore Extended Attributes of %s - incompatible xattr stream "
 "encountered - %d\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:480 src/filed/fd_plugins.c:619
+#: src/filed/fd_plugins.c:550 src/filed/fd_plugins.c:694
 #, c-format
 msgid "Command plugin \"%s\": no type in startBackupFile packet.\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:493
+#: src/filed/fd_plugins.c:563
 #, c-format
 msgid "Command plugin \"%s\": no object_name in startBackupFile packet.\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:505 src/filed/fd_plugins.c:626
+#: src/filed/fd_plugins.c:576 src/filed/fd_plugins.c:701
 #, c-format
 msgid "Command plugin \"%s\": no fname in startBackupFile packet.\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:683
+#: src/filed/fd_plugins.c:775
 msgid "Plugin save packet not found.\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:806
+#: src/filed/fd_plugins.c:910
 #, c-format
 msgid "Plugin=%s not found.\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:863
+#: src/filed/fd_plugins.c:977
 #, c-format
 msgid "Plugin createFile call failed. Stat=%d file=%s\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:874
+#: src/filed/fd_plugins.c:982
 #, c-format
 msgid "Plugin createFile call failed. Returned CF_ERROR file=%s\n"
 msgstr ""
 
-#: src/filed/fd_plugins.c:1621
+#: src/filed/fd_plugins.c:1859
 msgid "Command plugin: no fname in baculaCheckChanges packet.\n"
 msgstr ""
 
@@ -16111,179 +16291,189 @@ msgstr ""
 msgid "No Director resource defined in %s\n"
 msgstr ""
 
-#: src/filed/acl.c:225 src/filed/acl.c:248
+#: src/filed/acl.c:229 src/filed/acl.c:254
 #, fuzzy, c-format
 msgid "aclx_get error on file \"%s\": ERR=%s\n"
 msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/acl.c:274
+#: src/filed/acl.c:280
 #, fuzzy, c-format
 msgid "Unknown acl type encountered on file \"%s\": %ld\n"
 msgstr "Невідомий тип файлу %d: не відновлено: %s\n"
 
-#: src/filed/acl.c:298 src/filed/acl.c:307
+#: src/filed/acl.c:304 src/filed/acl.c:313
 #, fuzzy, c-format
 msgid "Failed to convert acl into text on file \"%s\"\n"
 msgstr "Ініціалізація контексту TLS для Консолі невдала \"%s\".\n"
 
-#: src/filed/acl.c:381
+#: src/filed/acl.c:386
 #, c-format
 msgid ""
 "Trying to restore POSIX acl on file \"%s\" on filesystem without AIXC acl "
 "support\n"
 msgstr ""
 
-#: src/filed/acl.c:389
+#: src/filed/acl.c:394
 #, c-format
 msgid ""
 "Trying to restore NFSv4 acl on file \"%s\" on filesystem without NFS4 acl "
 "support\n"
 msgstr ""
 
-#: src/filed/acl.c:433 src/filed/acl.c:443
+#: src/filed/acl.c:442 src/filed/acl.c:452
 #, fuzzy, c-format
 msgid "aclx_scanStr error on file \"%s\": ERR=%s\n"
 msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/acl.c:467
+#: src/filed/acl.c:478
 #, fuzzy, c-format
 msgid "aclx_put error on file \"%s\": ERR=%s\n"
 msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/acl.c:809
+#: src/filed/acl.c:823
 #, c-format
 msgid "acl_to_text error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:837
+#: src/filed/acl.c:853
 #, c-format
 msgid "acl_get_file error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:889
+#: src/filed/acl.c:906
 #, c-format
 msgid ""
 "acl_delete_def_file error on file \"%s\": filesystem doesn't support ACLs\n"
 msgstr ""
 
-#: src/filed/acl.c:895
+#: src/filed/acl.c:912
 #, c-format
 msgid "acl_delete_def_file error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:904
+#: src/filed/acl.c:923
 #, c-format
 msgid "acl_from_text error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:918
+#: src/filed/acl.c:939
 #, fuzzy, c-format
 msgid "acl_valid error on file \"%s\": ERR=%s\n"
 msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/acl.c:948
+#: src/filed/acl.c:971
 #, c-format
 msgid "acl_set_file error on file \"%s\": filesystem doesn't support ACLs\n"
 msgstr ""
 
-#: src/filed/acl.c:957
+#: src/filed/acl.c:980
 #, c-format
 msgid "acl_set_file error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1063 src/filed/acl.c:1089 src/filed/acl.c:1201
-#: src/filed/acl.c:1692 src/filed/acl.c:1795
+#: src/filed/acl.c:1087 src/filed/acl.c:1116 src/filed/acl.c:1230
+#: src/filed/acl.c:1738 src/filed/acl.c:1845
 #, c-format
 msgid "pathconf error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1216
+#: src/filed/acl.c:1246
 #, c-format
 msgid ""
 "Trying to restore acl on file \"%s\" on filesystem without %s acl support\n"
 msgstr ""
 
-#: src/filed/acl.c:1492
+#: src/filed/acl.c:1531
 #, c-format
 msgid "getacl error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1525
+#: src/filed/acl.c:1566
 #, c-format
 msgid "acltostr error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1546 src/filed/acl.c:1554
+#: src/filed/acl.c:1588 src/filed/acl.c:1598
 #, c-format
 msgid "strtoacl error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1582
+#: src/filed/acl.c:1627
 #, c-format
 msgid "setacl error on file \"%s\": filesystem doesn't support ACLs\n"
 msgstr ""
 
-#: src/filed/acl.c:1590
+#: src/filed/acl.c:1635
 #, c-format
 msgid "setacl error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1711
+#: src/filed/acl.c:1760
 #, c-format
 msgid "acl_get error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1786
+#: src/filed/acl.c:1834
 #, c-format
 msgid ""
 "Trying to restore acl on file \"%s\" on filesystem without acl support\n"
 msgstr ""
 
-#: src/filed/acl.c:1812
+#: src/filed/acl.c:1863
 #, c-format
 msgid ""
 "Trying to restore POSIX acl on file \"%s\" on filesystem without aclent acl "
 "support\n"
 msgstr ""
 
-#: src/filed/acl.c:1823
+#: src/filed/acl.c:1874
 #, c-format
 msgid ""
 "Trying to restore NFSv4 acl on file \"%s\" on filesystem without ace acl "
 "support\n"
 msgstr ""
 
-#: src/filed/acl.c:1839
+#: src/filed/acl.c:1890
 #, c-format
 msgid "acl_fromtext error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1853 src/filed/acl.c:1861
+#: src/filed/acl.c:1904 src/filed/acl.c:1912
 #, c-format
 msgid "wrong encoding of acl type in acl stream on file \"%s\"\n"
 msgstr ""
 
-#: src/filed/acl.c:1886
+#: src/filed/acl.c:1937
 #, c-format
 msgid "acl_set error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1971
+#: src/filed/acl.c:2023
 #, c-format
 msgid "acltotext error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:1993
+#: src/filed/acl.c:2046
 #, c-format
 msgid "aclfromtext error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:2011
+#: src/filed/acl.c:2066
 #, c-format
 msgid "acl(SETACL) error on file \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/acl.c:2181
+#: src/filed/acl.c:2132
+#, fuzzy, c-format
+msgid "pioctl VIOCGETAL error on file \"%s\": ERR=%s\n"
+msgstr "Помилка у %s файл %s: ERR=%s\n"
+
+#: src/filed/acl.c:2160
+#, fuzzy, c-format
+msgid "pioctl VIOCSETAL error on file \"%s\": ERR=%s\n"
+msgstr "Помилка у %s файл %s: ERR=%s\n"
+
+#: src/filed/acl.c:2363
 #, c-format
 msgid "Can't restore ACLs of %s - incompatible acl stream encountered - %d\n"
 msgstr ""
@@ -16292,17 +16482,17 @@ msgstr ""
 msgid "Storage command not issued before Verify.\n"
 msgstr ""
 
-#: src/filed/verify_vol.c:97 src/filed/restore.c:483
+#: src/filed/verify_vol.c:97 src/filed/restore.c:486
 #, c-format
 msgid "Record header scan error: %s\n"
 msgstr ""
 
-#: src/filed/verify_vol.c:106 src/filed/restore.c:495
+#: src/filed/verify_vol.c:106 src/filed/restore.c:498
 #, c-format
 msgid "Data record error. ERR=%s\n"
 msgstr ""
 
-#: src/filed/verify_vol.c:110 src/filed/restore.c:499
+#: src/filed/verify_vol.c:110 src/filed/restore.c:502
 #, c-format
 msgid "Actual data size %d not same as header %d\n"
 msgstr ""
@@ -16380,89 +16570,89 @@ msgstr ""
 msgid "     Could not open directory \"%s\": ERR=%s\n"
 msgstr ""
 
-#: src/filed/backup.c:463
+#: src/filed/backup.c:466
 #, c-format
 msgid "     Unknown file type %d; not saved: %s\n"
 msgstr ""
 
-#: src/filed/backup.c:519
+#: src/filed/backup.c:522
 #, c-format
 msgid "%s signature digest initialization failed\n"
 msgstr ""
 
-#: src/filed/backup.c:624
+#: src/filed/backup.c:630
 #, c-format
 msgid "     Cannot open \"%s\": ERR=%s.\n"
 msgstr ""
 
-#: src/filed/backup.c:661
+#: src/filed/backup.c:667
 #, c-format
 msgid "     Cannot open resource fork for \"%s\": ERR=%s.\n"
 msgstr ""
 
-#: src/filed/backup.c:757
+#: src/filed/backup.c:763
 msgid "Failed to allocate memory for crypto signature.\n"
 msgstr ""
 
-#: src/filed/backup.c:762 src/filed/backup.c:768 src/filed/backup.c:783
+#: src/filed/backup.c:768 src/filed/backup.c:774 src/filed/backup.c:789
 msgid "An error occurred while signing the stream.\n"
 msgstr ""
 
-#: src/filed/backup.c:807
+#: src/filed/backup.c:813
 msgid "An error occurred finalizing signing the stream.\n"
 msgstr ""
 
-#: src/filed/backup.c:925
+#: src/filed/backup.c:931
 #, c-format
 msgid "Compression deflateParams error: %d\n"
 msgstr ""
 
-#: src/filed/backup.c:962
+#: src/filed/backup.c:968
 msgid "Encrypting sparse or offset data not supported.\n"
 msgstr ""
 
-#: src/filed/backup.c:969
+#: src/filed/backup.c:975
 msgid "Failed to initialize encryption context.\n"
 msgstr ""
 
-#: src/filed/backup.c:1079
+#: src/filed/backup.c:1085
 #, c-format
 msgid "Compression deflate error: %d\n"
 msgstr ""
 
-#: src/filed/backup.c:1086
+#: src/filed/backup.c:1092
 #, c-format
 msgid "Compression deflateReset error: %d\n"
 msgstr ""
 
-#: src/filed/backup.c:1116
+#: src/filed/backup.c:1126
 #, c-format
 msgid "Compression LZO error: %d\n"
 msgstr ""
 
-#: src/filed/backup.c:1161 src/filed/backup.c:1177
+#: src/filed/backup.c:1171 src/filed/backup.c:1187
 msgid "Encryption error\n"
 msgstr ""
 
-#: src/filed/backup.c:1203
+#: src/filed/backup.c:1213
 #, c-format
 msgid "Read error on file %s. ERR=%s\n"
 msgstr ""
 
-#: src/filed/backup.c:1206
+#: src/filed/backup.c:1216
 #, c-format
 msgid "Too many errors. JobErrors=%d.\n"
 msgstr ""
 
-#: src/filed/backup.c:1216
+#: src/filed/backup.c:1226
 msgid "Encryption padding error\n"
 msgstr ""
 
-#: src/filed/backup.c:1280
+#: src/filed/backup.c:1290
 msgid "Invalid file flags, no supported data stream type.\n"
 msgstr ""
 
-#: src/filed/backup.c:1536
+#: src/filed/backup.c:1549
 #, c-format
 msgid "VSS Writer (BackupComplete): %s\n"
 msgstr ""
@@ -16482,435 +16672,437 @@ msgstr ""
 msgid "Could not set Finder Info on %s\n"
 msgstr "Не вдалось перевстановити прапорці для файлу %s: ERR=%s\n"
 
-#: src/filed/restore.c:415
+#: src/filed/restore.c:418
 #, fuzzy
 msgid "LZO init failed\n"
 msgstr "Невдале встановлення з'єднання TLS\n"
 
-#: src/filed/restore.c:657
+#: src/filed/restore.c:660
 msgid "Unexpected cryptographic session data stream.\n"
 msgstr ""
 
-#: src/filed/restore.c:667
+#: src/filed/restore.c:670
 msgid ""
 "No private decryption keys have been defined to decrypt encrypted backup "
 "data.\n"
 msgstr ""
 
-#: src/filed/restore.c:678
+#: src/filed/restore.c:681
 msgid "Could not create digest.\n"
 msgstr "Не можливо створити відбиток.\n"
 
-#: src/filed/restore.c:696
+#: src/filed/restore.c:699
 msgid "Missing private key required to decrypt encrypted backup data.\n"
 msgstr ""
 
-#: src/filed/restore.c:699
+#: src/filed/restore.c:702
 msgid "Decrypt of the session key failed.\n"
 msgstr ""
 
-#: src/filed/restore.c:705
+#: src/filed/restore.c:708
 #, c-format
 msgid "An error occurred while decoding encrypted session data stream: %s\n"
 msgstr ""
 
-#: src/filed/restore.c:772 src/filed/restore.c:825
+#: src/filed/restore.c:775 src/filed/restore.c:828
 #, c-format
 msgid "Missing encryption session data stream for %s\n"
 msgstr ""
 
-#: src/filed/restore.c:780 src/filed/restore.c:832
+#: src/filed/restore.c:783 src/filed/restore.c:835
 #, c-format
 msgid "Failed to initialize decryption context for %s\n"
 msgstr ""
 
-#: src/filed/restore.c:844
+#: src/filed/restore.c:847
 #, fuzzy, c-format
 msgid "Cannot open resource fork for %s.\n"
 msgstr "Не вдається відкрити файл %s для виведення. ERR=%s\n"
 
-#: src/filed/restore.c:986
+#: src/filed/restore.c:992
 msgid "Unexpected cryptographic signature data stream.\n"
 msgstr ""
 
-#: src/filed/restore.c:994
+#: src/filed/restore.c:1000
 #, c-format
 msgid "Failed to decode message signature for %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1058
+#: src/filed/restore.c:1064
 #, c-format
 msgid "Encountered %ld acl errors while doing restore\n"
 msgstr ""
 
-#: src/filed/restore.c:1062
+#: src/filed/restore.c:1068
 #, c-format
 msgid "Encountered %ld xattr errors while doing restore\n"
 msgstr ""
 
-#: src/filed/restore.c:1066
+#: src/filed/restore.c:1072
 #, c-format
 msgid ""
 "%d non-supported data streams and %d non-supported attrib streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1070
+#: src/filed/restore.c:1076
 #, c-format
 msgid "%d non-supported resource fork streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1073
+#: src/filed/restore.c:1079
 #, c-format
 msgid "%d non-supported Finder Info streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1076
+#: src/filed/restore.c:1082
 #, c-format
 msgid "%d non-supported acl streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1079
+#: src/filed/restore.c:1085
 #, c-format
 msgid "%d non-supported crypto streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1082
+#: src/filed/restore.c:1088
 #, c-format
 msgid "%d non-supported xattr streams ignored.\n"
 msgstr ""
 
-#: src/filed/restore.c:1162
+#: src/filed/restore.c:1168
 msgid "Zlib errno"
 msgstr ""
 
-#: src/filed/restore.c:1164
+#: src/filed/restore.c:1170
 msgid "Zlib stream error"
 msgstr ""
 
-#: src/filed/restore.c:1166
+#: src/filed/restore.c:1172
 msgid "Zlib data error"
 msgstr ""
 
-#: src/filed/restore.c:1168
+#: src/filed/restore.c:1174
 msgid "Zlib memory error"
 msgstr ""
 
-#: src/filed/restore.c:1170
+#: src/filed/restore.c:1176
 msgid "Zlib buffer error"
 msgstr ""
 
-#: src/filed/restore.c:1172
+#: src/filed/restore.c:1178
 msgid "Zlib version error"
 msgstr ""
 
-#: src/filed/restore.c:1212
+#: src/filed/restore.c:1218
 #, c-format
 msgid "Missing cryptographic signature for %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1245 src/filed/restore.c:1274
+#: src/filed/restore.c:1251 src/filed/restore.c:1280
 #, c-format
 msgid "Signature validation failed for file %s: ERR=%s\n"
 msgstr ""
 
-#: src/filed/restore.c:1262
+#: src/filed/restore.c:1268
 #, c-format
 msgid "Digest one file failed for file: %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1301
+#: src/filed/restore.c:1307
 #, c-format
 msgid "Signature validation failed for %s: %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1398
+#: src/filed/restore.c:1404
 #, fuzzy, c-format
 msgid "LZO uncompression error on file %s. ERR=%d\n"
 msgstr "Помилка у %s файл %s: ERR=%s\n"
 
-#: src/filed/restore.c:1435
+#: src/filed/restore.c:1441
 #, c-format
 msgid "Uncompression error on file %s. ERR=%s\n"
 msgstr ""
 
-#: src/filed/restore.c:1468
+#: src/filed/restore.c:1474
 #, c-format
 msgid "Write error in Win32 Block Decomposition on %s: %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1527
+#: src/filed/restore.c:1533
 msgid "Decryption error\n"
 msgstr ""
 
-#: src/filed/restore.c:1620
+#: src/filed/restore.c:1626
 msgid "Logic error: output file should be open\n"
 msgstr ""
 
-#: src/filed/restore.c:1658
+#: src/filed/restore.c:1664
 msgid "Logic error: output file should not be open\n"
 msgstr ""
 
-#: src/filed/restore.c:1692
+#: src/filed/restore.c:1698
 #, c-format
 msgid "Decryption error. buf_len=%d decrypt_len=%d on file %s\n"
 msgstr ""
 
-#: src/filed/restore.c:1813
+#: src/filed/restore.c:1819
 msgid "Open File Manager paused\n"
 msgstr ""
 
-#: src/filed/restore.c:1817
+#: src/filed/restore.c:1823
 msgid "FAILED to pause Open File Manager\n"
 msgstr ""
 
-#: src/filed/restore.c:1825
+#: src/filed/restore.c:1831
 #, c-format
 msgid "Running as '%s'. Privmask=%#08x\n"
 msgstr ""
 
-#: src/filed/restore.c:1827
+#: src/filed/restore.c:1833
 msgid "Failed to retrieve current UserName\n"
 msgstr ""
 
-#: src/filed/job.c:458
+#: src/filed/job.c:456
 #, c-format
 msgid "2901 Job %s not found.\n"
 msgstr ""
 
-#: src/filed/job.c:468
+#: src/filed/job.c:466
 #, c-format
 msgid "2001 Job %s marked to be canceled.\n"
 msgstr ""
 
-#: src/filed/job.c:471
+#: src/filed/job.c:469
 msgid "2902 Error scanning cancel command.\n"
 msgstr ""
 
-#: src/filed/job.c:494
+#: src/filed/job.c:492
 #, c-format
 msgid "2991 Bad setdebug command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:517
+#: src/filed/job.c:515
 #, c-format
 msgid "Bad estimate command: %s"
 msgstr ""
 
-#: src/filed/job.c:518
+#: src/filed/job.c:516
 msgid "2992 Bad estimate command.\n"
 msgstr ""
 
-#: src/filed/job.c:541
+#: src/filed/job.c:539
 #, c-format
 msgid "Bad Job Command: %s"
 msgstr ""
 
-#: src/filed/job.c:580
+#: src/filed/job.c:578
 #, c-format
 msgid "Bad RunBeforeJob command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:581 src/filed/job.c:600
+#: src/filed/job.c:579 src/filed/job.c:598
 msgid "2905 Bad RunBeforeJob command.\n"
 msgstr ""
 
-#: src/filed/job.c:611
+#: src/filed/job.c:609
 msgid "2905 Bad RunBeforeNow command.\n"
 msgstr ""
 
-#: src/filed/job.c:630
+#: src/filed/job.c:628
 #, c-format
 msgid "Bad RunAfter command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:631
+#: src/filed/job.c:629
 msgid "2905 Bad RunAfterJob command.\n"
 msgstr ""
 
-#: src/filed/job.c:667
+#: src/filed/job.c:665
 #, c-format
 msgid "Bad RunScript command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:668
+#: src/filed/job.c:666
 msgid "2905 Bad RunScript command.\n"
 msgstr ""
 
-#: src/filed/job.c:722
+#: src/filed/job.c:720
 #, fuzzy, c-format
 msgid "Bad RestoreObject command: %s\n"
 msgstr "Погана відповідь на команду Hello: ERR=%s\n"
 
-#: src/filed/job.c:789
+#: src/filed/job.c:785
 msgid "2909 Bad RestoreObject command.\n"
 msgstr ""
 
-#: src/filed/job.c:828
+#: src/filed/job.c:824
 #, c-format
 msgid "Plugin Directory not defined. Cannot use plugin: \"%s\"\n"
 msgstr ""
 
-#: src/filed/job.c:870
+#: src/filed/job.c:866
 #, c-format
 msgid "Error running program: %s. stat=%d: ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:881
+#: src/filed/job.c:877
 #, c-format
 msgid "Cannot open FileSet input file: %s. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:1027
+#: src/filed/job.c:1031
 #, c-format
 msgid "REGEX %s compile error. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:1178
+#: src/filed/job.c:1182
 #, c-format
 msgid "Invalid FileSet command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:1651
+#: src/filed/job.c:1655
 #, c-format
 msgid ""
 "DIR and FD clocks differ by %lld seconds, FD automatically compensating.\n"
 msgstr ""
 
-#: src/filed/job.c:1660
+#: src/filed/job.c:1664
 #, c-format
 msgid "Unknown backup level: %s\n"
 msgstr ""
 
-#: src/filed/job.c:1673
+#: src/filed/job.c:1677
 #, c-format
 msgid "Bad level command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:1695
+#: src/filed/job.c:1699
 #, c-format
 msgid "Bad session command: %s"
 msgstr ""
 
-#: src/filed/job.c:1756
+#: src/filed/job.c:1760
 #, c-format
 msgid "Bad storage command: %s"
 msgstr ""
 
-#: src/filed/job.c:1777
+#: src/filed/job.c:1781
 #, c-format
 msgid "Failed to connect to Storage daemon: %s:%d\n"
 msgstr ""
 
-#: src/filed/job.c:1789
+#: src/filed/job.c:1793
 msgid "Failed to authenticate Storage daemon.\n"
 msgstr ""
 
-#: src/filed/job.c:1836
+#: src/filed/job.c:1840
 msgid "ACL support not configured for your machine.\n"
 msgstr ""
 
-#: src/filed/job.c:1840
+#: src/filed/job.c:1844
 msgid "XATTR support not configured for your machine.\n"
 msgstr ""
 
-#: src/filed/job.c:1849
+#: src/filed/job.c:1853
 msgid "Cannot contact Storage daemon\n"
 msgstr ""
 
-#: src/filed/job.c:1868
+#: src/filed/job.c:1872
 #, c-format
 msgid "Bad response to append open: %s\n"
 msgstr ""
 
-#: src/filed/job.c:1873
+#: src/filed/job.c:1877
 msgid "Bad response from stored to open command\n"
 msgstr ""
 
-#: src/filed/job.c:1904
+#: src/filed/job.c:1909
 #, c-format
 msgid "Generate VSS snapshots. Driver=\"%s\", Drive(s)=\"%s\"\n"
 msgstr ""
 
-#: src/filed/job.c:1906
-msgid "CreateSGenerate VSS snapshots failed.\n"
-msgstr ""
-
 #: src/filed/job.c:1912
+#, fuzzy, c-format
+msgid "CreateSGenerate VSS snapshots failed. ERR=%s\n"
+msgstr "Не можливо створити теку %s: ERR=%s\n"
+
+#: src/filed/job.c:1919
 #, c-format
 msgid "Generate VSS snapshot of drive \"%c:\\\" failed.\n"
 msgstr ""
 
-#: src/filed/job.c:1918
+#: src/filed/job.c:1925
 #, c-format
 msgid "VSS Writer (PrepareForBackup): %s\n"
 msgstr ""
 
-#: src/filed/job.c:1923
+#: src/filed/job.c:1930
 msgid "No drive letters found for generating VSS snapshots.\n"
 msgstr ""
 
-#: src/filed/job.c:1926
-msgid "VSS was not initialized properly.\n"
+#: src/filed/job.c:1934
+#, c-format
+msgid "VSS was not initialized properly. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:1976
+#: src/filed/job.c:1985
 msgid "Append Close with SD failed.\n"
 msgstr ""
 
-#: src/filed/job.c:1980
+#: src/filed/job.c:1989
 #, c-format
 msgid "Bad status %d returned from Storage Daemon.\n"
 msgstr ""
 
-#: src/filed/job.c:2010
+#: src/filed/job.c:2019
 #, c-format
 msgid "2994 Bad verify command: %s\n"
 msgstr ""
 
-#: src/filed/job.c:2025 src/filed/job.c:2066
+#: src/filed/job.c:2034 src/filed/job.c:2075
 #, c-format
 msgid "2994 Bad verify level: %s\n"
 msgstr ""
 
-#: src/filed/job.c:2138
+#: src/filed/job.c:2146
 #, c-format
 msgid "Bad replace command. CMD=%s\n"
 msgstr ""
 
-#: src/filed/job.c:2161
+#: src/filed/job.c:2169
 #, c-format
 msgid "Bad where regexp. where=%s\n"
 msgstr ""
 
-#: src/filed/job.c:2199
+#: src/filed/job.c:2207
 #, c-format
 msgid "VSS was not initialized properly. VSS support is disabled. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:2244
+#: src/filed/job.c:2252
 #, c-format
 msgid "VSS Writer (RestoreComplete): %s\n"
 msgstr ""
 
-#: src/filed/job.c:2292
+#: src/filed/job.c:2302
 msgid "Improper calling sequence.\n"
 msgstr ""
 
-#: src/filed/job.c:2312
+#: src/filed/job.c:2322
 #, c-format
 msgid "Bad response to SD read open: %s\n"
 msgstr ""
 
-#: src/filed/job.c:2317
+#: src/filed/job.c:2327
 msgid "Bad response from stored to read open command\n"
 msgstr ""
 
-#: src/filed/job.c:2385
+#: src/filed/job.c:2391
 #, c-format
 msgid "Comm error with SD. bad response to %s. ERR=%s\n"
 msgstr ""
 
-#: src/filed/job.c:2388
+#: src/filed/job.c:2394
 #, c-format
 msgid "Bad response to %s command. Wanted %s, got %s\n"
 msgstr ""
@@ -16945,7 +17137,7 @@ msgid ""
 "Version: "
 msgstr ""
 
-#: src/baconfig.h:72 src/baconfig.h:73
+#: src/baconfig.h:72 src/baconfig.h:73 src/baconfig.h:78 src/baconfig.h:79
 #, c-format
 msgid "Failed ASSERT: %s\n"
 msgstr ""
@@ -17100,8 +17292,9 @@ msgid "Config file editor"
 msgstr ""
 
 #: src/wx-console/wxbconfigfileeditor.cpp:75
+#, fuzzy
 msgid "# Bacula bwx-console Configuration File\n"
-msgstr ""
+msgstr "Будьласка виправте файл конфігурації: %s\n"
 
 #: src/wx-console/wxbconfigfileeditor.cpp:111
 msgid "Save and close"
@@ -17112,9 +17305,9 @@ msgid "Close without saving"
 msgstr ""
 
 #: src/wx-console/wxbconfigfileeditor.cpp:139
-#, c-format
+#, fuzzy, c-format
 msgid "Unable to write to %s\n"
-msgstr ""
+msgstr "Не можливо встановити власника файлу %s: ERR=%s\n"
 
 #: src/wx-console/wxbconfigfileeditor.cpp:140
 msgid "Error while saving"
@@ -17142,16 +17335,18 @@ msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:267
 #: src/wx-console/wxbrestorepanel.cpp:321
+#, fuzzy
 msgid "Refresh"
-msgstr ""
+msgstr "Оновити зараз"
 
 #: src/wx-console/wxbrestorepanel.cpp:286
 msgid "M"
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:290
+#, fuzzy
 msgid "Filename"
-msgstr ""
+msgstr "Збирач"
 
 #: src/wx-console/wxbrestorepanel.cpp:294
 msgid "Size"
@@ -17195,8 +17390,9 @@ msgstr ""
 #: src/wx-console/wxbrestorepanel.cpp:1849
 #: src/wx-console/wxbrestorepanel.cpp:1851
 #: src/wx-console/wxbrestorepanel.cpp:1912
+#, fuzzy
 msgid "Fileset"
-msgstr ""
+msgstr "Дата файлу"
 
 #: src/wx-console/wxbrestorepanel.cpp:340
 #: src/wx-console/wxbrestorepanel.cpp:1233
@@ -17332,8 +17528,9 @@ msgid "Restore queued, jobid="
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:827
+#, fuzzy
 msgid "Job failed."
-msgstr ""
+msgstr "Статус задачі: Відмінена"
 
 #: src/wx-console/wxbrestorepanel.cpp:828
 msgid "Restore failed, please look at messages.\n"
@@ -17400,36 +17597,44 @@ msgid "Restore job cancelled by user.\n"
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:925
+#, fuzzy
 msgid "Restore job is waiting on File daemon."
-msgstr ""
+msgstr "Статус задачі: Очікування Збирача"
 
 #: src/wx-console/wxbrestorepanel.cpp:929
+#, fuzzy
 msgid "Restore job is waiting for new media."
-msgstr ""
+msgstr "Статус задачі: Очікування нового носія"
 
 #: src/wx-console/wxbrestorepanel.cpp:933
+#, fuzzy
 msgid "Restore job is waiting for storage resource."
-msgstr ""
+msgstr "Статус задачі: Очікування ресурсу зберігання"
 
 #: src/wx-console/wxbrestorepanel.cpp:937
+#, fuzzy
 msgid "Restore job is waiting for job resource."
-msgstr ""
+msgstr "Статус задачі: Очікування ресурсу задачі"
 
 #: src/wx-console/wxbrestorepanel.cpp:941
+#, fuzzy
 msgid "Restore job is waiting for Client resource."
-msgstr ""
+msgstr "Статус задачі: Очікування ресурсу Слієнту"
 
 #: src/wx-console/wxbrestorepanel.cpp:945
+#, fuzzy
 msgid "Restore job is waiting for maximum jobs."
-msgstr ""
+msgstr "Статус задачі: Очікування кількості задач"
 
 #: src/wx-console/wxbrestorepanel.cpp:949
+#, fuzzy
 msgid "Restore job is waiting for start time."
-msgstr ""
+msgstr "Статус задачі: Очікування часу початку"
 
 #: src/wx-console/wxbrestorepanel.cpp:953
+#, fuzzy
 msgid "Restore job is waiting for higher priority jobs to finish."
-msgstr ""
+msgstr "Статус задачі: Очікування завершення пріоритетніших задач"
 
 #: src/wx-console/wxbrestorepanel.cpp:1002
 msgid ""
@@ -17477,12 +17682,14 @@ msgid "Restore configuration changes were applied."
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:1225
+#, fuzzy
 msgid "Restore cancelled.\n"
-msgstr ""
+msgstr "Статус задачі: Відмінена"
 
 #: src/wx-console/wxbrestorepanel.cpp:1226
+#, fuzzy
 msgid "Restore cancelled."
-msgstr ""
+msgstr "Статус задачі: Відмінена"
 
 #: src/wx-console/wxbrestorepanel.cpp:1248
 msgid "No results to list."
@@ -17537,8 +17744,9 @@ msgid "Client:"
 msgstr ""
 
 #: src/wx-console/wxbrestorepanel.cpp:1915
+#, fuzzy
 msgid "Storage:"
-msgstr ""
+msgstr "Зберігач"
 
 #: src/wx-console/wxbrestorepanel.cpp:1917
 msgid "When:"
@@ -17553,25 +17761,33 @@ msgid "Restoring..."
 msgstr ""
 
 #: src/wx-console/console_thread.cpp:125
-#, c-format
+#, fuzzy, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
 "Director \"%s\" in config file.\n"
 "At least one CA certificate store is required.\n"
 msgstr ""
+"Жоден із параметрів \"TLS CA Certificate\" або \"TLS CA Certificate Dir\" не "
+"задано для Керівника \"%s\" у %s. Необхідне щонайменше одне сховище для "
+"сертифікату CA.\n"
 
 #: src/wx-console/console_thread.cpp:132
+#, fuzzy
 msgid ""
 "No Director resource defined in config file.\n"
 "Without that I don't how to speak to the Director :-(\n"
 msgstr ""
+"У %s не задано ресурсу Керівника\n"
+"Без цього я не знаю як спілкуватись із Керівником :-(\n"
 
 #: src/wx-console/console_thread.cpp:151
-#, c-format
+#, fuzzy, c-format
 msgid ""
 "Neither \"TLS CA Certificate\" or \"TLS CA Certificate Dir\" are defined for "
 "Console \"%s\" in config file.\n"
 msgstr ""
+"Жоден із параметрів \"TLS CA Certificate\" або \"TLS CA Certificate Dir\" не "
+"задано для Консолі \"%s\" у %s.\n"
 
 #: src/wx-console/console_thread.cpp:173
 msgid "Error while initializing windows sockets...\n"
@@ -17586,24 +17802,29 @@ msgid "Error while initializing library."
 msgstr ""
 
 #: src/wx-console/console_thread.cpp:256
+#, fuzzy
 msgid "Cryptographic library initialization failed.\n"
-msgstr ""
+msgstr "Ініціалізація криптографії невдала.\n"
 
 #: src/wx-console/console_thread.cpp:260
+#, fuzzy
 msgid "Please correct configuration file.\n"
-msgstr ""
+msgstr "Будьласка виправте файл конфігурації: %s\n"
 
 #: src/wx-console/console_thread.cpp:302
+#, fuzzy
 msgid "Error : Library not initialized\n"
-msgstr ""
+msgstr "Ініціалізація криптографії невдала.\n"
 
 #: src/wx-console/console_thread.cpp:313
+#, fuzzy
 msgid "Error : No configuration file loaded\n"
-msgstr ""
+msgstr "Будьласка виправте файл конфігурації: %s\n"
 
 #: src/wx-console/console_thread.cpp:323
+#, fuzzy
 msgid "Connecting...\n"
-msgstr ""
+msgstr "З'єднано"
 
 #: src/wx-console/console_thread.cpp:339
 msgid "Error : No director defined in config file.\n"
@@ -17629,20 +17850,23 @@ msgid "Passphrase for Director \"%s\" TLS private key: "
 msgstr "Пароль для закритого ключа TLS Керівника \"%s\": "
 
 #: src/wx-console/console_thread.cpp:432
+#, fuzzy
 msgid "Failed to connect to the director\n"
-msgstr ""
+msgstr "Ініціалізація контексту TLS для Консолі невдала \"%s\".\n"
 
 #: src/wx-console/console_thread.cpp:442
+#, fuzzy
 msgid "Connected\n"
-msgstr ""
+msgstr "З'єднано"
 
 #: src/wx-console/console_thread.cpp:499
 msgid "<< Unexpected signal received : "
 msgstr ""
 
 #: src/wx-console/console_thread.cpp:519
+#, fuzzy
 msgid "Connection terminated\n"
-msgstr ""
+msgstr "Приєднуюсь до Клієнта %s:%d\n"
 
 #: src/wx-console/wxbconfigpanel.cpp:213
 msgid "Apply"
@@ -17655,8 +17879,9 @@ msgid "Type your command below:"
 msgstr ""
 
 #: src/wx-console/wxbhistorytextctrl.cpp:117
+#, fuzzy
 msgid "Unknown command."
-msgstr ""
+msgstr "Невідомий статус"
 
 #: src/wx-console/wxbhistorytextctrl.cpp:126
 msgid "Possible completions: "
@@ -17680,32 +17905,39 @@ msgid "Show about dialog"
 msgstr ""
 
 #: src/wx-console/wxbmainframe.cpp:248 src/wx-console/wxbmainframe.cpp:619
+#, fuzzy
 msgid "Connect"
-msgstr ""
+msgstr "З'єднано"
 
 #: src/wx-console/wxbmainframe.cpp:248 src/wx-console/wxbmainframe.cpp:620
+#, fuzzy
 msgid "Connect to the director"
-msgstr ""
+msgstr "Приєднуюсь до Керівника %s:%d"
 
 #: src/wx-console/wxbmainframe.cpp:249
+#, fuzzy
 msgid "Disconnect"
-msgstr ""
+msgstr "З'єднано"
 
 #: src/wx-console/wxbmainframe.cpp:249
+#, fuzzy
 msgid "Disconnect of the director"
-msgstr ""
+msgstr "Від'єднуюсь від Керівника %s:%d\n"
 
 #: src/wx-console/wxbmainframe.cpp:251
+#, fuzzy
 msgid "Change of configuration file"
-msgstr ""
+msgstr "Будьласка виправте файл конфігурації: %s\n"
 
 #: src/wx-console/wxbmainframe.cpp:251
+#, fuzzy
 msgid "Change your default configuration file"
-msgstr ""
+msgstr "Будьласка виправте файл конфігурації: %s\n"
 
 #: src/wx-console/wxbmainframe.cpp:252
+#, fuzzy
 msgid "Edit your configuration file"
-msgstr ""
+msgstr "Будьласка виправте файл конфігурації: %s\n"
 
 #: src/wx-console/wxbmainframe.cpp:254
 msgid "E&xit\tAlt-X"
@@ -17772,12 +18004,14 @@ msgid ""
 msgstr ""
 
 #: src/wx-console/wxbmainframe.cpp:438
+#, fuzzy
 msgid "Unable to read configuration file"
-msgstr ""
+msgstr "Будьласка виправте файл конфігурації: %s\n"
 
 #: src/wx-console/wxbmainframe.cpp:450
+#, fuzzy
 msgid "Please choose a configuration file to use"
-msgstr ""
+msgstr "Будьласка виправте файл конфігурації: %s\n"
 
 #: src/wx-console/wxbmainframe.cpp:463
 msgid "This configuration file has been successfully read, use it as default?"
@@ -17788,13 +18022,14 @@ msgid "Configuration file read successfully"
 msgstr ""
 
 #: src/wx-console/wxbmainframe.cpp:474
-#, c-format
+#, fuzzy, c-format
 msgid "Using this configuration file: %s\n"
-msgstr ""
+msgstr "Будьласка виправте файл конфігурації: %s\n"
 
 #: src/wx-console/wxbmainframe.cpp:479
+#, fuzzy
 msgid "Connecting to the director..."
-msgstr ""
+msgstr "Приєднуюсь до Керівника %s:%d"
 
 #: src/wx-console/wxbmainframe.cpp:494
 msgid "Failed to unregister a data parser !"
@@ -17812,20 +18047,24 @@ msgid ""
 msgstr ""
 
 #: src/wx-console/wxbmainframe.cpp:521
+#, fuzzy
 msgid "About Bacula bwx-console"
-msgstr ""
+msgstr "Ласкаво просимо до bacula bwx-console %s (%s)!\n"
 
 #: src/wx-console/wxbmainframe.cpp:527
+#, fuzzy
 msgid "Please choose your default configuration file"
-msgstr ""
+msgstr "Будьласка виправте файл конфігурації: %s\n"
 
 #: src/wx-console/wxbmainframe.cpp:531
+#, fuzzy
 msgid "Use this configuration file as default?"
-msgstr ""
+msgstr "Будьласка виправте файл конфігурації: %s\n"
 
 #: src/wx-console/wxbmainframe.cpp:532
+#, fuzzy
 msgid "Configuration file"
-msgstr ""
+msgstr "Будьласка виправте файл конфігурації: %s\n"
 
 #: src/wx-console/wxbmainframe.cpp:603
 msgid "Console thread terminated."
@@ -17836,24 +18075,29 @@ msgid "Connection to the director lost. Quit program?"
 msgstr ""
 
 #: src/wx-console/wxbmainframe.cpp:612
+#, fuzzy
 msgid "Connection lost"
-msgstr ""
+msgstr "Помилка : З'єднання завершено"
 
 #: src/wx-console/wxbmainframe.cpp:628
+#, fuzzy
 msgid "Connected to the director."
-msgstr ""
+msgstr "Приєднуюсь до Керівника %s:%d"
 
 #: src/wx-console/wxbmainframe.cpp:651
+#, fuzzy
 msgid "Reconnect"
-msgstr ""
+msgstr "З'єднано"
 
 #: src/wx-console/wxbmainframe.cpp:652
+#, fuzzy
 msgid "Reconnect to the director"
-msgstr ""
+msgstr "Приєднуюсь до Керівника %s:%d"
 
 #: src/wx-console/wxbmainframe.cpp:666
+#, fuzzy
 msgid "Disconnected of the director."
-msgstr ""
+msgstr "Від'єднуюсь від Керівника %s:%d\n"
 
 #: src/wx-console/wxbmainframe.cpp:708 src/wx-console/wxbmainframe.cpp:725
 msgid "bwx-console: unexpected director's question."
@@ -17885,12 +18129,12 @@ msgstr ""
 "       -?            показати це повідомлення.\n"
 "\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:90
+#: src/qt-console/bcomm/dircomm.cpp:92
 #, c-format
 msgid "Already connected\"%s\".\n"
 msgstr "Вже приєднано\"%s\".\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:103
+#: src/qt-console/bcomm/dircomm.cpp:105
 #, c-format
 msgid ""
 "Connecting to Director %s:%d\n"
@@ -17899,35 +18143,35 @@ msgstr ""
 "З'єднуюсь із Керівником %s:%d\n"
 "\n"
 
-#: src/qt-console/bcomm/dircomm.cpp:206
+#: src/qt-console/bcomm/dircomm.cpp:208
 msgid "Initializing ..."
 msgstr "Ініціалізація ..."
 
-#: src/qt-console/bcomm/dircomm.cpp:221 src/qt-console/console/console.cpp:142
+#: src/qt-console/bcomm/dircomm.cpp:224 src/qt-console/console/console.cpp:142
 msgid "Connected"
 msgstr "З'єднано"
 
-#: src/qt-console/bcomm/dircomm.cpp:345
+#: src/qt-console/bcomm/dircomm.cpp:348
 msgid "Command completed ..."
 msgstr "Команду виконано ..."
 
-#: src/qt-console/bcomm/dircomm.cpp:352 src/qt-console/console/console.cpp:373
+#: src/qt-console/bcomm/dircomm.cpp:355 src/qt-console/console/console.cpp:379
 msgid "Processing command ..."
 msgstr "Виконання команди ..."
 
-#: src/qt-console/bcomm/dircomm.cpp:359
+#: src/qt-console/bcomm/dircomm.cpp:362
 msgid "At main prompt waiting for input ..."
 msgstr "Очікуться введення у основній рядку ..."
 
-#: src/qt-console/bcomm/dircomm.cpp:366 src/qt-console/bcomm/dircomm.cpp:378
+#: src/qt-console/bcomm/dircomm.cpp:369 src/qt-console/bcomm/dircomm.cpp:382
 msgid "At prompt waiting for input ..."
 msgstr "Очікуться введення у рядку ..."
 
-#: src/qt-console/bcomm/dircomm.cpp:386
+#: src/qt-console/bcomm/dircomm.cpp:390
 msgid "Command failed."
 msgstr "Помилка команди"
 
-#: src/qt-console/bcomm/dircomm.cpp:458
+#: src/qt-console/bcomm/dircomm.cpp:463
 msgid "Director disconnected."
 msgstr "Керівник від'єднано"
 
diff --git a/release/clean b/release/clean
new file mode 100755
index 0000000..4a547d5
--- /dev/null
+++ b/release/clean
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Remove old baculas
+rm -f bacula-* win*.log
diff --git a/release/makeall b/release/makeall
index ce60e11..7a90791 100755
--- a/release/makeall
+++ b/release/makeall
@@ -12,7 +12,7 @@ cd $cwd
 
 ./makebacularel $bacula $remote $branch $ver
 ./makedocsrel $bacula $docs $remote $branch $ver
-./makewinrel $bacula $remote $branch $ver | tee win$$.log
+#./makewinrel $bacula $remote $branch $ver | tee win$$.log
 
 # strip ./configure strerror from Win log file
 sed -i -e 's%strerror%%' win$$.log
diff --git a/release/makedocsrel b/release/makedocsrel
index e6281bc..10d34a3 100755
--- a/release/makedocsrel
+++ b/release/makedocsrel
@@ -97,6 +97,7 @@ mv docs $base_pkg-$ver
 cd $base_pkg-$ver
 ./configure --with-bacula=$bsrc
 make en
+make clean
 cd ${cwd}
 echo "Tarring docs ..."
 tar cf $base_pkg-$ver.tar $base_pkg-$ver
diff --git a/release/pushtags b/release/pushtags
index a1ed841..4ec85e1 100755
--- a/release/pushtags
+++ b/release/pushtags
@@ -17,7 +17,6 @@ for i in $bacula $docs ; do
   git checkout ${branch}
   git push ${remote} ${branch}
   git push ${remote} tag ${fulltag}
-  echo "Pushed ${remote} and push tag ${fulltag} in $i"
+  echo "Pushed ${remote} and git push ${remote} tag ${fulltag} in $i"
   git checkout ${current}
 done
-
diff --git a/scripts/logrotate.in b/scripts/logrotate.in
index a390d86..0b1304c 100644
--- a/scripts/logrotate.in
+++ b/scripts/logrotate.in
@@ -6,7 +6,7 @@
 #
 #      /etc/logrotate.d/bacula
 #
- at working_dir@/log {
+ at logdir@/bacula.log {
     monthly
     rotate 5
     notifempty
diff --git a/scripts/logwatch/logfile.bacula.conf.in b/scripts/logwatch/logfile.bacula.conf.in
index 3eaf0e2..22b6e98 100644
--- a/scripts/logwatch/logfile.bacula.conf.in
+++ b/scripts/logwatch/logfile.bacula.conf.in
@@ -1,3 +1,3 @@
 # What actual file?  Defaults to LogPath if not absolute path....
-LogFile = @working_dir@/log
+LogFile = @logdir@/bacula.log
 
diff --git a/src/baconfig.h b/src/baconfig.h
index cbcd954..58661cb 100644
--- a/src/baconfig.h
+++ b/src/baconfig.h
@@ -58,7 +58,7 @@
 #define ioctl_req_t int
 #endif
 
-#define MANUAL_AUTH_URL "http://www.bacula.org/en/rel-manual/Bacula_Freque_Asked_Questi.html#SECTION003760000000000000000"
+#define MANUAL_AUTH_URL "http://www.bacula.org/en/rel-manual/Bacula_Freque_Asked_Questi.html#SECTION00260000000000000000"
 
 #ifdef PROTOTYPES
 # define __PROTO(p)     p
@@ -72,8 +72,16 @@
    Emsg1(M_ERROR, 0, _("Failed ASSERT: %s\n"), #x); \
    Pmsg1(000, _("Failed ASSERT: %s\n"), #x); \
    jcr[0] = 0; }
+
+#define ASSERT2(x,y) if (!(x)) { \
+   assert_msg =  y; \
+   Emsg1(M_ERROR, 0, _("Failed ASSERT: %s\n"), #x); \
+   Pmsg1(000, _("Failed ASSERT: %s\n"), #x); \
+   char *jcr = NULL; \
+   jcr[0] = 0; }
 #else
 #define ASSERT(x)
+#define ASSERT2(x, y)
 #endif
 
 /* Allow printing of NULL pointers */
@@ -415,6 +423,8 @@ void b_memset(const char *file, int line, void *mem, int val, size_t num);
 #define Jmsg4(jcr, typ, lvl, msg, a1, a2, a3, a4) j_msg(__FILE__, __LINE__, jcr, typ, lvl, msg, a1, a2, a3, a4)
 #define Jmsg5(jcr, typ, lvl, msg, a1, a2, a3, a4, a5) j_msg(__FILE__, __LINE__, jcr, typ, lvl, msg, a1, a2, a3, a4, a5)
 #define Jmsg6(jcr, typ, lvl, msg, a1, a2, a3, a4, a5, a6) j_msg(__FILE__, __LINE__, jcr, typ, lvl, msg, a1, a2, a3, a4, a5, a6)
+#define Jmsg7(jcr, typ, lvl, msg, a1, a2, a3, a4, a5, a6, a7) j_msg(__FILE__, __LINE__, jcr, typ, lvl, msg, a1, a2, a3, a4, a5, a6, a7)
+#define Jmsg8(jcr, typ, lvl, msg, a1, a2, a3, a4, a5, a6, a7, a8) j_msg(__FILE__, __LINE__, jcr, typ, lvl, msg, a1, a2, a3, a4, a5, a6, a7, a8)
 
 /** Queued Job Error Messages that are delivered according to the message resource */
 #define Qmsg0(jcr, typ, lvl, msg)             q_msg(__FILE__, __LINE__, jcr, typ, lvl, msg)
@@ -637,4 +647,15 @@ int getdomainname(char *name, int len);
 /** Determine endianes */
 static inline bool bigendian() { return htonl(1) == 1L; }
 
+#ifndef __GNUC__
+#define __PRETTY_FUNCTION__ __func__
+#endif
+#ifdef ENTER_LEAVE
+#define Enter(lvl) Dmsg1(lvl, "Enter: %s\n", __PRETTY_FUNCTION__)
+#define Leave(lvl) Dmsg1(lvl, "Leave: %s\n", __PRETTY_FUNCTION__)
+#else
+#define Enter(lvl)
+#define Leave(lvl)
+#endif
+
 #endif /* _BACONFIG_H */
diff --git a/src/cats/Makefile.in b/src/cats/Makefile.in
index e49c484..f14eb7b 100644
--- a/src/cats/Makefile.in
+++ b/src/cats/Makefile.in
@@ -151,27 +151,27 @@ libbaccats.la: Makefile cats_dummy.lo
 libbaccats-mysql.la: Makefile $(MYSQL_LOBJS)
 	@echo "Making $@ ..."
 	$(LIBTOOL_LINK) $(CXX) $(DEFS) $(DEBUG) $(LDFLAGS) -o $@ $(MYSQL_LOBJS) -export-dynamic -rpath $(libdir) -release $(LIBBACCATS_LT_RELEASE) \
-                                                           -soname libbaccats-$(LIBBACCATS_LT_RELEASE).so $(MYSQL_LIBS)
+							   -soname libbaccats-$(LIBBACCATS_LT_RELEASE).so $(MYSQL_LIBS)
 
 libbaccats-postgresql.la: Makefile $(POSTGRESQL_LOBJS)
 	@echo "Making $@ ..."
 	$(LIBTOOL_LINK) $(CXX) $(DEFS) $(DEBUG) $(LDFLAGS) -o $@ $(POSTGRESQL_LOBJS) -export-dynamic -rpath $(libdir) -release $(LIBBACCATS_LT_RELEASE) \
-                                                           -soname libbaccats-$(LIBBACCATS_LT_RELEASE).so $(POSTGRESQL_LIBS)
+							   -soname libbaccats-$(LIBBACCATS_LT_RELEASE).so $(POSTGRESQL_LIBS)
 
 libbaccats-sqlite3.la: Makefile $(SQLITE_LOBJS)
 	@echo "Making $@ ..."
 	$(LIBTOOL_LINK) $(CXX) $(DEFS) $(DEBUG) $(LDFLAGS) -o $@ $(SQLITE_LOBJS) -export-dynamic -rpath $(libdir) -release $(LIBBACCATS_LT_RELEASE) \
-                                                           -soname libbaccats-$(LIBBACCATS_LT_RELEASE).so $(SQLITE_LIBS)
+							   -soname libbaccats-$(LIBBACCATS_LT_RELEASE).so $(SQLITE_LIBS)
 
 #libbaccats-ingres.la: Makefile $(INGRES_LOBJS)
 #	 @echo "Making $@ ..."
 #	 $(LIBTOOL_LINK) $(CXX) $(DEFS) $(DEBUG) $(LDFLAGS) -o $@ $(INGRES_LOBJS) -export-dynamic -rpath $(libdir) -release $(LIBBACCATS_LT_RELEASE) \
-#	                                                    -soname libbaccats-$(LIBBACCATS_LT_RELEASE).so $(INGRES_LIBS)
+#							    -soname libbaccats-$(LIBBACCATS_LT_RELEASE).so $(INGRES_LIBS)
 
 #libbaccats-dbi.la: Makefile $(DBI_LOBJS)
 #	 @echo "Making $@ ..."
 #	 $(LIBTOOL_LINK) $(CXX) $(DEFS) $(DEBUG) $(LDFLAGS) -o $@ $(DBI_LOBJS) -export-dynamic -rpath $(libdir) -release $(LIBBACCATS_LT_RELEASE) \
-#	                                                    -soname libbaccats-$(LIBBACCATS_LT_RELEASE).so $(DBI_LIBS)
+#							    -soname libbaccats-$(LIBBACCATS_LT_RELEASE).so $(DBI_LIBS)
 
 Makefile: $(srcdir)/Makefile.in $(topdir)/config.status
 	cd $(topdir) \
@@ -230,6 +230,8 @@ uninstall-includes:
 
 libtool-install: all
 	$(MKDIR) $(DESTDIR)$(libdir)
+	$(RMF) $(DESTDIR)$(libdir)/libbacsql-*.so $(DESTDIR)$(libdir)/libbacsql.la
+	$(RMF) $(DESTDIR)$(libdir)/libbaccats-*.so $(DESTDIR)$(libdir)/libbaccats.la
 	$(LIBTOOL_INSTALL_FINISH) $(INSTALL_LIB) libbacsql.la $(DESTDIR)$(libdir)
 	$(LIBTOOL_INSTALL_FINISH) $(INSTALL_LIB) libbaccats.la $(DESTDIR)$(libdir)
 	for db_type in @DB_BACKENDS@; do \
diff --git a/src/cats/bdb_mysql.h b/src/cats/bdb_mysql.h
index 6868708..3eddf24 100644
--- a/src/cats/bdb_mysql.h
+++ b/src/cats/bdb_mysql.h
@@ -29,6 +29,13 @@
 #ifndef __BDB_MYSQL_H_
 #define __BDB_MYSQL_H_ 1
 
+/*
+ * Number of insert statements to batch-up in batch insert
+ * mode. We use multi-row inserts only in the batch mode
+ * on the private database connection.
+ */
+#define MYSQL_CHANGES_PER_BATCH_INSERT 32
+
 class B_DB_MYSQL: public B_DB_PRIV {
 private:
    MYSQL *m_db_handle;
diff --git a/src/cats/bvfs.c b/src/cats/bvfs.c
index 80a7cd7..27f76d5 100644
--- a/src/cats/bvfs.c
+++ b/src/cats/bvfs.c
@@ -270,7 +270,10 @@ static void build_path_hierarchy(JCR *jcr, B_DB *mdb,
               "SELECT PPathId FROM PathHierarchy WHERE PathId = %s",
               pathid);
 
-         QUERY_DB(jcr, mdb, mdb->cmd);
+         if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
+            goto bail_out;      /* Query failed, just leave */
+         }
+
          /* Do we have a result ? */
          if (sql_num_rows(mdb) > 0) {
             ppathid_cache.insert(pathid);
@@ -293,7 +296,9 @@ static void build_path_hierarchy(JCR *jcr, B_DB *mdb,
                  "VALUES (%s,%lld)",
                  pathid, (uint64_t) parent.PathId);
             
-            INSERT_DB(jcr, mdb, mdb->cmd);
+            if (!INSERT_DB(jcr, mdb, mdb->cmd)) {
+               goto bail_out;   /* Can't insert the record, just leave */
+            }
 
             edit_uint64(parent.PathId, pathid);
             path = mdb->path;   /* already done */
@@ -313,14 +318,16 @@ bail_out:
 
 /* 
  * Internal function to update path_hierarchy cache with a shared pathid cache
+ * return Error 0
+ *        OK    1
  */
-static void update_path_hierarchy_cache(JCR *jcr,
+static int update_path_hierarchy_cache(JCR *jcr,
                                         B_DB *mdb,
                                         pathid_cache &ppathid_cache,
                                         JobId_t JobId)
 {
    Dmsg0(dbglevel, "update_path_hierarchy_cache()\n");
-
+   int ret=0;
    uint32_t num;
    char jobid[50];
    edit_uint64(JobId, jobid);
@@ -332,6 +339,7 @@ static void update_path_hierarchy_cache(JCR *jcr,
    
    if (!QUERY_DB(jcr, mdb, mdb->cmd) || sql_num_rows(mdb) > 0) {
       Dmsg1(dbglevel, "already computed %d\n", (uint32_t)JobId );
+      ret = 1;
       goto bail_out;
    }
 
@@ -344,7 +352,11 @@ static void update_path_hierarchy_cache(JCR *jcr,
                              "FROM BaseFiles JOIN File AS F USING (FileId) "
                             "WHERE BaseFiles.JobId = %s) AS B",
         jobid, jobid);
-   QUERY_DB(jcr, mdb, mdb->cmd);
+
+   if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
+      Dmsg1(dbglevel, "Can't fill PathVisibility %d\n", (uint32_t)JobId );
+      goto bail_out;
+   }
 
    /* Now we have to do the directory recursion stuff to determine missing
     * visibility We try to avoid recursion, to be as fast as possible We also
@@ -360,7 +372,11 @@ static void update_path_hierarchy_cache(JCR *jcr,
         "AND PathHierarchy.PathId IS NULL "
       "ORDER BY Path", jobid);
    Dmsg1(dbglevel_sql, "q=%s\n", mdb->cmd);
-   QUERY_DB(jcr, mdb, mdb->cmd);
+
+   if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
+      Dmsg1(dbglevel, "Can't get new Path %d\n", (uint32_t)JobId );
+      goto bail_out;
+   }
 
    /* TODO: I need to reuse the DB connection without emptying the result 
     * So, now i'm copying the result in memory to be able to query the
@@ -412,8 +428,8 @@ static void update_path_hierarchy_cache(JCR *jcr,
    }
 
    do {
-      QUERY_DB(jcr, mdb, mdb->cmd);
-   } while (sql_affected_rows(mdb) > 0);
+      ret = QUERY_DB(jcr, mdb, mdb->cmd);
+   } while (ret && sql_affected_rows(mdb) > 0);
    
    Mmsg(mdb->cmd, "UPDATE Job SET HasCache=1 WHERE JobId=%s", jobid);
    UPDATE_DB(jcr, mdb, mdb->cmd);
@@ -421,6 +437,7 @@ static void update_path_hierarchy_cache(JCR *jcr,
 bail_out:
    db_end_transaction(jcr, mdb);
    db_unlock(mdb);
+   return ret;
 }
 
 /* 
@@ -511,24 +528,28 @@ void bvfs_update_cache(JCR *jcr, B_DB *mdb)
 /*
  * Update the bvfs cache for given jobids (1,2,3,4)
  */
-void
+int
 bvfs_update_path_hierarchy_cache(JCR *jcr, B_DB *mdb, char *jobids)
 {
    pathid_cache ppathid_cache;
    JobId_t JobId;
    char *p;
+   int ret=1;
 
    for (p=jobids; ; ) {
       int stat = get_next_jobid_from_list(&p, &JobId);
       if (stat < 0) {
-         return;
+         return 0;
       }
       if (stat == 0) {
          break;
       }
       Dmsg1(dbglevel, "Updating cache for %lld\n", (uint64_t)JobId);
-      update_path_hierarchy_cache(jcr, mdb, ppathid_cache, JobId);
+      if (!update_path_hierarchy_cache(jcr, mdb, ppathid_cache, JobId)) {
+         ret = 0;
+      }
    }
+   return ret;
 }
 
 /* 
@@ -544,7 +565,9 @@ bool Bvfs::ch_dir(const char *path)
 {
    pm_strcpy(db->path, path);
    db->pnl = strlen(db->path);
+   db_lock(db);
    ch_dir(db_get_path_record(jcr, db)); 
+   db_unlock(db);
    return pwd_id != 0;
 }
 
@@ -591,8 +614,12 @@ void Bvfs::get_all_file_versions(DBId_t pathid, DBId_t fnid, const char *client)
 
 DBId_t Bvfs::get_root()
 {
+   int p;
    *db->path = 0;
-   return db_get_path_record(jcr, db);
+   db_lock(db);
+   p = db_get_path_record(jcr, db);
+   db_unlock(db);
+   return p;
 }
 
 static int path_handler(void *ctx, int fields, char **row)
@@ -887,8 +914,9 @@ bool Bvfs::compute_restore_list(char *fileid, char *dirid, char *hardlink,
 
    if (*fileid) {               /* Select files with their direct id */
       init=true;
-      Mmsg(tmp,"SELECT JobId, JobTDate, FileIndex, FilenameId, PathId, FileId "
-                  "FROM File JOIN Job USING (JobId) WHERE FileId IN (%s)",
+      Mmsg(tmp,"SELECT Job.JobId, JobTDate, FileIndex, FilenameId, "
+                      "PathId, FileId "
+                 "FROM File JOIN Job USING (JobId) WHERE FileId IN (%s)",
            fileid);
       pm_strcat(query, tmp.c_str());
    }
@@ -929,7 +957,7 @@ bool Bvfs::compute_restore_list(char *fileid, char *dirid, char *hardlink,
          query.strcat(" UNION ");
       }
 
-      Mmsg(tmp, "SELECT JobId, JobTDate, File.FileIndex, File.FilenameId, "
+      Mmsg(tmp, "SELECT Job.JobId, JobTDate, File.FileIndex, File.FilenameId, "
                         "File.PathId, FileId "
                    "FROM Path JOIN File USING (PathId) JOIN Job USING (JobId) "
                   "WHERE Path.Path LIKE '%s' AND File.JobId IN (%s) ", 
@@ -967,7 +995,7 @@ bool Bvfs::compute_restore_list(char *fileid, char *dirid, char *hardlink,
             tmp.strcat(") UNION ");
             query.strcat(tmp.c_str());
          }
-         Mmsg(tmp,   "SELECT JobId, JobTDate, FileIndex, FilenameId, "
+         Mmsg(tmp,   "SELECT Job.JobId, JobTDate, FileIndex, FilenameId, "
                             "PathId, FileId "
                        "FROM File JOIN Job USING (JobId) WHERE JobId = %lld " 
                         "AND FileIndex IN (%lld", jobid, id);
@@ -992,8 +1020,8 @@ bool Bvfs::compute_restore_list(char *fileid, char *dirid, char *hardlink,
       goto bail_out;
    }
 
-   /* TODO: handle basejob and SQLite3 */
-   Mmsg(query, sql_bvfs_select[db_get_type_index(db)], output_table, output_table);
+   Mmsg(query, sql_bvfs_select[db_get_type_index(db)], 
+        output_table, output_table, output_table);
 
    /* TODO: handle jobid filter */
    Dmsg1(dbglevel_sql, "q=%s\n", query.c_str());
diff --git a/src/cats/bvfs.h b/src/cats/bvfs.h
index 5e5f39f..5be7d90 100644
--- a/src/cats/bvfs.h
+++ b/src/cats/bvfs.h
@@ -197,7 +197,7 @@ private:
 #define bvfs_is_version(row) ((row)[BVFS_Type][0] == BVFS_FILE_VERSION)
 
 
-void bvfs_update_path_hierarchy_cache(JCR *jcr, B_DB *mdb, char *jobids);
+int bvfs_update_path_hierarchy_cache(JCR *jcr, B_DB *mdb, char *jobids);
 void bvfs_update_cache(JCR *jcr, B_DB *mdb);
 char *bvfs_parent_dir(char *path);
 
diff --git a/src/cats/cats.h b/src/cats/cats.h
index d46ba16..b61d748 100644
--- a/src/cats/cats.h
+++ b/src/cats/cats.h
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -282,7 +282,13 @@ public:
 
 
 /* Media record -- same as the database */
-struct MEDIA_DBR {
+class MEDIA_DBR {
+public:
+   MEDIA_DBR() { memset(this, 0, sizeof(MEDIA_DBR)); };
+   ~MEDIA_DBR() {  };
+   void clear() { memset(this, 0, sizeof(MEDIA_DBR)); };
+   void copy(MEDIA_DBR *omr) { memcpy(this, omr, sizeof(MEDIA_DBR)); };
+
    DBId_t MediaId;                    /* Unique volume id */
    char VolumeName[MAX_NAME_LENGTH];  /* Volume name */
    char MediaType[MAX_NAME_LENGTH];   /* Media type */
diff --git a/src/cats/create_sqlite3_database.in b/src/cats/create_sqlite3_database.in
index 5764be0..30bc0bd 100644
--- a/src/cats/create_sqlite3_database.in
+++ b/src/cats/create_sqlite3_database.in
@@ -3,9 +3,14 @@
 # shell script to create Bacula SQLite tables
 
 bindir=@SQLITE_BINDIR@
+PATH=$bindir:$PATH
 cd @working_dir@
 db_name=@db_name@
 
-${bindir}/sqlite3 $* ${db_name}.db <<END-OF-DATA
+sqlite3 $* ${db_name}.db <<END-OF-DATA
+.databases
 END-OF-DATA
+# Allow non root access
+chown @dir_user@:@dir_group@ ${db_name}.db
+chmod 0640 ${db_name}.db
 exit 0
diff --git a/src/cats/dbi.c b/src/cats/dbi.c
index 1bf948f..f48ea0a 100644
--- a/src/cats/dbi.c
+++ b/src/cats/dbi.c
@@ -341,18 +341,24 @@ bail_out:
 
 void B_DB_DBI::db_close_database(JCR *jcr)
 {
-   db_end_transaction(jcr);
+   if (m_connected) {
+      db_end_transaction(jcr);
+   }
    P(mutex);
    m_ref_count--;
    if (m_ref_count == 0) {
-      sql_free_result();
+      if (m_connected) {
+         sql_free_result();
+      }
       db_list->remove(this);
       if (m_connected && m_db_handle) {
          dbi_shutdown_r(m_instance);
          m_db_handle = NULL;
          m_instance = NULL;
       }
-      rwl_destroy(&m_lock);
+      if (rwl_is_init(&m_lock)) {
+         rwl_destroy(&m_lock);
+      }
       free_pool_memory(errmsg);
       free_pool_memory(cmd);
       free_pool_memory(cached_path);
diff --git a/src/cats/ingres.c b/src/cats/ingres.c
index b48fcf9..12bab67 100755
--- a/src/cats/ingres.c
+++ b/src/cats/ingres.c
@@ -288,11 +288,15 @@ bail_out:
 
 void B_DB_INGRES::db_close_database(JCR *jcr)
 {
-   db_end_transaction(jcr);
+   if (m_connected) {
+      db_end_transaction(jcr);
+   }
    P(mutex);
    m_ref_count--;
    if (m_ref_count == 0) {
-      sql_free_result();
+      if (m_connected) {
+         sql_free_result();
+      }
       db_list->remove(this);
       if (m_connected && m_db_handle) {
          INGdisconnectDB(m_db_handle);
@@ -300,7 +304,9 @@ void B_DB_INGRES::db_close_database(JCR *jcr)
       if (m_query_filters) {
          db_destroy_query_filters(m_query_filters);
       }
-      rwl_destroy(&m_lock);
+      if (rwl_is_init(&m_lock)) {
+         rwl_destroy(&m_lock);
+      }
       free_pool_memory(errmsg);
       free_pool_memory(cmd);
       free_pool_memory(cached_path);
diff --git a/src/cats/make_catalog_backup.pl.in b/src/cats/make_catalog_backup.pl.in
index f955d93..efb91fd 100644
--- a/src/cats/make_catalog_backup.pl.in
+++ b/src/cats/make_catalog_backup.pl.in
@@ -69,10 +69,13 @@ sub dump_pgsql
     if ($args{db_port}) {
         $ENV{PGPORT}=$args{db_port};
     }
-
+    if ($args{db_user}) {
+        $ENV{PGUSER}=$args{db_user};
+    }
+    if ($args{db_password}) {
+        $ENV{PGPASSWORD}=$args{db_password};
+    }
     $ENV{PGDATABASE}=$args{db_name};
-    $ENV{PGUSER}=$args{db_user};
-    $ENV{PGPASSWORD}=$args{db_password};
     exec("HOME='$wd' pg_dump -c > '$wd/$args{db_name}.sql'");
     print "Error while executing postgres dump $!\n";
     return 1;               # in case of error
diff --git a/src/cats/make_mysql_tables.in b/src/cats/make_mysql_tables.in
index acced10..0a94b60 100644
--- a/src/cats/make_mysql_tables.in
+++ b/src/cats/make_mysql_tables.in
@@ -10,8 +10,7 @@ bindir=@MYSQL_BINDIR@
 PATH="$bindir:$PATH"
 db_name=${db_name:- at db_name@}
 
-if mysql $* -f <<END-OF-DATA
-USE ${db_name};
+if mysql -D ${db_name} $* -f <<END-OF-DATA
 --
 -- Note, we use BLOB rather than TEXT because in MySQL,
 --  BLOBs are identical to TEXT except that BLOB is case
diff --git a/src/cats/make_postgresql_tables.in b/src/cats/make_postgresql_tables.in
index cb8d58d..9e57088 100644
--- a/src/cats/make_postgresql_tables.in
+++ b/src/cats/make_postgresql_tables.in
@@ -219,7 +219,8 @@ CREATE TABLE media
     primary key (mediaid)
 );
 
-create unique index media_volumename_id on media (volumename);
+CREATE UNIQUE INDEX media_volumename_id ON Media (VolumeName);
+CREATE INDEX media_poolid_idx ON Media (PoolId);
 
  
 CREATE TABLE MediaType (
diff --git a/src/cats/mysql.c b/src/cats/mysql.c
index 513e4bb..a2ed279 100644
--- a/src/cats/mysql.c
+++ b/src/cats/mysql.c
@@ -241,12 +241,16 @@ bail_out:
 
 void B_DB_MYSQL::db_close_database(JCR *jcr)
 {
-   db_end_transaction(jcr);
+   if (m_connected) {
+      db_end_transaction(jcr);
+   }
    P(mutex);
    m_ref_count--;
    Dmsg3(100, "closedb ref=%d connected=%d db=%p\n", m_ref_count, m_connected, m_db_handle);
    if (m_ref_count == 0) {
-      sql_free_result();
+      if (m_connected) {
+         sql_free_result();
+      }
       db_list->remove(this);
       if (m_connected) {
          Dmsg1(100, "close db=%p\n", m_db_handle);
@@ -256,7 +260,9 @@ void B_DB_MYSQL::db_close_database(JCR *jcr)
 //       mysql_server_end();
 #endif
       }
-      rwl_destroy(&m_lock);
+      if (rwl_is_init(&m_lock)) {
+         rwl_destroy(&m_lock);
+      }
       free_pool_memory(errmsg);
       free_pool_memory(cmd);
       free_pool_memory(cached_path);
@@ -588,6 +594,11 @@ bool B_DB_MYSQL::sql_batch_start(JCR *jcr)
                               "DeltaSeq integer)");
    db_unlock(this);
 
+   /*
+    * Keep track of the number of changes in batch mode.
+    */
+   changes = 0;
+
    return retval;
 }
 
@@ -600,6 +611,13 @@ bool B_DB_MYSQL::sql_batch_end(JCR *jcr, const char *error)
 {
    m_status = 0;
 
+   /*
+    * Flush any pending inserts.
+    */
+   if (changes) {
+      return sql_query(cmd);
+   }
+
    return true;
 }
 
@@ -624,12 +642,40 @@ bool B_DB_MYSQL::sql_batch_insert(JCR *jcr, ATTR_DBR *ar)
       digest = ar->Digest;
    }
 
-   Mmsg(cmd, "INSERT INTO batch VALUES "
-        "(%u,%s,'%s','%s','%s','%s',%u)",
-        ar->FileIndex, edit_int64(ar->JobId,ed1), esc_path,
-        esc_name, ar->attr, digest, ar->DeltaSeq);
+   /*
+    * Try to batch up multiple inserts using multi-row inserts.
+    */
+   if (changes == 0) {
+      Mmsg(cmd, "INSERT INTO batch VALUES "
+           "(%u,%s,'%s','%s','%s','%s',%u)",
+           ar->FileIndex, edit_int64(ar->JobId,ed1), esc_path,
+           esc_name, ar->attr, digest, ar->DeltaSeq);
+      changes++;
+   } else {
+      /*
+       * We use the esc_obj for temporary storage otherwise
+       * we keep on copying data.
+       */
+      Mmsg(esc_obj, ",(%u,%s,'%s','%s','%s','%s',%u)",
+           ar->FileIndex, edit_int64(ar->JobId,ed1), esc_path,
+           esc_name, ar->attr, digest, ar->DeltaSeq);
+      pm_strcat(cmd, esc_obj);
+      changes++;
+   }
 
-   return sql_query(cmd);
+   /*
+    * See if we need to flush the query buffer filled
+    * with multi-row inserts.
+    */
+   if ((changes % MYSQL_CHANGES_PER_BATCH_INSERT) == 0) {
+      if (!sql_query(cmd)) {
+         changes = 0;
+         return false;
+      } else {
+         changes = 0;
+      }
+   }
+   return true;
 }
 
 /*
diff --git a/src/cats/postgresql.c b/src/cats/postgresql.c
index 618b45b..a350830 100644
--- a/src/cats/postgresql.c
+++ b/src/cats/postgresql.c
@@ -278,16 +278,22 @@ bail_out:
 
 void B_DB_POSTGRESQL::db_close_database(JCR *jcr)
 {
-   db_end_transaction(jcr);
+   if (m_connected) {
+      db_end_transaction(jcr);
+   }
    P(mutex);
    m_ref_count--;
    if (m_ref_count == 0) {
-      sql_free_result();
+      if (m_connected) {
+         sql_free_result();
+      }
       db_list->remove(this);
       if (m_connected && m_db_handle) {
          PQfinish(m_db_handle);
       }
-      rwl_destroy(&m_lock);
+      if (rwl_is_init(&m_lock)) {
+         rwl_destroy(&m_lock);
+      }
       free_pool_memory(errmsg);
       free_pool_memory(cmd);
       free_pool_memory(cached_path);
diff --git a/src/cats/sql.c b/src/cats/sql.c
index 2c4fa43..9d589fd 100644
--- a/src/cats/sql.c
+++ b/src/cats/sql.c
@@ -713,15 +713,12 @@ bool db_open_batch_connexion(JCR *jcr, B_DB *mdb)
 {
    bool multi_db;
 
-   if (mdb->batch_insert_available())
-      multi_db = true;   /* we force a new connection only if batch insert is enabled */
-   else
-      multi_db = false;
+   multi_db = mdb->batch_insert_available();
 
    if (!jcr->db_batch) {
       jcr->db_batch = db_clone_database_connection(mdb, jcr, multi_db);
       if (!jcr->db_batch) {
-         Mmsg0(&mdb->errmsg, _("Could not init database batch connection"));
+         Mmsg0(&mdb->errmsg, _("Could not init database batch connection\n"));
          Jmsg(jcr, M_FATAL, 0, "%s", mdb->errmsg);
          return false;
       }
diff --git a/src/cats/sql_cmds.c b/src/cats/sql_cmds.c
index 9a21b28..6ebcb62 100644
--- a/src/cats/sql_cmds.c
+++ b/src/cats/sql_cmds.c
@@ -40,7 +40,7 @@
 
 #include "bacula.h"
 
-const char *get_restore_objects = 
+const char *get_restore_objects =
    "SELECT JobId,ObjectLength,ObjectFullLength,ObjectIndex,"
            "ObjectType,ObjectCompression,FileIndex,ObjectName,"
            "RestoreObject,PluginName "
@@ -52,18 +52,18 @@ const char *get_restore_objects =
 const char *cleanup_created_job =
    "UPDATE Job SET JobStatus='f', StartTime=SchedTime, EndTime=SchedTime "
    "WHERE JobStatus = 'C'";
-const char *cleanup_running_job = 
+const char *cleanup_running_job =
    "UPDATE Job SET JobStatus='f', EndTime=StartTime WHERE JobStatus = 'R'";
 
 /* For sql_update.c db_update_stats */
 const char *fill_jobhisto =
-        "INSERT INTO JobHisto (" 
+        "INSERT INTO JobHisto ("
            "JobId, Job, Name, Type, Level, ClientId, JobStatus, "
            "SchedTime, StartTime, EndTime, RealEndTime, JobTDate, "
            "VolSessionId, VolSessionTime, JobFiles, JobBytes, ReadBytes, "
            "JobErrors, JobMissingFiles, PoolId, FileSetId, PriorJobId, "
            "PurgedFiles, HasBase, Reviewed, Comment ) "
-        "SELECT " 
+        "SELECT "
            "JobId, Job, Name, Type, Level, ClientId, JobStatus, "
            "SchedTime, StartTime, EndTime, RealEndTime, JobTDate, "
            "VolSessionId, VolSessionTime, JobFiles, JobBytes, ReadBytes, "
@@ -87,14 +87,14 @@ const char *client_backups =
    " WHERE Client.Name='%s'"
    " AND FileSet='%s'"
    " AND Client.ClientId=Job.ClientId"
-   " AND JobStatus IN ('T','W') AND Type='B'" 
+   " AND JobStatus IN ('T','W') AND Type='B'"
    " AND JobMedia.JobId=Job.JobId AND JobMedia.MediaId=Media.MediaId"
    " AND Job.FileSetId=FileSet.FileSetId"
    " ORDER BY Job.StartTime";
 
 /* ====== ua_prune.c */
 
-const char *sel_JobMedia = 
+const char *sel_JobMedia =
    "SELECT DISTINCT JobMedia.JobId FROM JobMedia,Job "
    "WHERE MediaId=%s AND Job.JobId=JobMedia.JobId "
    "AND Job.JobTDate<%s";
@@ -117,7 +117,7 @@ const char *uar_list_jobs =
    "FROM Client,Job WHERE Client.ClientId=Job.ClientId AND JobStatus IN ('T','W') "
    "AND Type='B' ORDER BY StartTime DESC LIMIT 20";
 
-const char *uar_print_jobs =  
+const char *uar_print_jobs =
    "SELECT DISTINCT JobId,Level,JobFiles,JobBytes,StartTime,VolumeName"
    " FROM Job JOIN JobMedia USING (JobId) JOIN Media USING (MediaId) "
    " WHERE JobId IN (%s) "
@@ -199,7 +199,7 @@ const char *uar_list_temp =
    " ORDER BY StartTime ASC";
 
 
-const char *uar_sel_jobid_temp = 
+const char *uar_sel_jobid_temp =
    "SELECT DISTINCT JobId,StartTime FROM temp ORDER BY StartTime ASC";
 
 const char *uar_sel_all_temp1 = "SELECT * FROM temp1";
@@ -221,7 +221,7 @@ const char *uar_sel_fileset =
  * use Ids to select the FileSet name. (like in accurate)
  */
 const char *uar_sel_filesetid =
-   "SELECT MAX(FileSetId) "
+   "SELECT MAX(FileSet.FileSetId) "
      "FROM FileSet JOIN Job USING (FileSetId) "
          "WHERE Job.ClientId=%s "
         "GROUP BY FileSet";
@@ -257,20 +257,20 @@ const char *uar_jobids_fileindex =
    "ORDER BY Job.StartTime DESC LIMIT 1";
 
 /* Query to get list of files from table -- presuably built by an external program */
-const char *uar_jobid_fileindex_from_table = 
+const char *uar_jobid_fileindex_from_table =
    "SELECT JobId,FileIndex FROM %s ORDER BY JobId, FileIndex ASC";
 
-/* Get the list of the last recent version per Delta with a given jobid list 
- * This is a tricky part because with SQL the result of 
+/* Get the list of the last recent version per Delta with a given jobid list
+ * This is a tricky part because with SQL the result of
  *
  * SELECT MAX(A), B, C, D FROM... GROUP BY (B,C)
  *
  * doesn't give the good result (for D).
  *
  * With PostgreSQL, we can use DISTINCT ON(), but with Mysql or Sqlite,
- * we need an extra join using JobTDate. 
+ * we need an extra join using JobTDate.
  */
-const char *select_recent_version_with_basejob_default = 
+static const char *select_recent_version_with_basejob_default =
 "SELECT FileId, Job.JobId AS JobId, FileIndex, File.PathId AS PathId, "
        "File.FilenameId AS FilenameId, LStat, MD5, DeltaSeq, "
        "Job.JobTDate AS JobTDate "
@@ -281,7 +281,7 @@ const char *select_recent_version_with_basejob_default =
           "FROM File JOIN Job USING (JobId) "    /* from selected backup */
          "WHERE File.JobId IN (%s) "
           "UNION ALL "
-        "SELECT JobTDate, PathId, FilenameId "   /* Get all files from */ 
+        "SELECT JobTDate, PathId, FilenameId "   /* Get all files from */
           "FROM BaseFiles "                      /* BaseJob */
                "JOIN File USING (FileId) "
                "JOIN Job  ON    (BaseJobId = Job.JobId) "
@@ -334,10 +334,10 @@ const char *select_recent_version_with_basejob[] = {
  * If we detect a gap, we can discard further pieces
  * If a file starts at 1 instead of 0, the file has been deleted, and further
  * pieces are useless.
- * 
+ *
  * This control should be reset for each new file
  */
-const char *select_recent_version_with_basejob_and_delta_default = 
+static const char *select_recent_version_with_basejob_and_delta_default =
 "SELECT FileId, Job.JobId AS JobId, FileIndex, File.PathId AS PathId, "
        "File.FilenameId AS FilenameId, LStat, MD5, File.DeltaSeq AS DeltaSeq, "
        "Job.JobTDate AS JobTDate "
@@ -348,7 +348,7 @@ const char *select_recent_version_with_basejob_and_delta_default =
          "FROM File JOIN Job USING (JobId) "          /* from selected backup */
         "WHERE File.JobId IN (%s) "
          "UNION ALL "
-       "SELECT JobTDate, PathId, FilenameId, DeltaSeq " /*Get all files from */ 
+       "SELECT JobTDate, PathId, FilenameId, DeltaSeq " /*Get all files from */
          "FROM BaseFiles "                            /* BaseJob */
               "JOIN File USING (FileId) "
               "JOIN Job  ON    (BaseJobId = Job.JobId) "
@@ -392,7 +392,7 @@ const char *select_recent_version_with_basejob_and_delta[] = {
 /* Get the list of the last recent version with a given BaseJob jobid list
  * We don't handle Delta with BaseJobs, they have only Full files
  */
-const char *select_recent_version_default = 
+static const char *select_recent_version_default =
   "SELECT j1.JobId AS JobId, f1.FileId AS FileId, f1.FileIndex AS FileIndex, "
           "f1.PathId AS PathId, f1.FilenameId AS FilenameId, "
           "f1.LStat AS LStat, f1.MD5 AS MD5, j1.JobTDate "
@@ -426,10 +426,10 @@ const char *select_recent_version[] = {
    select_recent_version_default
 };
 
-/* We don't create this table as TEMPORARY because MySQL MyISAM 
+/* We don't create this table as TEMPORARY because MySQL MyISAM
  * 5.0 and 5.1 are unable to run further queries in this mode
  */
-const char *create_temp_accurate_jobids_default =
+static const char *create_temp_accurate_jobids_default =
  "CREATE TABLE btemp3%s AS "
     "SELECT JobId, StartTime, EndTime, JobTDate, PurgedFiles "
       "FROM Job JOIN FileSet USING (FileSetId) "
@@ -465,7 +465,8 @@ const char *create_temp_basefile[] = {
    /* Mysql */
    "CREATE TEMPORARY TABLE basefile%lld ("
    "Path BLOB NOT NULL,"
-   "Name BLOB NOT NULL)",
+   "Name BLOB NOT NULL,"
+   "INDEX (Path(255), Name(255)))",
 
    /* Postgresql */
    "CREATE TEMPORARY TABLE basefile%lld ("
@@ -540,7 +541,7 @@ const char *create_deltabs[] = {
    "JobStatus BINARY(1))",
 
    /* Postgresql */
-   "CREATE TEMPORARY TABLE DelCandidates (" 
+   "CREATE TEMPORARY TABLE DelCandidates ("
    "JobId INTEGER NOT NULL, "
    "PurgedFiles SMALLINT, "
    "FileSetId INTEGER, "
@@ -556,7 +557,7 @@ const char *create_deltabs[] = {
    "JobStatus CHAR)",
 
    /* Ingres */
-   "DECLARE GLOBAL TEMPORARY TABLE DelCandidates (" 
+   "DECLARE GLOBAL TEMPORARY TABLE DelCandidates ("
    "JobId INTEGER NOT NULL, "
    "PurgedFiles SMALLINT, "
    "FileSetId INTEGER, "
@@ -569,7 +570,7 @@ const char *create_deltabs[] = {
 
 /* Select the first available Copy Job that must be upgraded to a Backup job when the original backup job is expired. */
 
-const char *uap_upgrade_copies_oldest_job_default = 
+static const char *uap_upgrade_copies_oldest_job_default =
 "CREATE TEMPORARY TABLE cpy_tmp AS "
        "SELECT MIN(JobId) AS JobId FROM Job "     /* Choose the oldest job */
         "WHERE Type='%c' "                        /* JT_JOB_COPY */
@@ -738,7 +739,7 @@ const char *uar_create_temp1[] = {
    "ON COMMIT PRESERVE ROWS WITH NORECOVERY"
 };
 
-/* Query to get all files in a directory -- no recursing   
+/* Query to get all files in a directory -- no recursing
  *  Note, for PostgreSQL since it respects the "Single Value
  *  rule", the results of the SELECT will be unoptimized.
  *  I.e. the same file will be restored multiple times, once
@@ -817,17 +818,27 @@ const char *sql_get_max_connections[] = {
    "SELECT 0"
 };
 
-/* TODO: Check for corner cases with MySQL and SQLite3
+/*
  *  The Group By can return strange numbers when having multiple
  *  version of a file in the same dataset.
  */
+const char *default_sql_bvfs_select = 
+"CREATE TABLE %s AS "
+"SELECT File.JobId, File.FileIndex, File.FileId "
+"FROM Job, File, ( "
+    "SELECT MAX(JobTDate) AS JobTDate, PathId, FilenameId "
+       "FROM btemp%s GROUP BY PathId, FilenameId "
+    ") AS T1 JOIN Filename USING (FilenameId) "
+"WHERE T1.JobTDate = Job.JobTDate "
+  "AND Job.JobId = File.JobId "
+  "AND T1.PathId = File.PathId "
+  "AND T1.FilenameId = File.FilenameId "
+  "AND File.FileIndex > 0 "
+  "AND Job.JobId IN (SELECT DISTINCT JobId FROM btemp%s) ";
+
 const char *sql_bvfs_select[] = {
    /* Mysql */
-   "CREATE TABLE %s AS ( "
-      "SELECT JobId, FileIndex, FileId, max(JobTDate) as JobTDate "
-        "FROM btemp%s "
-      "GROUP BY PathId, FilenameId "
-   "HAVING FileIndex > 0)",
+   default_sql_bvfs_select,
 
    /* Postgresql */
    "CREATE TABLE %s AS ( "
@@ -841,18 +852,13 @@ const char *sql_bvfs_select[] = {
           "WHERE FileIndex > 0)",
 
    /* SQLite3 */
-   "CREATE TABLE %s AS "
-      "SELECT JobId, FileIndex, FileId, max(JobTDate) as JobTDate "
-        "FROM btemp%s "
-      "GROUP BY PathId, FilenameId "
-   "HAVING FileIndex > 0",
-   
+   default_sql_bvfs_select,
 
    /* Ingres (TODO) */
    "SELECT 0"
 };
 
-const char *sql_bvfs_list_files_default = 
+static const char *sql_bvfs_list_files_default =
 "SELECT 'F', T1.PathId, T1.FilenameId, Filename.Name, "
         "File.JobId, File.LStat, File.FileId "
 "FROM Job, File, ( "
@@ -867,13 +873,15 @@ const char *sql_bvfs_list_files_default =
                "JOIN File USING (FileId) "
                "JOIN Job  ON    (BaseJobId = Job.JobId) "
          "WHERE BaseFiles.JobId IN (%s)   AND PathId = %s "
-       ") AS tmp GROUP BY PathId, FilenameId LIMIT %lld OFFSET %lld"
+       ") AS tmp GROUP BY PathId, FilenameId "
+     "LIMIT %lld OFFSET %lld"
     ") AS T1 JOIN Filename USING (FilenameId) "
 "WHERE T1.JobTDate = Job.JobTDate "
   "AND Job.JobId = File.JobId "
   "AND T1.PathId = File.PathId "
   "AND T1.FilenameId = File.FilenameId "
   "AND Filename.Name != '' "
+  "AND File.FileIndex > 0 "
   " %s "                     /* AND Name LIKE '' */
   "AND (Job.JobId IN ( "
         "SELECT DISTINCT BaseJobId FROM BaseFiles WHERE JobId IN (%s)) "
@@ -886,20 +894,24 @@ const char *sql_bvfs_list_files[] = {
 
    /* JobId PathId JobId PathId WHERE? Filename? Limit Offset*/
    /* Postgresql */
- "SELECT DISTINCT ON (FilenameId) 'F', PathId, T.FilenameId, "
-  "Filename.Name, JobId, LStat, FileId "
-   "FROM "
-       "(SELECT FileId, JobId, PathId, FilenameId, FileIndex, LStat, MD5 "
-          "FROM File WHERE JobId IN (%s) AND PathId = %s "
-         "UNION ALL "
-        "SELECT File.FileId, File.JobId, PathId, FilenameId, "
-               "File.FileIndex, LStat, MD5 "
-          "FROM BaseFiles JOIN File USING (FileId) "
-         "WHERE BaseFiles.JobId IN (%s) AND File.PathId = %s "
-        ") AS T JOIN Job USING (JobId) JOIN Filename USING (FilenameId) "
-        " WHERE Filename.Name != '' "
-        " %s "               /* AND Name LIKE '' */
-   "ORDER BY FilenameId, StartTime DESC LIMIT %lld OFFSET %lld",
+ "SELECT Type, PathId, FilenameId, Name, JobId, LStat, FileId "
+  "FROM ("
+   "SELECT DISTINCT ON (FilenameId) 'F' as Type, PathId, T.FilenameId, "
+    "Filename.Name, JobId, LStat, FileId, FileIndex "
+     "FROM "
+         "(SELECT FileId, JobId, PathId, FilenameId, FileIndex, LStat, MD5 "
+            "FROM File WHERE JobId IN (%s) AND PathId = %s "
+           "UNION ALL "
+          "SELECT File.FileId, File.JobId, PathId, FilenameId, "
+                 "File.FileIndex, LStat, MD5 "
+            "FROM BaseFiles JOIN File USING (FileId) "
+           "WHERE BaseFiles.JobId IN (%s) AND File.PathId = %s "
+          ") AS T JOIN Job USING (JobId) JOIN Filename USING (FilenameId) "
+          " WHERE Filename.Name != '' "
+          " %s "               /* AND Name LIKE '' */
+     "ORDER BY FilenameId, StartTime DESC "
+   ") AS A WHERE A.FileIndex > 0 "
+   "LIMIT %lld OFFSET %lld ",
 
    /* SQLite */
    sql_bvfs_list_files_default,
@@ -1015,3 +1027,64 @@ const char *match_query[] = {
    /* Ingres */
    "~"
 };
+
+static const char *insert_counter_values_default =
+   "INSERT INTO Counters (Counter, MinValue, "
+   "MaxValue, CurrentValue, WrapCounter) "
+   "VALUES ('%s','%d','%d','%d','%s')";
+
+const char *insert_counter_values[] = {
+   /* Mysql */
+   "INSERT INTO Counters (Counter, Counters.MinValue, "
+   "Counters.MaxValue, CurrentValue, WrapCounter) "
+   "VALUES ('%s','%d','%d','%d','%s')",
+
+   /* Postgresql */
+   insert_counter_values_default,
+
+   /* SQLite3 */
+   insert_counter_values_default,
+
+   /* Ingres */
+   insert_counter_values_default
+};
+
+static const char *select_counter_values_default =
+   "SELECT MinValue, MaxValue, CurrentValue, WrapCounter "
+   "FROM Counters WHERE Counter='%s'";
+
+const char *select_counter_values[] = {
+   /* Mysql */
+   "SELECT Counters.MinValue, Counters.MaxValue, CurrentValue, WrapCounter "
+   "FROM Counters WHERE Counter='%s'",
+
+   /* Postgresql */
+   select_counter_values_default,
+
+   /* SQLite3 */
+   select_counter_values_default,
+
+   /* Ingres */
+   select_counter_values_default
+};
+
+static const char *update_counter_values_default =
+   "UPDATE Counters SET "
+   "MinValue=%d, MaxValue=%d, CurrentValue=%d, WrapCounter='%s'"
+   "WHERE Counter='%s'";
+
+const char *update_counter_values[] = {
+   /* Mysql */
+   "UPDATE Counters SET "
+   "Counters.MinValue=%d, Counters.MaxValue=%d, CurrentValue=%d, WrapCounter='%s'"
+   "WHERE Counter='%s'",
+
+   /* Postgresql */
+   update_counter_values_default,
+
+   /* SQLite3 */
+   update_counter_values_default,
+
+   /* Ingres */
+   update_counter_values_default
+};
diff --git a/src/cats/sql_cmds.h b/src/cats/sql_cmds.h
index 884c0ec..9ffbc9d 100644
--- a/src/cats/sql_cmds.h
+++ b/src/cats/sql_cmds.h
@@ -84,3 +84,6 @@ extern const char CATS_IMP_EXP *batch_unlock_tables_query[];
 extern const char CATS_IMP_EXP *batch_fill_path_query[];
 extern const char CATS_IMP_EXP *batch_fill_filename_query[];
 extern const char CATS_IMP_EXP *match_query[];
+extern const char CATS_IMP_EXP *insert_counter_values[];
+extern const char CATS_IMP_EXP *select_counter_values[];
+extern const char CATS_IMP_EXP *update_counter_values[];
diff --git a/src/cats/sql_create.c b/src/cats/sql_create.c
index a4a6f47..09fd90c 100644
--- a/src/cats/sql_create.c
+++ b/src/cats/sql_create.c
@@ -570,6 +570,7 @@ int db_create_path_record(JCR *jcr, B_DB *mdb, ATTR_DBR *ar)
    int stat;
    int num_rows;
 
+   mdb->errmsg[0] = 0;
    mdb->esc_name = check_pool_memory_size(mdb->esc_name, 2*mdb->pnl+2);
    db_escape_string(jcr, mdb, mdb->esc_name, mdb->path, mdb->pnl);
 
@@ -655,9 +656,9 @@ int db_create_counter_record(JCR *jcr, B_DB *mdb, COUNTER_DBR *cr)
       return 1;
    }
    mdb->db_escape_string(jcr, esc, cr->Counter, strlen(cr->Counter));
+
    /* Must create it */
-   Mmsg(mdb->cmd, "INSERT INTO Counters (Counter,Counters.MinValue,Counters.MaxValue,CurrentValue,"
-      "WrapCounter) VALUES ('%s','%d','%d','%d','%s')",
+   Mmsg(mdb->cmd, insert_counter_values[db_get_type_index(mdb)],
         esc, cr->MinValue, cr->MaxValue, cr->CurrentValue,
         cr->WrapCounter);
 
@@ -673,7 +674,6 @@ int db_create_counter_record(JCR *jcr, B_DB *mdb, COUNTER_DBR *cr)
    return stat;
 }
 
-
 /**
  * Create a FileSet record. This record is unique in the
  *  name and the MD5 signature of the include/exclude sets.
@@ -891,6 +891,11 @@ bool db_create_batch_file_attributes_record(JCR *jcr, B_DB *mdb, ATTR_DBR *ar)
    Dmsg1(dbglevel, "Fname=%s\n", ar->fname);
    Dmsg0(dbglevel, "put_file_into_catalog\n");
 
+   if (jcr->batch_started && jcr->db_batch->changes > 800000) {
+      db_write_batch_file_records(jcr);
+      jcr->db_batch->changes = 0;
+   }
+
    /* Open the dedicated connexion */
    if (!jcr->batch_started) {
       if (!db_open_batch_connexion(jcr, mdb)) {
@@ -904,20 +909,10 @@ bool db_create_batch_file_attributes_record(JCR *jcr, B_DB *mdb, ATTR_DBR *ar)
       }
       jcr->batch_started = true;
    }
-   B_DB *bdb = jcr->db_batch;
-
-   split_path_and_file(jcr, bdb, ar->fname);
 
+   split_path_and_file(jcr, jcr->db_batch, ar->fname);
 
-/*
- * if (bdb->changes > 100000) {
- *    db_write_batch_file_records(jcr);
- *    bdb->changes = 0;
- *     sql_batch_start(jcr, bdb);
- * }
- */
-
-   return sql_batch_insert(jcr, bdb, ar);
+   return sql_batch_insert(jcr, jcr->db_batch, ar);
 }
 
 /**
@@ -1007,6 +1002,7 @@ static int db_create_filename_record(JCR *jcr, B_DB *mdb, ATTR_DBR *ar)
    SQL_ROW row;
    int num_rows;
 
+   mdb->errmsg[0] = 0;
    mdb->esc_name = check_pool_memory_size(mdb->esc_name, 2*mdb->fnl+2);
    db_escape_string(jcr, mdb, mdb->esc_name, mdb->fname, mdb->fnl);
    
@@ -1053,25 +1049,30 @@ bool db_create_attributes_record(JCR *jcr, B_DB *mdb, ATTR_DBR *ar)
 {
    bool ret;
 
+   mdb->errmsg[0] = 0;
    /*
     * Make sure we have an acceptable attributes record.
     */
    if (!(ar->Stream == STREAM_UNIX_ATTRIBUTES ||
          ar->Stream == STREAM_UNIX_ATTRIBUTES_EX)) {
-      Jmsg(jcr, M_FATAL, 0, _("Attempt to put non-attributes into catalog. Stream=%d\n"));
+      Mmsg1(&mdb->errmsg, _("Attempt to put non-attributes into catalog. Stream=%d\n"),
+         ar->Stream);
+      Jmsg(jcr, M_FATAL, 0, "%s", mdb->errmsg); 
       return false;
    }
 
    if (ar->FileType != FT_BASE) {
       if (mdb->batch_insert_available()) {
          ret = db_create_batch_file_attributes_record(jcr, mdb, ar);
+         /* Error message already printed */
       } else {
          ret = db_create_file_attributes_record(jcr, mdb, ar);
       }
    } else if (jcr->HasBase) {
       ret = db_create_base_file_attributes_record(jcr, mdb, ar);
    } else {
-      Jmsg0(jcr, M_FATAL, 0, _("Cannot Copy/Migrate job using BaseJob"));
+      Mmsg0(&mdb->errmsg, _("Cannot Copy/Migrate job using BaseJob.\n"));
+      Jmsg(jcr, M_FATAL, 0, "%s", mdb->errmsg);
       ret = true;               /* in copy/migration what do we do ? */
    }
 
diff --git a/src/cats/sql_find.c b/src/cats/sql_find.c
index d012d6e..a9b8020 100644
--- a/src/cats/sql_find.c
+++ b/src/cats/sql_find.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -381,7 +381,7 @@ db_find_next_volume(JCR *jcr, B_DB *mdb, int item, bool InChanger, MEDIA_DBR *mr
          edit_int64(mr->PoolId, ed1), esc_type,
          esc_status, changer.c_str(), order, item);
    }
-   Dmsg1(050, "fnextvol=%s\n", mdb->cmd);
+   Dmsg1(100, "fnextvol=%s\n", mdb->cmd);
    if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
       db_unlock(mdb);
       return 0;
diff --git a/src/cats/sql_get.c b/src/cats/sql_get.c
index f3e4a24..69f3195 100644
--- a/src/cats/sql_get.c
+++ b/src/cats/sql_get.c
@@ -756,9 +756,7 @@ int db_get_counter_record(JCR *jcr, B_DB *mdb, COUNTER_DBR *cr)
    db_lock(mdb);
    mdb->db_escape_string(jcr, esc, cr->Counter, strlen(cr->Counter));
 
-   Mmsg(mdb->cmd, "SELECT Counters.MinValue,Counters.MaxValue,CurrentValue,WrapCounter "
-      "FROM Counters WHERE Counter='%s'", esc);
-
+   Mmsg(mdb->cmd, select_counter_values[mdb->db_get_type_index()], esc);
    if (QUERY_DB(jcr, mdb, mdb->cmd)) {
       num_rows = sql_num_rows(mdb);
 
diff --git a/src/cats/sql_glue.c b/src/cats/sql_glue.c
index a86195c..8042ec3 100644
--- a/src/cats/sql_glue.c
+++ b/src/cats/sql_glue.c
@@ -113,16 +113,19 @@ void db_end_transaction(JCR *jcr, B_DB *mdb)
 
 bool db_sql_query(B_DB *mdb, const char *query, int flags)
 {
+   mdb->errmsg[0] = 0;
    return mdb->db_sql_query(query, flags);
 }
 
 bool db_sql_query(B_DB *mdb, const char *query, DB_RESULT_HANDLER *result_handler, void *ctx)
 {
+   mdb->errmsg[0] = 0;
    return mdb->db_sql_query(query, result_handler, ctx);
 }
 
 bool db_big_sql_query(B_DB *mdb, const char *query, DB_RESULT_HANDLER *result_handler, void *ctx)
 {
+   mdb->errmsg[0] = 0;
    return mdb->db_big_sql_query(query, result_handler, ctx);
 }
 
@@ -138,6 +141,7 @@ SQL_ROW sql_fetch_row(B_DB *mdb)
 
 bool sql_query(B_DB *mdb, const char *query, int flags)
 {
+   mdb->errmsg[0] = 0;
    return ((B_DB_PRIV *)mdb)->sql_query(query, flags);
 }
 
diff --git a/src/cats/sql_update.c b/src/cats/sql_update.c
index 422edd8..2b5025b 100644
--- a/src/cats/sql_update.c
+++ b/src/cats/sql_update.c
@@ -253,10 +253,9 @@ int db_update_counter_record(JCR *jcr, B_DB *mdb, COUNTER_DBR *cr)
    db_lock(mdb);
    mdb->db_escape_string(jcr, esc, cr->Counter, strlen(cr->Counter));
    Mmsg(mdb->cmd,
-"UPDATE Counters SET Counters.MinValue=%d,Counters.MaxValue=%d,CurrentValue=%d,"
-"WrapCounter='%s' WHERE Counter='%s'",
-      cr->MinValue, cr->MaxValue, cr->CurrentValue,
-      cr->WrapCounter, esc);
+        update_counter_values[mdb->db_get_type_index()],
+        cr->MinValue, cr->MaxValue, cr->CurrentValue,
+        cr->WrapCounter, esc);
 
    int stat = UPDATE_DB(jcr, mdb, mdb->cmd);
    db_unlock(mdb);
diff --git a/src/cats/sqlite.c b/src/cats/sqlite.c
index e012a7f..d3ff4d6 100644
--- a/src/cats/sqlite.c
+++ b/src/cats/sqlite.c
@@ -230,16 +230,22 @@ bail_out:
 
 void B_DB_SQLITE::db_close_database(JCR *jcr)
 {
-   db_end_transaction(jcr);
+   if (m_connected) {
+      db_end_transaction(jcr);
+   }
    P(mutex);
    m_ref_count--;
    if (m_ref_count == 0) {
-      sql_free_result();
+      if (m_connected) {
+         sql_free_result();
+      }
       db_list->remove(this);
       if (m_connected && m_db_handle) {
          sqlite3_close(m_db_handle);
       }
-      rwl_destroy(&m_lock);
+      if (rwl_is_init(&m_lock)) {
+         rwl_destroy(&m_lock);
+      }
       free_pool_memory(errmsg);
       free_pool_memory(cmd);
       free_pool_memory(cached_path);
diff --git a/src/cats/update_mysql_tables.in b/src/cats/update_mysql_tables.in
index f8a7ec3..f392c94 100644
--- a/src/cats/update_mysql_tables.in
+++ b/src/cats/update_mysql_tables.in
@@ -8,9 +8,9 @@ echo " which is needed to convert from Bacula Community version 5.0.x to 5.2.x"
 echo " "
 bindir=@MYSQL_BINDIR@
 PATH="$bindir:$PATH"
-db_name=@db_name@
+db_name=${db_name:- at db_name@}
 
-mysql $* -D ${db_name} -e "select VersionId from Version\G" >/tmp/$$
+mysql -D ${db_name} $* -e "select VersionId from Version\G" >/tmp/$$
 DBVERSION=`sed -n -e 's/^VersionId: \(.*\)$/\1/p' /tmp/$$`
 if [ $DBVERSION != 12 ] ; then
    echo " "
@@ -21,9 +21,7 @@ if [ $DBVERSION != 12 ] ; then
    exit 1
 fi
 
-if mysql $* -f <<END-OF-DATA
-USE ${db_name};
-
+if mysql -D ${db_name} $* -f <<END-OF-DATA
 CREATE TABLE RestoreObject (
    RestoreObjectId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
    ObjectName BLOB NOT NULL,
diff --git a/src/cats/update_postgresql_tables.in b/src/cats/update_postgresql_tables.in
index d737bcf..f97cb60 100644
--- a/src/cats/update_postgresql_tables.in
+++ b/src/cats/update_postgresql_tables.in
@@ -45,6 +45,9 @@ ALTER TABLE File ADD COLUMN DeltaSeq smallint default 0;
 UPDATE Version SET VersionId=14;
 COMMIT;
 
+set client_min_messages = fatal;
+CREATE INDEX media_poolid_idx on Media (PoolId);
+
 ANALYSE;
 
 END-OF-DATA
diff --git a/src/cats/update_sqlite3_tables.in b/src/cats/update_sqlite3_tables.in
index 2d3cca5..d144569 100644
--- a/src/cats/update_sqlite3_tables.in
+++ b/src/cats/update_sqlite3_tables.in
@@ -1,9 +1,9 @@
 #!/bin/sh
 #
-# Shell script to update MySQL tables from Bacula Community version 5.0.x to 5.2.x
+# Shell script to update sqlite3 tables from Bacula Community version 5.0.x to 5.2.x
 #
 echo " "
-echo "This script will update a Bacula MySQL database from version 12 to 14"
+echo "This script will update a Bacula sqlite3 database from version 12 to 14"
 echo "	which is needed to convert from Bacula Community version 5.0.x to 5.2.x"
 echo " "
 
@@ -38,7 +38,7 @@ CREATE TABLE RestoreObject (
    ObjectIndex INTEGER DEFAULT 0,
    ObjectType INTEGER DEFAULT 0,
    FileIndex INTEGER UNSIGNED DEFAULT 0,
-   ObejctCompression INTEGER DEFAULT 0,
+   ObjectCompression INTEGER DEFAULT 0,
    JobId INTEGER UNSIGNED REFERENCES Job NOT NULL,
    PRIMARY KEY(RestoreObjectId)
    );
diff --git a/src/console/conio.c b/src/console/conio.c
index 8165444..1b39d29 100755
--- a/src/console/conio.c
+++ b/src/console/conio.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 1981-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 1981-2012 Free Software Foundation Europe e.V.
              Yes, that is 1981 no error.
 
    The main author of Bacula is Kern Sibbald, with contributions from
@@ -54,6 +54,7 @@
 #include <signal.h>
 #include <string.h>
 #include <ctype.h>
+#define HAVE_CONIO 1
 #else
 
 /* We are in Bacula */
@@ -61,6 +62,8 @@
 
 #endif
 
+#ifdef HAVE_CONIO
+
 #include <curses.h>
 #include <term.h>
 
@@ -69,8 +72,10 @@
 extern "C" int tgetent(void *, const char *);
 extern "C" int tgetnum(const char *);
 extern "C" char *tgetstr (const char*, char**);
-#endif
+# Note: the following on older (Solaris 10) systems 
+#  may need to be moved to after the #endif
 extern "C" char *tgoto (const char *, int, int);
+#endif
 #elif defined(__sgi)
 extern "C" int tgetent(char *, char *);
 extern "C" int tgetnum(char id[2]);
@@ -146,9 +151,9 @@ static char *kE;                             /* end */
  */
 typedef struct s_stab {
    struct s_stab *next;
+   char *str;
    int len;
    int func;
-   char *str;
 } stab_t;
 
 #define MAX_STAB 30
@@ -871,13 +876,13 @@ putline(char *newl, int newlen)
        nptr->nextl->prevl = lptr;
        lptr->len += nptr->len;
    }
-   if (lptr->len > newlen + 2 * PHDRL) { /* split buffer */
+   if (lptr->len > newlen + 2 * PHDRL + 7) { /* split buffer */
        nptr = (struct lstr *)((char *)lptr + newlen + PHDRL);
-       /* Appropriate byte alignment - normally 2 byte, but on
-          sparc we need 4 byte alignment, so we always do 4 */
-       if (((long unsigned)nptr & 3) != 0) { /* test four byte alignment */
+       /* Appropriate byte alignment - for Intel 2 byte, but on
+          Sparc we need 8 byte alignment, so we always do 8 */
+       if (((long unsigned)nptr & 7) != 0) { /* test eight byte alignment */
            p = (char *)nptr;
-           nptr = (struct lstr *)((((long unsigned) p) & ~3) + 4);
+           nptr = (struct lstr *)((((long unsigned) p) & ~7) + 8);
        }
        nptr->len = lptr->len - ((char *)nptr - (char *)lptr);
        lptr->len -= nptr->len;
@@ -1189,3 +1194,5 @@ static void asdell()
 {
    t_send(t_dl);
 }
+
+#endif
diff --git a/src/dird/admin.c b/src/dird/admin.c
index fc41f78..b7773e4 100644
--- a/src/dird/admin.c
+++ b/src/dird/admin.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2003-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2003-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -34,7 +34,6 @@
  *  Basic tasks done here:
  *     Display the job report.
  *
- *   Version $Id$
  */
 
 #include "bacula.h"
@@ -77,14 +76,13 @@ bool do_admin(JCR *jcr)
  */
 void admin_cleanup(JCR *jcr, int TermCode)
 {
-   char sdt[50], edt[50];
+   char sdt[50], edt[50], schedt[50];
    char term_code[100];
    const char *term_msg;
    int msg_type;
    MEDIA_DBR mr;
 
    Dmsg0(100, "Enter backup_cleanup()\n");
-   memset(&mr, 0, sizeof(mr));
 
    update_job_end(jcr, TermCode);
 
@@ -112,18 +110,22 @@ void admin_cleanup(JCR *jcr, int TermCode)
       sprintf(term_code, _("Inappropriate term code: %c\n"), jcr->JobStatus);
       break;
    }
-   bstrftime(sdt, sizeof(sdt), jcr->jr.StartTime);
-   bstrftime(edt, sizeof(edt), jcr->jr.EndTime);
+   bstrftimes(schedt, sizeof(schedt), jcr->jr.SchedTime);
+   bstrftimes(sdt, sizeof(sdt), jcr->jr.StartTime);
+   bstrftimes(edt, sizeof(edt), jcr->jr.EndTime);
+
 
    Jmsg(jcr, msg_type, 0, _("Bacula " VERSION " (" LSMDATE "): %s\n"
 "  JobId:                  %d\n"
 "  Job:                    %s\n"
+"  Scheduled time:         %s\n"
 "  Start time:             %s\n"
 "  End time:               %s\n"
 "  Termination:            %s\n\n"),
         edt,
         jcr->jr.JobId,
         jcr->jr.Job,
+        schedt,
         sdt,
         edt,
         term_msg);
diff --git a/src/dird/autoprune.c b/src/dird/autoprune.c
index 86e5c79..7372687 100644
--- a/src/dird/autoprune.c
+++ b/src/dird/autoprune.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2008 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -32,7 +32,6 @@
  *
  *     Kern Sibbald, May MMII
  *
- *   Version $Id$
  */
 
 #include "bacula.h"
@@ -85,7 +84,8 @@ void do_autoprune(JCR *jcr)
  *   volume and no appendable volumes are available.
  *
  */
-void prune_volumes(JCR *jcr, bool InChanger, MEDIA_DBR *mr) 
+void prune_volumes(JCR *jcr, bool InChanger, MEDIA_DBR *mr,
+        STORE *store)
 {
    int count;
    int i;
@@ -123,7 +123,7 @@ void prune_volumes(JCR *jcr, bool InChanger, MEDIA_DBR *mr)
       ed2[0] = 0;
    }
 
-   if(mr->ScratchPoolId) {
+   if (mr->ScratchPoolId) {
       edit_int64(mr->ScratchPoolId, ed3);
       bstrncat(ed2, ed3, sizeof(ed2));
       bstrncat(ed2, ",", sizeof(ed2));
@@ -165,7 +165,6 @@ void prune_volumes(JCR *jcr, bool InChanger, MEDIA_DBR *mr)
    /* Visit each Volume and Prune it until we find one that is purged */
    for (i=0; i<ids.num_ids; i++) {
       MEDIA_DBR lmr;
-      memset(&lmr, 0, sizeof(lmr));
       lmr.MediaId = ids.DBId[i];
       Dmsg1(100, "Get record MediaId=%d\n", (int)lmr.MediaId);
       if (!db_get_media_record(jcr, jcr->db, &lmr)) {
@@ -221,7 +220,8 @@ void prune_volumes(JCR *jcr, bool InChanger, MEDIA_DBR *mr)
           */
          if (lmr.PoolId == mr->PoolId) {
             Dmsg2(100, "Got Vol=%s MediaId=%d purged.\n", lmr.VolumeName, (int)lmr.MediaId);
-            memcpy(mr, &lmr, sizeof(lmr));
+            mr->copy(&lmr);
+            set_storageid_in_mr(store, mr);
             break;                        /* got a volume */
          }
       }
diff --git a/src/dird/backup.c b/src/dird/backup.c
index 8f0f7ec..65d5803 100644
--- a/src/dird/backup.c
+++ b/src/dird/backup.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -418,6 +418,10 @@ bool do_backup(JCR *jcr)
       goto bail_out;
    }
 
+   /* Declare the job started to start the MaxRunTime check */
+   jcr->setJobStarted();
+
+   /* Send and run the RunBefore */
    if (!send_runscripts_commands(jcr)) {
       goto bail_out;
    }
@@ -604,7 +608,6 @@ void backup_cleanup(JCR *jcr, int TermCode)
    }
 
    Dmsg2(100, "Enter backup_cleanup %d %c\n", TermCode, TermCode);
-   memset(&mr, 0, sizeof(mr));
    memset(&cr, 0, sizeof(cr));
 
 #ifdef xxxx
diff --git a/src/dird/bacula-dir.conf.in b/src/dird/bacula-dir.conf.in
index 5793ea1..9b79d46 100644
--- a/src/dird/bacula-dir.conf.in
+++ b/src/dird/bacula-dir.conf.in
@@ -261,7 +261,7 @@ Messages {
 #          time to time as it will grow indefinitely. However, it will
 #          also keep all your messages if they scroll off the console.
 #
-  append = "@working_dir@/log" = all, !skipped
+  append = "@logdir@/bacula.log" = all, !skipped
   catalog = all
 }
 
@@ -273,7 +273,7 @@ Messages {
   mailcommand = "@sbindir@/bsmtp -h @smtp_host@ -f \"\(Bacula\) \<%r\>\" -s \"Bacula daemon message\" %r"
   mail = @job_email@ = all, !skipped            
   console = all, !skipped, !saved
-  append = "@working_dir@/log" = all, !skipped
+  append = "@logdir@/bacula.log" = all, !skipped
 }
 
 # Default pool definition
diff --git a/src/dird/catreq.c b/src/dird/catreq.c
index 14ef55d..0cf0b6d 100644
--- a/src/dird/catreq.c
+++ b/src/dird/catreq.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -114,7 +114,6 @@ void catalog_request(JCR *jcr, BSOCK *bs)
    utime_t VolFirstWritten;
    utime_t VolLastWritten;
 
-   memset(&mr, 0, sizeof(mr));
    memset(&sdmr, 0, sizeof(sdmr));
    memset(&jm, 0, sizeof(jm));
    Dsm_check(100);      
@@ -141,7 +140,7 @@ void catalog_request(JCR *jcr, BSOCK *bs)
       ok = db_get_pool_record(jcr, jcr->db, &pr);
       if (ok) {
          mr.PoolId = pr.PoolId;
-         mr.StorageId = jcr->wstore->StorageId;
+         set_storageid_in_mr(jcr->wstore, &mr);
          mr.ScratchPoolId = pr.ScratchPoolId;
          ok = find_next_volume_for_append(jcr, &mr, index, fnv_create_vol, fnv_prune);
          Dmsg3(050, "find_media ok=%d idx=%d vol=%s\n", ok, index, mr.VolumeName);
@@ -281,14 +280,14 @@ void catalog_request(JCR *jcr, BSOCK *bs)
        *   However, do so only if we are writing the tape, i.e.
        *   the number of VolWrites has increased.
        */
-      if (jcr->wstore && jcr->wstore->StorageId && sdmr.VolWrites > mr.VolWrites) {
+      if (jcr->wstore && sdmr.VolWrites > mr.VolWrites) {
          Dmsg2(050, "Update StorageId old=%d new=%d\n",
                mr.StorageId, jcr->wstore->StorageId);
-         if (jcr->wstore->StorageId == 0) {
-            Jmsg(jcr, M_ERROR, 0, _("Attempt to set StorageId to zero.\n"));
-         } else {
-            mr.StorageId = jcr->wstore->StorageId;
-         }
+         /* Update StorageId after write */
+         set_storageid_in_mr(jcr->wstore, &mr);
+      } else {
+         /* Nothing written, reset same StorageId */
+         set_storageid_in_mr(NULL, &mr);
       }
 
       /* Copy updated values to original media record */
@@ -357,6 +356,7 @@ void catalog_request(JCR *jcr, BSOCK *bs)
       Jmsg1(jcr, M_FATAL, 0, _("Invalid Catalog request: %s"), omsg);
       free_memory(omsg);
    }
+
    Dmsg1(400, ">CatReq response: %s", bs->msg);
    Dmsg1(400, "Leave catreq jcr 0x%x\n", jcr);
    return;
@@ -440,7 +440,7 @@ static void update_attribute(JCR *jcr, char *msg, int32_t msglen)
       if (jcr->cached_attribute) {
          Dmsg2(400, "Cached attr. Stream=%d fname=%s\n", ar->Stream, ar->fname);
          if (!db_create_attributes_record(jcr, jcr->db, ar)) {
-            Jmsg1(jcr, M_FATAL, 0, _("Attribute create error. %s"), db_strerror(jcr->db));
+            Jmsg1(jcr, M_FATAL, 0, _("Attribute create error: ERR=%s"), db_strerror(jcr->db));
          }
          jcr->cached_attribute = false;
       }
@@ -541,7 +541,8 @@ static void update_attribute(JCR *jcr, char *msg, int32_t msglen)
    } else if (crypto_digest_stream_type(Stream) != CRYPTO_DIGEST_NONE) {
       fname = p;
       if (ar->FileIndex != FileIndex) {
-         Jmsg(jcr, M_WARNING, 0, _("Got %s but not same File as attributes\n"), stream_to_ascii(Stream));
+         Jmsg3(jcr, M_WARNING, 0, _("%s not same File=%d as attributes=%d\n"), 
+            stream_to_ascii(Stream), FileIndex, ar->FileIndex);
       } else {
          /* Update digest in catalog */
          char digestbuf[BASE64_SIZE(CRYPTO_DIGEST_MAX_SIZE)];
diff --git a/src/dird/dird.c b/src/dird/dird.c
index 9f1667f..147ab3f 100644
--- a/src/dird/dird.c
+++ b/src/dird/dird.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -35,6 +35,19 @@
 
 #include "bacula.h"
 #include "dird.h"
+#ifndef HAVE_REGEX_H
+#include "lib/bregex.h"
+#else
+#include <regex.h>
+#endif
+#ifdef HAVE_DIRENT_H
+#include <dirent.h>
+#define NAMELEN(dirent) (strlen((dirent)->d_name))
+#endif
+#ifndef HAVE_READDIR_R
+int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);
+#endif
+
 
 #ifdef HAVE_PYTHON
 
@@ -52,7 +65,6 @@ extern int job_setattr(PyObject *self, char *attrname, PyObject *value);
 /* Forward referenced subroutines */
 void terminate_dird(int sig);
 static bool check_resources();
-static void dir_sql_query(JCR *jcr, const char *cmd);
 static void cleanup_old_files();
   
 /* Exported subroutines */
@@ -104,13 +116,39 @@ static bool check_catalog(cat_op mode);
 
 #define CONFIG_FILE "bacula-dir.conf" /* default configuration file */
 
+/*
+ * This allows the message handler to operate on the database
+ *   by using a pointer to this function. The pointer is
+ *   needed because the other daemons do not have access
+ *   to the database.  If the pointer is
+ *   not defined (other daemons), then writing the database
+ *   is disabled.
+ */
+static bool dir_sql_query(JCR *jcr, const char *cmd)
+{
+   if (!jcr || !jcr->db || !jcr->db->is_connected()) {
+      return false;
+   }
+
+   return db_sql_query(jcr->db, cmd);
+}
+
+static bool dir_sql_escape(JCR *jcr, B_DB *mdb, char *snew, char *old, int len)
+{
+   if (!jcr || !jcr->db || !jcr->db->is_connected()) {
+      return false;
+   }
+
+   db_escape_string(jcr, mdb, snew, old, len);
+   return true;
+}
 
 static void usage()
 {
    fprintf(stderr, _(
 PROG_COPYRIGHT
 "\nVersion: %s (%s)\n\n"
-"Usage: dird [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
+"Usage: bacula-dir [-f -s] [-c config_file] [-d debug_level] [config_file]\n"
 "       -c <file>   set configuration file to file\n"
 "       -d <nn>     set debug level to <nn>\n"
 "       -dt         print timestamp in debug output\n"
@@ -283,8 +321,6 @@ int main (int argc, char *argv[])
 
    drop(uid, gid, false);                    /* reduce privileges if requested */
 
-   cleanup_old_files();
-
    /* If we are in testing mode, we don't try to fix the catalog */
    cat_op mode=(test_config)?CHECK_CONNECTION:UPDATE_AND_FIX;
 
@@ -298,9 +334,11 @@ int main (int argc, char *argv[])
 
    my_name_is(0, NULL, director->name());    /* set user defined name */
 
+   cleanup_old_files();
+
    /* Plug database interface for library routines */
    p_sql_query = (sql_query_func)dir_sql_query;
-   p_sql_escape = (sql_escape_func)db_escape_string;
+   p_sql_escape = (sql_escape_func)dir_sql_escape;
 
    FDConnectTimeout = (int)director->FDConnectTimeout;
    SDConnectTimeout = (int)director->SDConnectTimeout;
@@ -352,22 +390,6 @@ int main (int argc, char *argv[])
    return 0;
 }
 
-/*
- * This allows the message handler to operate on the database
- *   by using a pointer to this function. The pointer is
- *   needed because the other daemons do not have access
- *   to the database.  If the pointer is
- *   not defined (other daemons), then writing the database
- *   is disabled. 
- */
-static void dir_sql_query(JCR *jcr, const char *cmd)
-{
-   if (!jcr || !jcr->db) {
-      return;
-   }
-   db_sql_query(jcr->db, cmd, NULL, NULL);
-}
-
 /* Cleanup and then exit */
 void terminate_dird(int sig)
 {
@@ -542,7 +564,7 @@ void reload_config(int sig)
          Jmsg(NULL, M_ERROR, 0, _("Resetting previous configuration.\n"));
       }
       reload_table[rtable].res_table = config->save_resources();
-      /* Now restore old resoure values */
+      /* Now restore old resource values */
       int num = r_last - r_first + 1;
       RES **res_tab = reload_table[table].res_table;
       for (int i=0; i<num; i++) {
@@ -917,6 +939,46 @@ static bool check_resources()
       }
    }
 
+   /* Loop over Storages */
+   STORE *store;
+   foreach_res(store, R_STORAGE) {
+      /* tls_require implies tls_enable */
+      if (store->tls_require) {
+         if (have_tls) {
+            store->tls_enable = true;
+         } else {
+            Jmsg(NULL, M_FATAL, 0, _("TLS required but not configured in Bacula.\n"));
+            OK = false;
+            continue;
+         }
+      }
+
+      need_tls = store->tls_enable || store->tls_authenticate;
+
+      if ((!store->tls_ca_certfile && !store->tls_ca_certdir) && need_tls) {
+         Jmsg(NULL, M_FATAL, 0, _("Neither \"TLS CA Certificate\""
+              " or \"TLS CA Certificate Dir\" are defined for Storage \"%s\" in %s.\n"),
+              store->name(), configfile);
+         OK = false;
+      }
+
+      /* If everything is well, attempt to initialize our per-resource TLS context */
+      if (OK && (need_tls || store->tls_require)) {
+        /* Initialize TLS context:
+         * Args: CA certfile, CA certdir, Certfile, Keyfile,
+         * Keyfile PEM Callback, Keyfile CB Userdata, DHfile, Verify Peer */
+         store->tls_ctx = new_tls_context(store->tls_ca_certfile,
+            store->tls_ca_certdir, store->tls_certfile,
+            store->tls_keyfile, NULL, NULL, NULL, true);
+
+         if (!store->tls_ctx) {
+            Jmsg(NULL, M_FATAL, 0, _("Failed to initialize TLS context for Storage \"%s\" in %s.\n"),
+                 store->name(), configfile);
+            OK = false;
+         }
+      }
+   }
+
    UnlockRes();
    if (OK) {
       close_msg(NULL);                /* close temp message handler */
@@ -934,7 +996,6 @@ static bool check_resources()
 static bool check_catalog(cat_op mode)
 {
    bool OK = true;
-   bool need_tls;
 
    /* Loop over databases */
    CAT *catalog;
@@ -1021,15 +1082,15 @@ static bool check_catalog(cat_op mode)
       STORE *store;
       foreach_res(store, R_STORAGE) {
          STORAGE_DBR sr;
-         MEDIATYPE_DBR mr;
+         MEDIATYPE_DBR mtr;
          memset(&sr, 0, sizeof(sr));
-         memset(&mr, 0, sizeof(mr));
+         memset(&mtr, 0, sizeof(mtr));
          if (store->media_type) {
-            bstrncpy(mr.MediaType, store->media_type, sizeof(mr.MediaType));
-            mr.ReadOnly = 0;
-            db_create_mediatype_record(NULL, db, &mr);
+            bstrncpy(mtr.MediaType, store->media_type, sizeof(mtr.MediaType));
+            mtr.ReadOnly = 0;
+            db_create_mediatype_record(NULL, db, &mtr);
          } else {
-            mr.MediaTypeId = 0;
+            mtr.MediaTypeId = 0;
          }
          bstrncpy(sr.Name, store->name(), sizeof(sr.Name));
          sr.AutoChanger = store->autochanger;
@@ -1047,41 +1108,6 @@ static bool check_catalog(cat_op mode)
                OK = false;
             }
          }
-
-         /* tls_require implies tls_enable */
-         if (store->tls_require) {
-            if (have_tls) {
-               store->tls_enable = true;
-            } else {
-               Jmsg(NULL, M_FATAL, 0, _("TLS required but not configured in Bacula.\n"));
-               OK = false;
-            }
-         } 
-
-         need_tls = store->tls_enable || store->tls_authenticate;
-
-         if ((!store->tls_ca_certfile && !store->tls_ca_certdir) && need_tls) {
-            Jmsg(NULL, M_FATAL, 0, _("Neither \"TLS CA Certificate\""
-                 " or \"TLS CA Certificate Dir\" are defined for Storage \"%s\" in %s.\n"),
-                 store->name(), configfile);
-            OK = false;
-         }
-
-         /* If everything is well, attempt to initialize our per-resource TLS context */
-         if (OK && (need_tls || store->tls_require)) {
-           /* Initialize TLS context:
-            * Args: CA certfile, CA certdir, Certfile, Keyfile,
-            * Keyfile PEM Callback, Keyfile CB Userdata, DHfile, Verify Peer */
-            store->tls_ctx = new_tls_context(store->tls_ca_certfile,
-               store->tls_ca_certdir, store->tls_certfile,
-               store->tls_keyfile, NULL, NULL, NULL, true);
-         
-            if (!store->tls_ctx) {
-               Jmsg(NULL, M_FATAL, 0, _("Failed to initialize TLS context for Storage \"%s\" in %s.\n"),
-                    store->name(), configfile);
-               OK = false;
-            }
-         }
       }
 
       /* Loop over all counters, defining them in each database */
@@ -1124,31 +1150,79 @@ static bool check_catalog(cat_op mode)
    return OK;
 }
 
-static void copy_base_name(POOLMEM *cleanup)
+static void cleanup_old_files()
 {
+   DIR* dp;
+   struct dirent *entry, *result;
+   int rc, name_max;
+   int my_name_len = strlen(my_name);
    int len = strlen(director->working_directory);
-#if defined(HAVE_WIN32)
-   pm_strcpy(cleanup, "del /q ");
-#else
-   pm_strcpy(cleanup, "/bin/rm -f ");
-#endif
-   pm_strcat(cleanup, director->working_directory);
+   POOLMEM *cleanup = get_pool_memory(PM_MESSAGE);
+   POOLMEM *basename = get_pool_memory(PM_MESSAGE);
+   regex_t preg1;
+   char prbuf[500];
+   const int nmatch = 30;
+   regmatch_t pmatch[nmatch];
+   berrno be;
+
+   /* Exclude spaces and look for .mail or .restore.xx.bsr files */
+   const char *pat1 = "^[^ ]+\\.(restore\\.[^ ]+\\.bsr|mail)$";
+
+   /* Setup working directory prefix */
+   pm_strcpy(basename, director->working_directory);
    if (len > 0 && !IsPathSeparator(director->working_directory[len-1])) {
-      pm_strcat(cleanup, "/");
+      pm_strcat(basename, "/");
    }
-   pm_strcat(cleanup, my_name);
-}
 
-static void cleanup_old_files()
-{
-   POOLMEM *cleanup = get_pool_memory(PM_MESSAGE);
-   POOLMEM *results = get_pool_memory(PM_MESSAGE);
-   copy_base_name(cleanup);
-   pm_strcat(cleanup, "*.restore.*.bsr");
-   run_program(cleanup, 0, results);
-   copy_base_name(cleanup);
-   pm_strcat(cleanup, "*.mail");
-   run_program(cleanup, 0, results);
+   /* Compile regex expressions */
+   rc = regcomp(&preg1, pat1, REG_EXTENDED);
+   if (rc != 0) {
+      regerror(rc, &preg1, prbuf, sizeof(prbuf));
+      Pmsg2(000,  _("Could not compile regex pattern \"%s\" ERR=%s\n"),
+           pat1, prbuf);
+      goto get_out2;
+   }
+
+   name_max = pathconf(".", _PC_NAME_MAX);
+   if (name_max < 1024) {
+      name_max = 1024;
+   }
+      
+   if (!(dp = opendir(director->working_directory))) {
+      berrno be;
+      Pmsg2(000, "Failed to open working dir %s for cleanup: ERR=%s\n", 
+            director->working_directory, be.bstrerror());
+      goto get_out1;
+      return;
+   }
+
+   entry = (struct dirent *)malloc(sizeof(struct dirent) + name_max + 1000);
+   while (1) {
+      if ((readdir_r(dp, entry, &result) != 0) || (result == NULL)) {
+         break;
+      }
+      /* Exclude any name with ., .., not my_name or containing a space */
+      if (strcmp(result->d_name, ".") == 0 || strcmp(result->d_name, "..") == 0 ||
+          strncmp(result->d_name, my_name, my_name_len) != 0) {
+         Dmsg1(500, "Skipped: %s\n", result->d_name);
+         continue;    
+      }
+
+      /* Unlink files that match regexes */
+      if (regexec(&preg1, result->d_name, nmatch, pmatch,  0) == 0) {
+         pm_strcpy(cleanup, basename);
+         pm_strcat(cleanup, result->d_name);
+         Dmsg1(100, "Unlink: %s\n", cleanup);
+         unlink(cleanup);
+      }
+   }
+
+   free(entry);
+   closedir(dp);
+/* Be careful to free up the correct resources */
+get_out1:
+   regfree(&preg1);
+get_out2:
    free_pool_memory(cleanup);
-   free_pool_memory(results);
+   free_pool_memory(basename);
 }
diff --git a/src/dird/dird_conf.c b/src/dird/dird_conf.c
index 7dcf591..b8477f5 100644
--- a/src/dird/dird_conf.c
+++ b/src/dird/dird_conf.c
@@ -224,6 +224,7 @@ static RES_ITEM store_items[] = {
    {"allowcompression",  store_bool, ITEM(res_store.AllowCompress), 0, ITEM_DEFAULT, true},
    {"heartbeatinterval", store_time, ITEM(res_store.heartbeat_interval), 0, ITEM_DEFAULT, 0},
    {"maximumconcurrentjobs", store_pint32, ITEM(res_store.MaxConcurrentJobs), 0, ITEM_DEFAULT, 1},
+   {"maximumconcurrentreadjobs", store_pint32, ITEM(res_store.MaxConcurrentReadJobs), 0, ITEM_DEFAULT, 0},
    {"sddport", store_pint32, ITEM(res_store.SDDport), 0, 0, 0}, /* deprecated */
    {"tlsauthenticate",      store_bool,      ITEM(res_store.tls_authenticate), 0, 0, 0},
    {"tlsenable",            store_bool,      ITEM(res_store.tls_enable), 0, 0, 0},
@@ -473,6 +474,12 @@ struct s_jl joblevels[] = {
    {"VolumeToCatalog", L_VERIFY_VOLUME_TO_CATALOG,   JT_VERIFY},
    {"DiskToCatalog", L_VERIFY_DISK_TO_CATALOG,   JT_VERIFY},
    {"Data",          L_VERIFY_DATA,     JT_VERIFY},
+   {"Full",          L_FULL,            JT_COPY},
+   {"Incremental",   L_INCREMENTAL,     JT_COPY},
+   {"Differential",  L_DIFFERENTIAL,    JT_COPY},
+   {"Full",          L_FULL,            JT_MIGRATE},
+   {"Incremental",   L_INCREMENTAL,     JT_MIGRATE},
+   {"Differential",  L_DIFFERENTIAL,    JT_MIGRATE},
    {" ",             L_NONE,            JT_ADMIN},
    {" ",             L_NONE,            JT_RESTORE},
    {NULL,            0,                          0}
@@ -554,6 +561,7 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
    bool recurse = true;
    char ed1[100], ed2[100], ed3[100];
    DEVICE *dev;
+   UAContext *ua = (UAContext *)sock;
 
    if (res == NULL) {
       sendit(sock, _("No %s resource defined\n"), res_to_str(type));
@@ -599,6 +607,9 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
       break;
 
    case R_CLIENT:
+      if (!acl_access_ok(ua, Client_ACL, res->res_client.hdr.name)) {
+         break;
+      }
       sendit(sock, _("Client: name=%s address=%s FDport=%d MaxJobs=%u\n"),
          res->res_client.hdr.name, res->res_client.address, res->res_client.FDport,
          res->res_client.MaxConcurrentJobs);
@@ -626,6 +637,9 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
       break;
 
    case R_STORAGE:
+      if (!acl_access_ok(ua, Storage_ACL, res->res_store.hdr.name)) {
+         break;
+      }
       sendit(sock, _("Storage: name=%s address=%s SDport=%d MaxJobs=%u\n"
 "      DeviceName=%s MediaType=%s StorageId=%s\n"),
          res->res_store.hdr.name, res->res_store.address, res->res_store.SDport,
@@ -636,6 +650,9 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
       break;
 
    case R_CATALOG:
+      if (!acl_access_ok(ua, Catalog_ACL, res->res_cat.hdr.name)) {
+         break;
+      }
       sendit(sock, _("Catalog: name=%s address=%s DBport=%d db_name=%s\n"
 "      db_driver=%s db_user=%s MutliDBConn=%d\n"),
          res->res_cat.hdr.name, NPRT(res->res_cat.db_address),
@@ -646,6 +663,9 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
 
    case R_JOB:
    case R_JOBDEFS:
+      if (!acl_access_ok(ua, Job_ACL, res->res_job.hdr.name)) {
+         break;
+      }
       sendit(sock, _("%s: name=%s JobType=%d level=%s Priority=%d Enabled=%d\n"),
          type == R_JOB ? _("Job") : _("JobDefs"),
          res->res_job.hdr.name, res->res_job.JobType,
@@ -767,6 +787,9 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
    case R_FILESET:
    {
       int i, j, k;
+      if (!acl_access_ok(ua, FileSet_ACL, res->res_fs.hdr.name)) {
+         break;
+      }
       sendit(sock, _("FileSet: name=%s\n"), res->res_fs.hdr.name);
       for (i=0; i<res->res_fs.num_includes; i++) {
          INCEXE *incexe = res->res_fs.include_items[i];
@@ -854,6 +877,9 @@ void dump_resource(int type, RES *reshdr, void sendit(void *sock, const char *fm
    }
 
    case R_SCHEDULE:
+      if (!acl_access_ok(ua, Schedule_ACL, res->res_sch.hdr.name)) {
+         break;
+      }
       if (res->res_sch.run) {
          int i;
          RUN *run = res->res_sch.run;
@@ -942,6 +968,9 @@ next_run:
       break;
 
    case R_POOL:
+      if (!acl_access_ok(ua, Pool_ACL, res->res_pool.hdr.name)) {
+         break;
+      }
       sendit(sock, _("Pool: name=%s PoolType=%s\n"), res->res_pool.hdr.name,
               res->res_pool.pool_type);
       sendit(sock, _("      use_cat=%d use_once=%d cat_files=%d\n"),
diff --git a/src/dird/dird_conf.h b/src/dird/dird_conf.h
index 0a9d26c..9525781 100644
--- a/src/dird/dird_conf.h
+++ b/src/dird/dird_conf.h
@@ -294,6 +294,7 @@ public:
    char *media_type;
    alist *device;                     /* Alternate devices for this Storage */
    int32_t MaxConcurrentJobs;         /* Maximum concurrent jobs */
+   int32_t MaxConcurrentReadJobs;     /* Maximum concurrent jobs reading */
    int32_t NumConcurrentJobs;         /* number of concurrent jobs running */
    int32_t NumConcurrentReadJobs;     /* number of jobs reading */
    char *tls_ca_certfile;             /* TLS CA Certificate File */
diff --git a/src/dird/getmsg.c b/src/dird/getmsg.c
index ae670d9..b30b214 100644
--- a/src/dird/getmsg.c
+++ b/src/dird/getmsg.c
@@ -138,7 +138,7 @@ int bget_dirmsg(BSOCK *bs)
 
    for ( ; !bs->is_stop() && !bs->is_timed_out(); ) {
       n = bs->recv();
-      Dmsg2(100, "bget_dirmsg %d: %s\n", n, bs->msg);
+      Dmsg2(200, "bget_dirmsg %d: %s\n", n, bs->msg);
 
       if (bs->is_stop() || bs->is_timed_out()) {
          return n;                    /* error or terminate */
diff --git a/src/dird/job.c b/src/dird/job.c
index 768b6cf..9865e37 100644
--- a/src/dird/job.c
+++ b/src/dird/job.c
@@ -611,7 +611,7 @@ static bool job_check_maxruntime(JCR *jcr)
    JOB *job = jcr->job;
    utime_t run_time;
 
-   if (job_canceled(jcr) || jcr->JobStatus == JS_Created) {
+   if (job_canceled(jcr) || !jcr->job_started) {
       return false;
    }
    if (jcr->job->MaxRunTime == 0 && job->FullMaxRunTime == 0 &&
@@ -762,6 +762,7 @@ bool allow_duplicate_job(JCR *jcr)
              */
             if (cancel_me) {
               /* Zap current job */
+              jcr->setJobStatus(JS_Canceled);
               Jmsg(jcr, M_FATAL, 0, _("JobId %d already running. Duplicate job not allowed.\n"),
                  djcr->JobId);
               break;     /* get out of foreach_jcr */
@@ -796,6 +797,7 @@ bool allow_duplicate_job(JCR *jcr)
             Jmsg(jcr, M_INFO, 0, _("Cancelling duplicate JobId=%d.\n"), djcr->JobId);
             cancel_job(ua, djcr);
             bmicrosleep(0, 500000);
+            djcr->setJobStatus(JS_Canceled);
             cancel_job(ua, djcr);
             free_ua_context(ua);
             Dmsg2(800, "Cancel dup %p JobId=%d\n", djcr, djcr->JobId);
@@ -803,6 +805,7 @@ bool allow_duplicate_job(JCR *jcr)
             /*
              * Zap current job
              */
+            jcr->setJobStatus(JS_Canceled);
             Jmsg(jcr, M_FATAL, 0, _("JobId %d already running. Duplicate job not allowed.\n"),
                djcr->JobId);
             Dmsg2(800, "Cancel me %p JobId=%d\n", jcr, jcr->JobId);
@@ -1458,12 +1461,16 @@ bool run_console_command(JCR *jcr, const char *cmd)
    bool ok;
    JCR *ljcr = new_control_jcr("-RunScript-", JT_CONSOLE);
    ua = new_ua_context(ljcr);
-   /* run from runscript and check if commands are autorized */
+   /* run from runscript and check if commands are authorized */
    ua->runscript = true;
    Mmsg(ua->cmd, "%s", cmd);
    Dmsg1(100, "Console command: %s\n", ua->cmd);
    parse_ua_args(ua);
-   ok= do_a_command(ua);
+   if (ua->argc > 0 && ua->argk[0][0] == '.') {
+      ok = do_a_dot_command(ua);
+   } else {
+     ok = do_a_command(ua);
+   }
    free_ua_context(ua);
    free_jcr(ljcr);
    return ok;
diff --git a/src/dird/jobq.c b/src/dird/jobq.c
index 10a4ccd..5c79d78 100644
--- a/src/dird/jobq.c
+++ b/src/dird/jobq.c
@@ -809,7 +809,10 @@ static pthread_mutex_t rstore_mutex = PTHREAD_MUTEX_INITIALIZER;
 bool inc_read_store(JCR *jcr)
 {
    P(rstore_mutex);
-   if (jcr->rstore->NumConcurrentJobs < jcr->rstore->MaxConcurrentJobs) {
+   if (jcr->rstore->NumConcurrentJobs < jcr->rstore->MaxConcurrentJobs &&
+       (jcr->getJobType() == JT_RESTORE ||
+        jcr->rstore->MaxConcurrentReadJobs == 0 ||
+        jcr->rstore->NumConcurrentReadJobs < jcr->rstore->MaxConcurrentReadJobs)) {
       jcr->rstore->NumConcurrentReadJobs++;
       jcr->rstore->NumConcurrentJobs++;
       Dmsg1(200, "Inc rncj=%d\n", jcr->rstore->NumConcurrentJobs);
diff --git a/src/dird/migrate.c b/src/dird/migrate.c
index e355e7c..c4738ea 100644
--- a/src/dird/migrate.c
+++ b/src/dird/migrate.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2004-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2004-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -365,6 +365,8 @@ bool do_migration(JCR *jcr)
    }
    Dmsg0(150, "Storage daemon connection OK\n");
 
+   /* Declare the job started to start the MaxRunTime check */
+   jcr->setJobStarted();
 
    /*    
     * We re-update the job start record so that the start
@@ -1150,7 +1152,6 @@ void migration_cleanup(JCR *jcr, int TermCode)
 
    Dmsg2(100, "Enter migrate_cleanup %d %c\n", TermCode, TermCode);
    update_job_end(jcr, TermCode);
-   memset(&mr, 0, sizeof(mr));
 
    /* 
     * Check if we actually did something.  
diff --git a/src/dird/mountreq.c b/src/dird/mountreq.c
index b577dd2..35f57df 100644
--- a/src/dird/mountreq.c
+++ b/src/dird/mountreq.c
@@ -1,21 +1,7 @@
 /*
- *
- *   Bacula Director -- mountreq.c -- handles the message channel
- *    Mount request from the Storage daemon.
- *
- *     Kern Sibbald, March MMI
- *
- *    This routine runs as a thread and must be thread reentrant.
- *
- *  Basic tasks done here:
- *      Handle Mount services.
- *
- *   Version $Id$
- */
-/*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2006 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -39,6 +25,19 @@
    (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
    Switzerland, email:ftf at fsfeurope.org.
 */
+/*
+ *
+ *   Bacula Director -- mountreq.c -- handles the message channel
+ *    Mount request from the Storage daemon.
+ *
+ *     Kern Sibbald, March MMI
+ *
+ *    This routine runs as a thread and must be thread reentrant.
+ *
+ *  Basic tasks done here:
+ *      Handle Mount services.
+ *
+ */
 
 #include "bacula.h"
 #include "dird.h"
@@ -69,15 +68,15 @@ typedef struct mnt_req_s {
 
 void mount_request(JCR *jcr, BSOCK *bs, char *buf)
 {
-   MNT_REQ *mr;
+   MNT_REQ *mreq;
 
-   mr = (MNT_REQ *) malloc(sizeof(MNT_REQ));
-   memset(mr, 0, sizeof(MNT_REQ));
-   mr->jcr = jcr;
-   mr->bs = bs;
+   mreq = (MNT_REQ *) malloc(sizeof(MNT_REQ));
+   memset(mreq, 0, sizeof(MNT_REQ));
+   mreq->jcr = jcr;
+   mreq->bs = bs;
    P(mutex);
    num_reqs++;
-   qinsert(&mountq, &mr->bq);
+   qinsert(&mountq, &mreq->bq);
    V(mutex);
    return;
 }
diff --git a/src/dird/msgchan.c b/src/dird/msgchan.c
index b3f5e8f..686f0c7 100644
--- a/src/dird/msgchan.c
+++ b/src/dird/msgchan.c
@@ -269,6 +269,9 @@ bool start_storage_daemon_job(JCR *jcr, alist *rstore, alist *wstore, bool send_
       } else {
          ok = false;
       }
+      if (ok) {
+         Jmsg(jcr, M_INFO, 0, _("Using Device \"%s\" to read.\n"), device_name.c_str());
+      }
    }
 
    /* Do write side of storage daemon */
@@ -304,6 +307,9 @@ bool start_storage_daemon_job(JCR *jcr, alist *rstore, alist *wstore, bool send_
       } else {
          ok = false;
       }
+      if (ok) {
+         Jmsg(jcr, M_INFO, 0, _("Using Device \"%s\" to write.\n"), device_name.c_str());
+      }
    }
    if (!ok) {
       POOL_MEM err_msg;
@@ -317,8 +323,6 @@ bool start_storage_daemon_job(JCR *jcr, alist *rstore, alist *wstore, bool send_
               "     Storage daemon didn't accept Device \"%s\" command.\n"), 
               device_name.c_str());
       }
-   } else {
-      Jmsg(jcr, M_INFO, 0, _("Using Device \"%s\"\n"), device_name.c_str());
    }
    return ok;
 }
@@ -375,6 +379,7 @@ extern "C" void *msg_thread(void *arg)
    JCR *jcr = (JCR *)arg;
    BSOCK *sd;
    int JobStatus;
+   int n;
    char Job[MAX_NAME_LENGTH];
    uint32_t JobFiles, JobErrors;
    uint64_t JobBytes;
@@ -388,7 +393,8 @@ extern "C" void *msg_thread(void *arg)
    /* Read the Storage daemon's output.
     */
    Dmsg0(100, "Start msg_thread loop\n");
-   while (!job_canceled(jcr) && bget_dirmsg(sd) >= 0) {
+   n = 0;
+   while (!job_canceled(jcr) && (n=bget_dirmsg(sd)) >= 0) {
       Dmsg1(400, "<stored: %s", sd->msg);
       if (sscanf(sd->msg, Job_start, Job) == 1) {
          continue;
@@ -403,6 +409,13 @@ extern "C" void *msg_thread(void *arg)
       }
       Dmsg1(400, "end loop use=%d\n", jcr->use_count());
    }
+   if (n == BNET_HARDEOF) {
+      /*
+       * This probably should be M_FATAL, but I am not 100% sure
+       *  that this return *always* corresponds to a dropped line.
+       */
+      Qmsg(jcr, M_ERROR, 0, _("Director's comm line to SD dropped.\n"));
+   }
    if (is_bnet_error(sd)) {
       jcr->SDJobStatus = JS_ErrorTerminated;
    }
diff --git a/src/dird/newvol.c b/src/dird/newvol.c
index 2037ff4..d1941cf 100644
--- a/src/dird/newvol.c
+++ b/src/dird/newvol.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2008 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -37,7 +37,6 @@
  *  Basic tasks done here:
  *      If possible create a new Media entry
  *
- *   Version $Id$
  */
 
 #include "bacula.h"
@@ -54,7 +53,7 @@ static bool perform_full_name_substitution(JCR *jcr, MEDIA_DBR *mr, POOL_DBR *pr
  *  The media record must have the PoolId filled in when
  *   calling this routine.
  */
-bool newVolume(JCR *jcr, MEDIA_DBR *mr)
+bool newVolume(JCR *jcr, MEDIA_DBR *mr, STORE *store)
 {
    POOL_DBR pr;
 
@@ -67,7 +66,7 @@ bool newVolume(JCR *jcr, MEDIA_DBR *mr)
       goto bail_out;
    }
    if (pr.MaxVols == 0 || pr.NumVols < pr.MaxVols) {
-      memset(mr, 0, sizeof(MEDIA_DBR));
+      mr->clear();
       set_pool_dbr_defaults_in_media_dbr(mr, &pr);
       jcr->VolumeName[0] = 0;
       bstrncpy(mr->MediaType, jcr->wstore->media_type, sizeof(mr->MediaType));
@@ -98,6 +97,7 @@ bool newVolume(JCR *jcr, MEDIA_DBR *mr)
       }
       pr.NumVols++;
       mr->Enabled = 1;
+      set_storageid_in_mr(store, mr);
       if (db_create_media_record(jcr, jcr->db, mr) &&
          db_update_pool_record(jcr, jcr->db, &pr)) {
          db_unlock(jcr->db);
@@ -133,7 +133,6 @@ static bool create_simple_name(JCR *jcr, MEDIA_DBR *mr, POOL_DBR *pr)
    }
    for (int i=(int)ctx.value+1; i<(int)ctx.value+100; i++) {
       MEDIA_DBR tmr;
-      memset(&tmr, 0, sizeof(tmr));
       sprintf(num, "%04d", i);
       bstrncpy(tmr.VolumeName, name, sizeof(tmr.VolumeName));
       bstrncat(tmr.VolumeName, num, sizeof(tmr.VolumeName));
diff --git a/src/dird/next_vol.c b/src/dird/next_vol.c
index cb4a339..ebae077 100644
--- a/src/dird/next_vol.c
+++ b/src/dird/next_vol.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -40,10 +40,17 @@
 
 static int const dbglvl = 50;   /* debug level */
 
+/* Set storage id if possible */
+void set_storageid_in_mr(STORE *store, MEDIA_DBR *mr)
+{
+   if (store != NULL) {
+      mr->StorageId = store->StorageId;
+   }
+}
+
 /*
  *  Items needed:
  *   mr.PoolId must be set
- *   mr.StorageId should also be set
  *   mr.ScratchPoolId could be set (used if create==true)
  *   jcr->wstore
  *   jcr->db
@@ -76,37 +83,45 @@ int find_next_volume_for_append(JCR *jcr, MEDIA_DBR *mr, int index,
       /*
        *  1. Look for volume with "Append" status.
        */
+      set_storageid_in_mr(store, mr);  /* put StorageId in new record */
       ok = db_find_next_volume(jcr, jcr->db, index, InChanger, mr);
 
       if (!ok) {
+         /*
+          * No volume found, apply algorithm
+          */
          Dmsg4(dbglvl, "after find_next_vol ok=%d index=%d InChanger=%d Vstat=%s\n",
                ok, index, InChanger, mr->VolStatus);
          /*
           * 2. Try finding a recycled volume
           */
-         ok = find_recycled_volume(jcr, InChanger, mr);
+         ok = find_recycled_volume(jcr, InChanger, mr, store);
+         set_storageid_in_mr(store, mr);  /* put StorageId in new record */
          Dmsg2(dbglvl, "find_recycled_volume ok=%d FW=%d\n", ok, mr->FirstWritten);
          if (!ok) {
             /*
              * 3. Try recycling any purged volume
              */
-            ok = recycle_oldest_purged_volume(jcr, InChanger, mr);
+            ok = recycle_oldest_purged_volume(jcr, InChanger, mr, store);
+            set_storageid_in_mr(store, mr);  /* put StorageId in new record */
             if (!ok) {
                /*
                 * 4. Try pruning Volumes
                 */
                if (prune) {
                   Dmsg0(dbglvl, "Call prune_volumes\n");
-                  prune_volumes(jcr, InChanger, mr);
+                  prune_volumes(jcr, InChanger, mr, store);
                }
-               ok = recycle_oldest_purged_volume(jcr, InChanger, mr);
+               ok = recycle_oldest_purged_volume(jcr, InChanger, mr, store);
+               set_storageid_in_mr(store, mr);  /* put StorageId in new record */
                if (!ok && create) {
                   Dmsg4(dbglvl, "after prune volumes_vol ok=%d index=%d InChanger=%d Vstat=%s\n",
                         ok, index, InChanger, mr->VolStatus);
                   /*
                    * 5. Try pulling a volume from the Scratch pool
                    */ 
-                  ok = get_scratch_volume(jcr, InChanger, mr);
+                  ok = get_scratch_volume(jcr, InChanger, mr, store);
+                  set_storageid_in_mr(store, mr);  /* put StorageId in new record */
                   Dmsg4(dbglvl, "after get scratch volume ok=%d index=%d InChanger=%d Vstat=%s\n",
                         ok, index, InChanger, mr->VolStatus);
                }
@@ -126,7 +141,7 @@ int find_next_volume_for_append(JCR *jcr, MEDIA_DBR *mr, int index,
             /*
              * 6. Try "creating" a new Volume
              */
-            ok = newVolume(jcr, mr);
+            ok = newVolume(jcr, mr, store);
          }
          /*
           *  Look at more drastic ways to find an Appendable Volume
@@ -136,7 +151,9 @@ int find_next_volume_for_append(JCR *jcr, MEDIA_DBR *mr, int index,
             Dmsg2(dbglvl, "No next volume found. PurgeOldest=%d\n RecyleOldest=%d",
                 jcr->pool->purge_oldest_volume, jcr->pool->recycle_oldest_volume);
             /* Find oldest volume to recycle */
+            set_storageid_in_mr(store, mr);   /* update storage id */
             ok = db_find_next_volume(jcr, jcr->db, -1, InChanger, mr);
+            set_storageid_in_mr(store, mr);  /* update storageid */
             Dmsg1(dbglvl, "Find oldest=%d Volume\n", ok);
             if (ok && prune) {
                UAContext *ua;
@@ -245,6 +262,7 @@ bool has_volume_expired(JCR *jcr, MEDIA_DBR *mr)
    if (expired) {
       /* Need to update media */
       Dmsg1(dbglvl, "Vol=%s has expired update media record\n", mr->VolumeName);
+      set_storageid_in_mr(NULL, mr);
       if (!db_update_media_record(jcr, jcr->db, mr)) {
          Jmsg(jcr, M_ERROR, 0, _("Catalog error updating volume \"%s\". ERR=%s"),
               mr->VolumeName, db_strerror(jcr->db));
@@ -346,7 +364,8 @@ void check_if_volume_valid_or_recyclable(JCR *jcr, MEDIA_DBR *mr, const char **r
 
 static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
 
-bool get_scratch_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr)
+bool get_scratch_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr,
+                        STORE *store)
 {
    MEDIA_DBR smr;                        /* for searching scratch pool */
    POOL_DBR spr, pr;
@@ -365,7 +384,6 @@ bool get_scratch_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr)
    bstrncpy(spr.Name, "Scratch", sizeof(spr.Name));
    spr.PoolId = mr->ScratchPoolId;
    if (db_get_pool_record(jcr, jcr->db, &spr)) {
-      memset(&smr, 0, sizeof(smr));
       smr.PoolId = spr.PoolId;
       if (InChanger) {       
          smr.StorageId = mr->StorageId;  /* want only Scratch Volumes in changer */
@@ -378,13 +396,14 @@ bool get_scratch_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr)
        *  recycling any existing purged volumes, then
        *  try to take the oldest volume.
        */
+      set_storageid_in_mr(store, &smr);  /* put StorageId in new record */
       if (db_find_next_volume(jcr, jcr->db, 1, InChanger, &smr)) {
          found = true;
 
-      } else if (find_recycled_volume(jcr, InChanger, &smr)) {
+      } else if (find_recycled_volume(jcr, InChanger, &smr, store)) {
          found = true;
 
-      } else if (recycle_oldest_purged_volume(jcr, InChanger, &smr)) {
+      } else if (recycle_oldest_purged_volume(jcr, InChanger, &smr, store)) {
          found = true;
       }
 
@@ -411,7 +430,8 @@ bool get_scratch_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr)
             goto bail_out;
          }
 
-         memcpy(mr, &smr, sizeof(MEDIA_DBR)); 
+         mr->copy(&smr);
+         set_storageid_in_mr(store, mr);
 
          /* Set default parameters from current pool */
          set_pool_dbr_defaults_in_media_dbr(mr, &pr);
diff --git a/src/dird/protos.h b/src/dird/protos.h
index f8eb810..d832494 100644
--- a/src/dird/protos.h
+++ b/src/dird/protos.h
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -42,12 +42,16 @@ extern int authenticate_user_agent(UAContext *ua);
 
 /* autoprune.c */
 extern void do_autoprune(JCR *jcr);
-extern void prune_volumes(JCR *jcr, bool InChanger, MEDIA_DBR *mr);
+extern void prune_volumes(JCR *jcr, bool InChanger, MEDIA_DBR *mr,
+              STORE *store);
 
 /* autorecycle.c */
-extern bool recycle_oldest_purged_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr);
+extern bool recycle_oldest_purged_volume(JCR *jcr, bool InChanger,
+              MEDIA_DBR *mr, STORE *store);
+
 extern int recycle_volume(JCR *jcr, MEDIA_DBR *mr);
-extern bool find_recycled_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr);
+extern bool find_recycled_volume(JCR *jcr, bool InChanger,
+                MEDIA_DBR *mr, STORE *store);
 
 /* backup.c */
 extern int wait_for_job_termination(JCR *jcr, int timeout=0);
@@ -168,14 +172,16 @@ extern void wait_for_storage_daemon_termination(JCR *jcr);
 extern bool send_bootstrap_file(JCR *jcr, BSOCK *sd);
 
 /* next_vol.c */
+void set_storageid_in_mr(STORE *store, MEDIA_DBR *mr);
 int find_next_volume_for_append(JCR *jcr, MEDIA_DBR *mr, int index,
                                 bool create, bool purge);
 bool has_volume_expired(JCR *jcr, MEDIA_DBR *mr);
 void check_if_volume_valid_or_recyclable(JCR *jcr, MEDIA_DBR *mr, const char **reason);
-bool get_scratch_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr);
+bool get_scratch_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr,
+        STORE *store);
 
 /* newvol.c */
-bool newVolume(JCR *jcr, MEDIA_DBR *mr);
+bool newVolume(JCR *jcr, MEDIA_DBR *mr, STORE *store);
 
 /* python.c */
 int generate_job_event(JCR *jcr, const char *event);
diff --git a/src/dird/pythondir.c b/src/dird/pythondir.c
index d36b6af..1782e7f 100644
--- a/src/dird/pythondir.c
+++ b/src/dird/pythondir.c
@@ -381,7 +381,6 @@ static PyObject *job_does_vol_exist(PyObject *self, PyObject *args)
       MEDIA_DBR mr;
       int ok;
       JCR *jcr = get_jcr_from_PyObject(self);
-      memset(&mr, 0, sizeof(mr));
       bstrncpy(mr.VolumeName, VolName, sizeof(mr.VolumeName));
       ok = db_get_media_record(jcr, jcr->db, &mr);
       return Py_BuildValue("i", ok);
diff --git a/src/dird/recycle.c b/src/dird/recycle.c
index 3e8e494..4ceaf0b 100644
--- a/src/dird/recycle.c
+++ b/src/dird/recycle.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2008 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -32,7 +32,6 @@
  *
  *     Kern Sibbald, May MMII
  *
- *   Version $Id$
  */
 
 
@@ -42,13 +41,16 @@
 
 /* Forward referenced functions */
 
-bool find_recycled_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr)
+bool find_recycled_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr,
+                          STORE *store)
 {
    bstrncpy(mr->VolStatus, "Recycle", sizeof(mr->VolStatus));
+   set_storageid_in_mr(store, mr);
    if (db_find_next_volume(jcr, jcr->db, 1, InChanger, mr)) {
       jcr->MediaId = mr->MediaId;
       Dmsg1(20, "Find_next_vol MediaId=%u\n", jcr->MediaId);
       pm_strcpy(jcr->VolumeName, mr->VolumeName);
+      set_storageid_in_mr(store, mr);
       return true;
    }
    return false;
@@ -57,10 +59,12 @@ bool find_recycled_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr)
 /*
  *   Look for oldest Purged volume
  */
-bool recycle_oldest_purged_volume(JCR *jcr, bool InChanger, MEDIA_DBR *mr)
+bool recycle_oldest_purged_volume(JCR *jcr, bool InChanger,
+        MEDIA_DBR *mr, STORE *store)
 {
    bstrncpy(mr->VolStatus, "Purged", sizeof(mr->VolStatus));
    if (db_find_next_volume(jcr, jcr->db, 1, InChanger, mr)) {
+      set_storageid_in_mr(store, mr);
       if (recycle_volume(jcr, mr)) {
          Jmsg(jcr, M_INFO, 0, _("Recycled volume \"%s\"\n"), mr->VolumeName);
          Dmsg1(100, "return 1  recycle_oldest_purged_volume Vol=%s\n", mr->VolumeName);
@@ -82,5 +86,6 @@ int recycle_volume(JCR *jcr, MEDIA_DBR *mr)
    mr->FirstWritten = mr->LastWritten = 0;
    mr->RecycleCount++;
    mr->set_first_written = true;
+   set_storageid_in_mr(NULL, mr);
    return db_update_media_record(jcr, jcr->db, mr);
 }
diff --git a/src/dird/restore.c b/src/dird/restore.c
index 0a8945a..eee86be 100644
--- a/src/dird/restore.c
+++ b/src/dird/restore.c
@@ -432,6 +432,9 @@ bool restore_bootstrap(JCR *jcr)
          goto bail_out;
       }
 
+      /* Declare the job started to start the MaxRunTime check */
+      jcr->setJobStarted();
+
       /* Only pass "global" commands to the FD once */
       if (first_time) {
          first_time = false;
diff --git a/src/dird/ua_acl.c b/src/dird/ua_acl.c
index 1a386fd..c510df6 100644
--- a/src/dird/ua_acl.c
+++ b/src/dird/ua_acl.c
@@ -56,7 +56,7 @@ bool acl_access_ok(UAContext *ua, int acl, const char *item, int len)
    }
 
    /* If no console resource => default console and all is permitted */
-   if (!ua->cons) {
+   if (!ua || !ua->cons) {
       Dmsg0(1400, "Root cons access OK.\n");
       return true;                    /* No cons resource -> root console OK for everything */
    }
diff --git a/src/dird/ua_cmds.c b/src/dird/ua_cmds.c
index 9e60d30..422eaa8 100644
--- a/src/dird/ua_cmds.c
+++ b/src/dird/ua_cmds.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -156,7 +156,7 @@ static struct cmdstruct commands[] = {                                      /* C
  { NT_("query"),      querycmd,      _("Query catalog"),              NT_(""),              false},
  { NT_("restore"),    restore_cmd,   _("Restore files"), 
    NT_("where=</path> client=<client> storage=<storage> bootstrap=<file> "
-       "restore_job=<job>"
+       "restorejob=<job>"
        "\n\tcomment=<text> jobid=<jobid> done select all"), false},
 
  { NT_("relabel"),    relabel_cmd,   _("Relabel a tape"), 
@@ -192,7 +192,7 @@ static struct cmdstruct commands[] = {                                      /* C
        "\n\tvolume=<volname> volstatus=<status> volretention=<time-def>"
        "\n\t pool=<pool> recycle=<yes/no> slot=<number>\n\t inchanger=<yes/no>"
        "\n\t maxvolbytes=<size> maxvolfiles=<nb> maxvoljobs=<nb>"
-       "\n\t enable=<yes/no> recyclepool=<pool> actiononpurge=<action>"),true},
+       "\n\t enabled=<yes/no> recyclepool=<pool> actiononpurge=<action>"),true},
  { NT_("use"),        use_cmd,       _("Use catalog xxx"), NT_("catalog=<catalog>"),     false},
  { NT_("var"),        var_cmd,       _("Does variable expansion"), NT_(""),  false},
  { NT_("version"),    version_cmd,   _("Print Director version"),  NT_(""),  true},
@@ -294,7 +294,6 @@ static int add_cmd(UAContext *ua, const char *cmd)
    }
 
    memset(&pr, 0, sizeof(pr));
-   memset(&mr, 0, sizeof(mr));
 
    if (!get_pool_dbr(ua, &pr)) {
       return 1;
@@ -398,8 +397,8 @@ static int add_cmd(UAContext *ua, const char *cmd)
       bsnprintf(mr.VolumeName, sizeof(mr.VolumeName), name, i);
       mr.Slot = Slot++;
       mr.InChanger = InChanger;
-      mr.StorageId = store->StorageId;
       mr.Enabled = 1;
+      set_storageid_in_mr(store, &mr);
       Dmsg1(200, "Create Volume %s\n", mr.VolumeName);
       if (!db_create_media_record(ua->jcr, ua->db, &mr)) {
          ua->error_msg("%s", db_strerror(ua->db));
@@ -1140,14 +1139,20 @@ static int estimate_cmd(UAContext *ua, const char *cmd)
             }
             continue;
          } else {
-           ua->error_msg(_("Level value missing.\n"));
-           return 1;
+            ua->error_msg(_("Level value missing.\n"));
+            return 1;
          }
       }
       if (strcasecmp(ua->argk[i], NT_("accurate")) == 0) {
-         if (!is_yesno(ua->argv[i], &accurate)) {
-            ua->error_msg(_("Invalid value for accurate. " 
-                            "It must be yes or no.\n"));
+         if (ua->argv[i]) {
+            if (!is_yesno(ua->argv[i], &accurate)) {
+               ua->error_msg(_("Invalid value for accurate. " 
+                               "It must be yes or no.\n"));
+            }
+            continue;
+         } else {
+            ua->error_msg(_("Accurate value missing.\n"));
+            return 1;
          }
       }
    }
@@ -1188,6 +1193,7 @@ static int estimate_cmd(UAContext *ua, const char *cmd)
 
    jcr->job = job;
    jcr->setJobType(JT_BACKUP);
+   jcr->start_time = time(NULL);
    init_jcr_job_record(jcr);
 
    if (!get_or_create_client_record(jcr)) {
@@ -1206,16 +1212,6 @@ static int estimate_cmd(UAContext *ua, const char *cmd)
       return 1;
    }
 
-   if (!send_include_list(jcr)) {
-      ua->error_msg(_("Error sending include list.\n"));
-      goto bail_out;
-   }
-
-   if (!send_exclude_list(jcr)) {
-      ua->error_msg(_("Error sending exclude list.\n"));
-      goto bail_out;
-   }
-
    /* The level string change if accurate mode is enabled */
    if (accurate >= 0) {
       jcr->accurate = accurate;
@@ -1227,6 +1223,16 @@ static int estimate_cmd(UAContext *ua, const char *cmd)
       goto bail_out;
    }
 
+   if (!send_include_list(jcr)) {
+      ua->error_msg(_("Error sending include list.\n"));
+      goto bail_out;
+   }
+
+   if (!send_exclude_list(jcr)) {
+      ua->error_msg(_("Error sending exclude list.\n"));
+      goto bail_out;
+   }
+
    /*
     * If the job is in accurate mode, we send the list of
     * all files to FD.
@@ -1304,7 +1310,7 @@ static int delete_cmd(UAContext *ua, const char *cmd)
       return 1;
    case 2:
       int i;
-      while ((i=find_arg(ua, "jobid")) > 0) {
+      while ((i = find_arg(ua, "jobid")) > 0) {
          delete_job(ua);
          *ua->argk[i] = 0;         /* zap keyword already visited */
       }
@@ -1334,52 +1340,66 @@ static int delete_cmd(UAContext *ua, const char *cmd)
    return 1;
 }
 
-
 /*
- * delete_job has been modified to parse JobID lists like the
- * following:
+ * delete_job has been modified to parse JobID lists like the following:
  * delete JobID=3,4,6,7-11,14
  *
  * Thanks to Phil Stracchino for the above addition.
  */
-
 static void delete_job(UAContext *ua)
 {
+   int i;
    JobId_t JobId;
-   char *s,*sep,*tok;
+   char *s, *sep, *tok;
 
-   int i = find_arg_with_value(ua, NT_("jobid"));
+   i = find_arg_with_value(ua, NT_("jobid"));
    if (i >= 0) {
-      if (strchr(ua->argv[i], ',') != NULL || strchr(ua->argv[i], '-') != NULL) {
-        s = bstrdup(ua->argv[i]);
-        tok = s;
-        /*
-         * We could use strtok() here.  But we're not going to, because:
-         * (a) strtok() is deprecated, having been replaced by strsep();
-         * (b) strtok() is broken in significant ways.
-         * we could use strsep() instead, but it's not universally available.
-         * so we grow our own using strchr().
-         */
-        sep = strchr(tok, ',');
-        while (sep != NULL) {
-           *sep = '\0';
-           if (!delete_job_id_range(ua, tok)) {
-              JobId = str_to_int64(tok);
-              do_job_delete(ua, JobId);
-           }
-           tok = ++sep;
-           sep = strchr(tok, ',');
-        }
-        /* pick up the last token */
-        if (!delete_job_id_range(ua, tok)) {
-            JobId = str_to_int64(tok);
-            do_job_delete(ua, JobId);
-        }
+      if (strchr(ua->argv[i], ',') || strchr(ua->argv[i], '-')) {
+         s = bstrdup(ua->argv[i]);
+         tok = s;
+
+         /*
+          * We could use strtok() here.  But we're not going to, because:
+          * (a) strtok() is deprecated, having been replaced by strsep();
+          * (b) strtok() is broken in significant ways.
+          * we could use strsep() instead, but it's not universally available.
+          * so we grow our own using strchr().
+          */
+         sep = strchr(tok, ',');
+         while (sep != NULL) {
+            *sep = '\0';
+            if (!delete_job_id_range(ua, tok)) {
+               if (is_a_number(tok)) {
+                  JobId = (JobId_t)str_to_uint64(tok);
+                  do_job_delete(ua, JobId);
+               } else {
+                  ua->warning_msg(_("Illegal JobId %s ignored\n"), tok);
+               }
+            }
+            tok = ++sep;
+            sep = strchr(tok, ',');
+         }
+
+         /*
+          * Pick up the last token
+          */
+         if (!delete_job_id_range(ua, tok)) {
+            if (is_a_number(tok)) {
+               JobId = (JobId_t)str_to_uint64(tok);
+               do_job_delete(ua, JobId);
+            } else {
+               ua->warning_msg(_("Illegal JobId %s ignored\n"), tok);
+            }
+         }
 
          free(s);
       } else {
-         JobId = str_to_int64(ua->argv[i]);
-        do_job_delete(ua, JobId);
+         if (is_a_number(ua->argv[i])) {
+            JobId = (JobId_t)str_to_uint64(ua->argv[i]);
+            do_job_delete(ua, JobId);
+         } else {
+            ua->warning_msg(_("Illegal JobId %s ignored\n"), ua->argv[i]);
+         }
       }
    } else if (!get_pint(ua, _("Enter JobId to delete: "))) {
       return;
@@ -1390,24 +1410,50 @@ static void delete_job(UAContext *ua)
 }
 
 /*
- * we call delete_job_id_range to parse range tokens and iterate over ranges
+ * We call delete_job_id_range to parse range tokens and iterate over ranges
  */
 static bool delete_job_id_range(UAContext *ua, char *tok)
 {
+   char buf[64];
    char *tok2;
-   JobId_t j,j1,j2;
+   JobId_t j, j1, j2;
 
    tok2 = strchr(tok, '-');
    if (!tok2) {
       return false;
    }
+
    *tok2 = '\0';
    tok2++;
-   j1 = str_to_int64(tok);
-   j2 = str_to_int64(tok2);
-   for (j=j1; j<=j2; j++) {
-      do_job_delete(ua, j);
+
+   if (is_a_number(tok) && is_a_number(tok2)) {
+      j1 = (JobId_t)str_to_uint64(tok);
+      j2 = (JobId_t)str_to_uint64(tok2);
+
+      if (j1 > j2) {
+         /*
+          * See if the range is big if more then 25 Jobs are deleted
+          * ask the user for confirmation.
+          */
+         if ((j2 - j1) > 25) {
+            bsnprintf(buf, sizeof(buf),
+                      _("Are you sure you want to delete %d JobIds ? (yes/no): "),
+                      j2 - j1);
+            if (!get_yesno(ua, buf)) {
+               return true;
+            }
+         }
+         for (j = j1; j <= j2; j++) {
+            do_job_delete(ua, j);
+         }
+      } else {
+         ua->warning_msg(_("Illegal JobId range %s - %s should define increasing JobIds, ignored\n"),
+                         tok, tok2);
+      }
+   } else {
+      ua->warning_msg(_("Illegal JobId range %s - %s, ignored\n"), tok, tok2);
    }
+
    return true;
 }
 
@@ -1420,7 +1466,7 @@ static void do_job_delete(UAContext *ua, JobId_t JobId)
 
    edit_int64(JobId, ed1);
    purge_jobs_from_catalog(ua, ed1);
-   ua->send_msg(_("Job %s and associated records deleted from the catalog.\n"), ed1);
+   ua->send_msg(_("Jobid %s and associated records deleted from the catalog.\n"), ed1);
 }
 
 /*
diff --git a/src/dird/ua_dotcmds.c b/src/dird/ua_dotcmds.c
index dc4f75e..d78fa3f 100644
--- a/src/dird/ua_dotcmds.c
+++ b/src/dird/ua_dotcmds.c
@@ -186,7 +186,10 @@ static bool dot_bvfs_update(UAContext *ua, const char *cmd)
 
    int pos = find_arg_with_value(ua, "jobid");
    if (pos != -1 && is_a_number_list(ua->argv[pos])) {
-      bvfs_update_path_hierarchy_cache(ua->jcr, ua->db, ua->argv[pos]);
+      if (!bvfs_update_path_hierarchy_cache(ua->jcr, ua->db, ua->argv[pos])) {
+         ua->error_msg("ERROR: BVFS reported a problem for %s\n", 
+                       ua->argv[pos]);
+      }
    } else {
       /* update cache for all jobids */
       bvfs_update_cache(ua->jcr, ua->db);
@@ -520,6 +523,8 @@ static bool dot_bvfs_versions(UAContext *ua, const char *cmd)
  *  -> returns needed jobids to restore
  * .bvfs_get_jobids jobid=1 all
  *  -> returns needed jobids to restore with all filesets a JobId=1 time
+ * .bvfs_get_jobids ujobid=JobName
+ *  -> returns needed jobids to restore
  */
 static bool dot_bvfs_get_jobids(UAContext *ua, const char *cmd)
 {
@@ -535,6 +540,11 @@ static bool dot_bvfs_get_jobids(UAContext *ua, const char *cmd)
    }
 
    memset(&jr, 0, sizeof(JOB_DBR));
+
+   if ((pos = find_arg_with_value(ua, "ujobid")) >= 0) {
+      bstrncpy(jr.Job, ua->argv[pos], sizeof(jr.Job));
+   }
+
    if ((pos = find_arg_with_value(ua, "jobid")) >= 0) {
       jr.JobId = str_to_int64(ua->argv[pos]);
    }
diff --git a/src/dird/ua_label.c b/src/dird/ua_label.c
index 8cf3592..93899cb 100644
--- a/src/dird/ua_label.c
+++ b/src/dird/ua_label.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2003-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2003-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -147,10 +147,12 @@ static bool get_user_slot_list(UAContext *ua, char *slot_list, int num_slots)
          slot_list[i] = 1;
       }
    }
-   Dmsg0(100, "Slots turned on:\n");
-   for (i=1; i <= num_slots; i++) {
-      if (slot_list[i]) {
-         Dmsg1(100, "%d\n", i);
+   if (debug_level >= 100) {
+      Dmsg0(100, "Slots turned on:\n");
+      for (i=1; i <= num_slots; i++) {
+         if (slot_list[i]) {
+            Dmsg1(100, "%d\n", i);
+         }
       }
    }
    return true;
@@ -243,30 +245,42 @@ void update_slots(UAContext *ua)
          Dmsg2(100, "Got Vol=%s from SD for Slot=%d\n", vl->VolName, vl->Slot);
       }
       slot_list[vl->Slot] = 0;        /* clear Slot */
-      memset(&mr, 0, sizeof(mr));
       mr.Slot = vl->Slot;
       mr.InChanger = 1;
-      mr.StorageId = store.store->StorageId;
-      /* Set InChanger to zero for this Slot */
+      mr.MediaId = 0;                 /* Force using VolumeName */
+      if (vl->VolName) {
+         bstrncpy(mr.VolumeName, vl->VolName, sizeof(mr.VolumeName));
+      } else {
+         mr.VolumeName[0] = 0;
+      }
+      set_storageid_in_mr(store.store, &mr);
+      Dmsg4(100, "Before make unique: Vol=%s slot=%d inchanger=%d sid=%d\n",
+            mr.VolumeName, mr.Slot, mr.InChanger, mr.StorageId);
       db_lock(ua->db);
+      /* Set InChanger to zero for this Slot */
       db_make_inchanger_unique(ua->jcr, ua->db, &mr);
       db_unlock(ua->db);
+      Dmsg4(100, "After make unique: Vol=%s slot=%d inchanger=%d sid=%d\n",
+            mr.VolumeName, mr.Slot, mr.InChanger, mr.StorageId);
       if (!vl->VolName) {
          Dmsg1(100, "No VolName for Slot=%d setting InChanger to zero.\n", vl->Slot);
          ua->info_msg(_("No VolName for Slot=%d InChanger set to zero.\n"), vl->Slot);
          continue;
       }
-      memset(&mr, 0, sizeof(mr));
-      bstrncpy(mr.VolumeName, vl->VolName, sizeof(mr.VolumeName));
       db_lock(ua->db);
+      Dmsg4(100, "Before get MR: Vol=%s slot=%d inchanger=%d sid=%d\n",
+            mr.VolumeName, mr.Slot, mr.InChanger, mr.StorageId);
       if (db_get_media_record(ua->jcr, ua->db, &mr)) {
+         Dmsg4(100, "After get MR: Vol=%s slot=%d inchanger=%d sid=%d\n",
+            mr.VolumeName, mr.Slot, mr.InChanger, mr.StorageId);
+         /* If Slot, Inchanger, and StorageId have changed, update the Media record */
          if (mr.Slot != vl->Slot || !mr.InChanger || mr.StorageId != store.store->StorageId) {
             mr.Slot = vl->Slot;
             mr.InChanger = 1;
-            mr.StorageId = store.store->StorageId;
             if (have_enabled) {
                mr.Enabled = Enabled;
             }
+            set_storageid_in_mr(store.store, &mr);
             if (!db_update_media_record(ua->jcr, ua->db, &mr)) {
                ua->error_msg("%s", db_strerror(ua->db));
             } else {
@@ -286,9 +300,9 @@ void update_slots(UAContext *ua)
       }
       db_unlock(ua->db);
    }
-   memset(&mr, 0, sizeof(mr));
+   mr.clear();
    mr.InChanger = 1;
-   mr.StorageId = store.store->StorageId;
+   set_storageid_in_mr(store.store, &mr);
    db_lock(ua->db);
    for (int i=1; i <= max_slots; i++) {
       if (slot_list[i]) {
@@ -363,7 +377,6 @@ static int do_label(UAContext *ua, const char *cmd, int relabel)
       /* Check for oldvolume=name */
       i = find_arg_with_value(ua, "oldvolume");
       if (i >= 0) {
-         memset(&omr, 0, sizeof(omr));
          bstrncpy(omr.VolumeName, ua->argv[i], sizeof(omr.VolumeName));
          if (db_get_media_record(ua->jcr, ua->db, &omr)) {
             goto checkVol;
@@ -402,8 +415,10 @@ checkName:
          continue;
       }
 
-      memset(&mr, 0, sizeof(mr));
+      /* Search by Media name so set VolumeName and clear MediaId. */
+      mr.MediaId = 0;
       bstrncpy(mr.VolumeName, ua->cmd, sizeof(mr.VolumeName));
+
       /* If VolBytes are zero the Volume is not labeled */
       if (db_get_media_record(ua->jcr, ua->db, &mr)) {
          if (mr.VolBytes != 0) {
@@ -434,7 +449,7 @@ checkName:
       }
       mr.InChanger = mr.Slot > 0;  /* if slot give assume in changer */
    }
-   mr.StorageId = store.store->StorageId;
+   set_storageid_in_mr(store.store, &mr);
 
    bstrncpy(mr.MediaType, store.store->media_type, sizeof(mr.MediaType));
 
@@ -547,14 +562,13 @@ static void label_from_barcodes(UAContext *ua, int drive)
    if (!select_pool_dbr(ua, &pr)) {
       goto bail_out;
    }
-   memset(&omr, 0, sizeof(omr));
 
    /* Fire off the label requests */
    for (vl=vol_list; vl; vl=vl->next) {
       if (!vl->VolName || !slot_list[vl->Slot]) {
          continue;
       }
-      memset(&mr, 0, sizeof(mr));
+      mr.clear();
       bstrncpy(mr.VolumeName, vl->VolName, sizeof(mr.VolumeName));
       media_record_exists = false;
       if (db_get_media_record(ua->jcr, ua->db, &mr)) {
@@ -563,7 +577,7 @@ static void label_from_barcodes(UAContext *ua, int drive)
                 vl->Slot, mr.VolumeName);
              mr.Slot = vl->Slot;
              mr.InChanger = mr.Slot > 0;  /* if slot give assume in changer */
-             mr.StorageId = store->StorageId;
+             set_storageid_in_mr(store, &mr);
              if (!db_update_media_record(ua->jcr, ua->db, &mr)) {
                 ua->error_msg(_("Error setting InChanger: ERR=%s"), db_strerror(ua->db));
              }
@@ -572,7 +586,7 @@ static void label_from_barcodes(UAContext *ua, int drive)
           media_record_exists = true;
       }
       mr.InChanger = mr.Slot > 0;  /* if slot give assume in changer */
-      mr.StorageId = store->StorageId;
+      set_storageid_in_mr(store, &mr);
       /*
        * Deal with creating cleaning tape here. Normal tapes created in
        *  send_label_request() below
@@ -582,7 +596,7 @@ static void label_from_barcodes(UAContext *ua, int drive)
             mr.VolBytes = 1;             /* any bytes to indicate it exists */
             bstrncpy(mr.VolStatus, "Cleaning", sizeof(mr.VolStatus));
             mr.MediaType[0] = 0;
-            mr.StorageId = store->StorageId;
+            set_storageid_in_mr(store, &mr);
             if (!db_update_media_record(ua->jcr, ua->db, &mr)) {
                 ua->error_msg("%s", db_strerror(ua->db));
             }
@@ -594,6 +608,7 @@ static void label_from_barcodes(UAContext *ua, int drive)
             set_pool_dbr_defaults_in_media_dbr(&mr, &pr);
             bstrncpy(mr.VolStatus, "Cleaning", sizeof(mr.VolStatus));
             mr.MediaType[0] = 0;
+            set_storageid_in_mr(store, &mr);
             if (db_create_media_record(ua->jcr, ua->db, &mr)) {
                ua->send_msg(_("Catalog record for cleaning tape \"%s\" successfully created.\n"),
                   mr.VolumeName);
@@ -721,7 +736,7 @@ static bool send_label_request(UAContext *ua, MEDIA_DBR *mr, MEDIA_DBR *omr,
       if (media_record_exists) {      /* we update it */
          mr->VolBytes = VolBytes;
          mr->InChanger = mr->Slot > 0;  /* if slot give assume in changer */
-         mr->StorageId = ua->jcr->wstore->StorageId;
+         set_storageid_in_mr(ua->jcr->wstore, mr);
          if (!db_update_media_record(ua->jcr, ua->db, mr)) {
              ua->error_msg("%s", db_strerror(ua->db));
              ok = false;
@@ -730,8 +745,8 @@ static bool send_label_request(UAContext *ua, MEDIA_DBR *mr, MEDIA_DBR *omr,
          set_pool_dbr_defaults_in_media_dbr(mr, pr);
          mr->VolBytes = VolBytes;
          mr->InChanger = mr->Slot > 0;  /* if slot give assume in changer */
-         mr->StorageId = ua->jcr->wstore->StorageId;
          mr->Enabled = 1;
+         set_storageid_in_mr(ua->jcr->wstore, mr);
          if (db_create_media_record(ua->jcr, ua->db, mr)) {
             ua->info_msg(_("Catalog record for Volume \"%s\", Slot %d  successfully created.\n"),
             mr->VolumeName, mr->Slot);
@@ -1041,7 +1056,6 @@ static void content_send_info(UAContext *ua, char type, int Slot, char *vol_name
    const char *slot_api_empty_format="%c|%i||||||||\n";
 
    if (is_volume_name_legal(NULL, vol_name)) {
-      memset(&mr, 0, sizeof(mr));
       bstrncpy(mr.VolumeName, vol_name, sizeof(mr.VolumeName));
       if (db_get_media_record(ua->jcr, ua->db, &mr)) {
          memset(&pr, 0, sizeof(POOL_DBR));
@@ -1268,28 +1282,26 @@ void status_slots(UAContext *ua, STORE *store_r)
          }
       }
 
-      memset(&mr, 0, sizeof(mr));
+      memset(&mr, 0, sizeof(MEDIA_DBR));
       bstrncpy(mr.VolumeName, vl->VolName, sizeof(mr.VolumeName));
-      db_lock(ua->db);
+
       if (mr.VolumeName[0] && db_get_media_record(ua->jcr, ua->db, &mr)) {
          memset(&pr, 0, sizeof(POOL_DBR));
          pr.PoolId = mr.PoolId;
          if (!db_get_pool_record(ua->jcr, ua->db, &pr)) {
             strcpy(pr.Name, "?");
          }
-         db_unlock(ua->db);
 
          /* Print information */
          ua->send_msg(slot_hformat,
                       vl->Slot, ((vl->Slot==mr.Slot)?' ':'*'),
                       mr.VolumeName, mr.VolStatus, mr.MediaType, pr.Name);
-         continue;
+
       } else {                  /* TODO: get information from catalog  */
          ua->send_msg(slot_hformat,
                       vl->Slot, '*',
                       mr.VolumeName, "?", "?", "?");
       }
-      db_unlock(ua->db);
    }
 
    /* Display the rest of the autochanger
diff --git a/src/dird/ua_output.c b/src/dird/ua_output.c
index 8c5a448..adef8a5 100644
--- a/src/dird/ua_output.c
+++ b/src/dird/ua_output.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -201,7 +201,10 @@ int show_cmd(UAContext *ua, const char *cmd)
       switch (type) {
       case -1:                           /* all */
          for (j=r_first; j<=r_last; j++) {
-            dump_resource(j, res_head[j-r_first], bsendmsg, ua);
+            /* Skip R_DEVICE since it is really not used or updated */
+            if (j != R_DEVICE) {
+               dump_resource(j, res_head[j-r_first], bsendmsg, ua);
+            }
          }
          break;
       case -2:
@@ -280,7 +283,6 @@ static int do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist)
 
    memset(&jr, 0, sizeof(jr));
    memset(&pr, 0, sizeof(pr));
-   memset(&mr, 0, sizeof(mr));
 
    Dmsg1(20, "list: %s\n", cmd);
 
@@ -536,7 +538,6 @@ static bool list_nextvol(UAContext *ua, int ndays)
    MEDIA_DBR mr;
    POOL_DBR pr;
 
-   memset(&mr, 0, sizeof(mr));
    int i = find_arg_with_value(ua, "job");
    if (i <= 0) {
       if ((job = select_job_resource(ua)) == NULL) {
@@ -569,7 +570,7 @@ static bool list_nextvol(UAContext *ua, int ndays)
       }
       mr.PoolId = jcr->jr.PoolId;
       get_job_storage(&store, job, run);
-      mr.StorageId = store.store->StorageId;
+      set_storageid_in_mr(store.store, &mr);
       /* no need to set ScratchPoolId, since we use fnv_no_create_vol */
       if (!find_next_volume_for_append(jcr, &mr, 1, fnv_no_create_vol, fnv_prune)) {
          ua->error_msg(_("Could not find next Volume for Job %s (Pool=%s, Level=%s).\n"),
diff --git a/src/dird/ua_prune.c b/src/dird/ua_prune.c
index a993edb..7380945 100644
--- a/src/dird/ua_prune.c
+++ b/src/dird/ua_prune.c
@@ -129,7 +129,9 @@ int prunecmd(UAContext *ua, const char *cmd)
 
    switch (kw) {
    case 0:  /* prune files */
-      client = get_client_resource(ua);
+      if (!(client = get_client_resource(ua))) {
+         return false;
+      }
       if (find_arg_with_value(ua, "pool") >= 0) {
          pool = get_pool_resource(ua);
       } else {
@@ -140,13 +142,15 @@ int prunecmd(UAContext *ua, const char *cmd)
          if (!confirm_retention(ua, &pool->FileRetention, "File")) {
             return false;
          }
-      } else if (!client || !confirm_retention(ua, &client->FileRetention, "File")) {
+      } else if (!confirm_retention(ua, &client->FileRetention, "File")) {
          return false;
       }
       prune_files(ua, client, pool);
       return true;
    case 1:  /* prune jobs */
-      client = get_client_resource(ua);
+      if (!(client = get_client_resource(ua))) {
+         return false;
+      }
       if (find_arg_with_value(ua, "pool") >= 0) {
          pool = get_pool_resource(ua);
       } else {
@@ -157,7 +161,7 @@ int prunecmd(UAContext *ua, const char *cmd)
          if (!confirm_retention(ua, &pool->JobRetention, "Job")) {
             return false;
          }
-      } else if (!client || !confirm_retention(ua, &client->JobRetention, "Job")) {
+      } else if (!confirm_retention(ua, &client->JobRetention, "Job")) {
          return false;
       }
       /* ****FIXME**** allow user to select JobType */
@@ -399,6 +403,9 @@ static int job_select_handler(void *ctx, int num_fields, char **row)
    struct accurate_check_ctx *res;
    ASSERT(num_fields == 6);
 
+   /* Quick fix for #5507, avoid locking res_head after db_lock() */
+
+#ifdef bug5507
    /* If this job doesn't exist anymore in the configuration, delete it */
    if (GetResWithName(R_JOB, row[0]) == NULL) {
       return 0;
@@ -413,6 +420,7 @@ static int job_select_handler(void *ctx, int num_fields, char **row)
    if (GetResWithName(R_CLIENT, row[2]) == NULL) {
       return 0;
    }
+#endif
 
    /* Don't compute accurate things for Verify jobs */
    if (*row[5] == 'V') {
@@ -522,7 +530,7 @@ int prune_jobs(UAContext *ua, CLIENT *client, POOL *pool, int JobType)
 
    /* The job_select_handler will skip jobs or filesets that are no longer
     * in the configuration file. Interesting ClientId/FileSetId will be
-    * added to jobids_check
+    * added to jobids_check (currently disabled in 6.0.7b)
     */
    if (!db_sql_query(ua->db, query.c_str(), job_select_handler, jobids_check)) {
       ua->error_msg("%s", db_strerror(ua->db));
diff --git a/src/dird/ua_purge.c b/src/dird/ua_purge.c
index 81c7ed4..550ab37 100644
--- a/src/dird/ua_purge.c
+++ b/src/dird/ua_purge.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -618,6 +618,7 @@ static void do_truncate_on_purge(UAContext *ua, MEDIA_DBR *mr,
    if (ok) {
       mr->VolBytes = VolBytes;
       mr->VolFiles = 0;
+      set_storageid_in_mr(NULL, mr);
       if (!db_update_media_record(ua->jcr, ua->db, mr)) {
          ua->error_msg(_("Can't update volume size in the catalog\n"));
       }
@@ -645,7 +646,6 @@ static int action_on_purge_cmd(UAContext *ua, const char *cmd)
    BSOCK *sd = NULL;
    
    memset(&pr, 0, sizeof(pr));
-   memset(&mr, 0, sizeof(mr));
 
    /* Look at arguments */
    for (int i=1; i<ua->argc; i++) {
@@ -674,7 +674,6 @@ static int action_on_purge_cmd(UAContext *ua, const char *cmd)
    if (!store) {
       goto bail_out;
    }
-   mr.StorageId = store->StorageId;
 
    if (!open_db(ua)) {
       Dmsg0(100, "Can't open db\n");
@@ -703,6 +702,7 @@ static int action_on_purge_cmd(UAContext *ua, const char *cmd)
    mr.Recycle = 1;
    mr.Enabled = 1;
    mr.VolBytes = 10000;
+   set_storageid_in_mr(store, &mr);
    bstrncpy(mr.VolStatus, "Purged", sizeof(mr.VolStatus));
    if (!db_get_media_ids(ua->jcr, ua->db, &mr, &nb, &results)) {
       Dmsg0(100, "No results from db_get_media_ids\n");
@@ -723,7 +723,7 @@ static int action_on_purge_cmd(UAContext *ua, const char *cmd)
     * Loop over the candidate Volumes and actually truncate them
     */
    for (int i=0; i < nb; i++) {
-      memset(&mr, 0, sizeof(mr));
+      mr.clear();
       mr.MediaId = results[i];
       if (db_get_media_record(ua->jcr, ua->db, &mr)) {         
          /* TODO: ask for drive and change Pool */
@@ -762,6 +762,7 @@ bool mark_media_purged(UAContext *ua, MEDIA_DBR *mr)
        strcmp(mr->VolStatus, "Used")   == 0 ||
        strcmp(mr->VolStatus, "Error")  == 0) {
       bstrncpy(mr->VolStatus, "Purged", sizeof(mr->VolStatus));
+      set_storageid_in_mr(NULL, mr);
       if (!db_update_media_record(jcr, ua->db, mr)) {
          return false;
       }
diff --git a/src/dird/ua_restore.c b/src/dird/ua_restore.c
index 67f4f3f..9a9b44d 100644
--- a/src/dird/ua_restore.c
+++ b/src/dird/ua_restore.c
@@ -1530,8 +1530,13 @@ void find_storage_resource(UAContext *ua, RESTORE_CTX &rx, char *Storage, char *
             if (acl_access_ok(ua, Storage_ACL, store->name())) {
                rx.store = store;
                Dmsg1(200, "Set store=%s\n", rx.store->name());
-               ua->warning_msg(_("Storage \"%s\" not found, using Storage \"%s\" from MediaType \"%s\".\n"),
-                  Storage, store->name(), MediaType);
+               if (Storage == NULL) {
+                  ua->warning_msg(_("Using Storage \"%s\" from MediaType \"%s\".\n"),
+                     store->name(), MediaType);
+               } else {
+                  ua->warning_msg(_("Storage \"%s\" not found, using Storage \"%s\" from MediaType \"%s\".\n"),
+                     Storage, store->name(), MediaType);
+               }
             }
             UnlockRes();
             return;
diff --git a/src/dird/ua_run.c b/src/dird/ua_run.c
index 878c029..a9941ad 100644
--- a/src/dird/ua_run.c
+++ b/src/dird/ua_run.c
@@ -197,6 +197,11 @@ start_job:
       }
       return JobId;
    }
+   if (strncasecmp(ua->cmd, _("no"), strlen(ua->cmd)) == 0) {
+      goto bail_out;
+   }
+   ua->send_msg(_("\nBad response: %s. You must answer yes, mod, or no.\n\n"), ua->cmd);
+   goto try_again;
 
 bail_out:
    ua->send_msg(_("Job not run.\n"));
@@ -208,24 +213,6 @@ int modify_job_parameters(UAContext *ua, JCR *jcr, run_ctx &rc)
 {
    int i, opt;
    
-   /* Some options are not available through the menu
-    * TODO: Add an advanced menu?
-    */
-   if (rc.spool_data_set) {
-      jcr->spool_data = rc.spool_data;
-   }
-
-   if (rc.accurate_set) {
-      jcr->accurate = rc.accurate;
-   }
-
-   /* Used by migration jobs that can have the same name,
-    * but can run at the same time
-    */
-   if (rc.ignoreduplicatecheck_set) {
-      jcr->IgnoreDuplicateJobChecking = rc.ignoreduplicatecheck;
-   }
-
    /*
     * At user request modify parameters of job to be run.
     */
@@ -374,7 +361,7 @@ int modify_job_parameters(UAContext *ua, JCR *jcr, run_ctx &rc)
             goto try_again;
          }
          /* Where */
-         if (!get_cmd(ua, _("Please enter path prefix for restore (/ for none): "))) {
+         if (!get_cmd(ua, _("Please enter the full path prefix for restore (/ for none): "))) {
             break;
          }
          if (jcr->RegexWhere) { /* cannot use regexwhere and where */
@@ -570,6 +557,25 @@ static bool reset_restore_context(UAContext *ua, JCR *jcr, run_ctx &rc)
       jcr->RestoreJobId = str_to_int64(rc.jid);
       rc.jid = 0;
    }
+
+   /* Some options are not available through the menu
+    * TODO: Add an advanced menu?
+    */
+   if (rc.spool_data_set) {
+      jcr->spool_data = rc.spool_data;
+   }
+
+   if (rc.accurate_set) {
+      jcr->accurate = rc.accurate;
+   }
+
+   /* Used by migration jobs that can have the same name,
+    * but can run at the same time
+    */
+   if (rc.ignoreduplicatecheck_set) {
+      jcr->IgnoreDuplicateJobChecking = rc.ignoreduplicatecheck;
+   }
+
    return true;
 }
 
@@ -594,7 +600,7 @@ try_again_reg:
    switch (do_prompt(ua, "", _("Select parameter to modify"), NULL, 0)) {
    case 0:
       /* Strip prefix */
-      if (get_cmd(ua, _("Please enter path prefix to strip: "))) {
+      if (get_cmd(ua, _("Please enter the path prefix to strip: "))) {
          if (strip_prefix) bfree(strip_prefix);
          strip_prefix = bstrdup(ua->cmd);
       }
@@ -602,7 +608,7 @@ try_again_reg:
       goto try_again_reg;
    case 1:
       /* Add prefix */
-      if (get_cmd(ua, _("Please enter path prefix to add (/ for none): "))) {
+      if (get_cmd(ua, _("Please enter the path prefix to add (/ for none): "))) {
          if (IsPathSeparator(ua->cmd[0]) && ua->cmd[1] == '\0') {
             ua->cmd[0] = 0;
          }
@@ -613,7 +619,7 @@ try_again_reg:
       goto try_again_reg;
    case 2:
       /* Add suffix */
-      if (get_cmd(ua, _("Please enter file suffix to add: "))) {
+      if (get_cmd(ua, _("Please enter the file suffix to add: "))) {
          if (add_suffix) bfree(add_suffix);
          add_suffix = bstrdup(ua->cmd);
       }      
diff --git a/src/dird/ua_select.c b/src/dird/ua_select.c
index ed8798b..23b75b4 100644
--- a/src/dird/ua_select.c
+++ b/src/dird/ua_select.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -299,7 +299,7 @@ JOB *select_job_resource(UAContext *ua)
 JOB *get_restore_job(UAContext *ua)
 {
    JOB *job;
-   int i = find_arg_with_value(ua, "restore_job");
+   int i = find_arg_with_value(ua, "restorejob");
    if (i >= 0 && acl_access_ok(ua, Job_ACL, ua->argv[i])) {
       job = (JOB *)GetResWithName(R_JOB, ua->argv[i]);
       if (job && job->JobType == JT_RESTORE) {
@@ -602,8 +602,7 @@ int select_media_dbr(UAContext *ua, MEDIA_DBR *mr)
    POOLMEM *err = get_pool_memory(PM_FNAME);
    *err=0;
 
-   memset(mr, 0, sizeof(MEDIA_DBR));
-
+   mr->clear();
    i = find_arg_with_value(ua, "volume");
    if (i >= 0) {
       if (is_name_valid(ua->argv[i], &err)) {
diff --git a/src/dird/ua_status.c b/src/dird/ua_status.c
index 3c58229..c2a2053 100644
--- a/src/dird/ua_status.c
+++ b/src/dird/ua_status.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -453,7 +453,6 @@ static void prt_runtime(UAContext *ua, sched_pkt *sp)
    int orig_jobtype;
 
    orig_jobtype = jcr->getJobType();
-   memset(&mr, 0, sizeof(mr));
    if (sp->job->JobType == JT_BACKUP) {
       jcr->db = NULL;
       ok = complete_jcr_for_job(jcr, sp->job, sp->pool);
@@ -463,8 +462,8 @@ static void prt_runtime(UAContext *ua, sched_pkt *sp)
       }
       if (ok) {
          mr.PoolId = jcr->jr.PoolId;
-         mr.StorageId = sp->store->StorageId;
          jcr->wstore = sp->store;
+         set_storageid_in_mr(jcr->wstore, &mr);
          Dmsg0(250, "call find_next_volume_for_append\n");
          /* no need to set ScratchPoolId, since we use fnv_no_create_vol */
          ok = find_next_volume_for_append(jcr, &mr, 1, fnv_no_create_vol, fnv_no_prune);
diff --git a/src/dird/ua_tree.c b/src/dird/ua_tree.c
index d471cfa..0f97b0a 100644
--- a/src/dird/ua_tree.c
+++ b/src/dird/ua_tree.c
@@ -194,7 +194,7 @@ int insert_tree_handler(void *ctx, int num_fields, char **row)
    int32_t delta_seq;
    JobId_t JobId;
 
-   Dmsg4(100, "Path=%s%s FI=%s JobId=%s\n", row[0], row[1],
+   Dmsg4(150, "Path=%s%s FI=%s JobId=%s\n", row[0], row[1],
          row[2], row[3]);
    if (*row[1] == 0) {                 /* no filename => directory */
       if (!IsPathSeparator(*row[0])) { /* Must be Win32 directory */
@@ -210,7 +210,7 @@ int insert_tree_handler(void *ctx, int num_fields, char **row)
    JobId = str_to_int64(row[3]);
    FileIndex = str_to_int64(row[2]);
    delta_seq = str_to_int64(row[5]);
-   Dmsg5(100, "node=0x%p JobId=%s FileIndex=%s Delta=%s node.delta=%d\n",
+   Dmsg5(150, "node=0x%p JobId=%s FileIndex=%s Delta=%s node.delta=%d\n",
          node, row[3], row[2], row[5], node->delta_seq);
 
    /* TODO: check with hardlinks */
@@ -224,9 +224,12 @@ int insert_tree_handler(void *ctx, int num_fields, char **row)
             tree_remove_node(tree->root, node);
 
          } else {
-            Dmsg3(0, "Something is wrong with Delta, skipt it "
-                  "fname=%s d1=%d d2=%d\n", 
-                  row[1], node->delta_seq, delta_seq);
+            tree->ua->warning_msg(_("Something is wrong with the Delta sequence of %s, "
+                                    "skiping new parts. Current sequence is %d\n"),
+                                  row[1], node->delta_seq);
+            
+            Dmsg3(0, "Something is wrong with Delta, skip it "
+                  "fname=%s d1=%d d2=%d\n", row[1], node->delta_seq, delta_seq);
          }
          return 0;
       }
@@ -798,10 +801,6 @@ static int cdcmd(UAContext *ua, TREE_CTX *tree)
       ua->error_msg(_("Too few or too many arguments. Try using double quotes.\n"));
       return 1;
    }
-   if (!tree_node_has_child(tree->node)) {
-      ua->send_msg(_("Node %s has no children.\n"), tree->node->fname);
-      return 1;
-   }
 
    node = tree_cwd(ua->argk[1], tree->root, tree->node);
    if (!node) {
diff --git a/src/dird/ua_update.c b/src/dird/ua_update.c
index 44c2442..7433147 100644
--- a/src/dird/ua_update.c
+++ b/src/dird/ua_update.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -299,6 +299,7 @@ static void update_volslot(UAContext *ua, char *val, MEDIA_DBR *mr)
     * Make sure to use db_update... rather than doing this directly,
     *   so that any Slot is handled correctly.
     */
+   set_storageid_in_mr(NULL, mr);
    if (!db_update_media_record(ua->jcr, ua->db, mr)) {
       ua->error_msg(_("Error updating media record Slot: ERR=%s"), db_strerror(ua->db));
    } else {
@@ -407,7 +408,6 @@ static void update_all_vols_from_pool(UAContext *ua, const char *pool_name)
    MEDIA_DBR mr;
 
    memset(&pr, 0, sizeof(pr));
-   memset(&mr, 0, sizeof(mr));
 
    bstrncpy(pr.Name, pool_name, sizeof(pr.Name));
    if (!get_pool_dbr(ua, &pr)) {
@@ -431,7 +431,6 @@ static void update_all_vols(UAContext *ua)
    MEDIA_DBR mr;
 
    memset(&pr, 0, sizeof(pr));
-   memset(&mr, 0, sizeof(mr));
    
    if (!db_get_pool_ids(ua->jcr, ua->db, &num_pools, &ids)) {
       ua->error_msg(_("Error obtaining pool ids. ERR=%s\n"), db_strerror(ua->db));
@@ -465,6 +464,7 @@ static void update_volenabled(UAContext *ua, char *val, MEDIA_DBR *mr)
    if (mr->Enabled < 0) {
       return;
    }
+   set_storageid_in_mr(NULL, mr);
    if (!db_update_media_record(ua->jcr, ua->db, mr)) {
       ua->error_msg(_("Error updating media record Enabled: ERR=%s"),
                     db_strerror(ua->db));
@@ -482,6 +482,7 @@ static void update_vol_actiononpurge(UAContext *ua, char *val, MEDIA_DBR *mr)
       mr->ActionOnPurge = 0;
    }
    
+   set_storageid_in_mr(NULL, mr);
    if (!db_update_media_record(ua->jcr, ua->db, mr)) {
       ua->error_msg(_("Error updating media record ActionOnPurge: ERR=%s"),
                     db_strerror(ua->db));
@@ -722,6 +723,7 @@ static int update_volume(UAContext *ua)
           * Make sure to use db_update... rather than doing this directly,
           *   so that any Slot is handled correctly.
           */
+         set_storageid_in_mr(NULL, &mr);
          if (!db_update_media_record(ua->jcr, ua->db, &mr)) {
             ua->error_msg(_("Error updating media record Slot: ERR=%s"), db_strerror(ua->db));
          } else {
diff --git a/src/dird/vbackup.c b/src/dird/vbackup.c
index 59c33ef..2babd36 100644
--- a/src/dird/vbackup.c
+++ b/src/dird/vbackup.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2008-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2008-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -232,6 +232,9 @@ _("This Job is not an Accurate backup so is not equivalent to a Full backup.\n")
       return false;
    }
 
+   /* Declare the job started to start the MaxRunTime check */
+   jcr->setJobStarted();
+
    /*
     * Start the job prior to starting the message thread below
     * to avoid two threads from using the BSOCK structure at
@@ -282,7 +285,6 @@ void vbackup_cleanup(JCR *jcr, int TermCode)
    POOL_MEM query(PM_MESSAGE);
 
    Dmsg2(100, "Enter backup_cleanup %d %c\n", TermCode, TermCode);
-   memset(&mr, 0, sizeof(mr));
    memset(&cr, 0, sizeof(cr));
 
    jcr->setJobLevel(L_FULL);         /* we want this to appear as a Full backup */
diff --git a/src/filed/Makefile.in b/src/filed/Makefile.in
index c67a2e0..d2f4528 100644
--- a/src/filed/Makefile.in
+++ b/src/filed/Makefile.in
@@ -24,6 +24,8 @@ GETTEXT_LIBS = @LIBINTL@
 
 PYTHON_LIBS = @PYTHON_LIBS@
 PYTHON_INC = @PYTHON_INCDIR@
+AFS_CFLAGS = @AFS_CFLAGS@
+AFS_LIBS = @AFS_LIBS@
 
 first_rule: all
 dummy:
@@ -64,7 +66,7 @@ all: Makefile @WIN32@ bacula-fd @STATIC_FD@
 
 acl.o: acl.c
 	@echo "Compiling $<"
-	$(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
+	$(NO_ECHO)$(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $(AFS_CFLAGS) $<
 
 win32/winlib.a:
 	@if test -f win32/Makefile -a "${GMAKE}" != "none"; then \
@@ -94,13 +96,13 @@ win32:	$(WIN32OBJS)
 bacula-fd:  Makefile $(SVROBJS) ../findlib/libbacfind$(DEFAULT_ARCHIVE_TYPE) ../lib/libbacpy$(DEFAULT_ARCHIVE_TYPE) ../lib/libbaccfg$(DEFAULT_ARCHIVE_TYPE) ../lib/libbac$(DEFAULT_ARCHIVE_TYPE) @WIN32@
 	@echo "Linking $@ ..."
 	$(LIBTOOL_LINK) $(CXX) $(WLDFLAGS) $(LDFLAGS) -L../lib -L../findlib -o $@ $(SVROBJS) \
-	  $(WIN32LIBS) $(FDLIBS) $(ZLIBS) $(LZOLIBS) -lbacfind -lbacpy -lbaccfg -lbac -lm $(PYTHON_LIBS) $(LIBS) \
-	  $(DLIB) $(WRAPLIBS) $(GETTEXT_LIBS) $(OPENSSL_LIBS) $(CAP_LIBS)
+	  $(WIN32LIBS) $(FDLIBS) $(ZLIBS) -lbacfind -lbacpy -lbaccfg -lbac -lm $(PYTHON_LIBS) $(LIBS) \
+	  $(DLIB) $(WRAPLIBS) $(GETTEXT_LIBS) $(OPENSSL_LIBS) $(CAP_LIBS) $(AFS_LIBS) $(LZOLIBS)
 
 static-bacula-fd: Makefile $(SVROBJS) ../findlib/libbacfind.a ../lib/libbacpy$(DEFAULT_ARCHIVE_TYPE) ../lib/libbaccfg$(DEFAULT_ARCHIVE_TYPE) ../lib/libbac$(DEFAULT_ARCHIVE_TYPE) @WIN32@
 	$(LIBTOOL_LINK) $(CXX) $(WLDFLAGS) $(LDFLAGS) -static -L../lib -L../findlib -o $@ $(SVROBJS) \
-	   $(WIN32LIBS) $(FDLIBS) $(ZLIBS) $(LZOLIBS) -lbacfind -lbacpy -lbaccfg -lbac -lm $(PYTHON_LIBS) $(LIBS) \
-	   $(DLIB) $(WRAPLIBS) $(GETTEXT_LIBS) $(OPENSSL_LIBS) $(CAP_LIBS)
+	   $(WIN32LIBS) $(FDLIBS) $(ZLIBS) -lbacfind -lbacpy -lbaccfg -lbac -lm $(PYTHON_LIBS) $(LIBS) \
+	   $(DLIB) $(WRAPLIBS) $(GETTEXT_LIBS) $(OPENSSL_LIBS) $(CAP_LIBS) $(AFS_LIBS) $(LZOLIBS)
 	strip $@
 
 Makefile: $(srcdir)/Makefile.in $(topdir)/config.status
@@ -170,7 +172,7 @@ depend:
 	@$(MV) Makefile Makefile.bak
 	@$(SED) "/^# DO NOT DELETE:/,$$ d" Makefile.bak > Makefile
 	@$(ECHO) "# DO NOT DELETE: nice dependency list follows" >> Makefile
-	@$(CXX) -S -M $(CPPFLAGS) $(XINC) $(PYTHON_INC) -I$(srcdir) -I$(basedir) *.c >> Makefile
+	@$(CXX) -S -M $(CPPFLAGS) $(AFS_CFLAGS) $(XINC) $(PYTHON_INC) -I$(srcdir) -I$(basedir) *.c >> Makefile
 	@if test -f Makefile ; then \
 	    $(RMF) Makefile.bak; \
 	else \
diff --git a/src/filed/accurate.c b/src/filed/accurate.c
index 04bbfe4..a4c7cc4 100644
--- a/src/filed/accurate.c
+++ b/src/filed/accurate.c
@@ -265,6 +265,10 @@ bool accurate_check_file(JCR *jcr, FF_PKT *ff_pkt)
       return true;
    }
 
+   if (!jcr->file_list) {
+      return true;              /* Not initialized properly */
+   }
+
    strip_path(ff_pkt);
  
    if (S_ISDIR(ff_pkt->statp.st_mode)) {
diff --git a/src/filed/acl.c b/src/filed/acl.c
index 4880d70..59eac94 100644
--- a/src/filed/acl.c
+++ b/src/filed/acl.c
@@ -32,12 +32,15 @@
  *   - AIX (pre-5.3 and post 5.3 acls, acl_get and aclx_get interface)
  *   - Darwin
  *   - FreeBSD (POSIX and NFSv4/ZFS acls)
+ *   - GNU Hurd
  *   - HPUX
  *   - IRIX
  *   - Linux
  *   - Solaris (POSIX and NFSv4/ZFS acls)
  *   - Tru64
  *
+ * Next to OS specific acls we support AFS acls using the pioctl interface.
+ *
  * We handle two different types of ACLs: access and default ACLS.
  * On most systems that support default ACLs they only apply to directories.
  *
@@ -63,7 +66,7 @@
 #include "bacula.h"
 #include "filed.h"
   
-#if !defined(HAVE_ACL)
+#if !defined(HAVE_ACL) && !defined(HAVE_AFS_ACL)
 /**
  * Entry points when compiled without support for ACLs or on an unsupported platform.
  */
@@ -431,7 +434,9 @@ static bacl_exit_code aix_parse_acl_streams(JCR *jcr,
                if (cnt < 3) {
                   continue;
                }
-               /* FALL THROUGH */
+               /*
+                * FALLTHROUGH
+                */
             default:
                Mmsg2(jcr->errmsg,
                      _("aclx_scanStr error on file \"%s\": ERR=%s\n"),
@@ -539,7 +544,8 @@ static bacl_exit_code (*os_parse_acl_streams)
       defined(HAVE_FREEBSD_OS) || \
       defined(HAVE_IRIX_OS) || \
       defined(HAVE_OSF1_OS) || \
-      defined(HAVE_LINUX_OS)
+      defined(HAVE_LINUX_OS) || \
+      defined(HAVE_HURD_OS)
 
 #include <sys/types.h>
 
@@ -638,7 +644,8 @@ static int acl_count_entries(acl_t acl)
 {
    int count = 0;
 #if defined(HAVE_FREEBSD_OS) || \
-    defined(HAVE_LINUX_OS)
+    defined(HAVE_LINUX_OS) || \
+    defined(HAVE_HURD_OS)
    acl_entry_t ace;
    int entry_available;
 
@@ -680,7 +687,8 @@ static bool acl_is_trivial(acl_t acl)
    acl_entry_t ace;
    acl_tag_t tag;
 #if defined(HAVE_FREEBSD_OS) || \
-    defined(HAVE_LINUX_OS)
+    defined(HAVE_LINUX_OS) || \
+    defined(HAVE_HURD_OS)
    int entry_available;
 
    entry_available = acl_get_entry(acl, ACL_FIRST_ENTRY, &ace);
@@ -1271,7 +1279,8 @@ static bacl_exit_code (*os_parse_acl_streams)
                       freebsd_parse_acl_streams;
 
 #elif defined(HAVE_IRIX_OS) || \
-      defined(HAVE_LINUX_OS)
+      defined(HAVE_LINUX_OS) || \
+      defined(HAVE_HURD_OS)
 /*
  * Define the supported ACL streams for these OSes
  */
@@ -1289,6 +1298,13 @@ static int os_access_acl_streams[1] = {
 static int os_default_acl_streams[1] = {
    STREAM_ACL_LINUX_DEFAULT_ACL
 };
+#elif defined(HAVE_HURD_OS)
+static int os_access_acl_streams[1] = {
+   STREAM_ACL_HURD_ACCESS_ACL
+};
+static int os_default_acl_streams[1] = {
+   STREAM_ACL_HURD_DEFAULT_ACL
+};
 #endif
 
 static bacl_exit_code generic_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt)
@@ -1977,8 +1993,9 @@ static bacl_exit_code solaris_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt)
    char *acl_text;
 
    n = acl(jcr->last_fname, GETACLCNT, 0, NULL);
-   if (n < MIN_ACL_ENTRIES)
+   if (n < MIN_ACL_ENTRIES) {
       return bacl_exit_error;
+   }
 
    acls = (aclent_t *)malloc(n * sizeof(aclent_t));
    if (acl(jcr->last_fname, GETACL, n, acls) == n) {
@@ -2072,7 +2089,86 @@ static bacl_exit_code (*os_parse_acl_streams)
 #endif /* HAVE_SUN_OS */
 #endif /* HAVE_ACL */
 
-/*
+#if defined(HAVE_AFS_ACL)
+
+#if defined(HAVE_AFS_AFSINT_H) && defined(HAVE_AFS_VENUS_H)
+#include <afs/afsint.h>
+#include <afs/venus.h>
+#else
+#error "configure failed to detect availability of afs/afsint.h and/or afs/venus.h"
+#endif
+
+/**
+ * External references to functions in the libsys library function not in current include files.
+ */
+extern "C" {
+long pioctl(char *pathp, long opcode, struct ViceIoctl *blobp, int follow);
+}
+
+static bacl_exit_code afs_build_acl_streams(JCR *jcr, FF_PKT *ff_pkt)
+{
+   int error;
+   struct ViceIoctl vip;
+   char acl_text[BUFSIZ];
+
+   /*
+    * AFS ACLs can only be set on a directory, so no need to try to
+    * request them for anything other then that.
+    */
+   if (ff_pkt->type != FT_DIREND) {
+      return bacl_exit_ok;
+   }
+
+   vip.in = NULL;
+   vip.in_size = 0;
+   vip.out = acl_text;
+   vip.out_size = sizeof(acl_text);
+   memset((caddr_t)acl_text, 0, sizeof(acl_text));
+
+   if ((error = pioctl(jcr->last_fname, VIOCGETAL, &vip, 0)) < 0) {
+      berrno be;
+
+      Mmsg2(jcr->errmsg,
+            _("pioctl VIOCGETAL error on file \"%s\": ERR=%s\n"),
+            jcr->last_fname, be.bstrerror());
+      Dmsg2(100, "pioctl VIOCGETAL error file=%s ERR=%s\n",
+            jcr->last_fname, be.bstrerror());
+      return bacl_exit_error;
+   }
+   jcr->acl_data->u.build->content_length =
+   pm_strcpy(jcr->acl_data->u.build->content, acl_text);
+   return send_acl_stream(jcr, STREAM_ACL_AFS_TEXT);
+}
+
+static bacl_exit_code afs_parse_acl_stream(JCR *jcr,
+                                           int stream,
+                                           char *content,
+                                           uint32_t content_length)
+{
+   int error;
+   struct ViceIoctl vip;
+
+   vip.in = content;
+   vip.in_size = content_length;
+   vip.out = NULL;
+   vip.out_size = 0;
+
+   if ((error = pioctl(jcr->last_fname, VIOCSETAL, &vip, 0)) < 0) {
+      berrno be;
+
+      Mmsg2(jcr->errmsg,
+            _("pioctl VIOCSETAL error on file \"%s\": ERR=%s\n"),
+            jcr->last_fname, be.bstrerror());
+      Dmsg2(100, "pioctl VIOCSETAL error file=%s ERR=%s\n",
+            jcr->last_fname, be.bstrerror());
+
+      return bacl_exit_error;
+   }
+   return bacl_exit_ok;
+}
+#endif /* HAVE_AFS_ACL */
+
+/**
  * Entry points when compiled with support for ACLs on a supported platform.
  */
 
@@ -2083,7 +2179,7 @@ bacl_exit_code build_acl_streams(JCR *jcr, FF_PKT *ff_pkt)
 {
    /*
     * See if we are changing from one device to an other.
-    * We save the current device we are restoring to and compare
+    * We save the current device we are scanning and compare
     * it with the current st_dev in the last stat performed on
     * the file we are currently storing.
     */
@@ -2093,14 +2189,35 @@ bacl_exit_code build_acl_streams(JCR *jcr, FF_PKT *ff_pkt)
        */
       jcr->acl_data->flags = 0;
 
+#if defined(HAVE_AFS_ACL)
+      /*
+       * AFS is a non OS specific filesystem so see if this path is on an AFS filesystem
+       * Set the BACL_FLAG_SAVE_AFS flag if it is. If not set the BACL_FLAG_SAVE_NATIVE flag.
+       */
+      if (fstype_equals(jcr->last_fname, "afs")) {
+         jcr->acl_data->flags |= BACL_FLAG_SAVE_AFS;
+      } else {
+         jcr->acl_data->flags |= BACL_FLAG_SAVE_NATIVE;
+      }
+#else
       jcr->acl_data->flags |= BACL_FLAG_SAVE_NATIVE;
+#endif
 
-      /**
+      /*
        * Save that we started scanning a new filesystem.
        */
       jcr->acl_data->current_dev = ff_pkt->statp.st_dev;
    }
 
+#if defined(HAVE_AFS_ACL)
+   /*
+    * See if the BACL_FLAG_SAVE_AFS flag is set which lets us know if we should
+    * save AFS ACLs.
+    */
+   if (jcr->acl_data->flags & BACL_FLAG_SAVE_AFS) {
+      return afs_build_acl_streams(jcr, ff_pkt);
+   }
+#endif
 #if defined(HAVE_ACL)
    /*
     * See if the BACL_FLAG_SAVE_NATIVE flag is set which lets us know if we should
@@ -2161,7 +2278,20 @@ bacl_exit_code parse_acl_streams(JCR *jcr,
        * Reset the acl save flags.
        */
       jcr->acl_data->flags = 0;
+
+#if defined(HAVE_AFS_ACL)
+      /*
+       * AFS is a non OS specific filesystem so see if this path is on an AFS filesystem
+       * Set the BACL_FLAG_RESTORE_AFS flag if it is. If not set the BACL_FLAG_RETORE_NATIVE flag.
+       */
+      if (fstype_equals(jcr->last_fname, "afs")) {
+         jcr->acl_data->flags |= BACL_FLAG_RESTORE_AFS;
+      } else {
+         jcr->acl_data->flags |= BACL_FLAG_RESTORE_NATIVE;
+      }
+#else
       jcr->acl_data->flags |= BACL_FLAG_RESTORE_NATIVE;
+#endif
 
       /*
        * Save that we started restoring to a new filesystem.
@@ -2170,6 +2300,18 @@ bacl_exit_code parse_acl_streams(JCR *jcr,
    }
 
    switch (stream) {
+#if defined(HAVE_AFS_ACL)
+   case STREAM_ACL_AFS_TEXT:
+      if (jcr->acl_data->flags & BACL_FLAG_RESTORE_AFS) {
+         return afs_parse_acl_stream(jcr, stream, content, content_length);
+      } else {
+         /*
+          * Increment error count but don't log an error again for the same filesystem.
+          */
+         jcr->acl_data->u.parse->nr_errors++;
+         return bacl_exit_ok;
+      }
+#endif
 #if defined(HAVE_ACL)
    case STREAM_UNIX_ACCESS_ACL:
    case STREAM_UNIX_DEFAULT_ACL:
diff --git a/src/filed/backup.c b/src/filed/backup.c
index e9242a0..da9330f 100644
--- a/src/filed/backup.c
+++ b/src/filed/backup.c
@@ -459,6 +459,9 @@ int save_file(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
       jcr->JobErrors++;
       return 1;
    }
+   case FT_DELETED:
+      Dmsg1(130, "FT_DELETED: %s\n", ff_pkt->fname);
+      break;
    default:
       Jmsg(jcr, M_NOTSAVED, 0,  _("     Unknown file type %d; not saved: %s\n"), 
            ff_pkt->type, ff_pkt->fname);
@@ -576,7 +579,10 @@ int save_file(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
    if (IS_FT_OBJECT(ff_pkt->type)) {
       goto good_rtn;
    }
-
+   /** Meta data only for deleted files */
+   if (ff_pkt->type == FT_DELETED) {
+      goto good_rtn;
+   }
    /** Set up the encryption context and send the session data to the SD */
    if (has_file_data && jcr->crypto.pki_encrypt) {
       if (!crypto_session_send(jcr, sd)) {
@@ -602,7 +608,7 @@ int save_file(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
       do_read = true;
    }
 
-   if (ff_pkt->cmd_plugin) {
+   if (ff_pkt->cmd_plugin && !ff_pkt->no_read) {
       do_read = true;
    }
 
@@ -1098,12 +1104,16 @@ static int send_data(JCR *jcr, int stream, FF_PKT *ff_pkt, DIGEST *digest,
 #ifdef HAVE_LZO
       /** Do compression if turned on */
       if (ff_pkt->flags & FO_COMPRESS && ff_pkt->Compress_algo == COMPRESS_LZO1X && jcr->LZO_compress_workset) {
+         lzo_uint len;          /* TODO: See with the latest patch how to handle lzo_uint with 64bit */
+
          ser_declare;
          ser_begin(cbuf, sizeof(comp_stream_header));
 
          Dmsg3(400, "cbuf=0x%x rbuf=0x%x len=%u\n", cbuf, rbuf, sd->msglen);
 
-         lzores = lzo1x_1_compress((const unsigned char*)rbuf, sd->msglen, cbuf2, &compress_len, jcr->LZO_compress_workset);
+         lzores = lzo1x_1_compress((const unsigned char*)rbuf, sd->msglen, cbuf2, 
+                                   &len, jcr->LZO_compress_workset);
+         compress_len = len;
          if (lzores == LZO_E_OK && compress_len <= max_compress_len)
          {
             /* complete header */
@@ -1342,7 +1352,7 @@ bool encode_and_send_attributes(JCR *jcr, FF_PKT *ff_pkt, int &data_stream)
     * For a directory, link is the same as fname, but with trailing
     * slash. For a linked file, link is the link.
     */
-   if (ff_pkt->type != FT_DELETED) { /* already stripped */
+   if (!IS_FT_OBJECT(ff_pkt->type) && ff_pkt->type != FT_DELETED) { /* already stripped */
       strip_path(ff_pkt);
    }
    switch (ff_pkt->type) {
@@ -1404,7 +1414,8 @@ bool encode_and_send_attributes(JCR *jcr, FF_PKT *ff_pkt, int &data_stream)
                        attribsEx, 0, ff_pkt->delta_seq, 0);
       break;
    }
-   if (ff_pkt->type != FT_DELETED) {
+
+   if (!IS_FT_OBJECT(ff_pkt->type) && ff_pkt->type != FT_DELETED) {
       unstrip_path(ff_pkt);
    }
 
@@ -1430,8 +1441,10 @@ static bool do_strip(int count, char *in)
    while (*in && !IsPathSeparator(*in)) {    
       out++; in++;
    }
-   out++; in++;
-   numsep++;                     /* one separator seen */
+   if (*in) {                    /* Not at the end of the string */
+      out++; in++;
+      numsep++;                  /* one separator seen */
+   }
    for (stripped=0; stripped<count && *in; stripped++) {
       while (*in && !IsPathSeparator(*in)) {
          in++;                   /* skip chars */
@@ -1536,10 +1549,11 @@ static void close_vss_backup_session(JCR *jcr)
             Jmsg(jcr, msg_type, 0, _("VSS Writer (BackupComplete): %s\n"), g_pVSSClient->GetWriterInfo(i));
          }
       }
+      /* Generate Job global writer metadata */
       WCHAR *metadata = g_pVSSClient->GetMetadata();
       if (metadata) {
          FF_PKT *ff_pkt = jcr->ff;
-         ff_pkt->fname = (char *)"job";
+         ff_pkt->fname = (char *)"*all*"; /* for all plugins */
          ff_pkt->type = FT_RESTORE_FIRST;
          ff_pkt->LinkFI = 0;
          ff_pkt->object_name = (char *)"job_metadata.xml";
diff --git a/src/filed/fd_plugins.c b/src/filed/fd_plugins.c
index f09d9ad..994c11a 100644
--- a/src/filed/fd_plugins.c
+++ b/src/filed/fd_plugins.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -80,6 +80,7 @@ static bRC baculaNewPreInclude(bpContext *ctx);
 static bool is_plugin_compatible(Plugin *plugin);
 static bool get_plugin_name(JCR *jcr, char *cmd, int *ret);
 static bRC baculaCheckChanges(bpContext *ctx, struct save_pkt *sp);
+static bRC baculaAcceptFile(bpContext *ctx, struct save_pkt *sp);
 
 /*
  * These will be plugged into the global pointer structure for
@@ -91,7 +92,6 @@ static ssize_t my_plugin_bread(BFILE *bfd, void *buf, size_t count);
 static ssize_t my_plugin_bwrite(BFILE *bfd, void *buf, size_t count);
 static boffset_t my_plugin_blseek(BFILE *bfd, boffset_t offset, int whence);
 
-#define for_this_plug(plugin, str, len) (((len) == (plugin)->file_len) && strncmp((plugin)->file, str, len) == 0)
 
 /* Bacula info */
 static bInfo binfo = {
@@ -118,7 +118,8 @@ static bFuncs bfuncs = {
    baculaNewOptions,
    baculaNewInclude,
    baculaNewPreInclude,
-   baculaCheckChanges
+   baculaCheckChanges,
+   baculaAcceptFile
 };
 
 /* 
@@ -132,9 +133,34 @@ struct bacula_ctx {
    findINCEXE *include;                  /* pointer to include/exclude files */
 };
 
-static bool is_plugin_disabled(bpContext *plugin_ctx)
+/*
+ * Test if event is for this plugin
+ */
+static bool for_this_plugin(Plugin *plugin, char *name, int len)
+{
+   Dmsg4(dbglvl, "name=%s len=%d plugin=%s plen=%d\n", name, len, plugin->file, plugin->file_len);
+   if (!name) {   /* if no plugin name, all plugins get it */
+      return true;
+   }
+   /* Return global VSS job metadata to all plugins */
+   if (strcmp("job", name) == 0) {  /* old V4.0 name for VSS job metadata */
+      return true;
+   }
+   if (strcmp("*all*", name) == 0) { /* new v6.0 name for VSS job metadata */
+      return true;
+   } 
+   /* Check if this is the correct plugin */
+   if (len == plugin->file_len && strncmp(plugin->file, name, len) == 0) {
+      return true;
+   }
+   return false;
+}
+
+
+bool is_plugin_disabled(bpContext *plugin_ctx)
 {
    bacula_ctx *b_ctx;
+   Dsm_check(999);
    if (!plugin_ctx) {
       return true;
    }
@@ -145,7 +171,7 @@ static bool is_plugin_disabled(bpContext *plugin_ctx)
    return b_ctx->disabled;
 }
 
-static bool is_plugin_disabled(JCR *jcr)
+bool is_plugin_disabled(JCR *jcr)
 {
    return is_plugin_disabled(jcr->plugin_ctx);
 }
@@ -159,12 +185,13 @@ void generate_plugin_event(JCR *jcr, bEventType eventType, void *value)
    bpContext *plugin_ctx;
    bEvent event;
    Plugin *plugin;
-   int i;
    char *name = NULL;
+   int i;
    int len = 0;
    bool call_if_canceled = false;
    restore_object_pkt *rop;
 
+   Dsm_check(999);
    if (!bplugin_list || !jcr || !jcr->plugin_ctx_list) {
       return;                         /* Return if no plugins loaded */
    }
@@ -195,7 +222,7 @@ void generate_plugin_event(JCR *jcr, bEventType eventType, void *value)
       break;
    case bEventEndBackupJob:
    case bEventEndVerifyJob:
-      call_if_canceled = true;
+      call_if_canceled = true; /* plugin *must* see this call */
       break;
    case bEventStartRestoreJob:
       foreach_alist_index(i, plugin, bplugin_list) {
@@ -204,19 +231,13 @@ void generate_plugin_event(JCR *jcr, bEventType eventType, void *value)
       }
       break;
    case bEventEndRestoreJob:
-      call_if_canceled = true;
-      if (jcr->plugin && jcr->plugin->restoreFileStarted) {
-         plug_func(jcr->plugin)->endRestoreFile(jcr->plugin_ctx);
-      }
-      if (jcr->plugin) {
-         jcr->plugin->restoreFileStarted = false;
-         jcr->plugin->createFileCalled = false;
-      }
+      call_if_canceled = true; /* plugin *must* see this call */
       break;
    default:
       break;
    }
 
+   /* If call_if_canceled is set, we call the plugin anyway */
    if (!call_if_canceled && jcr->is_job_canceled()) {
       return;
    }
@@ -231,13 +252,30 @@ void generate_plugin_event(JCR *jcr, bEventType eventType, void *value)
     *   is set, we pass it only to the plugin with that name.
     */
    foreach_alist_index(i, plugin, bplugin_list) {
-      if (name && !for_this_plug(plugin, name, len)) {
+      if (!for_this_plugin(plugin, name, len)) {
+         Dmsg2(dbglvl, "Not for this plugin name=%s NULL=%d\n", 
+            name, name==NULL?1:0);
          continue;
       }
+      /*
+       * Note, at this point do not change 
+       *   jcr->plugin or jcr->plugin_ctx
+       */
+      Dsm_check(999);
       plugin_ctx = &plugin_ctx_list[i];
       if (is_plugin_disabled(plugin_ctx)) {
          continue;
       }
+      if (eventType == bEventEndRestoreJob) {
+         Dmsg0(50, "eventType==bEventEndRestoreJob\n");
+         if (jcr->plugin && jcr->plugin->restoreFileStarted) {
+            plug_func(jcr->plugin)->endRestoreFile(jcr->plugin_ctx);
+         }
+         if (jcr->plugin) {
+            jcr->plugin->restoreFileStarted = false;
+            jcr->plugin->createFileCalled = false;
+         }
+      }
       plug_func(plugin)->handlePluginEvent(plugin_ctx, &event, value);
    }
    return;
@@ -252,6 +290,7 @@ bool plugin_check_file(JCR *jcr, char *fname)
    int rc = bRC_OK;
    int i;
 
+   Dsm_check(999);
    if (!bplugin_list || !jcr || !jcr->plugin_ctx_list || jcr->is_job_canceled()) {
       return false;                      /* Return if no plugins loaded */
    }
@@ -276,6 +315,7 @@ bool plugin_check_file(JCR *jcr, char *fname)
       }
    }
 
+   Dsm_check(999);
    jcr->plugin = NULL;
    jcr->plugin_ctx = NULL;
    return rc == bRC_Seen;
@@ -284,7 +324,7 @@ bool plugin_check_file(JCR *jcr, char *fname)
 /* Get the first part of the the plugin command
  *  systemstate:/@SYSTEMSTATE/ 
  * => ret = 11
- * => can use for_this_plug(plug, cmd, ret);
+ * => can use for_this_plugin(plug, cmd, ret);
  *
  * The plugin command can contain only the plugin name
  *  Plugin = alldrives
@@ -294,6 +334,7 @@ static bool get_plugin_name(JCR *jcr, char *cmd, int *ret)
 {
    char *p;
    int len;
+   Dsm_check(999);
    if (!cmd || (*cmd == '\0')) {
       return false;
    }
@@ -313,12 +354,15 @@ static bool get_plugin_name(JCR *jcr, char *cmd, int *ret)
       }
    }
    *ret = len;
+   Dsm_check(999);
    return true;
 }
 
 
 static void update_ff_pkt(FF_PKT *ff_pkt, struct save_pkt *sp)
 {
+   Dsm_check(999);
+   ff_pkt->no_read = sp->no_read;
    ff_pkt->delta_seq = sp->delta_seq;
    if (sp->flags & FO_DELTA) {
       ff_pkt->flags |= FO_DELTA;
@@ -330,11 +374,24 @@ static void update_ff_pkt(FF_PKT *ff_pkt, struct save_pkt *sp)
    
    if (sp->flags & FO_OFFSETS) {
       ff_pkt->flags |= FO_OFFSETS;
+   } else {
+      ff_pkt->flags &= ~FO_OFFSETS;
+   }
+   /* Sparse code doesn't work with plugins
+    * that use FIFO or STDOUT/IN to communicate 
+    */
+   if (sp->flags & FO_SPARSE) {
+      ff_pkt->flags |= FO_SPARSE;
+   } else {
+      ff_pkt->flags &= ~FO_SPARSE;
    }
    if (sp->flags & FO_PORTABLE_DATA) {
       ff_pkt->flags |= FO_PORTABLE_DATA;
+   } else {
+      ff_pkt->flags &= ~FO_PORTABLE_DATA;
    }
    ff_pkt->flags |= FO_PLUGIN;       /* data from plugin */
+   Dsm_check(999);
 }
 
 /* Ask to a Option Plugin what to do with the current file */
@@ -348,6 +405,7 @@ bRC plugin_option_handle_file(JCR *jcr, FF_PKT *ff_pkt, struct save_pkt *sp)
    bEvent event;
    event.eventType = bEventHandleBackupFile;
 
+   Dsm_check(999);
    bpContext *plugin_ctx_list = (bpContext *)jcr->plugin_ctx_list;
    memset(sp, 0, sizeof(struct save_pkt));
    sp->pkt_size = sp->pkt_end = sizeof(struct save_pkt);
@@ -372,13 +430,17 @@ bRC plugin_option_handle_file(JCR *jcr, FF_PKT *ff_pkt, struct save_pkt *sp)
    /* Note, we stop the loop on the first plugin that matches the name */
    foreach_alist_index(i, plugin, bplugin_list) {
       Dmsg4(dbglvl, "plugin=%s plen=%d cmd=%s len=%d\n", plugin->file, plugin->file_len, cmd, len);
-      if (!for_this_plug(plugin, cmd, len)) {
+      if (!for_this_plugin(plugin, cmd, len)) {
          continue;
       }
 
+      Dsm_check(999);
       if (is_plugin_disabled(&plugin_ctx_list[i])) {
          goto bail_out;
       }
+
+      jcr->plugin_ctx = &plugin_ctx_list[i];
+      jcr->plugin = plugin;
       
       ret = plug_func(plugin)->handlePluginEvent(&plugin_ctx_list[i], 
                                                  &event, sp);
@@ -391,11 +453,17 @@ bRC plugin_option_handle_file(JCR *jcr, FF_PKT *ff_pkt, struct save_pkt *sp)
          jcr->plugin_ctx = &plugin_ctx_list[i];
 
          update_ff_pkt(ff_pkt, sp);
+
+      /* reset plugin in JCR if not used this time */
+      } else {
+         jcr->plugin_ctx = NULL;
+         jcr->plugin = NULL;
       }
 
       goto bail_out;
    } /* end foreach loop */
 bail_out:
+   Dsm_check(999);
    return ret;
 }
 
@@ -417,14 +485,15 @@ bail_out:
 int plugin_save(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
 {
    Plugin *plugin;
-   int i;
    int len;
+   int i;
    char *cmd = ff_pkt->top_fname;
    struct save_pkt sp;
    bEvent event;
    POOL_MEM fname(PM_FNAME);
    POOL_MEM link(PM_FNAME);
 
+   Dsm_check(999);
    if (!bplugin_list || !jcr->plugin_ctx_list || jcr->is_job_canceled()) {
       Jmsg1(jcr, M_FATAL, 0, "Command plugin \"%s\" requested, but is not loaded.\n", cmd);
       return 1;                            /* Return if no plugins loaded */
@@ -441,7 +510,7 @@ int plugin_save(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
    /* Note, we stop the loop on the first plugin that matches the name */
    foreach_alist_index(i, plugin, bplugin_list) {
       Dmsg4(dbglvl, "plugin=%s plen=%d cmd=%s len=%d\n", plugin->file, plugin->file_len, cmd, len);
-      if (!for_this_plug(plugin, cmd, len)) {
+      if (!for_this_plugin(plugin, cmd, len)) {
          continue;
       }
       /* 
@@ -449,6 +518,7 @@ int plugin_save(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
        *  into the jcr, because during save_file(), the plugin
        *  will be called many times and these values are needed.
        */
+      Dsm_check(999);
       jcr->plugin_ctx = &plugin_ctx_list[i];
       jcr->plugin = plugin;
       if (is_plugin_disabled(jcr)) {
@@ -466,10 +536,12 @@ int plugin_save(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
          sp.pkt_size = sizeof(sp);
          sp.pkt_end = sizeof(sp);
          sp.portable = true;
+         sp.no_read = false;
          sp.flags = 0;
          sp.cmd = cmd;
          Dmsg3(dbglvl, "startBackup st_size=%p st_blocks=%p sp=%p\n", &sp.statp.st_size, &sp.statp.st_blocks,
                 &sp);
+         Dsm_check(999);
          /* Get the file save parameters. I.e. the stat pkt ... */
          if (plug_func(plugin)->startBackupFile(jcr->plugin_ctx, &sp) != bRC_OK) {
             goto bail_out;
@@ -499,6 +571,7 @@ int plugin_save(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
             ff_pkt->object = sp.object;
             ff_pkt->object_len = sp.object_len;
          } else {
+            Dsm_check(999);
             if (!sp.fname) {
                Jmsg1(jcr, M_FATAL, 0, _("Command plugin \"%s\": no fname in startBackupFile packet.\n"),
                   cmd);
@@ -524,6 +597,7 @@ int plugin_save(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
          if (rc == bRC_More || rc == bRC_OK) {
             accurate_mark_file_as_seen(jcr, fname.c_str());
          }
+         Dsm_check(999);
          if (rc == bRC_More) {
             continue;
          }
@@ -534,6 +608,7 @@ int plugin_save(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
    Jmsg1(jcr, M_FATAL, 0, "Command plugin \"%s\" not found.\n", cmd);
 
 bail_out:
+   Dsm_check(999);
    jcr->cmd_plugin = false;
    jcr->plugin = NULL;
    jcr->plugin_ctx = NULL;
@@ -563,6 +638,7 @@ int plugin_estimate(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
    POOL_MEM link(PM_FNAME);
    ATTR attr;
 
+   Dsm_check(999);
    if (!bplugin_list || !jcr->plugin_ctx_list) {
       Jmsg1(jcr, M_FATAL, 0, "Command plugin \"%s\" requested, but is not loaded.\n", cmd);
       return 1;                            /* Return if no plugins loaded */
@@ -579,7 +655,7 @@ int plugin_estimate(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
    /* Note, we stop the loop on the first plugin that matches the name */
    foreach_alist_index(i, plugin, bplugin_list) {
       Dmsg4(dbglvl, "plugin=%s plen=%d cmd=%s len=%d\n", plugin->file, plugin->file_len, cmd, len);
-      if (!for_this_plug(plugin, cmd, len)) {
+      if (!for_this_plugin(plugin, cmd, len)) {
          continue;
       }
       /* 
@@ -587,6 +663,7 @@ int plugin_estimate(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
        *  into the jcr, because during save_file(), the plugin
        *  will be called many times and these values are needed.
        */
+      Dsm_check(999);
       jcr->plugin_ctx = &plugin_ctx_list[i];
       jcr->plugin = plugin;
       if (is_plugin_disabled(jcr)) {
@@ -600,6 +677,7 @@ int plugin_estimate(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
       }
       /* Loop getting filenames to backup then saving them */
       while (!jcr->is_job_canceled()) { 
+         Dsm_check(999);
          memset(&sp, 0, sizeof(sp));
          sp.pkt_size = sizeof(sp);
          sp.pkt_end = sizeof(sp);
@@ -625,8 +703,22 @@ int plugin_estimate(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
                goto bail_out;
             }
 
+            /* Count only files backed up */
+            switch (sp.type) {
+            case FT_REGE:
+            case FT_REG:
+            case FT_LNK:
+            case FT_DIREND:
+            case FT_SPEC:
+            case FT_RAW:
+            case FT_FIFO:
+            case FT_LNKSAVED:
+               jcr->JobFiles++;        /* increment number of files backed up */
+               break;
+            default:
+               break;
+            }
             jcr->num_files_examined++;
-            jcr->JobFiles++;                  /* increment number of files seen */
 
             if (sp.type != FT_LNKSAVED && S_ISREG(sp.statp.st_mode)) {
                if (sp.statp.st_size > 0) {
@@ -651,6 +743,7 @@ int plugin_estimate(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
          if (rc == bRC_More || rc == bRC_OK) {
             accurate_mark_file_as_seen(jcr, sp.fname);
          }
+         Dsm_check(999);
          if (rc == bRC_More) {
             continue;
          }
@@ -661,6 +754,7 @@ int plugin_estimate(JCR *jcr, FF_PKT *ff_pkt, bool top_level)
    Jmsg1(jcr, M_FATAL, 0, "Command plugin \"%s\" not found.\n", cmd);
 
 bail_out:
+   Dsm_check(999);
    jcr->cmd_plugin = false;
    jcr->plugin = NULL;
    jcr->plugin_ctx = NULL;
@@ -676,6 +770,7 @@ bool send_plugin_name(JCR *jcr, BSOCK *sd, bool start)
    int index = jcr->JobFiles;
    struct save_pkt *sp = (struct save_pkt *)jcr->plugin_sp;
 
+   Dsm_check(999);
    if (!sp) {
       Jmsg0(jcr, M_FATAL, 0, _("Plugin save packet not found.\n"));
       return false;
@@ -689,13 +784,15 @@ bool send_plugin_name(JCR *jcr, BSOCK *sd, bool start)
    }
    Dmsg1(dbglvl, "send_plugin_name=%s\n", sp->cmd);
    /* Send stream header */
+   Dsm_check(999);
    if (!sd->fsend("%ld %d 0", index, STREAM_PLUGIN_NAME)) {
      Jmsg1(jcr, M_FATAL, 0, _("Network send error to SD. ERR=%s\n"),
            sd->bstrerror());
      return false;
    }
-   Dmsg1(50, "send plugin name hdr: %s\n", sd->msg);
+   Dmsg1(dbglvl, "send plugin name hdr: %s\n", sd->msg);
 
+   Dsm_check(999);
    if (start) {
       /* Send data -- not much */
       stat = sd->fsend("%ld 1 %d %s%c", index, sp->portable, sp->cmd, 0);
@@ -703,6 +800,7 @@ bool send_plugin_name(JCR *jcr, BSOCK *sd, bool start)
       /* Send end of data */
       stat = sd->fsend("%ld 0", jcr->JobFiles);
    }
+   Dsm_check(999);
    if (!stat) {
       Jmsg1(jcr, M_FATAL, 0, _("Network send error to SD. ERR=%s\n"),
             sd->bstrerror());
@@ -710,6 +808,7 @@ bool send_plugin_name(JCR *jcr, BSOCK *sd, bool start)
    }
    Dmsg1(dbglvl, "send plugin start/end: %s\n", sd->msg);
    sd->signal(BNET_EOD);            /* indicate end of plugin name data */
+   Dsm_check(999);
    return true;
 }
 
@@ -730,6 +829,7 @@ bool plugin_name_stream(JCR *jcr, char *name)
    int i;
    bpContext *plugin_ctx_list = jcr->plugin_ctx_list;
 
+   Dsm_check(999);
    Dmsg1(dbglvl, "Read plugin stream string=%s\n", name);
    skip_nonspaces(&p);             /* skip over jcr->JobFiles */
    skip_spaces(&p);
@@ -758,6 +858,7 @@ bool plugin_name_stream(JCR *jcr, char *name)
       jcr->plugin = NULL;
       goto bail_out;
    }
+   Dsm_check(999);
    if (!plugin_ctx_list) {
       goto bail_out;
    }
@@ -772,36 +873,50 @@ bool plugin_name_stream(JCR *jcr, char *name)
    /*
     * Search for correct plugin as specified on the command 
     */
+   Dsm_check(999);
    foreach_alist_index(i, plugin, bplugin_list) {
       bEvent event;
       Dmsg3(dbglvl, "plugin=%s cmd=%s len=%d\n", plugin->file, cmd, len);
-      if (!for_this_plug(plugin, cmd, len)) {
+      if (!for_this_plugin(plugin, cmd, len)) {
          continue;
       }
+      Dsm_check(999);
       jcr->plugin_ctx = &plugin_ctx_list[i];
       jcr->plugin = plugin;
       if (is_plugin_disabled(jcr)) {
+         Dmsg1(dbglvl, "Plugin %s disabled\n", cmd);
          goto bail_out;
       }
-      Dmsg1(000, "Restore Command plugin = %s\n", cmd);
+      Dmsg1(dbglvl, "Restore Command plugin = %s\n", cmd);
       event.eventType = bEventRestoreCommand;     
       if (plug_func(plugin)->handlePluginEvent(jcr->plugin_ctx, 
             &event, cmd) != bRC_OK) {
+         Dmsg1(dbglvl, "Handle event failed. Plugin=%s\n", cmd);
          goto bail_out;
       }
       if (plugin->restoreFileStarted) {
-         Jmsg2(jcr, M_FATAL, 0, "Unbalanced call to startRestoreFile. plugin=%s cmd=%s\n", plugin->file, cmd);
+         Jmsg2(jcr, M_FATAL, 0, "Second call to startRestoreFile. plugin=%s cmd=%s\n", plugin->file, cmd);
          plugin->restoreFileStarted = false;
          goto bail_out;
       }
       if (plug_func(plugin)->startRestoreFile(jcr->plugin_ctx, cmd) == bRC_OK) {
          plugin->restoreFileStarted = true;
+         goto ok_out;
+      } else {
+         Dmsg1(dbglvl, "startRestoreFile failed. plugin=%s\n", cmd);
       }
       goto bail_out;
    }
    Jmsg1(jcr, M_WARNING, 0, _("Plugin=%s not found.\n"), cmd);
+   goto bail_out;
+
+ok_out:
+   return start;
 
 bail_out:
+   Dsm_check(999);
+   jcr->plugin = NULL;
+   jcr->plugin_ctx = NULL;
    return start;
 }
 
@@ -823,6 +938,7 @@ int plugin_create_file(JCR *jcr, ATTR *attr, BFILE *bfd, int replace)
    int flags;
    int rc;
 
+   Dsm_check(999);
    if (!plugin || !plugin_ctx || !set_cmd_plugin(bfd, jcr) || jcr->is_job_canceled()) {
       return CF_ERROR;
    }
@@ -849,8 +965,10 @@ int plugin_create_file(JCR *jcr, ATTR *attr, BFILE *bfd, int replace)
    if (rp.attrEx) {
       Dmsg1(dbglvl, "attrEx=\"%s\"\n", rp.attrEx);
    }
+   Dsm_check(999);
    if (!plugin->restoreFileStarted || plugin->createFileCalled) {
-      Jmsg0(jcr, M_FATAL, 0, "Unbalanced call to createFile\n");
+      Jmsg2(jcr, M_FATAL, 0, "Unbalanced call to createFile=%d %d\n",
+         plugin->createFileCalled, plugin->restoreFileStarted);
       plugin->createFileCalled = false;
       return CF_ERROR;
    }
@@ -860,26 +978,31 @@ int plugin_create_file(JCR *jcr, ATTR *attr, BFILE *bfd, int replace)
             rc, attr->ofname);
       return CF_ERROR;
    }
-   if (rp.create_status == CF_CORE) { 
-      return CF_CORE;           /* Let Bacula core handle the file creation */
-   }
-   if (rp.create_status == CF_SKIP) {
-      return CF_SKIP;
-   }
    if (rp.create_status == CF_ERROR) {
       Qmsg1(jcr, M_ERROR, 0, _("Plugin createFile call failed. Returned CF_ERROR file=%s\n"),
             attr->ofname);
       return CF_ERROR;
    }
+
+   if (rp.create_status == CF_SKIP) {
+      return CF_SKIP;
+   }
+
+   if (rp.create_status == CF_CORE) {
+      return CF_CORE;           /* Let Bacula core handle the file creation */
+   }
+
    /* Created link or directory? */
    if (rp.create_status == CF_CREATED) {
       return rp.create_status;        /* yes, no need to bopen */
    }
 
+   Dsm_check(999);
+
    flags =  O_WRONLY | O_CREAT | O_TRUNC | O_BINARY;
    Dmsg0(dbglvl, "call bopen\n");
    int stat = bopen(bfd, attr->ofname, flags, S_IRUSR | S_IWUSR);
-   Dmsg1(50, "bopen status=%d\n", stat);
+   Dmsg1(dbglvl, "bopen status=%d\n", stat);
    if (stat < 0) {
       berrno be;
       be.set_errno(bfd->berrno);
@@ -892,6 +1015,7 @@ int plugin_create_file(JCR *jcr, ATTR *attr, BFILE *bfd, int replace)
    if (!is_bopen(bfd)) {
       Dmsg0(000, "===== BFD is not open!!!!\n");
    }
+   Dsm_check(999);
    return CF_EXTRACT;
 }
 
@@ -903,11 +1027,45 @@ int plugin_create_file(JCR *jcr, ATTR *attr, BFILE *bfd, int replace)
  */
 bool plugin_set_attributes(JCR *jcr, ATTR *attr, BFILE *ofd)
 {
+   Plugin *plugin = (Plugin *)jcr->plugin;
+   struct restore_pkt rp;
+
    Dmsg0(dbglvl, "plugin_set_attributes\n");
-   if (is_bopen(ofd)) {
-      bclose(ofd);
+
+   if (!plugin || !jcr->plugin_ctx) {
+      return false;
    }
-   pm_strcpy(attr->ofname, "*none*");
+
+   memset(&rp, 0, sizeof(rp));
+   rp.pkt_size = sizeof(rp);
+   rp.pkt_end = sizeof(rp);
+   rp.stream = attr->stream;
+   rp.data_stream = attr->data_stream;
+   rp.type = attr->type;
+   rp.file_index = attr->file_index;
+   rp.LinkFI = attr->LinkFI;
+   rp.uid = attr->uid;
+   rp.statp = attr->statp;                /* structure assignment */
+   rp.attrEx = attr->attrEx;
+   rp.ofname = attr->ofname;
+   rp.olname = attr->olname;
+   rp.where = jcr->where;
+   rp.RegexWhere = jcr->RegexWhere;
+   rp.replace = jcr->replace;
+   rp.create_status = CF_ERROR;
+
+   plug_func(plugin)->setFileAttributes(jcr->plugin_ctx, &rp);
+   
+   if (rp.create_status == CF_CORE) {
+      set_attributes(jcr, attr, ofd);
+   } else {
+      if (is_bopen(ofd)) {
+         bclose(ofd);
+      }
+      pm_strcpy(attr->ofname, "*none*");
+   }
+
+   Dsm_check(999);
    return true;
 }
 
@@ -944,6 +1102,7 @@ void load_fd_plugins(const char *plugin_dir)
    }
 
    bplugin_list = New(alist(10, not_owned_by_alist));
+   Dsm_check(999);
    if (!load_plugins((void *)&binfo, (void *)&bfuncs, plugin_dir, plugin_type,
                      is_plugin_compatible)) {
       /* Either none found, or some error */
@@ -961,6 +1120,7 @@ void load_fd_plugins(const char *plugin_dir)
    plugin_bread  = my_plugin_bread;
    plugin_bwrite = my_plugin_bwrite;
    plugin_blseek = my_plugin_blseek;
+   Dsm_check(999);
 
    /* 
     * Verify that the plugin is acceptable, and print information
@@ -972,6 +1132,7 @@ void load_fd_plugins(const char *plugin_dir)
    }
 
    dbg_plugin_add_hook(dump_fd_plugin);
+   Dsm_check(999);
 }
 
 /**
@@ -981,7 +1142,8 @@ void load_fd_plugins(const char *plugin_dir)
 static bool is_plugin_compatible(Plugin *plugin)
 {
    pInfo *info = (pInfo *)plugin->pinfo;
-   Dmsg0(50, "is_plugin_compatible called\n");
+   Dmsg0(dbglvl, "is_plugin_compatible called\n");
+   Dsm_check(999);
    if (debug_level >= 50) {
       dump_fd_plugin(plugin, stdin);
    }
@@ -1015,6 +1177,7 @@ static bool is_plugin_compatible(Plugin *plugin)
       return false;
    }
       
+   Dsm_check(999);
    return true;
 }
 
@@ -1029,6 +1192,7 @@ void new_plugins(JCR *jcr)
    Plugin *plugin;
    int i;
 
+   Dsm_check(999);
    if (!bplugin_list) {
       Dmsg0(dbglvl, "plugin list is NULL\n");
       return;
@@ -1049,6 +1213,7 @@ void new_plugins(JCR *jcr)
    bpContext *plugin_ctx_list = (bpContext *)jcr->plugin_ctx_list;
    Dmsg2(dbglvl, "Instantiate plugin_ctx=%p JobId=%d\n", plugin_ctx_list, jcr->JobId);
    foreach_alist_index(i, plugin, bplugin_list) {
+      Dsm_check(999);
       /* Start a new instance of each plugin */
       bacula_ctx *b_ctx = (bacula_ctx *)malloc(sizeof(bacula_ctx));
       memset(b_ctx, 0, sizeof(bacula_ctx));
@@ -1059,6 +1224,11 @@ void new_plugins(JCR *jcr)
          b_ctx->disabled = true;
       }
    }
+   if (i > num) {
+      Jmsg2(jcr, M_ABORT, 0, "Num plugins=%d exceeds list size=%d\n",
+            i, num);
+   }
+   Dsm_check(999);
 }
 
 /**
@@ -1073,13 +1243,16 @@ void free_plugins(JCR *jcr)
       return;                         /* no plugins, nothing to do */
    }
 
+   Dsm_check(999);
    bpContext *plugin_ctx_list = (bpContext *)jcr->plugin_ctx_list;
    Dmsg2(dbglvl, "Free instance plugin_ctx=%p JobId=%d\n", plugin_ctx_list, jcr->JobId);
    foreach_alist_index(i, plugin, bplugin_list) {   
       /* Free the plugin instance */
       plug_func(plugin)->freePlugin(&plugin_ctx_list[i]);
       free(plugin_ctx_list[i].bContext);     /* free Bacula private context */
+      Dsm_check(999);
    }
+   Dsm_check(999);
    free(plugin_ctx_list);
    jcr->plugin_ctx_list = NULL;
 }
@@ -1091,6 +1264,7 @@ static int my_plugin_bopen(BFILE *bfd, const char *fname, int flags, mode_t mode
    struct io_pkt io;
 
    Dmsg1(dbglvl, "plugin_bopen flags=%x\n", flags);
+   Dsm_check(999);
    if (!plugin || !jcr->plugin_ctx) {
       return 0;
    }
@@ -1112,7 +1286,8 @@ static int my_plugin_bopen(BFILE *bfd, const char *fname, int flags, mode_t mode
       errno = io.io_errno;
       bfd->lerror = io.lerror;
    }
-   Dmsg1(50, "Return from plugin open status=%d\n", io.status);
+   Dmsg1(dbglvl, "Return from plugin open status=%d\n", io.status);
+   Dsm_check(999);
    return io.status;
 }
 
@@ -1122,6 +1297,7 @@ static int my_plugin_bclose(BFILE *bfd)
    Plugin *plugin = (Plugin *)jcr->plugin;
    struct io_pkt io;
 
+   Dsm_check(999);
    Dmsg0(dbglvl, "===== plugin_bclose\n");
    if (!plugin || !jcr->plugin_ctx) {
       return 0;
@@ -1142,6 +1318,7 @@ static int my_plugin_bclose(BFILE *bfd)
       bfd->lerror = io.lerror;
    }
    Dmsg1(dbglvl, "plugin_bclose stat=%d\n", io.status);
+   Dsm_check(999);
    return io.status;
 }
 
@@ -1151,6 +1328,7 @@ static ssize_t my_plugin_bread(BFILE *bfd, void *buf, size_t count)
    Plugin *plugin = (Plugin *)jcr->plugin;
    struct io_pkt io;
 
+   Dsm_check(999);
    Dmsg0(dbglvl, "plugin_bread\n");
    if (!plugin || !jcr->plugin_ctx) {
       return 0;
@@ -1172,6 +1350,7 @@ static ssize_t my_plugin_bread(BFILE *bfd, void *buf, size_t count)
       errno = io.io_errno;
       bfd->lerror = io.lerror;
    }
+   Dsm_check(999);
    return (ssize_t)io.status;
 }
 
@@ -1181,8 +1360,10 @@ static ssize_t my_plugin_bwrite(BFILE *bfd, void *buf, size_t count)
    Plugin *plugin = (Plugin *)jcr->plugin;
    struct io_pkt io;
 
+   Dsm_check(999);
    Dmsg0(dbglvl, "plugin_bwrite\n");
    if (!plugin || !jcr->plugin_ctx) {
+      Dmsg0(0, "No plugin context\n");
       return 0;
    }
    io.pkt_size = sizeof(io);
@@ -1200,6 +1381,7 @@ static ssize_t my_plugin_bwrite(BFILE *bfd, void *buf, size_t count)
       errno = io.io_errno;
       bfd->lerror = io.lerror;
    }
+   Dsm_check(999);
    return (ssize_t)io.status;
 }
 
@@ -1209,6 +1391,7 @@ static boffset_t my_plugin_blseek(BFILE *bfd, boffset_t offset, int whence)
    Plugin *plugin = (Plugin *)jcr->plugin;
    struct io_pkt io;
 
+   Dsm_check(999);
    Dmsg0(dbglvl, "plugin_bseek\n");
    if (!plugin || !jcr->plugin_ctx) {
       return 0;
@@ -1228,6 +1411,7 @@ static boffset_t my_plugin_blseek(BFILE *bfd, boffset_t offset, int whence)
       errno = io.io_errno;
       bfd->lerror = io.lerror;
    }
+   Dsm_check(999);
    return (boffset_t)io.offset;
 }
 
@@ -1244,6 +1428,7 @@ static bRC baculaGetValue(bpContext *ctx, bVariable var, void *value)
       return bRC_Error;
    }
 
+   Dsm_check(999);
    switch (var) {               /* General variables, no need of ctx */
    case bVarFDName:
       *((char **)value) = my_name;
@@ -1337,7 +1522,9 @@ static bRC baculaGetValue(bpContext *ctx, bVariable var, void *value)
    case bVarRegexWhere:
       *(char **)value = jcr->RegexWhere;
       break;
-
+   case bVarPrefixLinks:
+      *(int *)value = (int)jcr->prefix_links;
+      break;
    case bVarFDName:             /* get warning with g++ if we missed one */
    case bVarWorkingDir:
    case bVarExePath:
@@ -1346,12 +1533,14 @@ static bRC baculaGetValue(bpContext *ctx, bVariable var, void *value)
    case bVarBEEF:
       break;
    }
+   Dsm_check(999);
    return bRC_OK;
 }
 
 static bRC baculaSetValue(bpContext *ctx, bVariable var, void *value)
 {
    JCR *jcr;
+   Dsm_check(999);
    if (!value || !ctx) {
       return bRC_Error;
    }
@@ -1370,6 +1559,7 @@ static bRC baculaSetValue(bpContext *ctx, bVariable var, void *value)
    default:
       break;
    }
+   Dsm_check(999);
    return bRC_OK;
 }
 
@@ -1378,6 +1568,7 @@ static bRC baculaRegisterEvents(bpContext *ctx, ...)
    va_list args;
    uint32_t event;
 
+   Dsm_check(999);
    if (!ctx) {
       return bRC_Error;
    }
@@ -1387,6 +1578,7 @@ static bRC baculaRegisterEvents(bpContext *ctx, ...)
       Dmsg1(dbglvl, "Plugin wants event=%u\n", event);
    }
    va_end(args);
+   Dsm_check(999);
    return bRC_OK;
 }
 
@@ -1397,6 +1589,7 @@ static bRC baculaJobMsg(bpContext *ctx, const char *file, int line,
    char buf[2000];
    JCR *jcr;
 
+   Dsm_check(999);
    if (ctx) {
       jcr = ((bacula_ctx *)ctx->bContext)->jcr;
    } else {
@@ -1407,6 +1600,7 @@ static bRC baculaJobMsg(bpContext *ctx, const char *file, int line,
    bvsnprintf(buf, sizeof(buf), fmt, arg_ptr);
    va_end(arg_ptr);
    Jmsg(jcr, type, mtime, "%s", buf);
+   Dsm_check(999);
    return bRC_OK;
 }
 
@@ -1416,10 +1610,12 @@ static bRC baculaDebugMsg(bpContext *ctx, const char *file, int line,
    va_list arg_ptr;
    char buf[2000];
 
+   Dsm_check(999);
    va_start(arg_ptr, fmt);
    bvsnprintf(buf, sizeof(buf), fmt, arg_ptr);
    va_end(arg_ptr);
    d_msg(file, line, level, "%s", buf);
+   Dsm_check(999);
    return bRC_OK;
 }
 
@@ -1444,6 +1640,7 @@ static void baculaFree(bpContext *ctx, const char *file, int line, void *mem)
 
 static bool is_ctx_good(bpContext *ctx, JCR *&jcr, bacula_ctx *&bctx)
 {
+   Dsm_check(999);
    if (!ctx) {
       return false;
    }
@@ -1465,20 +1662,38 @@ static bool is_ctx_good(bpContext *ctx, JCR *&jcr, bacula_ctx *&bctx)
 static bRC baculaAddExclude(bpContext *ctx, const char *file)
 {
    JCR *jcr;
+   findINCEXE *old;
    bacula_ctx *bctx;
+   Dsm_check(999);
    if (!is_ctx_good(ctx, jcr, bctx)) {
       return bRC_Error;
    }
    if (!file) {
       return bRC_Error;
    }
+
+   /* Save the include context */
+   old = get_incexe(jcr);
+
+   /* Not right time to add exlude */
+   if (!old) {
+      return bRC_Error;
+   }
+
    if (!bctx->exclude) {  
       bctx->exclude = new_exclude(jcr);
-      new_options(jcr, bctx->exclude);
    }
+
+   /* Set the Exclude context */
    set_incexe(jcr, bctx->exclude);
+
    add_file_to_fileset(jcr, file, true);
+
+   /* Restore the current context */
+   set_incexe(jcr, old);
+
    Dmsg1(100, "Add exclude file=%s\n", file);
+   Dsm_check(999);
    return bRC_OK;
 }
 
@@ -1489,23 +1704,36 @@ static bRC baculaAddExclude(bpContext *ctx, const char *file)
 static bRC baculaAddInclude(bpContext *ctx, const char *file)
 {
    JCR *jcr;
+   findINCEXE *old;
    bacula_ctx *bctx;
+
+   Dsm_check(999);
    if (!is_ctx_good(ctx, jcr, bctx)) {
       return bRC_Error;
    }
    if (!file) {
       return bRC_Error;
    }
+
+   /* Save the include context */
+   old = get_incexe(jcr);
+
    /* Not right time to add include */
-   if (!(jcr->ff && jcr->ff->fileset && jcr->ff->fileset->incexe)) {
+   if (!old) {
       return bRC_Error;
    }
    if (!bctx->include) {
-      bctx->include = jcr->ff->fileset->incexe;
+      bctx->include = old;
    }
+
    set_incexe(jcr, bctx->include);
    add_file_to_fileset(jcr, file, true);
+
+   /* Restore the current context */
+   set_incexe(jcr, old);
+
    Dmsg1(100, "Add include file=%s\n", file);
+   Dsm_check(999);
    return bRC_OK;
 }
 
@@ -1513,6 +1741,7 @@ static bRC baculaAddOptions(bpContext *ctx, const char *opts)
 {
    JCR *jcr;
    bacula_ctx *bctx;
+   Dsm_check(999);
    if (!is_ctx_good(ctx, jcr, bctx)) {
       return bRC_Error;
    }
@@ -1520,6 +1749,7 @@ static bRC baculaAddOptions(bpContext *ctx, const char *opts)
       return bRC_Error;
    }
    add_options_to_fileset(jcr, opts);
+   Dsm_check(999);
    Dmsg1(1000, "Add options=%s\n", opts);
    return bRC_OK;
 }
@@ -1528,6 +1758,7 @@ static bRC baculaAddRegex(bpContext *ctx, const char *item, int type)
 {
    JCR *jcr;
    bacula_ctx *bctx;
+   Dsm_check(999);
    if (!is_ctx_good(ctx, jcr, bctx)) {
       return bRC_Error;
    }
@@ -1536,6 +1767,7 @@ static bRC baculaAddRegex(bpContext *ctx, const char *item, int type)
    }
    add_regex_to_fileset(jcr, item, type);
    Dmsg1(100, "Add regex=%s\n", item);
+   Dsm_check(999);
    return bRC_OK;
 }
 
@@ -1543,6 +1775,7 @@ static bRC baculaAddWild(bpContext *ctx, const char *item, int type)
 {
    JCR *jcr;
    bacula_ctx *bctx;
+   Dsm_check(999);
    if (!is_ctx_good(ctx, jcr, bctx)) {
       return bRC_Error;
    }
@@ -1551,6 +1784,7 @@ static bRC baculaAddWild(bpContext *ctx, const char *item, int type)
    }
    add_wild_to_fileset(jcr, item, type);
    Dmsg1(100, "Add wild=%s\n", item);
+   Dsm_check(999);
    return bRC_OK;
 }
 
@@ -1558,10 +1792,12 @@ static bRC baculaNewOptions(bpContext *ctx)
 {
    JCR *jcr;
    bacula_ctx *bctx;
+   Dsm_check(999);
    if (!is_ctx_good(ctx, jcr, bctx)) {
       return bRC_Error;
    }
    (void)new_options(jcr, NULL);
+   Dsm_check(999);
    return bRC_OK;
 }
 
@@ -1569,10 +1805,12 @@ static bRC baculaNewInclude(bpContext *ctx)
 {
    JCR *jcr;
    bacula_ctx *bctx;
+   Dsm_check(999);
    if (!is_ctx_good(ctx, jcr, bctx)) {
       return bRC_Error;
    }
    (void)new_include(jcr);
+   Dsm_check(999);
    return bRC_OK;
 }
 
@@ -1580,6 +1818,7 @@ static bRC baculaNewPreInclude(bpContext *ctx)
 {
    JCR *jcr;
    bacula_ctx *bctx;
+   Dsm_check(999);
    if (!is_ctx_good(ctx, jcr, bctx)) {
       return bRC_Error;
    }
@@ -1588,6 +1827,7 @@ static bRC baculaNewPreInclude(bpContext *ctx)
    new_options(jcr, bctx->include);
    set_incexe(jcr, bctx->include);
 
+   Dsm_check(999);
    return bRC_OK;
 }
 
@@ -1601,6 +1841,7 @@ static bRC baculaCheckChanges(bpContext *ctx, struct save_pkt *sp)
    FF_PKT *ff_pkt;
    bRC ret = bRC_Error;
 
+   Dsm_check(999);
    if (!is_ctx_good(ctx, jcr, bctx)) {
       goto bail_out;
    }
@@ -1636,10 +1877,53 @@ static bRC baculaCheckChanges(bpContext *ctx, struct save_pkt *sp)
    sp->accurate_found = ff_pkt->accurate_found;
 
 bail_out:
+   Dsm_check(999);
    Dmsg1(100, "checkChanges=%i\n", ret);
    return ret;
 }
 
+/* 
+ * Check if a file would be saved using current Include/Exclude code
+ */
+static bRC baculaAcceptFile(bpContext *ctx, struct save_pkt *sp)
+{
+   JCR *jcr;
+   FF_PKT *ff_pkt;
+   bacula_ctx *bctx;
+
+   char *old;
+   struct stat oldstat;
+   bRC ret = bRC_Error;
+
+   Dsm_check(999);
+   if (!is_ctx_good(ctx, jcr, bctx)) {
+      goto bail_out;
+   }
+   if (!sp) {
+      goto bail_out;
+   }
+   
+   ff_pkt = jcr->ff;
+
+   /* Probably not needed, but keep a copy */
+   old = ff_pkt->fname;
+   oldstat = ff_pkt->statp;
+
+   ff_pkt->fname = sp->fname;
+   ff_pkt->statp = sp->statp;
+
+   if (accept_file(ff_pkt)) {
+      ret = bRC_OK;
+   } else {
+      ret = bRC_Skip;
+   }
+
+   ff_pkt->fname = old;
+   ff_pkt->statp = oldstat;
+
+bail_out:
+   return ret;
+}
 
 #ifdef TEST_PROGRAM
 
diff --git a/src/filed/fd_plugins.h b/src/filed/fd_plugins.h
index dfb0d93..40994f8 100644
--- a/src/filed/fd_plugins.h
+++ b/src/filed/fd_plugins.h
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -101,6 +101,7 @@ struct save_pkt {
    struct stat statp;                 /* System stat() packet for file */
    int32_t type;                      /* FT_xx for this file */             
    uint32_t flags;                    /* Bacula internal flags */
+   bool no_read;                      /* During the save, the file should not be saved */
    bool portable;                     /* set if data format is portable */
    bool accurate_found;               /* Found in accurate list (valid after check_changes()) */
    char *cmd;                         /* command */
@@ -187,7 +188,8 @@ typedef enum {
   bVarVersion    = 17,
   bVarDistName   = 18,
   bVarBEEF       = 19,
-  bVarPrevJobName = 20
+  bVarPrevJobName = 20,
+  bVarPrefixLinks = 21
 } bVariable;
 
 /* Events that are passed to plugin */
@@ -213,7 +215,6 @@ typedef enum {
   bEventEndFileSet                      = 19,
   bEventPluginCommand                   = 20, /* Sent during FileSet creation */
   bEventVssBeforeCloseRestore           = 21,
-
   /* Add drives to VSS snapshot 
    *  argument: char[27] drivelist
    * You need to add them without duplicates, 
@@ -221,7 +222,8 @@ typedef enum {
    */
   bEventVssPrepareSnapshot              = 22,
   bEventOptionPlugin                    = 23,
-  bEventHandleBackupFile                = 24 /* Used with Options Plugin */
+  bEventHandleBackupFile                = 24, /* Used with Options Plugin */
+  bEventComponentInfo                   = 25  /* Plugin component */
 } bEventType;
 
 typedef struct s_bEvent {
@@ -281,6 +283,7 @@ typedef struct s_baculaFuncs {
    bRC (*NewInclude)(bpContext *ctx);
    bRC (*NewPreInclude)(bpContext *ctx);
    bRC (*checkChanges)(bpContext *ctx, struct save_pkt *sp);
+   bRC (*AcceptFile)(bpContext *ctx, struct save_pkt *sp); /* Need fname and statp */
 } bFuncs;
 
 
@@ -297,9 +300,9 @@ typedef enum {
   pVarDescription = 2
 } pVariable;
 
+# define FD_PLUGIN_MAGIC  "*FDPluginData*" 
 
-#define FD_PLUGIN_MAGIC     "*FDPluginData*" 
-#define FD_PLUGIN_INTERFACE_VERSION  5
+#define FD_PLUGIN_INTERFACE_VERSION  7
 
 typedef struct s_pluginInfo {
    uint32_t size;
diff --git a/src/filed/heartbeat.c b/src/filed/heartbeat.c
index 26ca962..f39566b 100644
--- a/src/filed/heartbeat.c
+++ b/src/filed/heartbeat.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2003-2008 Free Software Foundation Europe e.V.
+   Copyright (C) 2003-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -32,8 +32,6 @@
  *
  *    Kern Sibbald, May MMIII
  *
- *   Version $Id$
- *
  */
 
 #include "bacula.h"
@@ -67,33 +65,41 @@ extern "C" void *sd_heartbeat_thread(void *arg)
    jcr->hb_bsock = sd;
    jcr->hb_started = true;
    jcr->hb_dir_bsock = dir;
+   dir->m_suppress_error_msgs = true;
+   sd->m_suppress_error_msgs = true;
 
    /* Hang reading the socket to the SD, and every time we get
-    *   a heartbeat or we get a wait timeout (1 minute), we
+    *   a heartbeat or we get a wait timeout (5 seconds), we
     *   check to see if we need to send a heartbeat to the
     *   Director.
     */
-   for ( ; !is_bnet_stop(sd); ) {
+   while (!sd->is_stop()) {
       n = bnet_wait_data_intr(sd, WAIT_INTERVAL);
+      if (n < 0 || sd->is_stop()) {
+         break;
+      }
       if (me->heartbeat_interval) {
          now = time(NULL);
          if (now-last_heartbeat >= me->heartbeat_interval) {
-            bnet_sig(dir, BNET_HEARTBEAT);
+            dir->signal(BNET_HEARTBEAT);
+            if (dir->is_stop()) {
+               break;
+            }
             last_heartbeat = now;
          }
       }
-      if (n < 0 || is_bnet_stop(sd)) {
-         break;
-      }
-      if (n == 1) {                   /* input waiting */
-         sd->recv();                  /* read it -- probably heartbeat from sd */
+      if (n == 1) {               /* input waiting */
+         sd->recv();              /* read it -- probably heartbeat from sd */
+         if (sd->is_stop()) {
+            break;
+         }
          if (sd->msglen <= 0) {
             Dmsg1(100, "Got BNET_SIG %d from SD\n", sd->msglen);
          } else {
             Dmsg2(100, "Got %d bytes from SD. MSG=%s\n", sd->msglen, sd->msg);
          }
       }
-      Dmsg2(100, "wait_intr=%d stop=%d\n", n, is_bnet_stop(sd));
+      Dmsg2(200, "wait_intr=%d stop=%d\n", n, is_bnet_stop(sd));
    }
    sd->close();
    dir->close();
@@ -170,14 +176,18 @@ extern "C" void *dir_heartbeat_thread(void *arg)
 
    jcr->hb_bsock = dir;
    jcr->hb_started = true;
+   dir->m_suppress_error_msgs = true;
 
-   for ( ; !is_bnet_stop(dir); ) {
+   while (!dir->is_stop()) {
       time_t now, next;
 
       now = time(NULL);
       next = now - last_heartbeat;
       if (next >= me->heartbeat_interval) {
          dir->signal(BNET_HEARTBEAT);
+         if (dir->is_stop()) {
+            break;
+         }
          last_heartbeat = now;
       }
       bmicrosleep(next, 0);
diff --git a/src/filed/job.c b/src/filed/job.c
index 3195a1f..6f657a7 100644
--- a/src/filed/job.c
+++ b/src/filed/job.c
@@ -84,7 +84,6 @@ static int session_cmd(JCR *jcr);
 static int response(JCR *jcr, BSOCK *sd, char *resp, const char *cmd);
 static void filed_free_jcr(JCR *jcr);
 static int open_sd_read_session(JCR *jcr);
-static int send_bootstrap_file(JCR *jcr);
 static int runscript_cmd(JCR *jcr);
 static int runbefore_cmd(JCR *jcr);
 static int runafter_cmd(JCR *jcr);
@@ -188,7 +187,6 @@ static char OK_close[]     = "3000 OK close Status = %d\n";
 static char OK_open[]      = "3000 OK open ticket = %d\n";
 static char OK_data[]      = "3000 OK data\n";
 static char OK_append[]    = "3000 OK append data\n";
-static char OKSDbootstrap[]= "3000 OK bootstrap\n";
 
 
 /* Commands sent to Storage Daemon */
@@ -765,9 +763,7 @@ static int restore_object_cmd(JCR *jcr)
    /* we still need to do this to detect a vss restore */
    if (strcmp(rop.object_name, "job_metadata.xml") == 0) {
       Dmsg0(100, "got job metadata\n");
-      //free_and_null_pool_memory(jcr->job_metadata);
-      jcr->job_metadata = rop.object; /* this is like a boolean in the restore case */
-      // rop.object = NULL; /* but not this */
+      jcr->got_metadata = true;
    }
    
    generate_plugin_event(jcr, bEventRestoreObject, (void *)&rop);
@@ -894,6 +890,14 @@ void add_file_to_fileset(JCR *jcr, const char *fname, bool is_file)
    }
 }
 
+findINCEXE *get_incexe(JCR *jcr)
+{
+   if (jcr->ff && jcr->ff->fileset) {
+      return jcr->ff->fileset->incexe;
+   }
+   return NULL;
+}
+
 void set_incexe(JCR *jcr, findINCEXE *incexe)
 {
    findFILESET *fileset = jcr->ff->fileset;
@@ -1904,7 +1908,9 @@ static int backup_cmd(JCR *jcr)
         if (get_win32_driveletters(jcr->ff, szWinDriveLetters)) {
             Jmsg(jcr, M_INFO, 0, _("Generate VSS snapshots. Driver=\"%s\", Drive(s)=\"%s\"\n"), g_pVSSClient->GetDriverName(), szWinDriveLetters);
             if (!g_pVSSClient->CreateSnapshots(szWinDriveLetters)) {               
-               Jmsg(jcr, M_FATAL, 0, _("CreateSGenerate VSS snapshots failed.\n"));
+               berrno be;
+               Jmsg(jcr, M_FATAL, 0, _("CreateSGenerate VSS snapshots failed. ERR=%s\n"),
+                    be.bstrerror());
             } else {
                /* tell user if snapshot creation of a specific drive failed */
                int i;
@@ -1924,7 +1930,9 @@ static int backup_cmd(JCR *jcr)
             Jmsg(jcr, M_FATAL, 0, _("No drive letters found for generating VSS snapshots.\n"));
         }
       } else {
-         Jmsg(jcr, M_FATAL, 0, _("VSS was not initialized properly.\n"));
+         berrno be;
+         Jmsg(jcr, M_FATAL, 0, _("VSS was not initialized properly. ERR=%s\n"),
+            be.bstrerror());
       } 
       run_scripts(jcr, jcr->RunScripts, "ClientAfterVSS");
    }
@@ -2115,8 +2123,7 @@ static int restore_cmd(JCR *jcr)
     * No need to enable VSS for restore if we do not have plugin
     *  data to restore 
     */
-   enable_vss = jcr->job_metadata != NULL;
-   jcr->job_metadata = NULL;
+   enable_vss = jcr->got_metadata;
 
    Dmsg2(50, "g_pVSSClient = %p, enable_vss = %d\n", g_pVSSClient, enable_vss);
    // capture state here, if client is backed up by multiple directors
@@ -2267,7 +2274,6 @@ bail_out:
       dir->fsend(OKstoreend);
       ret = 1;     /* we continue the loop, waiting for next part */
    } else {
-      end_restore_cmd(jcr);
       ret = 0;     /* we stop here */
    }
 
@@ -2275,6 +2281,9 @@ bail_out:
       ret = 0;     /* we stop here */
    }
 
+   if (ret == 0) {
+      end_restore_cmd(jcr);  /* stopping so send bEventEndRestoreJob */
+   }
    return ret;
 }
 
@@ -2319,10 +2328,6 @@ static int open_sd_read_session(JCR *jcr)
       return 0;
    }
 
-   if (!send_bootstrap_file(jcr)) {
-      return 0;
-   }
-
    /*
     * Start read of data with Storage daemon
     */
@@ -2391,42 +2396,3 @@ int response(JCR *jcr, BSOCK *sd, char *resp, const char *cmd)
    }
    return 0;
 }
-
-static int send_bootstrap_file(JCR *jcr)
-{
-   FILE *bs;
-   char buf[2000];
-   BSOCK *sd = jcr->store_bsock;
-   const char *bootstrap = "bootstrap\n";
-   int stat = 0;
-
-   Dmsg1(400, "send_bootstrap_file: %s\n", jcr->RestoreBootstrap);
-   if (!jcr->RestoreBootstrap) {
-      return 1;
-   }
-   bs = fopen(jcr->RestoreBootstrap, "rb");
-   if (!bs) {
-      berrno be;
-      Jmsg(jcr, M_FATAL, 0, _("Could not open bootstrap file %s: ERR=%s\n"),
-         jcr->RestoreBootstrap, be.bstrerror());
-      jcr->setJobStatus(JS_ErrorTerminated);
-      goto bail_out;
-   }
-   sd->msglen = pm_strcpy(sd->msg, bootstrap);
-   sd->send();
-   while (fgets(buf, sizeof(buf), bs)) {
-      sd->msglen = Mmsg(sd->msg, "%s", buf);
-      sd->send();
-   }
-   sd->signal(BNET_EOD);
-   fclose(bs);
-   if (!response(jcr, sd, OKSDbootstrap, "Bootstrap")) {
-      jcr->setJobStatus(JS_ErrorTerminated);
-      goto bail_out;
-   }
-   stat = 1;
-
-bail_out:
-   free_bootstrap(jcr);
-   return stat;
-}
diff --git a/src/filed/protos.h b/src/filed/protos.h
index dc793b9..e419194 100644
--- a/src/filed/protos.h
+++ b/src/filed/protos.h
@@ -69,6 +69,7 @@ bxattr_exit_code parse_xattr_streams(JCR *jcr, int stream, char *content, uint32
 /* from job.c */
 findINCEXE *new_exclude(JCR *jcr);
 findINCEXE *new_preinclude(JCR *jcr);
+findINCEXE *get_incexe(JCR *jcr);
 void set_incexe(JCR *jcr, findINCEXE *incexe);
 void new_options(JCR *jcr, findINCEXE *incexe);
 void add_file_to_fileset(JCR *jcr, const char *fname, bool is_file); 
diff --git a/src/filed/restore.c b/src/filed/restore.c
index fc22b37..96edcc8 100644
--- a/src/filed/restore.c
+++ b/src/filed/restore.c
@@ -302,11 +302,14 @@ static inline bool pop_delayed_data_streams(JCR *jcr, r_ctx &rctx)
       case STREAM_ACL_AIX_AIXC:
       case STREAM_ACL_AIX_NFS4:
       case STREAM_ACL_FREEBSD_NFS4_ACL:
+      case STREAM_ACL_HURD_DEFAULT_ACL:
+      case STREAM_ACL_HURD_ACCESS_ACL:
          if (!do_restore_acl(jcr, rds->stream, rds->content, rds->content_length)) {
             goto bail_out;
          }
          free(rds->content);
          break;
+      case STREAM_XATTR_HURD:
       case STREAM_XATTR_IRIX:
       case STREAM_XATTR_TRU64:
       case STREAM_XATTR_AIX:
@@ -892,6 +895,8 @@ void do_restore(JCR *jcr)
       case STREAM_ACL_AIX_AIXC:
       case STREAM_ACL_AIX_NFS4:
       case STREAM_ACL_FREEBSD_NFS4_ACL:
+      case STREAM_ACL_HURD_DEFAULT_ACL:
+      case STREAM_ACL_HURD_ACCESS_ACL:
          /*
           * Do not restore ACLs when
           * a) The current file is not extracted
@@ -920,6 +925,7 @@ void do_restore(JCR *jcr)
          }
          break;
 
+      case STREAM_XATTR_HURD:
       case STREAM_XATTR_IRIX:
       case STREAM_XATTR_TRU64:
       case STREAM_XATTR_AIX:
diff --git a/src/filed/xattr.c b/src/filed/xattr.c
index 40a5127..21a6365 100644
--- a/src/filed/xattr.c
+++ b/src/filed/xattr.c
@@ -35,6 +35,7 @@
  *   - AIX (Extended Attributes)
  *   - Darwin (Extended Attributes)
  *   - FreeBSD (Extended Attributes)
+ *   - GNU HURD (Extended Attributes)
  *   - IRIX (Extended Attributes)
  *   - Linux (Extended Attributes)
  *   - NetBSD (Extended Attributes)
@@ -48,7 +49,7 @@
  *   - Tru64 (Extended Attributes)
  *
  *   Written by Marco van Wieringen, November 2008
- *   Major overhaul January 2012
+ *   Major overhaul January 2012 + June 2012
  */
 
 #include "bacula.h"
@@ -340,14 +341,15 @@ static int os_default_xattr_streams[1] = {
 
 static bxattr_exit_code aix_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
 {
+   char *bp;
    bool skip_xattr;
-   char *xattr_list, *bp;
+   char *xattr_list = NULL;
    int cnt, xattr_count = 0;
    uint32_t name_length;
    int32_t xattr_list_len,
            xattr_value_len;
    uint32_t expected_serialize_len = 0;
-   xattr_t *current_xattr = NULL;
+   xattr_t *current_xattr;
    alist *xattr_value_list = NULL;
    bxattr_exit_code retval = bxattr_exit_error;
 
@@ -362,7 +364,8 @@ static bxattr_exit_code aix_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
       switch (errno) {
       case ENOENT:
       case EFORMAT:
-         return bxattr_exit_ok;
+         retval = bxattr_exit_ok;
+         goto bail_out;
       case ENOTSUP:
          /*
           * If the filesystem reports it doesn't support XATTRs we clear the
@@ -371,19 +374,21 @@ static bxattr_exit_code aix_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
           * when we change from one filesystem to an other.
           */
          jcr->xattr_data->flags &= ~BXATTR_FLAG_SAVE_NATIVE;
-         return bxattr_exit_ok;
+         retval = bxattr_exit_ok;
+         goto bail_out;
       default:
          Mmsg2(jcr->errmsg,
                _("llistea error on file \"%s\": ERR=%s\n"),
                jcr->last_fname, be.bstrerror());
          Dmsg2(100, "llistea error file=%s ERR=%s\n",
                jcr->last_fname, be.bstrerror());
-         return bxattr_exit_error;
+         goto bail_out;
       }
       break;
    }
    case 0:
-      return bxattr_exit_ok;
+      retval = bxattr_exit_ok;
+      goto bail_out;
    default:
       break;
    }
@@ -426,8 +431,9 @@ static bxattr_exit_code aix_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
     * Walk the list of extended attributes names and retrieve the data.
     * We already count the bytes needed for serializing the stream later on.
     */
-   bp = xattr_list;
-   while ((bp - xattr_list) + 1 < xattr_list_len) {
+   for (bp = xattr_list;
+       (bp - xattr_list) + 1 < xattr_list_len;
+        bp = strchr(bp, '\0') + 1) {
       skip_xattr = false;
 
       /*
@@ -440,28 +446,10 @@ static bxattr_exit_code aix_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
       name_length = strlen(bp);
       if (skip_xattr || name_length == 0) {
          Dmsg1(100, "Skipping xattr named %s\n", bp);
-         bp = strchr(bp, '\0') + 1;
          continue;
       }
 
       /*
-       * Each xattr valuepair starts with a magic so we can parse it easier.
-       */
-      current_xattr = (xattr_t *)malloc(sizeof(xattr_t));
-      current_xattr->magic = XATTR_MAGIC;
-      expected_serialize_len += sizeof(current_xattr->magic);
-
-      /*
-       * Allocate space for storing the name.
-       */
-      current_xattr->name_length = name_length;
-      current_xattr->name = (char *)malloc(current_xattr->name_length);
-      memcpy(current_xattr->name, bp, current_xattr->name_length);
-
-      expected_serialize_len += sizeof(current_xattr->name_length) +
-                                current_xattr->name_length;
-
-      /*
        * First see how long the value is for the extended attribute.
        */
       xattr_value_len = lgetea(jcr->last_fname, bp, NULL, 0);
@@ -484,6 +472,28 @@ static bxattr_exit_code aix_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
          }
          break;
       }
+      default:
+         break;
+      }
+
+      /*
+       * Each xattr valuepair starts with a magic so we can parse it easier.
+       */
+      current_xattr = (xattr_t *)malloc(sizeof(xattr_t));
+      current_xattr->magic = XATTR_MAGIC;
+      expected_serialize_len += sizeof(current_xattr->magic);
+
+      /*
+       * Allocate space for storing the name.
+       */
+      current_xattr->name_length = name_length;
+      current_xattr->name = (char *)malloc(current_xattr->name_length);
+      memcpy(current_xattr->name, bp, current_xattr->name_length);
+
+      expected_serialize_len += sizeof(current_xattr->name_length) +
+                                current_xattr->name_length;
+
+      switch (xattr_value_len) {
       case 0:
          current_xattr->value = NULL;
          current_xattr->value_length = 0;
@@ -504,15 +514,23 @@ static bxattr_exit_code aix_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
             case ENOENT:
             case EFORMAT:
                retval = bxattr_exit_ok;
-               goto bail_out;
+               break;
             default:
                Mmsg2(jcr->errmsg,
                      _("lgetea error on file \"%s\": ERR=%s\n"),
                      jcr->last_fname, be.bstrerror());
                Dmsg2(100, "lgetea error file=%s ERR=%s\n",
                      jcr->last_fname, be.bstrerror());
-               goto bail_out;
+               break;
             }
+
+            /*
+             * Default failure path out when retrieval of attr fails.
+             */
+            free(current_xattr->value);
+            free(current_xattr->name);
+            free(current_xattr);
+            goto bail_out;
          }
          /*
           * Store the actual length of the value.
@@ -520,16 +538,6 @@ static bxattr_exit_code aix_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
          current_xattr->value_length = xattr_value_len;
          expected_serialize_len += sizeof(current_xattr->value_length) +
                                    current_xattr->value_length;
-
-         /*
-          * Protect ourself against things getting out of hand.
-          */
-         if (expected_serialize_len >= MAX_XATTR_STREAM) {
-            Mmsg2(jcr->errmsg,
-            _("Xattr stream on file \"%s\" exceeds maximum size of %d bytes\n"),
-                  jcr->last_fname, MAX_XATTR_STREAM);
-            goto bail_out;
-         }
          break;
       }
 
@@ -538,9 +546,17 @@ static bxattr_exit_code aix_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
       }
 
       xattr_value_list->append(current_xattr);
-      current_xattr = NULL;
       xattr_count++;
-      bp = strchr(bp, '\0') + 1;
+
+      /*
+       * Protect ourself against things getting out of hand.
+       */
+      if (expected_serialize_len >= MAX_XATTR_STREAM) {
+         Mmsg2(jcr->errmsg,
+               _("Xattr stream on file \"%s\" exceeds maximum size of %d bytes\n"),
+               jcr->last_fname, MAX_XATTR_STREAM);
+         goto bail_out;
+      }
    }
 
    free(xattr_list);
@@ -573,21 +589,13 @@ static bxattr_exit_code aix_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
    }
 
 bail_out:
-   if (current_xattr != NULL) {
-      if (current_xattr->value != NULL) {
-         free(current_xattr->value);
-      }
-      if (current_xattr->name != NULL) {
-         free(current_xattr->name);
-      }
-      free(current_xattr);
-   }
    if (xattr_list != NULL) {
       free(xattr_list);
    }
    if (xattr_value_list != NULL) {
       xattr_drop_internal_table(xattr_value_list);
    }
+
    return retval;
 }
 
@@ -598,6 +606,7 @@ static bxattr_exit_code aix_parse_xattr_streams(JCR *jcr,
 {
    xattr_t *current_xattr;
    alist *xattr_value_list;
+   bxattr_exit_code retval = bxattr_exit_error;
 
    xattr_value_list = New(alist(10, not_owned_by_alist));
 
@@ -605,8 +614,7 @@ static bxattr_exit_code aix_parse_xattr_streams(JCR *jcr,
                                 content,
                                 content_length,
                                 xattr_value_list) != bxattr_exit_ok) {
-      xattr_drop_internal_table(xattr_value_list);
-      return bxattr_exit_error;
+      goto bail_out;
    }
 
    foreach_alist(current_xattr, xattr_value_list) {
@@ -641,12 +649,12 @@ static bxattr_exit_code aix_parse_xattr_streams(JCR *jcr,
       }
    }
 
-   xattr_drop_internal_table(xattr_value_list);
-   return bxattr_exit_ok;
+   retval = bxattr_exit_ok;
 
 bail_out:
    xattr_drop_internal_table(xattr_value_list);
-   return bxattr_exit_error;
+
+   return retval;
 }
 
 /*
@@ -696,11 +704,12 @@ static xattr_naming_space xattr_naming_spaces[] = {
 
 static bxattr_exit_code irix_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
 {
+   char dummy[32];
    int cnt, length, xattr_count = 0;
    attrlist_cursor_t cursor;
    attrlist_t *attrlist;
    attrlist_ent_t *attrlist_ent;
-   xattr_t *current_xattr = NULL;
+   xattr_t *current_xattr;
    alist *xattr_value_list = NULL;
    uint32_t expected_serialize_len = 0;
    bxattr_exit_code retval = bxattr_exit_error;
@@ -736,6 +745,36 @@ static bxattr_exit_code irix_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
             attrlist_ent = ATTR_ENTRY(xattrbuf, cnt);
 
             /*
+             * First determine if we can retrieve the xattr and how big it really is.
+             */
+            length = sizeof(dummy);
+            if (attr_get(jcr->last_fname, attrlist_ent->a_name, dummy,
+                         &length, xattr_naming_spaces[cnt].flags) != 0) {
+               berrno be;
+
+               switch (errno) {
+               case ENOENT:
+               case ENOATTR:
+                  retval = bxattr_exit_ok;
+                  goto bail_out;
+               case E2BIG:
+                  /*
+                   * Size of the xattr is bigger then the 32 bytes dummy which is
+                   * likely. As length now contains its actual length we can allocate
+                   * a properly size buffer for the real retrieval.
+                   */
+                  break;
+               default:
+                  Mmsg2(jcr->errmsg,
+                        _("attr_list error on file \"%s\": ERR=%s\n"),
+                        jcr->last_fname, be.bstrerror());
+                  Dmsg2(100, "attr_list error file=%s ERR=%s\n",
+                        jcr->last_fname, be.bstrerror());
+                  goto bail_out;
+               }
+            }
+
+            /*
              * Each xattr valuepair starts with a magic so we can parse it easier.
              */
             current_xattr = (xattr_t *)malloc(sizeof(xattr_t));
@@ -755,7 +794,7 @@ static bxattr_exit_code irix_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
             expected_serialize_len += sizeof(current_xattr->name_length) +
                                       current_xattr->name_length;
 
-            current_xattr->value_length = attrlist_ent->a_valuelen;
+            current_xattr->value_length = length;
             current_xattr->value = (char *)malloc(current_xattr->value_length);
 
             /*
@@ -769,33 +808,35 @@ static bxattr_exit_code irix_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
                case ENOENT:
                case ENOATTR:
                   retval = bxattr_exit_ok;
-                  goto bail_out;
+                  break;
                case E2BIG:
                   /*
                    * The buffer for the xattr isn't big enough. the value of
                    * current_xattr->value_length is updated with the actual size
                    * of the xattr. So we free the old buffer and create a new one
-                   * and try again.
+                   * and try again. Normally this cannot happen as we size the
+                   * buffer using a call to attr_get before but in case of an
+                   * race condition it might happen.
                    */
                   free(current_xattr->value);
-                  current_xattr->value = (char *)malloc(current_xattr->value_length);
+                  current_xattr->value = (char *)malloc(length);
                   if (attr_get(jcr->last_fname, attrlist_ent->a_name, current_xattr->value,
                                &length, xattr_naming_spaces[cnt].flags) != 0) {
                      switch (errno) {
                      case ENOENT:
                      case ENOATTR:
                         retval = bxattr_exit_ok;
-                        goto bail_out;
+                        break;
                      default:
                         Mmsg2(jcr->errmsg,
                               _("attr_list error on file \"%s\": ERR=%s\n"),
                               jcr->last_fname, be.bstrerror(errno));
                         Dmsg2(100, "attr_list error file=%s ERR=%s\n",
                               jcr->last_fname, be.bstrerror());
-                        goto bail_out;
+                        break;
                      }
                   } else {
-                     current_xattr->value_length = length;
+                     goto ok_continue;
                   }
                   break;
                default:
@@ -804,15 +845,30 @@ static bxattr_exit_code irix_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
                         jcr->last_fname, be.bstrerror());
                   Dmsg2(100, "attr_list error file=%s ERR=%s\n",
                         jcr->last_fname, be.bstrerror());
-                  goto bail_out;
+                  break;
                }
-            } else {
-               current_xattr->value_length = length;
+
+               /*
+                * Default failure path out when retrieval of attr fails.
+                */
+               free(current_xattr->value);
+               free(current_xattr->name);
+               free(current_xattr);
+               goto bail_out;
             }
 
+ok_continue:
+            current_xattr->value_length = length;
             expected_serialize_len += sizeof(current_xattr->value_length) +
                                       current_xattr->value_length;
 
+            if (xattr_value_list == NULL) {
+               xattr_value_list = New(alist(10, not_owned_by_alist));
+            }
+
+            xattr_value_list->append(current_xattr);
+            xattr_count++;
+
             /*
              * Protect ourself against things getting out of hand.
              */
@@ -822,14 +878,6 @@ static bxattr_exit_code irix_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
                      jcr->last_fname, MAX_XATTR_STREAM);
                goto bail_out;
             }
-
-            if (xattr_value_list == NULL) {
-               xattr_value_list = New(alist(10, not_owned_by_alist));
-            }
-
-            xattr_value_list->append(current_xattr);
-            current_xattr = NULL;
-            xattr_count++;
          }
 
          /*
@@ -868,20 +916,12 @@ static bxattr_exit_code irix_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
    }
 
 bail_out:
-   if (current_xattr != NULL) {
-      if (current_xattr->value != NULL) {
-         free(current_xattr->value);
-      }
-      if (current_xattr->name != NULL) {
-         free(current_xattr->name);
-      }
-      free(current_xattr);
-   }
    free_pool_memory(xattrbuf);
 
    if (xattr_value_list != NULL) {
       xattr_drop_internal_table(xattr_value_list);
    }
+
    return retval;
 }
 
@@ -902,8 +942,7 @@ static bxattr_exit_code irix_parse_xattr_streams(JCR *jcr,
                                 content,
                                 content_length,
                                 xattr_value_list) != bxattr_exit_ok) {
-      xattr_drop_internal_table(xattr_value_list);
-      return bxattr_exit_error;
+      goto bail_out;
    }
 
    foreach_alist(current_xattr, xattr_value_list) {
@@ -978,12 +1017,12 @@ static bxattr_exit_code irix_parse_xattr_streams(JCR *jcr,
       }
    }
 
-   xattr_drop_internal_table(xattr_value_list);
-   return bxattr_exit_ok;
+   retval = bxattr_exit_ok;
 
 bail_out:
    xattr_drop_internal_table(xattr_value_list);
-   return bxattr_exit_error;
+
+   return retval;
 }
 
 /*
@@ -997,7 +1036,8 @@ static bxattr_exit_code (*os_parse_xattr_streams)
                         irix_parse_xattr_streams;
 
 #elif defined(HAVE_DARWIN_OS) || \
-      defined(HAVE_LINUX_OS)
+      defined(HAVE_LINUX_OS) || \
+      defined(HAVE_HURD_OS)
 
 #if (!defined(HAVE_LISTXATTR) && !defined(HAVE_LLISTXATTR)) || \
     (!defined(HAVE_GETXATTR) && !defined(HAVE_LGETXATTR)) || \
@@ -1039,6 +1079,16 @@ static const char *xattr_acl_skiplist[3] = {
 static const char *xattr_skiplist[1] = {
    NULL
 };
+#elif defined(HAVE_HURD_OS)
+static int os_default_xattr_streams[1] = {
+   STREAM_XATTR_HURD
+};
+static const char *xattr_acl_skiplist[1] = {
+   NULL
+};
+static const char *xattr_skiplist[1] = {
+   NULL
+};
 #endif
 
 /*
@@ -1071,14 +1121,15 @@ static const char *xattr_skiplist[1] = {
 
 static bxattr_exit_code generic_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
 {
+   char *bp;
    bool skip_xattr;
-   char *xattr_list, *bp;
+   char *xattr_list = NULL;
    int cnt, xattr_count = 0;
    uint32_t name_length;
    int32_t xattr_list_len,
            xattr_value_len;
    uint32_t expected_serialize_len = 0;
-   xattr_t *current_xattr = NULL;
+   xattr_t *current_xattr;
    alist *xattr_value_list = NULL;
    bxattr_exit_code retval = bxattr_exit_error;
 
@@ -1092,7 +1143,8 @@ static bxattr_exit_code generic_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
 
       switch (errno) {
       case ENOENT:
-         return bxattr_exit_ok;
+         retval = bxattr_exit_ok;
+         goto bail_out;
       case BXATTR_ENOTSUP:
          /*
           * If the filesystem reports it doesn't support XATTRs we clear
@@ -1102,19 +1154,21 @@ static bxattr_exit_code generic_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
           * change from one filesystem to an other.
           */
          jcr->xattr_data->flags &= ~BXATTR_FLAG_SAVE_NATIVE;
-         return bxattr_exit_ok;
+         retval = bxattr_exit_ok;
+         goto bail_out;
       default:
          Mmsg2(jcr->errmsg,
                _("llistxattr error on file \"%s\": ERR=%s\n"),
                jcr->last_fname, be.bstrerror());
          Dmsg2(100, "llistxattr error file=%s ERR=%s\n",
                jcr->last_fname, be.bstrerror());
-         return bxattr_exit_error;
+         goto bail_out;
       }
       break;
    }
    case 0:
-      return bxattr_exit_ok;
+      retval = bxattr_exit_ok;
+      goto bail_out;
    default:
       break;
    }
@@ -1156,8 +1210,9 @@ static bxattr_exit_code generic_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
     * Walk the list of extended attributes names and retrieve the data.
     * We already count the bytes needed for serializing the stream later on.
     */
-   bp = xattr_list;
-   while ((bp - xattr_list) + 1 < xattr_list_len) {
+   for (bp = xattr_list;
+       (bp - xattr_list) + 1 < xattr_list_len;
+        bp = strchr(bp, '\0') + 1) {
       skip_xattr = false;
 
       /*
@@ -1189,27 +1244,10 @@ static bxattr_exit_code generic_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
       name_length = strlen(bp);
       if (skip_xattr || name_length == 0) {
          Dmsg1(100, "Skipping xattr named %s\n", bp);
-         bp = strchr(bp, '\0') + 1;
          continue;
       }
 
       /*
-       * Each xattr valuepair starts with a magic so we can parse it easier.
-       */
-      current_xattr = (xattr_t *)malloc(sizeof(xattr_t));
-      current_xattr->magic = XATTR_MAGIC;
-      expected_serialize_len += sizeof(current_xattr->magic);
-
-      /*
-       * Allocate space for storing the name.
-       */
-      current_xattr->name_length = name_length;
-      current_xattr->name = (char *)malloc(current_xattr->name_length);
-      memcpy(current_xattr->name, bp, current_xattr->name_length);
-
-      expected_serialize_len += sizeof(current_xattr->name_length) + current_xattr->name_length;
-
-      /*
        * First see how long the value is for the extended attribute.
        */
       xattr_value_len = lgetxattr(jcr->last_fname, bp, NULL, 0);
@@ -1231,6 +1269,28 @@ static bxattr_exit_code generic_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
          }
          break;
       }
+      default:
+         break;
+      }
+
+      /*
+       * Each xattr valuepair starts with a magic so we can parse it easier.
+       */
+      current_xattr = (xattr_t *)malloc(sizeof(xattr_t));
+      current_xattr->magic = XATTR_MAGIC;
+      current_xattr->value = NULL;
+      expected_serialize_len += sizeof(current_xattr->magic);
+
+      /*
+       * Allocate space for storing the name.
+       */
+      current_xattr->name_length = name_length;
+      current_xattr->name = (char *)malloc(current_xattr->name_length);
+      memcpy(current_xattr->name, bp, current_xattr->name_length);
+
+      expected_serialize_len += sizeof(current_xattr->name_length) + current_xattr->name_length;
+
+      switch (xattr_value_len) {
       case 0:
          current_xattr->value = NULL;
          current_xattr->value_length = 0;
@@ -1250,31 +1310,31 @@ static bxattr_exit_code generic_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
             switch (errno) {
             case ENOENT:
                retval = bxattr_exit_ok;
-               goto bail_out;
+               break;
             default:
                Mmsg2(jcr->errmsg,
                      _("lgetxattr error on file \"%s\": ERR=%s\n"),
                      jcr->last_fname, be.bstrerror());
                Dmsg2(100, "lgetxattr error file=%s ERR=%s\n",
                      jcr->last_fname, be.bstrerror());
-               goto bail_out;
+               break;
             }
+
+            /*
+             * Default failure path out when retrieval of attr fails.
+             */
+            free(current_xattr->value);
+            free(current_xattr->name);
+            free(current_xattr);
+            goto bail_out;
          }
+
          /*
           * Store the actual length of the value.
           */
          current_xattr->value_length = xattr_value_len;
          expected_serialize_len += sizeof(current_xattr->value_length) + current_xattr->value_length;
-
-         /*
-          * Protect ourself against things getting out of hand.
-          */
-         if (expected_serialize_len >= MAX_XATTR_STREAM) {
-            Mmsg2(jcr->errmsg,
-                  _("Xattr stream on file \"%s\" exceeds maximum size of %d bytes\n"),
-                  jcr->last_fname, MAX_XATTR_STREAM);
-            goto bail_out;
-         }
+         break;
       }
 
       if (xattr_value_list == NULL) {
@@ -1282,10 +1342,17 @@ static bxattr_exit_code generic_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
       }
 
       xattr_value_list->append(current_xattr);
-      current_xattr = NULL;
       xattr_count++;
-      bp = strchr(bp, '\0') + 1;
-      break;
+
+      /*
+       * Protect ourself against things getting out of hand.
+       */
+      if (expected_serialize_len >= MAX_XATTR_STREAM) {
+         Mmsg2(jcr->errmsg,
+               _("Xattr stream on file \"%s\" exceeds maximum size of %d bytes\n"),
+               jcr->last_fname, MAX_XATTR_STREAM);
+         goto bail_out;
+      }
    }
 
    free(xattr_list);
@@ -1318,21 +1385,13 @@ static bxattr_exit_code generic_xattr_build_streams(JCR *jcr, FF_PKT *ff_pkt)
    }
 
 bail_out:
-   if (current_xattr != NULL) {
-      if (current_xattr->value != NULL) {
-         free(current_xattr->value);
-      }
-      if (current_xattr->name != NULL) {
-         free(current_xattr->name);
-      }
-      free(current_xattr);
-   }
    if (xattr_list != NULL) {
       free(xattr_list);
    }
    if (xattr_value_list != NULL) {
       xattr_drop_internal_table(xattr_value_list);
    }
+
    return retval;
 }
 
@@ -1343,6 +1402,7 @@ static bxattr_exit_code generic_parse_xattr_streams(JCR *jcr,
 {
    xattr_t *current_xattr;
    alist *xattr_value_list;
+   bxattr_exit_code retval = bxattr_exit_error;
 
    xattr_value_list = New(alist(10, not_owned_by_alist));
 
@@ -1350,8 +1410,7 @@ static bxattr_exit_code generic_parse_xattr_streams(JCR *jcr,
                                 content,
                                 content_length,
                                 xattr_value_list) != bxattr_exit_ok) {
-      xattr_drop_internal_table(xattr_value_list);
-      return bxattr_exit_error;
+      goto bail_out;
    }
 
    foreach_alist(current_xattr, xattr_value_list) {
@@ -1382,12 +1441,12 @@ static bxattr_exit_code generic_parse_xattr_streams(JCR *jcr,
       }
    }
 
-   xattr_drop_internal_table(xattr_value_list);
-   return bxattr_exit_ok;
+   retval = bxattr_exit_ok;
 
 bail_out:
    xattr_drop_internal_table(xattr_value_list);
-   return bxattr_exit_error;
+
+   return retval;
 }
 
 /*
@@ -1482,7 +1541,7 @@ static const char *xattr_skiplist[1] = {
 static bxattr_exit_code bsd_build_xattr_streams(JCR *jcr, FF_PKT *ff_pkt)
 {
    bool skip_xattr;
-   char *xattr_list;
+   char *xattr_list = NULL;
    int cnt, index, xattr_count = 0;
    int32_t xattr_list_len,
            xattr_value_len;
@@ -1491,7 +1550,7 @@ static bxattr_exit_code bsd_build_xattr_streams(JCR *jcr, FF_PKT *ff_pkt)
    int attrnamespace;
    char *current_attrnamespace = NULL;
    char current_attrname[XATTR_BUFSIZ], current_attrtuple[XATTR_BUFSIZ];
-   xattr_t *current_xattr = NULL;
+   xattr_t *current_xattr;
    alist *xattr_value_list = NULL;
    bxattr_exit_code retval = bxattr_exit_error;
 
@@ -1652,23 +1711,6 @@ static bxattr_exit_code bsd_build_xattr_streams(JCR *jcr, FF_PKT *ff_pkt)
          }
 
          /*
-          * Each xattr valuepair starts with a magic so we can parse it easier.
-          */
-         current_xattr = (xattr_t *)malloc(sizeof(xattr_t));
-         current_xattr->magic = XATTR_MAGIC;
-         expected_serialize_len += sizeof(current_xattr->magic);
-
-         /*
-          * Allocate space for storing the name.
-          */
-         current_xattr->name_length = strlen(current_attrtuple);
-         current_xattr->name = (char *)malloc(current_xattr->name_length);
-         memcpy(current_xattr->name, current_attrtuple, current_xattr->name_length);
-
-         expected_serialize_len += sizeof(current_xattr->name_length) +
-                                   current_xattr->name_length;
-
-         /*
           * First see how long the value is for the extended attribute.
           */
          xattr_value_len = extattr_get_link(jcr->last_fname, attrnamespace,
@@ -1691,6 +1733,29 @@ static bxattr_exit_code bsd_build_xattr_streams(JCR *jcr, FF_PKT *ff_pkt)
             }
             break;
          }
+         default:
+            break;
+         }
+
+         /*
+          * Each xattr valuepair starts with a magic so we can parse it easier.
+          */
+         current_xattr = (xattr_t *)malloc(sizeof(xattr_t));
+         current_xattr->magic = XATTR_MAGIC;
+         current_xattr->value = NULL;
+         expected_serialize_len += sizeof(current_xattr->magic);
+
+         /*
+          * Allocate space for storing the name.
+          */
+         current_xattr->name_length = strlen(current_attrtuple);
+         current_xattr->name = (char *)malloc(current_xattr->name_length);
+         memcpy(current_xattr->name, current_attrtuple, current_xattr->name_length);
+
+         expected_serialize_len += sizeof(current_xattr->name_length) +
+                                   current_xattr->name_length;
+
+         switch (xattr_value_len) {
          case 0:
             current_xattr->value = NULL;
             current_xattr->value_length = 0;
@@ -1712,15 +1777,23 @@ static bxattr_exit_code bsd_build_xattr_streams(JCR *jcr, FF_PKT *ff_pkt)
                switch (errno) {
                case ENOENT:
                   retval = bxattr_exit_ok;
-                  goto bail_out;
+                  break;
                default:
                   Mmsg2(jcr->errmsg,
                         _("extattr_get_link error on file \"%s\": ERR=%s\n"),
                         jcr->last_fname, be.bstrerror());
                   Dmsg2(100, "extattr_get_link error file=%s ERR=%s\n",
                         jcr->last_fname, be.bstrerror());
-                  goto bail_out;
+                  break;
                }
+
+               /*
+                * Default failure path out when retrieval of attr fails.
+                */
+               free(current_xattr->value);
+               free(current_xattr->name);
+               free(current_xattr);
+               goto bail_out;
             }
 
             /*
@@ -1729,16 +1802,6 @@ static bxattr_exit_code bsd_build_xattr_streams(JCR *jcr, FF_PKT *ff_pkt)
             current_xattr->value_length = xattr_value_len;
             expected_serialize_len += sizeof(current_xattr->value_length) +
                                       current_xattr->value_length;
-
-            /*
-             * Protect ourself against things getting out of hand.
-             */
-            if (expected_serialize_len >= MAX_XATTR_STREAM) {
-               Mmsg2(jcr->errmsg,
-                     _("Xattr stream on file \"%s\" exceeds maximum size of %d bytes\n"),
-                     jcr->last_fname, MAX_XATTR_STREAM);
-               goto bail_out;
-            }
             break;
          }
 
@@ -1747,9 +1810,17 @@ static bxattr_exit_code bsd_build_xattr_streams(JCR *jcr, FF_PKT *ff_pkt)
          }
 
          xattr_value_list->append(current_xattr);
-         current_xattr = NULL;
          xattr_count++;
 
+         /*
+          * Protect ourself against things getting out of hand.
+          */
+         if (expected_serialize_len >= MAX_XATTR_STREAM) {
+            Mmsg2(jcr->errmsg,
+                  _("Xattr stream on file \"%s\" exceeds maximum size of %d bytes\n"),
+                  jcr->last_fname, MAX_XATTR_STREAM);
+            goto bail_out;
+         }
       }
 
       /*
@@ -1795,21 +1866,13 @@ bail_out:
    if (current_attrnamespace != NULL) {
       actuallyfree(current_attrnamespace);
    }
-   if (current_xattr != NULL) {
-      if (current_xattr->value != NULL) {
-         free(current_xattr->value);
-      }
-      if (current_xattr->name != NULL) {
-         free(current_xattr->name);
-      }
-      free(current_xattr);
-   }
    if (xattr_list != NULL) {
       free(xattr_list);
    }
    if (xattr_value_list != NULL) {
       xattr_drop_internal_table(xattr_value_list);
    }
+
    return retval;
 }
 
@@ -1822,6 +1885,7 @@ static bxattr_exit_code bsd_parse_xattr_streams(JCR *jcr,
    alist *xattr_value_list;
    int current_attrnamespace, cnt;
    char *attrnamespace, *attrname;
+   bxattr_exit_code retval = bxattr_exit_error;
 
    xattr_value_list = New(alist(10, not_owned_by_alist));
 
@@ -1829,8 +1893,7 @@ static bxattr_exit_code bsd_parse_xattr_streams(JCR *jcr,
                                 content,
                                 content_length,
                                 xattr_value_list) != bxattr_exit_ok) {
-      xattr_drop_internal_table(xattr_value_list);
-      return bxattr_exit_error;
+      goto bail_out;
    }
 
    foreach_alist(current_xattr, xattr_value_list) {
@@ -1885,12 +1948,12 @@ static bxattr_exit_code bsd_parse_xattr_streams(JCR *jcr,
       }
    }
 
-   xattr_drop_internal_table(xattr_value_list);
-   return bxattr_exit_ok;
+   retval = bxattr_exit_ok;
 
 bail_out:
    xattr_drop_internal_table(xattr_value_list);
-   return bxattr_exit_error;
+
+   return retval;
 }
 
 /*
@@ -1946,7 +2009,7 @@ static bxattr_exit_code tru64_build_xattr_streams(JCR *jcr, FF_PKT *ff_pkt)
            xattrbuf_size,
            xattrbuf_min_size;
    uint32_t expected_serialize_len = 0;
-   xattr_t *current_xattr = NULL;
+   xattr_t *current_xattr;
    alist *xattr_value_list = NULL;
    struct proplistname_args prop_args;
    bxattr_exit_code retval = bxattr_exit_error;
@@ -2098,6 +2161,13 @@ static bxattr_exit_code tru64_build_xattr_streams(JCR *jcr, FF_PKT *ff_pkt)
       expected_serialize_len += sizeof(current_xattr->value_length) +
                                 current_xattr->value_length;
 
+      if (xattr_value_list == NULL) {
+         xattr_value_list = New(alist(10, not_owned_by_alist));
+      }
+
+      xattr_value_list->append(current_xattr);
+      xattr_count++;
+
       /*
        * Protect ourself against things getting out of hand.
        */
@@ -2107,14 +2177,6 @@ static bxattr_exit_code tru64_build_xattr_streams(JCR *jcr, FF_PKT *ff_pkt)
                jcr->last_fname, MAX_XATTR_STREAM);
          goto bail_out;
       }
-
-      if (xattr_value_list == NULL) {
-         xattr_value_list = New(alist(10, not_owned_by_alist));
-      }
-
-      xattr_value_list->append(current_xattr);
-      current_xattr = NULL;
-      xattr_count++;
    }
 
    /*
@@ -2144,15 +2206,6 @@ static bxattr_exit_code tru64_build_xattr_streams(JCR *jcr, FF_PKT *ff_pkt)
    }
 
 bail_out:
-   if (current_xattr != NULL) {
-      if (current_xattr->value != NULL) {
-         free(current_xattr->value);
-      }
-      if (current_xattr->name != NULL) {
-         free(current_xattr->name);
-      }
-      free(current_xattr);
-   }
    if (xattr_value_list != NULL) {
       xattr_drop_internal_table(xattr_value_list);
    }
@@ -2178,8 +2231,7 @@ static bxattr_exit_code tru64_parse_xattr_streams(JCR *jcr,
                                 content,
                                 content_length,
                                 xattr_value_list) != bxattr_exit_ok) {
-      xattr_drop_internal_table(xattr_value_list);
-      return bxattr_exit_error;
+      goto bail_out;
    }
 
    /*
@@ -2248,17 +2300,15 @@ static bxattr_exit_code tru64_parse_xattr_streams(JCR *jcr,
       break;
    }
 
-   free(xattrbuf);
-
-   xattr_drop_internal_table(xattr_value_list);
-   return bxattr_exit_ok;
+   retval = bxattr_exit_ok;
 
 bail_out:
    if (xattrbuf) {
       free(xattrbuf);
    }
    xattr_drop_internal_table(xattr_value_list);
-   return bxattr_exit_error;
+
+   return retval;
 }
 
 /*
@@ -2392,7 +2442,7 @@ static int os_default_xattr_streams[1] = {
  * This code creates a temporary cache with entries for each xattr which has
  * a link count > 1 (which indicates it has one or more hard linked counterpart(s))
  */
-static xattr_link_cache_entry_t *find_xattr_link_cache_entry(JCR *jcr, ino_t inum)
+static inline xattr_link_cache_entry_t *find_xattr_link_cache_entry(JCR *jcr, ino_t inum)
 {
    xattr_link_cache_entry_t *ptr;
 
@@ -2404,14 +2454,14 @@ static xattr_link_cache_entry_t *find_xattr_link_cache_entry(JCR *jcr, ino_t inu
    return NULL;
 }
 
-static void add_xattr_link_cache_entry(JCR *jcr, ino_t inum, char *target)
+static inline void add_xattr_link_cache_entry(JCR *jcr, ino_t inum, char *target)
 {
    xattr_link_cache_entry_t *ptr;
 
    ptr = (xattr_link_cache_entry_t *)malloc(sizeof(xattr_link_cache_entry_t));
    memset(ptr, 0, sizeof(xattr_link_cache_entry_t));
    ptr->inum = inum;
-   bstrncpy(ptr->target, target, sizeof(ptr->target));
+   ptr->target = bstrdup(target);
 
    if (!jcr->xattr_data->u.build->link_cache) {
       jcr->xattr_data->u.build->link_cache = New(alist(10, not_owned_by_alist));
@@ -2419,6 +2469,22 @@ static void add_xattr_link_cache_entry(JCR *jcr, ino_t inum, char *target)
    jcr->xattr_data->u.build->link_cache->append(ptr);
 }
 
+static inline void drop_xattr_link_cache(JCR *jcr)
+{
+   xattr_link_cache_entry_t *ptr;
+
+   /*
+    * Walk the list of xattr link cache entries and free allocated memory on traversing.
+    */
+   foreach_alist(ptr, jcr->xattr_data->u.build->link_cache) {
+      free(ptr->target);
+      free(ptr);
+   }
+
+   delete jcr->xattr_data->u.build->link_cache;
+   jcr->xattr_data->u.build->link_cache = NULL;
+}
+
 #if defined(HAVE_SYS_NVPAIR_H) && defined(_PC_SATTR_ENABLED)
 /*
  * This function returns true if a non default extended system attribute
@@ -2516,6 +2582,7 @@ static bool acl_is_trivial(int count, aclent_t *entries)
 
 static bxattr_exit_code solaris_save_xattr_acl(JCR *jcr, int fd, const char *attrname, char **acl_text)
 {
+   bxattr_exit_code retval = bxattr_exit_error;
 #ifdef HAVE_ACL
 #ifdef HAVE_EXTENDED_ACL
    int flags;
@@ -2535,14 +2602,15 @@ static bxattr_exit_code solaris_save_xattr_acl(JCR *jcr, int fd, const char *att
 
          switch (errno) {
          case ENOENT:
-            return bxattr_exit_ok;
+            retval = bxattr_exit_ok;
+            goto bail_out;
          default:
             Mmsg3(jcr->errmsg,
                   _("Unable to get acl on xattr %s on file \"%s\": ERR=%s\n"),
                   attrname, jcr->last_fname, be.bstrerror());
             Dmsg3(100, "facl_get/acl_get of xattr %s on \"%s\" failed: ERR=%s\n",
                   attrname, jcr->last_fname, be.bstrerror());
-            return bxattr_exit_error;
+            goto bail_out;
          }
       }
 
@@ -2564,7 +2632,7 @@ static bxattr_exit_code solaris_save_xattr_acl(JCR *jcr, int fd, const char *att
    } else {
       *acl_text = NULL;
    }
-   return bxattr_exit_ok;
+   retval = bxattr_exit_ok;
 #else /* HAVE_EXTENDED_ACL */
    int n;
    aclent_t *acls = NULL;
@@ -2587,7 +2655,8 @@ static bxattr_exit_code solaris_save_xattr_acl(JCR *jcr, int fd, const char *att
          switch (errno) {
          case ENOENT:
             free(acls);
-            return bxattr_exit_ok;
+            retval = bxattr_exit_ok;
+            goto bail_out;
          default:
             Mmsg3(jcr->errmsg,
                   _("Unable to get acl on xattr %s on file \"%s\": ERR=%s\n"),
@@ -2595,7 +2664,7 @@ static bxattr_exit_code solaris_save_xattr_acl(JCR *jcr, int fd, const char *att
             Dmsg3(100, "facl/acl of xattr %s on \"%s\" failed: ERR=%s\n",
                   attrname, jcr->last_fname, be.bstrerror());
             free(acls);
-            return bxattr_exit_error;
+            goto bail_out;
          }
       }
 
@@ -2612,7 +2681,7 @@ static bxattr_exit_code solaris_save_xattr_acl(JCR *jcr, int fd, const char *att
             Dmsg3(100, "acltotext of xattr %s on \"%s\" failed: ERR=%s\n",
                   attrname, jcr->last_fname, be.bstrerror());
             free(acls);
-            return bxattr_exit_error;
+            goto bail_out;
          }
       } else {
          *acl_text = NULL;
@@ -2622,12 +2691,15 @@ static bxattr_exit_code solaris_save_xattr_acl(JCR *jcr, int fd, const char *att
    } else {
       *acl_text = NULL;
    }
-   return bxattr_exit_ok;
+   retval = bxattr_exit_ok;
 #endif /* HAVE_EXTENDED_ACL */
 
 #else /* HAVE_ACL */
-   return bxattr_exit_ok;
+   retval = bxattr_exit_ok;
 #endif /* HAVE_ACL */
+
+bail_out:
+   return retval;
 }
 
 /*
@@ -3636,8 +3708,7 @@ static bxattr_exit_code solaris_build_xattr_streams(JCR *jcr, FF_PKT *ff_pkt)
       retval = solaris_save_xattrs(jcr, NULL, NULL);
       chdir(cwd);
       if (jcr->xattr_data->u.build->link_cache) {
-         delete jcr->xattr_data->u.build->link_cache;
-         jcr->xattr_data->u.build->link_cache = NULL;
+         drop_xattr_link_cache(jcr);
       }
    }
    return retval;
@@ -3650,7 +3721,7 @@ static bxattr_exit_code solaris_parse_xattr_streams(JCR *jcr,
 {
    char cwd[PATH_MAX];
    bool is_extensible = false;
-   bxattr_exit_code retval;
+   bxattr_exit_code retval = bxattr_exit_error;
 
    /*
     * First make sure we can restore xattr on the filesystem.
@@ -3664,7 +3735,7 @@ static bxattr_exit_code solaris_parse_xattr_streams(JCR *jcr,
          jcr->last_fname);
          Dmsg1(100, "Unable to restore extensible attributes on file \"%s\", filesystem doesn't support this\n",
             jcr->last_fname);
-         return bxattr_exit_error;
+         goto bail_out;
       }
 
       is_extensible = true;
@@ -3677,11 +3748,11 @@ static bxattr_exit_code solaris_parse_xattr_streams(JCR *jcr,
                jcr->last_fname);
          Dmsg1(100, "Unable to restore extended attributes on file \"%s\", filesystem doesn't support this\n",
             jcr->last_fname);
-         return bxattr_exit_error;
+         goto bail_out;
       }
       break;
    default:
-      return bxattr_exit_error;
+      goto bail_out;
    }
 
    /*
@@ -3691,6 +3762,8 @@ static bxattr_exit_code solaris_parse_xattr_streams(JCR *jcr,
    getcwd(cwd, sizeof(cwd));
    retval = solaris_restore_xattrs(jcr, is_extensible, content, content_length);
    chdir(cwd);
+
+bail_out:
    return retval;
 }
 
@@ -3746,6 +3819,7 @@ bxattr_exit_code parse_xattr_streams(JCR *jcr,
    int ret;
    struct stat st;
    unsigned int cnt;
+   bxattr_exit_code retval = bxattr_exit_error;
 
    /*
     * See if we are changing from one device to an other.
@@ -3760,14 +3834,15 @@ bxattr_exit_code parse_xattr_streams(JCR *jcr,
 
       switch (errno) {
       case ENOENT:
-         return bxattr_exit_ok;
+         retval = bxattr_exit_ok;
+         goto bail_out;
       default:
          Mmsg2(jcr->errmsg,
                _("Unable to stat file \"%s\": ERR=%s\n"),
                jcr->last_fname, be.bstrerror());
          Dmsg2(100, "Unable to stat file \"%s\": ERR=%s\n",
                jcr->last_fname, be.bstrerror());
-         return bxattr_exit_error;
+         goto bail_out;
       }
       break;
    }
@@ -3796,7 +3871,8 @@ bxattr_exit_code parse_xattr_streams(JCR *jcr,
        */
       for (cnt = 0; cnt < sizeof(os_default_xattr_streams) / sizeof(int); cnt++) {
          if (os_default_xattr_streams[cnt] == stream) {
-            return os_parse_xattr_streams(jcr, stream, content, content_length);
+            retval = os_parse_xattr_streams(jcr, stream, content, content_length);
+            goto bail_out;
          }
       }
    } else {
@@ -3804,15 +3880,18 @@ bxattr_exit_code parse_xattr_streams(JCR *jcr,
        * Increment error count but don't log an error again for the same filesystem.
        */
       jcr->xattr_data->u.parse->nr_errors++;
-      return bxattr_exit_ok;
+      retval = bxattr_exit_ok;
+      goto bail_out;
    }
 
    /*
     * Issue a warning and discard the message. But pretend the restore was ok.
     */
    Jmsg2(jcr, M_WARNING, 0,
-      _("Can't restore Extended Attributes of %s - incompatible xattr stream encountered - %d\n"),
-      jcr->last_fname, stream);
-   return bxattr_exit_error;
+         _("Can't restore Extended Attributes of %s - incompatible xattr stream encountered - %d\n"),
+         jcr->last_fname, stream);
+
+bail_out:
+   return retval;
 }
 #endif
diff --git a/src/filed/xattr.h b/src/filed/xattr.h
index d54b912..b61ec11 100644
--- a/src/filed/xattr.h
+++ b/src/filed/xattr.h
@@ -33,6 +33,8 @@
 #define BXATTR_ENOTSUP EOPNOTSUPP
 #elif defined(HAVE_DARWIN_OS)
 #define BXATTR_ENOTSUP ENOTSUP
+#elif defined(HAVE_HURD_OS)
+#define BXATTR_ENOTSUP ENOTSUP
 #endif
 
 /*
@@ -57,7 +59,7 @@ struct xattr_t {
  */
 struct xattr_link_cache_entry_t {
    uint32_t inum;
-   char target[PATH_MAX];
+   char *target;
 };
 
 #define BXATTR_FLAG_SAVE_NATIVE    0x01
diff --git a/src/findlib/Makefile.in b/src/findlib/Makefile.in
index c50b8dd..7946ec6 100644
--- a/src/findlib/Makefile.in
+++ b/src/findlib/Makefile.in
@@ -76,6 +76,7 @@ uninstall-includes:
 
 libtool-install: all
 	$(MKDIR) $(DESTDIR)$(libdir)
+	$(RMF) $(DESTDIR)$(libdir)/libbacfind-*.so $(DESTDIR)$(libdir)/libbacfind.la
 	$(LIBTOOL_INSTALL_FINISH) $(INSTALL_LIB) libbacfind$(DEFAULT_ARCHIVE_TYPE) $(DESTDIR)$(libdir)
 
 libtool-uninstall:
diff --git a/src/findlib/bfile.c b/src/findlib/bfile.c
index 2c8884c..e315675 100644
--- a/src/findlib/bfile.c
+++ b/src/findlib/bfile.c
@@ -187,6 +187,12 @@ const char *stream_to_ascii(int stream)
       return _("AIX Specific NFSv4 ACL attribs");
    case STREAM_ACL_FREEBSD_NFS4_ACL:
       return _("FreeBSD Specific NFSv4/ZFS ACL attribs");
+   case STREAM_ACL_HURD_DEFAULT_ACL:
+      return _("GNU Hurd Specific Default ACL attribs");
+   case STREAM_ACL_HURD_ACCESS_ACL:
+      return _("GNU Hurd Specific Access ACL attribs");
+   case STREAM_XATTR_HURD:
+      return _("GNU Hurd Specific Extended attribs");
    case STREAM_XATTR_IRIX:
       return _("IRIX Specific Extended attribs");
    case STREAM_XATTR_TRU64:
@@ -953,9 +959,9 @@ bool is_restore_stream_supported(int stream)
 int bopen(BFILE *bfd, const char *fname, int flags, mode_t mode)
 {
    if (bfd->cmd_plugin && plugin_bopen) {
-      Dmsg1(50, "call plugin_bopen fname=%s\n", fname);
+      Dmsg1(400, "call plugin_bopen fname=%s\n", fname);
       bfd->fid = plugin_bopen(bfd, fname, flags, mode);
-      Dmsg1(50, "Plugin bopen stat=%d\n", bfd->fid);
+      Dmsg1(400, "Plugin bopen stat=%d\n", bfd->fid);
       return bfd->fid;
    }
 
diff --git a/src/findlib/find.c b/src/findlib/find.c
index df61548..dba28bf 100644
--- a/src/findlib/find.c
+++ b/src/findlib/find.c
@@ -50,7 +50,6 @@ int32_t path_max;              /* path name max length */
 #define bmalloc(x) sm_malloc(__FILE__, __LINE__, x)
 #endif
 static int our_callback(JCR *jcr, FF_PKT *ff, bool top_level);
-static bool accept_file(FF_PKT *ff);
 
 static const int fnmode = 0;
 
@@ -178,14 +177,22 @@ find_files(JCR *jcr, FF_PKT *ff, int file_save(JCR *jcr, FF_PKT *ff_pkt, bool to
    findFILESET *fileset = ff->fileset;
    if (fileset) {
       int i, j;
+      /* TODO: We probably need be move the initialization in the fileset loop,
+       * at this place flags options are "concatenated" accross Include {} blocks
+       * (not only Options{} blocks inside a Include{})
+       */
       ff->flags = 0;
-      ff->VerifyOpts[0] = 'V';
-      ff->VerifyOpts[1] = 0;
-      strcpy(ff->AccurateOpts, "Cmcs");  /* mtime+ctime+size by default */
-      strcpy(ff->BaseJobOpts, "Jspug5"); /* size+perm+user+group+chk  */
       for (i=0; i<fileset->include_list.size(); i++) {
          findINCEXE *incexe = (findINCEXE *)fileset->include_list.get(i);
          fileset->incexe = incexe;
+
+         /* Here, we reset some values between two different Include{} */
+         strcpy(ff->VerifyOpts, "V");
+         strcpy(ff->AccurateOpts, "Cmcs");  /* mtime+ctime+size by default */
+         strcpy(ff->BaseJobOpts, "Jspug5"); /* size+perm+user+group+chk  */
+         ff->plugin = NULL;
+         ff->opt_plugin = false;
+
          /*
           * By setting all options, we in effect OR the global options
           *   which is what we want.
@@ -198,9 +205,11 @@ find_files(JCR *jcr, FF_PKT *ff, int file_save(JCR *jcr, FF_PKT *ff_pkt, bool to
             ff->strip_path = fo->strip_path;
             ff->fstypes = fo->fstype;
             ff->drivetypes = fo->drivetype;
-            ff->plugin = fo->plugin; /* TODO: generate a plugin event ? */
-            ff->opt_plugin = (ff->plugin != NULL)? true : false;
-            bstrncat(ff->VerifyOpts, fo->VerifyOpts, sizeof(ff->VerifyOpts));
+            if (fo->plugin != NULL) {
+               ff->plugin = fo->plugin; /* TODO: generate a plugin event ? */
+               ff->opt_plugin = true;
+            }
+            bstrncat(ff->VerifyOpts, fo->VerifyOpts, sizeof(ff->VerifyOpts)); /* TODO: Concat or replace? */
             if (fo->AccurateOpts[0]) {
                bstrncpy(ff->AccurateOpts, fo->AccurateOpts, sizeof(ff->AccurateOpts));
             }
@@ -208,7 +217,8 @@ find_files(JCR *jcr, FF_PKT *ff, int file_save(JCR *jcr, FF_PKT *ff_pkt, bool to
                bstrncpy(ff->BaseJobOpts, fo->BaseJobOpts, sizeof(ff->BaseJobOpts));
             }
          }
-         Dmsg3(50, "Verify=<%s> Accurate=<%s> BaseJob=<%s>\n", ff->VerifyOpts, ff->AccurateOpts, ff->BaseJobOpts);
+         Dmsg4(50, "Verify=<%s> Accurate=<%s> BaseJob=<%s> flags=<%d>\n", 
+               ff->VerifyOpts, ff->AccurateOpts, ff->BaseJobOpts, ff->flags);
          dlistString *node;
          foreach_dlist(node, &incexe->name_list) {
             char *fname = node->c_str();
@@ -279,7 +289,7 @@ bool is_in_fileset(FF_PKT *ff)
 }
 
 
-static bool accept_file(FF_PKT *ff)
+bool accept_file(FF_PKT *ff)
 {
    int i, j, k;
    int fnm_flags;
@@ -495,6 +505,9 @@ term_find_files(FF_PKT *ff)
    if (ff->link_save) {
       free_pool_memory(ff->link_save);
    }
+   if (ff->ignoredir_fname) {
+      free_pool_memory(ff->ignoredir_fname);
+   }
    hard_links = term_find_one(ff);
    free(ff);
    return hard_links;
diff --git a/src/findlib/find.h b/src/findlib/find.h
index da504c2..8d6be39 100644
--- a/src/findlib/find.h
+++ b/src/findlib/find.h
@@ -169,6 +169,7 @@ struct FF_PKT {
    POOLMEM *sys_fname;                /* system filename */
    POOLMEM *fname_save;               /* save when stripping path */
    POOLMEM *link_save;                /* save when stripping path */
+   POOLMEM *ignoredir_fname;          /* used to ignore directories */
    char *digest;                      /* set to file digest when the file is a hardlink */
    struct stat statp;                 /* stat packet */
    uint32_t digest_len;               /* set to the digest len when the file is a hardlink*/
@@ -188,6 +189,7 @@ struct FF_PKT {
    bool dereference;                  /* follow links (not implemented) */
    bool null_output_device;           /* using null output device */
    bool incremental;                  /* incremental save */
+   bool no_read;                      /* Do not read this file when using Plugin */
    char VerifyOpts[20];
    char AccurateOpts[20];
    char BaseJobOpts[20];
diff --git a/src/findlib/find_one.c b/src/findlib/find_one.c
index b2d7f98..d854994 100644
--- a/src/findlib/find_one.c
+++ b/src/findlib/find_one.c
@@ -103,6 +103,7 @@ static FF_PKT *new_dir_ff_pkt(FF_PKT *ff_pkt)
    dir_ff_pkt->linkhash = NULL;
    dir_ff_pkt->fname_save = NULL;
    dir_ff_pkt->link_save = NULL;
+   dir_ff_pkt->ignoredir_fname = NULL;
    return dir_ff_pkt;
 }
 
@@ -120,6 +121,9 @@ static void free_dir_ff_pkt(FF_PKT *dir_ff_pkt)
    if (dir_ff_pkt->link_save) {
       free_pool_memory(dir_ff_pkt->link_save);
    }
+   if (dir_ff_pkt->ignoredir_fname) {
+      free_pool_memory(dir_ff_pkt->ignoredir_fname);
+   }
    free(dir_ff_pkt);
 }
 
@@ -246,27 +250,32 @@ bool has_file_changed(JCR *jcr, FF_PKT *ff_pkt)
    }
 
    if (statp.st_mtime != ff_pkt->statp.st_mtime) {
-      /* TODO: add time of changes */
       Jmsg(jcr, M_ERROR, 0, _("%s mtime changed during backup.\n"), ff_pkt->fname);
+      Dmsg3(50, "%s mtime (%lld) changed during backup (%lld).\n", ff_pkt->fname,
+            (int64_t)ff_pkt->statp.st_mtime, (int64_t)statp.st_mtime);
       return true;
    }
 
    if (statp.st_ctime != ff_pkt->statp.st_ctime) {
-      /* TODO: add time of changes */
       Jmsg(jcr, M_ERROR, 0, _("%s ctime changed during backup.\n"), ff_pkt->fname);
+      Dmsg3(50, "%s ctime (%lld) changed during backup (%lld).\n", ff_pkt->fname,
+            (int64_t)ff_pkt->statp.st_ctime, (int64_t)statp.st_ctime);
       return true;
    }
   
    if (statp.st_size != ff_pkt->statp.st_size) {
       /* TODO: add size change */
       Jmsg(jcr, M_ERROR, 0, _("%s size changed during backup.\n"),ff_pkt->fname);
+      Dmsg3(50, "%s size (%lld) changed during backup (%lld).\n", ff_pkt->fname,
+            (int64_t)ff_pkt->statp.st_size, (int64_t)statp.st_size);
       return true;
    }
 
    if ((statp.st_blksize != ff_pkt->statp.st_blksize) ||
        (statp.st_blocks  != ff_pkt->statp.st_blocks)) {
-      /* TODO: add size change */
       Jmsg(jcr, M_ERROR, 0, _("%s size changed during backup.\n"),ff_pkt->fname);
+      Dmsg3(50, "%s size (%lld) changed during backup (%lld).\n", ff_pkt->fname,
+            (int64_t)ff_pkt->statp.st_blocks, (int64_t)statp.st_blocks);
       return true;
    }
 
@@ -303,7 +312,6 @@ bool check_changes(JCR *jcr, FF_PKT *ff_pkt)
 static bool have_ignoredir(FF_PKT *ff_pkt)
 {
    struct stat sb;
-   char tmp_name[MAXPATHLEN];
    char *ignoredir;
 
    /* Ensure that pointers are defined */
@@ -313,14 +321,11 @@ static bool have_ignoredir(FF_PKT *ff_pkt)
    ignoredir = ff_pkt->fileset->incexe->ignoredir;
    
    if (ignoredir) {
-      if (strlen(ff_pkt->fname) + strlen(ignoredir) + 2 > MAXPATHLEN) {
-         return false;
+      if (!ff_pkt->ignoredir_fname) {
+         ff_pkt->ignoredir_fname = get_pool_memory(PM_FNAME);
       }
-
-      strcpy(tmp_name, ff_pkt->fname);
-      strcat(tmp_name, "/");
-      strcat(tmp_name, ignoredir);
-      if (stat(tmp_name, &sb) == 0) {
+      Mmsg(ff_pkt->ignoredir_fname, "%s/%s", ff_pkt->fname, ignoredir);
+      if (stat(ff_pkt->ignoredir_fname, &sb) == 0) {
          Dmsg2(100, "Directory '%s' ignored (found %s)\n",
                ff_pkt->fname, ignoredir);
          return true;      /* Just ignore this directory */
diff --git a/src/findlib/mkpath.c b/src/findlib/mkpath.c
index 884ba10..985fdd8 100644
--- a/src/findlib/mkpath.c
+++ b/src/findlib/mkpath.c
@@ -285,6 +285,10 @@ bool makepath(ATTR *attr, const char *apath, mode_t mode, mode_t parent_mode,
 
    /* Now set the proper owner and modes */
 #if defined(HAVE_WIN32)
+
+   /* Don't propagate the hidden attribute to parent directories */
+   parent_mode &= ~S_ISVTX;
+
    if (path[1] == ':') {
       p = &path[3];
    } else {
diff --git a/src/findlib/protos.h b/src/findlib/protos.h
index b39d25d..5b218b3 100644
--- a/src/findlib/protos.h
+++ b/src/findlib/protos.h
@@ -51,6 +51,7 @@ int   match_files(JCR *jcr, FF_PKT *ff, int sub(JCR *, FF_PKT *ff_pkt, bool));
 int   term_find_files(FF_PKT *ff);
 int   get_win32_driveletters(FF_PKT *ff, char* szDrives);
 bool  is_in_fileset(FF_PKT *ff);
+bool accept_file(FF_PKT *ff);
 
 /* From match.c */
 void  init_include_exclude_files(FF_PKT *ff);
diff --git a/src/jcr.h b/src/jcr.h
index 10a40c1..0ff93ab 100644
--- a/src/jcr.h
+++ b/src/jcr.h
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -118,6 +118,7 @@ enum {
   )
 
 #define job_waiting(jcr) \
+ (jcr->job_started &&    \
   (jcr->JobStatus == JS_WaitFD       || \
    jcr->JobStatus == JS_WaitSD       || \
    jcr->JobStatus == JS_WaitMedia    || \
@@ -130,7 +131,7 @@ enum {
    jcr->SDJobStatus == JS_WaitMedia  || \
    jcr->SDJobStatus == JS_WaitMount  || \
    jcr->SDJobStatus == JS_WaitDevice || \
-   jcr->SDJobStatus == JS_WaitMaxJobs)
+   jcr->SDJobStatus == JS_WaitMaxJobs))
 
 
 
@@ -199,6 +200,7 @@ public:
    void setJobLevel(int32_t JobLevel) { m_JobLevel = JobLevel; };
    void setJobType(int32_t JobType) { m_JobType = JobType; };
    void forceJobStatus(int32_t aJobStatus) { JobStatus = aJobStatus; };
+   void setJobStarted();
    int32_t getJobType() const { return m_JobType; };
    int32_t getJobLevel() const { return m_JobLevel; };
    int32_t getJobStatus() const { return JobStatus; };
@@ -239,7 +241,9 @@ public:
    uint32_t JobFiles;                 /* Number of files written, this job */
    uint32_t JobErrors;                /* Number of non-fatal errors this job */
    uint32_t JobWarnings;              /* Number of warning messages */
+   uint32_t LastRate;                 /* Last sample bytes/sec */
    uint64_t JobBytes;                 /* Number of bytes processed this job */
+   uint64_t LastJobBytes;             /* Last sample number bytes */
    uint64_t ReadBytes;                /* Bytes read -- before compression */
    FileId_t FileId;                   /* Last FileId used */
    volatile int32_t JobStatus;        /* ready, running, blocked, terminated */
@@ -247,9 +251,11 @@ public:
    time_t sched_time;                 /* job schedule time, i.e. when it should start */
    time_t start_time;                 /* when job actually started */
    time_t run_time;                   /* used for computing speed */
+   time_t last_time;                  /* Last sample time */
    time_t end_time;                   /* job end time */
    time_t wait_time_sum;              /* cumulative wait time since job start */
    time_t wait_time;                  /* timestamp when job have started to wait */
+   time_t job_started_time;           /* Time when the MaxRunTime start to count */
    POOLMEM *client_name;              /* client name */
    POOLMEM *JobIds;                   /* User entered string of JobIds */
    POOLMEM *RestoreBootstrap;         /* Bootstrap file to restore */
@@ -273,6 +279,7 @@ public:
    bool accurate;                     /* true if job is accurate */
    bool HasBase;                      /* True if job use base jobs */
    bool rerunning;                    /* rerunning an incomplete job */
+   bool job_started;                  /* Set when the job is actually started */
 
    void *Python_job;                  /* Python Job Object */
    void *Python_events;               /* Python Events Object */
@@ -328,6 +335,8 @@ public:
    uint32_t FileIndex;                /* Last FileIndex processed */
    utime_t MaxRunSchedTime;           /* max run time in seconds from Scheduled time*/
    POOLMEM *fname;                    /* name to put into catalog */
+   POOLMEM *component_fname;          /* Component info file name */
+   FILE *component_fd;                /* Component info file desc */
    JOB_DBR jr;                        /* Job DB record for current job */
    JOB_DBR previous_jr;               /* previous job database record */
    JOB *previous_job;                 /* Job resource of migration previous job */
@@ -398,6 +407,7 @@ public:
    FF_PKT *ff;                        /* Find Files packet */
    char stored_addr[MAX_NAME_LENGTH]; /* storage daemon address */
    char PrevJob[MAX_NAME_LENGTH];     /* Previous job name assiciated with since time */
+   uint32_t ExpectedFiles;            /* Expected restore files */
    uint32_t StartFile;
    uint32_t EndFile;
    uint32_t StartBlock;
@@ -410,6 +420,7 @@ public:
    CRYPTO_CTX crypto;                 /* Crypto ctx */
    DIRRES* director;                  /* Director resource */
    bool VSS;                          /* VSS used by FD */
+   bool got_metadata;                 /* set when found job_metatdata */
    bool multi_restore;                /* Dir can do multiple storage restore */
    htable *file_list;                 /* Previous file list (accurate mode) */
    uint64_t base_size;                /* compute space saved with base job */
diff --git a/src/lib/Makefile.in b/src/lib/Makefile.in
index 5e0a0f1..009f157 100644
--- a/src/lib/Makefile.in
+++ b/src/lib/Makefile.in
@@ -120,7 +120,7 @@ libbac.a: $(LIBBAC_OBJS)
 
 libbac.la: Makefile $(LIBBAC_LOBJS)
 	@echo "Making $@ ..."
-	$(LIBTOOL_LINK) $(CXX) $(DEFS) $(DEBUG) $(LDFLAGS) -o $@ $(LIBBAC_LOBJS) -export-dynamic -rpath $(libdir) -release $(LIBBAC_LT_RELEASE) $(WRAPLIBS) $(CAP_LIBS) $(ZLIBS) $(OPENSSL_LIBS) $(LIBS)
+	$(LIBTOOL_LINK) $(CXX) $(DEFS) $(DEBUG) $(LDFLAGS) -o $@ $(LIBBAC_LOBJS) -export-dynamic -rpath $(libdir) -release $(LIBBAC_LT_RELEASE) $(WRAPLIBS) $(CAP_LIBS) $(ZLIBS) $(OPENSSL_LIBS) $(LIBS) $(DLLIBS)
 
 libbaccfg.a: $(LIBBACCFG_OBJS) 
 	@echo "Making $@ ..."
@@ -145,73 +145,73 @@ Makefile: $(srcdir)/Makefile.in $(topdir)/config.status
 	  && CONFIG_FILES=$(thisdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
 
 lockmgr_test: Makefile
-	rm -f lockmgr.o
+	$(RMF) lockmgr.o
 	$(CXX) -D _TEST_IT $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE)  $(CFLAGS) lockmgr.c
 	$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ lockmgr.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
 	rm -f lockmgr.o
 	$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) lockmgr.c
 
 base64_test: Makefile 
-	rm -f base64.o
-	$(CXX) -DBIN_TEST $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE)  $(CFLAGS) base64.c
+	$(RMF) base64.o
+	$(CXX) -DBIN_TEST $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE)	$(CFLAGS) base64.c
 	$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ base64.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
 	rm -f base64.o
 	$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) base64.c
 
 rwlock_test: Makefile
-	rm -f rwlock.o
+	$(RMF) rwlock.o
 	$(CXX) -DTEST_RWLOCK $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE)  $(CFLAGS) rwlock.c
 	$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ rwlock.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
 	rm -f rwlock.o
 	$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) rwlock.c
 
 devlock_test: Makefile
-	rm -f devlock.o
+	$(RMF) devlock.o
 	$(CXX) -DTEST_devlock $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE)  $(CFLAGS) devlock.c
 	$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ devlock.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
-	rm -f devlock.o
+	$(RMF) devlock.o
 	$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) devlock.c
 
 htable_test: Makefile
-	rm -f htable.o
+	$(RMF) htable.o
 	$(CXX) -DTEST_SMALL_HTABLE -DTEST_NON_CHAR -DTEST_PROGRAM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE)	$(CFLAGS) htable.c
 	$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ htable.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
-	rm -f htable.o
+	$(RMF) htable.o
 	$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) htable.c
 
 crc32sum: Makefile crc32.o	 
-	rm -f crc32.o
+	$(RMF) crc32.o
 	$(CXX) -DCRC32_SUM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE)  $(CFLAGS) crc32.c
 	$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ crc32.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
-	rm -f crc32.o
+	$(RMF) crc32.o
 	$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) crc32.c
 
 md5sum: Makefile md5.o	 
-	rm -f md5.o
+	$(RMF) md5.o
 	$(CXX) -DMD5_SUM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE)  $(CFLAGS) md5.c
 	$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ md5.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
-	rm -f md5.o
+	$(RMF) md5.o
 	$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) md5.c
 
 sha1sum: Makefile sha1.o
-	rm -f sha1.o
+	$(RMF) sha1.o
 	$(CXX) -DSHA1_SUM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE)	$(CFLAGS) sha1.c
 	$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ sha1.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
-	rm -f sha1.o
+	$(RMF) sha1.o
 	$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) sha1.c
 
 bsnprintf: Makefile bsnprintf.o
-	rm -f bsnprintf.o
+	$(RMF) bsnprintf.o
 	$(CXX) -DTEST_PROGRAM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE)  $(CFLAGS) bsnprintf.c
 	$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ bsnprintf.o $(DLIB) -lbac -lm $(LIBS) $(OPENSSL_LIBS)
-	rm -f bsnprintf.o
+	$(RMF) bsnprintf.o
 	$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) bsnprintf.c
 
 ini: Makefile ini.o
-	rm -f ini.o
+	$(RMF) ini.o
 	$(CXX) -DTEST_PROGRAM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE)  $(CFLAGS) ini.c
 	$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L. -o $@ ini.o -lbaccfg -lbac $(DLIB) -lm $(LIBS) $(OPENSSL_LIBS)
-	rm -f ini.o
+	$(RMF) ini.o
 	$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) ini.c
 
 install-includes:
@@ -227,6 +227,9 @@ uninstall-includes:
 
 libtool-install: all
 	$(MKDIR) $(DESTDIR)$(libdir)
+	$(RMF) $(DESTDIR)$(libdir)/libbac-*.so $(DESTDIR)$(libdir)/libbac.la
+	$(RMF) $(DESTDIR)$(libdir)/libbaccfg-*.so $(DESTDIR)$(libdir)/libbaccfg.la
+	$(RMF) $(DESTDIR)$(libdir)/libbacpy-*.so $(DESTDIR)$(libdir)/libbacpy.la
 	$(LIBTOOL_INSTALL_FINISH) $(INSTALL_LIB) libbac.la $(DESTDIR)$(libdir)
 	$(LIBTOOL_INSTALL_FINISH) $(INSTALL_LIB) libbaccfg.la $(DESTDIR)$(libdir)
 	$(LIBTOOL_INSTALL_FINISH) $(INSTALL_LIB) libbacpy.la $(DESTDIR)$(libdir)
diff --git a/src/lib/bnet.c b/src/lib/bnet.c
index b2a63b9..b677523 100644
--- a/src/lib/bnet.c
+++ b/src/lib/bnet.c
@@ -35,7 +35,6 @@
  *
  */
 
-
 #include "bacula.h"
 #include "jcr.h"
 #include <netdb.h>
@@ -54,14 +53,15 @@
 #define socketClose(fd)           close(fd)
 #endif
 
+#ifndef HAVE_GETADDRINFO
 static pthread_mutex_t ip_mutex = PTHREAD_MUTEX_INITIALIZER;
+#endif
 
 /*
  * Read a nbytes from the network.
  * It is possible that the total bytes require in several
  * read requests
  */
-
 int32_t read_nbytes(BSOCK * bsock, char *ptr, int32_t nbytes)
 {
    int32_t nleft, nread;
@@ -408,6 +408,64 @@ int bnet_wait_data_intr(BSOCK * bsock, int sec)
 #define NO_DATA         4          /* Valid name, no data record of requested type. */
 #endif
 
+#if HAVE_GETADDRINFO
+const char *resolv_host(int family, const char *host, dlist *addr_list)
+{
+   int res;
+   struct addrinfo hints;
+   struct addrinfo *ai, *rp;
+   IPADDR *addr;
+
+   memset(&hints, 0, sizeof(struct addrinfo));
+   hints.ai_family = family;
+   hints.ai_socktype = SOCK_STREAM;
+   hints.ai_protocol = IPPROTO_TCP;
+   hints.ai_flags = 0;
+
+   res = getaddrinfo(host, NULL, &hints, &ai);
+   if (res != 0) {
+      return gai_strerror(res);
+   }
+
+   for (rp = ai; rp != NULL; rp = rp->ai_next) {
+      switch (rp->ai_addr->sa_family) {
+      case AF_INET:
+         addr = New(IPADDR(rp->ai_addr->sa_family));
+         addr->set_type(IPADDR::R_MULTIPLE);
+         /*
+          * Some serious casting to get the struct in_addr *
+          * rp->ai_addr == struct sockaddr
+          * as this is AF_INET family we can cast that
+          * to struct_sockaddr_in. Of that we need the
+          * address of the sin_addr member which contains a
+          * struct in_addr
+          */
+         addr->set_addr4(&(((struct sockaddr_in *)rp->ai_addr)->sin_addr));
+         break;
+#ifdef HAVE_IPV6
+      case AF_INET6:
+         addr = New(IPADDR(rp->ai_addr->sa_family));
+         addr->set_type(IPADDR::R_MULTIPLE);
+         /*
+          * Some serious casting to get the struct in6_addr *
+          * rp->ai_addr == struct sockaddr
+          * as this is AF_INET6 family we can cast that
+          * to struct_sockaddr_in6. Of that we need the
+          * address of the sin6_addr member which contains a
+          * struct in6_addr
+          */
+         addr->set_addr6(&(((struct sockaddr_in6 *)rp->ai_addr)->sin6_addr));
+         break;
+#endif
+      default:
+         continue;
+      }
+      addr_list->append(addr);
+   }
+   freeaddrinfo(ai);
+   return NULL;
+}
+#else
 /*
  * Get human readable error for gethostbyname()
  */
@@ -440,21 +498,12 @@ static const char *gethost_strerror()
    return msg;
 }
 
-
-
-
-static IPADDR *add_any(int family)
-{
-   IPADDR *addr = New(IPADDR(family));
-   addr->set_type(IPADDR::R_MULTIPLE);
-   addr->set_addr_any();
-   return addr;
-}
-
-static const char *resolv_host(int family, const char *host, dlist * addr_list)
+static const char *resolv_host(int family, const char *host, dlist *addr_list)
 {
    struct hostent *hp;
    const char *errmsg;
+   char **p;
+   IPADDR *addr;
 
    P(ip_mutex);                       /* gethostbyname() is not thread safe */
 #ifdef HAVE_GETHOSTBYNAME2
@@ -467,24 +516,38 @@ static const char *resolv_host(int family, const char *host, dlist * addr_list)
       V(ip_mutex);
       return errmsg;
    } else {
-      char **p;
       for (p = hp->h_addr_list; *p != 0; p++) {
-         IPADDR *addr =  New(IPADDR(hp->h_addrtype));
-         addr->set_type(IPADDR::R_MULTIPLE);
-         if (addr->get_family() == AF_INET) {
-             addr->set_addr4((struct in_addr*)*p);
-         }
+         switch (hp->h_addrtype) {
+         case AF_INET:
+            addr = New(IPADDR(hp->h_addrtype));
+            addr->set_type(IPADDR::R_MULTIPLE);
+            addr->set_addr4((struct in_addr *)*p);
+            break;
 #ifdef HAVE_IPV6
-         else {
-             addr->set_addr6((struct in6_addr*)*p);
-         }
+          case AF_INET6:
+            addr = New(IPADDR(hp->h_addrtype));
+            addr->set_type(IPADDR::R_MULTIPLE);
+            addr->set_addr6((struct in6_addr *)*p);
+            break;
 #endif
+         default:
+            continue;
+         }
          addr_list->append(addr);
       }
       V(ip_mutex);
    }
    return NULL;
 }
+#endif
+
+static IPADDR *add_any(int family)
+{
+   IPADDR *addr = New(IPADDR(family));
+   addr->set_type(IPADDR::R_MULTIPLE);
+   addr->set_addr_any();
+   return addr;
+}
 
 /*
  * i host = 0 mean INADDR_ANY only ipv4
@@ -513,16 +576,14 @@ dlist *bnet_host2ipaddrs(const char *host, int family, const char **errstr)
       addr->set_type(IPADDR::R_MULTIPLE);
       addr->set_addr4(&inaddr);
       addr_list->append(addr);
-   } else
 #ifdef HAVE_IPV6
-   if (inet_pton(AF_INET6, host, &inaddr6) > 1) {
+   } else if (inet_pton(AF_INET6, host, &inaddr6) == 1) {
       addr = New(IPADDR(AF_INET6));
       addr->set_type(IPADDR::R_MULTIPLE);
       addr->set_addr6(&inaddr6);
       addr_list->append(addr);
-   } else
 #endif
-   {
+   } else {
       if (family != 0) {
          errmsg = resolv_host(family, host, addr_list);
          if (errmsg) {
@@ -569,8 +630,6 @@ BSOCK *bnet_connect(JCR * jcr, int retry_interval, utime_t max_retry_time,
    return bsock;
 }
 
-
-
 /*
  * Return the string for the error that occurred
  * on the socket. Only the first error is retained.
@@ -654,7 +713,6 @@ void bnet_restore_blocking (BSOCK *bsock, int flags)
    bsock->restore_blocking(flags);
 }
 
-
 /*
  * Send a network "signal" to the other end
  *  This consists of sending a negative packet length
diff --git a/src/lib/bnet_server.c b/src/lib/bnet_server.c
index 598d003..853c1c7 100644
--- a/src/lib/bnet_server.c
+++ b/src/lib/bnet_server.c
@@ -64,15 +64,16 @@ void bnet_stop_thread_server(pthread_t tid)
 }
 
 /*
-        Become Threaded Network Server
-    This function is able to handle multiple server ips in
-    ipv4 and ipv6 style. The Addresse are give in a comma
-    seperated string in bind_addr
-    In the moment it is inpossible to bind different ports.
-*/
-void
-bnet_thread_server(dlist *addrs, int max_clients, workq_t *client_wq,
-                   void *handle_client_request(void *bsock))
+ * Become Threaded Network Server
+ *
+ * This function is able to handle multiple server ips in
+ * ipv4 and ipv6 style. The Addresse are give in a comma
+ * seperated string in bind_addr
+ *
+ * At the moment it is inpossible to bind different ports.
+ */
+void bnet_thread_server(dlist *addr_list, int max_clients, workq_t *client_wq,
+                        void *handle_client_request(void *bsock))
 {
    int newsockfd, stat;
    socklen_t clilen;
@@ -82,7 +83,7 @@ bnet_thread_server(dlist *addrs, int max_clients, workq_t *client_wq,
 #ifdef HAVE_LIBWRAP
    struct request_info request;
 #endif
-   IPADDR *p;
+   IPADDR *ipaddr, *next;
    struct s_sockfd {
       dlink link;                     /* this MUST be the first item */
       int fd;
@@ -92,23 +93,39 @@ bnet_thread_server(dlist *addrs, int max_clients, workq_t *client_wq,
    dlist sockfds;
 
    char allbuf[256 * 10];
-   Dmsg1(100, "Addresses %s\n", build_addresses_str(addrs, allbuf, sizeof(allbuf)));
 
-   foreach_dlist(p, addrs) {
+   /*
+    * Remove any duplicate addresses.
+    */
+   for (ipaddr = (IPADDR *)addr_list->first(); ipaddr;
+        ipaddr = (IPADDR *)addr_list->next(ipaddr)) {
+      for (next = (IPADDR *)addr_list->next(ipaddr); next;
+           next = (IPADDR *)addr_list->next(next)) {
+         if (ipaddr->get_sockaddr_len() == next->get_sockaddr_len() &&
+             memcmp(ipaddr->get_sockaddr(), next->get_sockaddr(),
+                    ipaddr->get_sockaddr_len()) == 0) {
+            addr_list->remove(next);
+         }
+      }
+   }
+
+   Dmsg1(100, "Addresses %s\n", build_addresses_str(addr_list, allbuf, sizeof(allbuf)));
+
+   foreach_dlist(ipaddr, addr_list) {
       /* Allocate on stack from -- no need to free */
       fd_ptr = (s_sockfd *)alloca(sizeof(s_sockfd));
-      fd_ptr->port = p->get_port_net_order();
+      fd_ptr->port = ipaddr->get_port_net_order();
       /*
        * Open a TCP socket
        */
-      for (tlog= 60; (fd_ptr->fd=socket(p->get_family(), SOCK_STREAM, 0)) < 0; tlog -= 10) {
+      for (tlog= 60; (fd_ptr->fd=socket(ipaddr->get_family(), SOCK_STREAM, 0)) < 0; tlog -= 10) {
          if (tlog <= 0) {
             berrno be;
             char curbuf[256];
             Emsg3(M_ABORT, 0, _("Cannot open stream socket. ERR=%s. Current %s All %s\n"),
                        be.bstrerror(),
-                       p->build_address_str(curbuf, sizeof(curbuf)),
-                       build_addresses_str(addrs, allbuf, sizeof(allbuf)));
+                       ipaddr->build_address_str(curbuf, sizeof(curbuf)),
+                       build_addresses_str(addr_list, allbuf, sizeof(allbuf)));
          }
          bmicrosleep(10, 0);
       }
@@ -123,7 +140,7 @@ bnet_thread_server(dlist *addrs, int max_clients, workq_t *client_wq,
       }
 
       int tmax = 30 * (60 / 5);    /* wait 30 minutes max */
-      for (tlog = 0; bind(fd_ptr->fd, p->get_sockaddr(), p->get_sockaddr_len()) < 0; tlog -= 5) {
+      for (tlog = 0; bind(fd_ptr->fd, ipaddr->get_sockaddr(), ipaddr->get_sockaddr_len()) < 0; tlog -= 5) {
          berrno be;
          if (tlog <= 0) {
             tlog = 2 * 60;         /* Complain every 2 minutes */
@@ -207,7 +224,7 @@ bnet_thread_server(dlist *addrs, int max_clients, workq_t *client_wq,
             sockaddr_to_ascii(&cli_addr, buf, sizeof(buf));
             V(mutex);
             BSOCK *bs;
-            bs = init_bsock(NULL, newsockfd, "client", buf, fd_ptr->port, &cli_addr);
+            bs = init_bsock(NULL, newsockfd, "client", buf, ntohs(fd_ptr->port), &cli_addr);
             if (bs == NULL) {
                Jmsg0(NULL, M_ABORT, 0, _("Could not create client BSOCK.\n"));
             }
diff --git a/src/lib/bsock.c b/src/lib/bsock.c
index 2fee523..4df45e5 100644
--- a/src/lib/bsock.c
+++ b/src/lib/bsock.c
@@ -35,11 +35,16 @@
 #include "bacula.h"
 #include "jcr.h"
 #include <netdb.h>
+#include <netinet/tcp.h>
 
 #ifndef ENODATA                    /* not defined on BSD systems */
 #define ENODATA EPIPE
 #endif
 
+#ifndef SOL_TCP
+#define SOL_TCP IPPROTO_TCP
+#endif
+
 #ifdef HAVE_WIN32
 #define socketRead(fd, buf, len)  ::recv(fd, buf, len, 0)
 #define socketWrite(fd, buf, len) ::send(fd, buf, len, 0)
@@ -187,7 +192,7 @@ bool BSOCK::open(JCR *jcr, const char *name, char *host, char *service,
 {
    int sockfd = -1;
    dlist *addr_list;
-   IPADDR *ipaddr;
+   IPADDR *ipaddr, *next;
    bool connected = false;
    int turnon = 1;
    const char *errstr;
@@ -199,7 +204,7 @@ bool BSOCK::open(JCR *jcr, const char *name, char *host, char *service,
     */
    if ((addr_list = bnet_host2ipaddrs(host, 0, &errstr)) == NULL) {
       /* Note errstr is not malloc'ed */
-      Qmsg2(jcr, M_ERROR, 0, _("gethostbyname() for host \"%s\" failed: ERR=%s\n"),
+      Qmsg2(jcr, M_ERROR, 0, _("bnet_host2ipaddrs() for host \"%s\" failed: ERR=%s\n"),
             host, errstr);
       Dmsg2(100, "bnet_host2ipaddrs() for host %s failed: ERR=%s\n",
             host, errstr);
@@ -207,6 +212,21 @@ bool BSOCK::open(JCR *jcr, const char *name, char *host, char *service,
       return false;
    }
 
+   /*
+    * Remove any duplicate addresses.
+    */
+   for (ipaddr = (IPADDR *)addr_list->first();
+        ipaddr; ipaddr = (IPADDR *)addr_list->next(ipaddr)) {
+      for (next = (IPADDR *)addr_list->next(ipaddr); next;
+           next = (IPADDR *)addr_list->next(next)) {
+         if (ipaddr->get_sockaddr_len() == next->get_sockaddr_len() &&
+             memcmp(ipaddr->get_sockaddr(), next->get_sockaddr(),
+                    ipaddr->get_sockaddr_len()) == 0) {
+            addr_list->remove(next);
+         }
+      }
+   }
+
    foreach_dlist(ipaddr, addr_list) {
       ipaddr->set_port_net(htons(port));
       char allbuf[256 * 10];
@@ -218,9 +238,29 @@ bool BSOCK::open(JCR *jcr, const char *name, char *host, char *service,
       if ((sockfd = socket(ipaddr->get_family(), SOCK_STREAM, 0)) < 0) {
          berrno be;
          save_errno = errno;
-         *fatal = 1;
-         Pmsg3(000, _("Socket open error. proto=%d port=%d. ERR=%s\n"),
-            ipaddr->get_family(), ipaddr->get_port_host_order(), be.bstrerror());
+         switch (errno) {
+#ifdef EPFNOSUPPORT
+         case EPFNOSUPPORT:
+            /*
+             * The name lookup of the host returned an address in a protocol family
+             * we don't support. Suppress the error and try the next address.
+             */
+            break;
+#endif
+#ifdef EAFNOSUPPORT
+         case EAFNOSUPPORT:
+            /*
+             * The name lookup of the host returned an address in a address family
+             * we don't support. Suppress the error and try the next address.
+             */
+            break;
+#endif
+         default:
+            *fatal = 1;
+            Pmsg3(000, _("Socket open error. proto=%d port=%d. ERR=%s\n"),
+               ipaddr->get_family(), ipaddr->get_port_host_order(), be.bstrerror());
+            break;
+         }
          continue;
       }
 
@@ -246,10 +286,10 @@ bool BSOCK::open(JCR *jcr, const char *name, char *host, char *service,
       }
 #if defined(TCP_KEEPIDLE)
       if (heart_beat) {
-         int opt = heart_beat
-         if (setsockopt(sockfd, IPPROTO_IP, TCP_KEEPIDLE, (sockopt_val_t)&opt, sizeof(opt)) < 0) {
+         int opt = heart_beat;
+         if (setsockopt(sockfd, SOL_TCP, TCP_KEEPIDLE, (sockopt_val_t)&opt, sizeof(opt)) < 0) {
             berrno be;
-            Qmsg1(jcr, M_WARNING, 0, _("Cannot set SO_KEEPIDLE on socket: %s\n"),
+            Qmsg1(jcr, M_WARNING, 0, _("Cannot set TCP_KEEPIDLE on socket: %s\n"),
                   be.bstrerror());
          }
       }
@@ -707,11 +747,6 @@ bool BSOCK::set_buffer_size(uint32_t size, int rw)
          Qmsg1(get_jcr(), M_WARNING, 0,
                _("Warning network buffer = %d bytes not max size.\n"), dbuf_size);
       }
-      if (dbuf_size % TAPE_BSIZE != 0) {
-         Qmsg1(get_jcr(), M_ABORT, 0,
-               _("Network buffer size %d not multiple of tape block size.\n"),
-               dbuf_size);
-      }
    }
    if (size != 0) {
       dbuf_size = size;
@@ -731,11 +766,6 @@ bool BSOCK::set_buffer_size(uint32_t size, int rw)
          Qmsg1(get_jcr(), M_WARNING, 0,
                _("Warning network buffer = %d bytes not max size.\n"), dbuf_size);
       }
-      if (dbuf_size % TAPE_BSIZE != 0) {
-         Qmsg1(get_jcr(), M_ABORT, 0,
-               _("Network buffer size %d not multiple of tape block size.\n"),
-               dbuf_size);
-      }
    }
 
    msglen = dbuf_size;
diff --git a/src/lib/bsys.c b/src/lib/bsys.c
index 7713736..7900e3c 100644
--- a/src/lib/bsys.c
+++ b/src/lib/bsys.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -35,12 +35,58 @@
  */
 
 #include "bacula.h"
-
+#ifndef HAVE_REGEX_H
+#include "lib/bregex.h"
+#else
+#include <regex.h>
+#endif
 
 static pthread_mutex_t timer_mutex = PTHREAD_MUTEX_INITIALIZER;
 static pthread_cond_t timer = PTHREAD_COND_INITIALIZER;
 
 /*
+ * This routine is a somewhat safer unlink in that it
+ *   allows you to run a regex on the filename before 
+ *   excepting it. It also requires the file to be in 
+ *   the working directory.
+ */
+int safer_unlink(const char *pathname, const char *regx)
+{
+   int rc;
+   regex_t preg1;
+   char prbuf[500];
+   const int nmatch = 30;
+   regmatch_t pmatch[nmatch];
+   int rtn;
+
+   /* Name must start with working directory */
+   if (strncmp(pathname, working_directory, strlen(working_directory)) != 0) {
+      Pmsg1(000, "Safe_unlink excluded: %s\n", pathname);
+      return EROFS;
+   }
+
+   /* Compile regex expression */
+   rc = regcomp(&preg1, regx, REG_EXTENDED);
+   if (rc != 0) {
+      regerror(rc, &preg1, prbuf, sizeof(prbuf));
+      Pmsg2(000,  _("safe_unlink could not compile regex pattern \"%s\" ERR=%s\n"),
+           regx, prbuf);
+      return ENOENT;
+   }
+
+   /* Unlink files that match regexes */
+   if (regexec(&preg1, pathname, nmatch, pmatch,  0) == 0) {
+      Dmsg1(100, "safe_unlink unlinking: %s\n", pathname);
+      rtn = unlink(pathname);
+   } else {
+      Pmsg2(000, "safe_unlink regex failed: regex=%s file=%s\n", regx, pathname);
+      rtn = EROFS;
+   }
+   regfree(&preg1);
+   return rtn;
+}
+
+/*
  * This routine will sleep (sec, microsec).  Note, however, that if a
  *   signal occurs, it will return early.  It is up to the caller
  *   to recall this routine if he/she REALLY wants to sleep the
@@ -644,6 +690,57 @@ char *bfgets(char *s, int size, FILE *fd)
 }
 
 /*
+ * Bacula's implementation of fgets(). The difference is that it handles
+ *   being interrupted by a signal (e.g. a SIGCHLD) and it has a
+ *   different calling sequence which implements input lines of
+ *   up to a million characters.
+ */
+char *bfgets(POOLMEM *&s, FILE *fd)
+{
+   int ch;
+   int soft_max;
+   int i = 0;
+
+   s[0] = 0;
+   soft_max = sizeof_pool_memory(s) - 10;
+   for ( ;; ) {
+      do {
+         errno = 0;
+         ch = fgetc(fd);
+      } while (ch == EOF && ferror(fd) && (errno == EINTR || errno == EAGAIN));
+      if (ch == EOF) {
+         if (i == 0) {
+            return NULL;
+         } else {
+            return s;
+         }
+      }
+      if (i > soft_max) {
+         /* Insanity check */
+         if (soft_max > 1000000) {
+            return s;
+         }
+         s = check_pool_memory_size(s, soft_max+10000);
+         soft_max = sizeof_pool_memory(s) - 10;
+      }
+      s[i++] = ch;
+      s[i] = 0;
+      if (ch == '\r') { /* Support for Mac/Windows file format */
+         ch = fgetc(fd);
+         if (ch != '\n') { /* Mac (\r only) */
+            (void)ungetc(ch, fd); /* Push next character back to fd */
+         }
+         s[i-1] = '\n';
+         break;
+      }
+      if (ch == '\n') {
+         break;
+      }
+   }
+   return s;
+}
+
+/*
  * Make a "unique" filename.  It is important that if
  *   called again with the same "what" that the result
  *   will be identical. This allows us to use the file
diff --git a/src/lib/crc32.c b/src/lib/crc32.c
index 847b140..ac2ff94 100644
--- a/src/lib/crc32.c
+++ b/src/lib/crc32.c
@@ -70,6 +70,12 @@ main()
 
 #include "bacula.h"
 
+#ifdef HAVE_DARWIN_OS
+#if !defined(HAVE_LITTLE_ENDIAN) && !defined(HAVE_BIG_ENDIAN)
+#define HAVE_LITTLE_ENDIAN
+#endif
+#endif
+
 #if !defined(HAVE_LITTLE_ENDIAN) && !defined(HAVE_BIG_ENDIAN)
 #error Either HAVE_LITTLE_ENDIAN or HAVE_BIG_ENDIAN must be defined!
 #endif
diff --git a/src/lib/daemon.c b/src/lib/daemon.c
index 3a25812..72b3365 100644
--- a/src/lib/daemon.c
+++ b/src/lib/daemon.c
@@ -47,6 +47,7 @@ daemon_start()
 {
 #if !defined(HAVE_WIN32)
    int i;
+   int fd;
    pid_t cpid;
    mode_t oldmask;
 #ifdef DEVELOPER
@@ -75,9 +76,28 @@ daemon_start()
    if (debug_level > 0) {
       low_fd = 2;                     /* don't close debug output */
    }
+
+#if defined(HAVE_FCNTL_F_CLOSEM)
+   /*
+    * fcntl(fd, F_CLOSEM) needs the minimum filedescriptor
+    * to close. the current code sets the last one to keep
+    * open. So increment it with 1 and use that as argument.
+    */
+   low_fd++;
+   fcntl(low_fd, F_CLOSEM);
+#elif defined(HAVE_CLOSEFROM)
+   /*
+    * closefrom needs the minimum filedescriptor to close.
+    * the current code sets the last one to keep open.
+    * So increment it with 1 and use that as argument.
+    */
+   low_fd++;
+   closefrom(low_fd);
+#else
    for (i=sysconf(_SC_OPEN_MAX)-1; i > low_fd; i--) {
       close(i);
    }
+#endif
 
    /* Move to root directory. For debug we stay
     * in current directory so dumps go there.
@@ -102,7 +122,6 @@ daemon_start()
     *  send total garbage to our socket.
     *
     */
-   int fd;
    fd = open("/dev/null", O_RDONLY, 0644);
    if (fd > 2) {
       close(fd);
diff --git a/src/lib/devlock.h b/src/lib/devlock.h
index 263c870..779e53c 100644
--- a/src/lib/devlock.h
+++ b/src/lib/devlock.h
@@ -66,7 +66,7 @@ private:
 public:
    devlock(int reason, bool can_take=false);
    ~devlock();
-   int init(int priority);
+   int init(int initial_priority);
    int destroy();
    int take_lock(take_lock_t *hold, int reason);
    int return_lock(take_lock_t *hold);
diff --git a/src/lib/jcr.c b/src/lib/jcr.c
index d895ba1..53679c4 100644
--- a/src/lib/jcr.c
+++ b/src/lib/jcr.c
@@ -892,6 +892,12 @@ bool JCR::sendJobStatus(int newJobStatus)
    return true; 
 }
 
+void JCR::setJobStarted()
+{
+   JCR *jcr = this;
+   jcr->job_started = true;
+   jcr->job_started_time = time(NULL);
+}
 
 void JCR::setJobStatus(int newJobStatus)
 {
diff --git a/src/lib/lex.c b/src/lib/lex.c
index 4e2558a..c4c78d6 100644
--- a/src/lib/lex.c
+++ b/src/lib/lex.c
@@ -139,6 +139,8 @@ LEX *lex_close_file(LEX *lf)
    }
    Dmsg1(dbglvl, "Close cfg file %s\n", lf->fname);
    free(lf->fname);
+   free_memory(lf->line);
+   lf->line = NULL;
    if (of) {
       of->options = lf->options;      /* preserve options */
       memcpy(lf, of, sizeof(LEX));
@@ -170,7 +172,6 @@ LEX *lex_open_file(LEX *lf, const char *filename, LEX_ERROR_HANDLER *scan_error)
    BPIPE *bpipe = NULL;
    char *fname = bstrdup(filename);
 
-
    if (fname[0] == '|') {
       if ((bpipe = open_bpipe(fname+1, 0, "rb")) == NULL) {
          free(fname);
@@ -206,6 +207,7 @@ LEX *lex_open_file(LEX *lf, const char *filename, LEX_ERROR_HANDLER *scan_error)
    lf->fd = fd;
    lf->bpipe = bpipe;
    lf->fname = fname;
+   lf->line = get_memory(5000);
    lf->state = lex_none;
    lf->ch = L_EOL;
    Dmsg1(dbglvl, "Return lex=%x\n", lf);
@@ -225,7 +227,7 @@ int lex_get_char(LEX *lf)
          " You may have a open double quote without the closing double quote.\n"));
    }
    if (lf->ch == L_EOL) {
-      if (bfgets(lf->line, MAXSTRING, lf->fd) == NULL) {
+      if (bfgets(lf->line, lf->fd) == NULL) {
          lf->ch = L_EOF;
          if (lf->next) {
             lex_close_file(lf);
@@ -253,7 +255,6 @@ void lex_unget_char(LEX *lf)
    } else {
       lf->col_no--;                   /* Backup to re-read char */
    }
-
 }
 
 
@@ -585,6 +586,13 @@ lex_get_token(LEX *lf, int expect)
          }
          if (ch == '"') {
             token = T_QUOTED_STRING;
+            /*
+             * Since we may be scanning a quoted list of names,
+             *  we get the next character (a comma indicates another
+             *  one), then we put it back for rescanning.
+             */
+            lex_get_char(lf);
+            lex_unget_char(lf);
             lf->state = lex_none;
             break;
          }
diff --git a/src/lib/lex.h b/src/lib/lex.h
index 115a60a..b2a55c5 100644
--- a/src/lib/lex.h
+++ b/src/lib/lex.h
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -32,8 +32,6 @@
  *
  *   Kern Sibbald, MM
  *
- *   Version $Id$
- *
  */
 
 #ifndef _LEX_H
@@ -106,7 +104,7 @@ typedef struct s_lex_context {
    int options;                       /* scan options */
    char *fname;                       /* filename */
    FILE *fd;                          /* file descriptor */
-   char line[MAXSTRING];              /* input line */
+   POOLMEM *line;                     /* input line */
    char str[MAXSTRING];               /* string being scanned */
    int str_len;                       /* length of string */
    int line_no;                       /* file line number */
diff --git a/src/lib/message.c b/src/lib/message.c
index f6712bc..3ae4d37 100644
--- a/src/lib/message.c
+++ b/src/lib/message.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -50,6 +50,7 @@ sql_escape_func p_sql_escape = NULL;
  *    daemons include this file.
  */
 const char *working_directory = NULL;       /* working directory path stored here */
+const char *assert_msg = (char *)NULL; /* ASSERT2 error message */
 int verbose = 0;                      /* increase User messages */
 int debug_level = 0;                  /* debug level */
 bool dbg_timestamp = false;           /* print timestamp in debug output */
@@ -74,6 +75,9 @@ void create_jcr_key();
 
 /* Static storage */
 
+/* Exclude spaces but require .mail at end */
+#define MAIL_REGEX "^[^ ]+\\.mail$"
+
 /* Allow only one thread to tweak d->fd at a time */
 static pthread_mutex_t fides_mutex = PTHREAD_MUTEX_INITIALIZER;
 static MSGS *daemon_msgs;              /* global messages */
@@ -92,6 +96,24 @@ const char *host_os = HOST_OS;
 const char *distname = DISTNAME;
 const char *distver = DISTVER;
 
+/*
+ * Walk back in a string from end looking for a
+ *  path separator.  
+ *  This routine is passed the start of the string and
+ *  the end of the string, it returns either the beginning
+ *  of the string or where it found a path separator.
+ */
+static const char *bstrrpath(const char *start, const char *end)
+{
+   while ( end > start ) {
+      end--;   
+      if (IsPathSeparator(*end)) {
+         break;
+      }
+   }
+   return end;
+}
+
 /* Some message class methods */
 void MSGS::lock()
 {
@@ -109,7 +131,7 @@ void MSGS::unlock()
 void MSGS::wait_not_in_use()     /* leaves fides_mutex set */
 {
    lock();
-   while (m_in_use) {
+   while (m_in_use || m_closing) {
       unlock();
       bmicrosleep(0, 200);         /* wait */
       lock();
@@ -496,6 +518,11 @@ void close_msg(JCR *jcr)
       return;
    }
    msgs->wait_not_in_use();          /* leaves fides_mutex set */
+   /* Note get_closing() does not lock because we are already locked */
+   if (msgs->get_closing()) {
+      msgs->unlock();
+      return;
+   }
    msgs->set_closing();
    msgs->unlock();
 
@@ -518,20 +545,39 @@ void close_msg(JCR *jcr)
             if (!d->fd) {
                break;
             }
-            if (
-                (d->dest_code == MD_MAIL_ON_ERROR && jcr &&
-                  (jcr->JobStatus == JS_Terminated || jcr->JobStatus == JS_Warnings)) 
-                ||
-                (d->dest_code == MD_MAIL_ON_SUCCESS && jcr &&
-                 jcr->JobStatus == JS_ErrorTerminated)
-                ) {
-               goto rem_temp_file;
+
+            switch (d->dest_code) {
+            case MD_MAIL_ON_ERROR:
+               if (jcr) {
+                  switch (jcr->JobStatus) {
+                  case JS_Terminated:
+                  case JS_Warnings:
+                     goto rem_temp_file;
+                  default:
+                     break;
+                  }
+               }
+               break;
+            case MD_MAIL_ON_SUCCESS:
+               if (jcr) {
+                  switch (jcr->JobStatus) {
+                  case JS_Terminated:
+                  case JS_Warnings:
+                     break;
+                  default:
+                     goto rem_temp_file;
+                  }
+               }
+               break;
+            default:
+               break;
             }
 
             if (!(bpipe=open_mail_pipe(jcr, cmd, d))) {
                Pmsg0(000, _("open mail pipe failed.\n"));
                goto rem_temp_file;
             }
+
             Dmsg0(850, "Opened mail pipe\n");
             len = d->max_len+10;
             line = get_memory(len);
@@ -568,11 +614,16 @@ void close_msg(JCR *jcr)
             free_memory(line);
 rem_temp_file:
             /* Remove temp file */
-            fclose(d->fd);
-            d->fd = NULL;
-            unlink(d->mail_filename);
-            free_pool_memory(d->mail_filename);
-            d->mail_filename = NULL;
+            if (d->fd) {
+               fclose(d->fd);
+               d->fd = NULL;
+            }
+            if (d->mail_filename) {
+               /* Exclude spaces in mail_filename */
+               safer_unlink(d->mail_filename, MAIL_REGEX);
+               free_pool_memory(d->mail_filename);
+               d->mail_filename = NULL;
+            }
             Dmsg0(850, "end mail or mail on error\n");
             break;
          default:
@@ -775,13 +826,17 @@ void dispatch_message(JCR *jcr, int type, utime_t mtime, char *msg)
                    POOLMEM *esc_msg = get_pool_memory(PM_MESSAGE);
                    
                    int len = strlen(msg) + 1;
-                   esc_msg = check_pool_memory_size(esc_msg, len*2+1);
-                   p_sql_escape(jcr, jcr->db, esc_msg, msg, len);
-
-                   bstrutime(dt, sizeof(dt), mtime);
-                   Mmsg(cmd, "INSERT INTO Log (JobId, Time, LogText) VALUES (%s,'%s','%s')",
-                         edit_int64(jcr->JobId, ed1), dt, esc_msg);
-                   p_sql_query(jcr, cmd);
+                   esc_msg = check_pool_memory_size(esc_msg, len * 2 + 1);
+                   if (p_sql_escape(jcr, jcr->db, esc_msg, msg, len)) {
+                      bstrutime(dt, sizeof(dt), mtime);
+                      Mmsg(cmd, "INSERT INTO Log (JobId, Time, LogText) VALUES (%s,'%s','%s')",
+                            edit_int64(jcr->JobId, ed1), dt, esc_msg);
+                      if (!p_sql_query(jcr, cmd)) {
+                         delivery_error(_("Msg delivery error: Unable to store data in database.\n"));
+                      }
+                   } else {
+                      delivery_error(_("Msg delivery error: Unable to store data in database.\n"));
+                   }
                    
                    free_pool_memory(cmd);
                    free_pool_memory(esc_msg);
@@ -937,17 +992,15 @@ send_to_file:
 
 const char *get_basename(const char *pathname)
 {
-   const char *basename, *basename2;
+   const char *basename;
    
-   if ((basename = strrchr(pathname, PathSeparator)) == NULL) {
-      basename = pathname;
-      if ((basename2 = strrchr(pathname, PathSeparator)) != NULL) {
-         basename = basename2 + 1;
-      }
+   if ((basename = bstrrpath(pathname, pathname+strlen(pathname))) == pathname) {
+      /* empty */
+   } else if ((basename = bstrrpath(pathname, basename-1)) == pathname) {
+      /* empty */
    } else {
       basename++;
    }
-
    return basename;
 }
 
@@ -1087,13 +1140,15 @@ p_msg(const char *file, int line, int level, const char *fmt,...)
 
 #ifdef FULL_LOCATION
     if (level >= 0) {
-       len = bsnprintf(buf, sizeof(buf), "%s: %s:%d ", my_name, get_basename(file), line);
+       len = bsnprintf(buf, sizeof(buf), "%s: %s:%d-%u ", 
+             my_name, get_basename(file), line, get_jobid_from_tsd());
     } else {
        len = 0;
     }
 #else
-    len = 0;
+       len = 0;
 #endif
+
     va_start(arg_ptr, fmt);
     bvsnprintf(buf+len, sizeof(buf)-len, (char *)fmt, arg_ptr);
     va_end(arg_ptr);
diff --git a/src/lib/message.h b/src/lib/message.h
index e3fb1e5..fd6141e 100644
--- a/src/lib/message.h
+++ b/src/lib/message.h
@@ -148,8 +148,8 @@ bool get_trace(void);
 const char *get_basename(const char *pathname);
 
 class B_DB;
-typedef void (*sql_query_func)(JCR *jcr, const char *cmd);
-typedef void (*sql_escape_func)(JCR *jcr, B_DB* db, char *snew, char *old, int len);
+typedef bool (*sql_query_func)(JCR *jcr, const char *cmd);
+typedef bool (*sql_escape_func)(JCR *jcr, B_DB *db, char *snew, char *old, int len);
 
 extern DLL_IMP_EXP sql_query_func     p_sql_query;
 extern DLL_IMP_EXP sql_escape_func    p_sql_escape;
@@ -159,6 +159,7 @@ extern DLL_IMP_EXP bool          dbg_timestamp;          /* print timestamp in d
 extern DLL_IMP_EXP bool          prt_kaboom;             /* Print kaboom output */
 extern DLL_IMP_EXP int           verbose;
 extern DLL_IMP_EXP char          my_name[];
+extern DLL_IMP_EXP const char   *assert_msg;             /* Assert error message */
 extern DLL_IMP_EXP const char *  working_directory;
 extern DLL_IMP_EXP utime_t       daemon_start_time;
 
diff --git a/src/lib/mntent_cache.c b/src/lib/mntent_cache.c
index c30cc91..ca2c8a8 100644
--- a/src/lib/mntent_cache.c
+++ b/src/lib/mntent_cache.c
@@ -68,10 +68,15 @@
 #include <sys/stat.h>
 
 #if defined(HAVE_GETMNTENT)
-#if defined(HAVE_LINUX_OS) || defined(HAVE_HPUX_OS) || defined(HAVE_AIX_OS)
+#if defined(HAVE_LINUX_OS) || \
+    defined(HAVE_HPUX_OS) || \
+    defined(HAVE_AIX_OS)
 #include <mntent.h>
 #elif defined(HAVE_SUN_OS)
 #include <sys/mnttab.h>
+#elif defined(HAVE_HURD_OS)
+#include <hurd/paths.h>
+#include <mntent.h>
 #endif /* HAVE_GETMNTENT */
 #elif defined(HAVE_GETMNTINFO)
 #if defined(HAVE_OPENBSD_OS)
@@ -181,7 +186,11 @@ static void refresh_mount_cache(void)
 #if defined(HAVE_GETMNTENT)
    FILE *fp;
    struct stat st;
-#if defined(HAVE_LINUX_OS) || defined(HAVE_HPUX_OS) || defined(HAVE_IRIX_OS) || defined(HAVE_AIX_OS)
+#if defined(HAVE_LINUX_OS) || \
+    defined(HAVE_HPUX_OS) || \
+    defined(HAVE_IRIX_OS) || \
+    defined(HAVE_AIX_OS) || \
+    defined(HAVE_HURD_OS)
    struct mntent *mnt;
 
 #if defined(HAVE_LINUX_OS)
@@ -202,6 +211,10 @@ static void refresh_mount_cache(void)
    if ((fp = setmntent(MNTTAB, "r")) == (FILE *)NULL) {
       return;
    }
+#elif defined(HAVE_HURD_OS)
+   if ((fp = setmntent(_PATH_MNTTAB, "r")) == (FILE *)NULL) {
+      return;
+   }
 #endif
 
    while ((mnt = getmntent(fp)) != (struct mntent *)NULL) {
diff --git a/src/lib/mutex_list.h b/src/lib/mutex_list.h
index b3f51a2..2f07dd5 100644
--- a/src/lib/mutex_list.h
+++ b/src/lib/mutex_list.h
@@ -36,7 +36,7 @@
 
 #define PRIO_SD_DEV_ACQUIRE   4            /* dev.acquire_mutex */
 #define PRIO_SD_DEV_ACCESS    5            /* dev.m_mutex */
-#define PRIO_SD_VOL_LIST      10           /* vol_list_lock */
+#define PRIO_SD_VOL_LIST      0            /* vol_list_lock */
 #define PRIO_SD_READ_VOL_LIST 12           /* read_vol_list */
 #define PRIO_SD_DEV_SPOOL     14           /* dev.spool_mutex */
 #define PRIO_SD_ACH_ACCESS    16           /* autochanger lock mutex */
diff --git a/src/lib/parse_conf.h b/src/lib/parse_conf.h
index f075df7..0a83353 100644
--- a/src/lib/parse_conf.h
+++ b/src/lib/parse_conf.h
@@ -145,6 +145,7 @@ public:
    void clear_in_use() { lock(); m_in_use=false; unlock(); }
    void set_in_use() { wait_not_in_use(); m_in_use=true; unlock(); }
    void set_closing() { m_closing=true; }
+   bool get_closing() { return m_closing; }
    void clear_closing() { lock(); m_closing=false; unlock(); }
    bool is_closing() { lock(); bool rtn=m_closing; unlock(); return rtn; }
 
diff --git a/src/lib/plugins.c b/src/lib/plugins.c
index 0cffff1..e6cf7b0 100644
--- a/src/lib/plugins.c
+++ b/src/lib/plugins.c
@@ -164,7 +164,7 @@ bool load_plugins(void *binfo, void *bfuncs, const char *plugin_dir,
       plugin->file_len = strstr(plugin->file, type) - plugin->file;
       plugin->pHandle = dlopen(fname.c_str(), RTLD_NOW);
       if (!plugin->pHandle) {
-         char *error = (char *)dlerror();
+         const char *error = dlerror();
          Jmsg(NULL, M_ERROR, 0, _("dlopen plugin %s failed: ERR=%s\n"), 
               fname.c_str(), NPRT(error));
          Dmsg2(dbglvl, "dlopen plugin %s failed: ERR=%s\n", fname.c_str(), 
diff --git a/src/lib/protos.h b/src/lib/protos.h
index e161158..d04c847 100644
--- a/src/lib/protos.h
+++ b/src/lib/protos.h
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -72,6 +72,7 @@ int       delete_pid_file        (char *dir, const char *progname, int port);
 void      drop                   (char *uid, char *gid, bool keep_readall_caps);
 int       bmicrosleep            (int32_t sec, int32_t usec);
 char     *bfgets                 (char *s, int size, FILE *fd);
+char     *bfgets                 (POOLMEM *&s, FILE *fd);
 void      make_unique_filename   (POOLMEM **name, int Id, char *what);
 #ifndef HAVE_STRTOLL
 long long int strtoll            (const char *ptr, char **endptr, int base);
@@ -82,6 +83,7 @@ char     *escape_filename(const char *file_path);
 int       Zdeflate(char *in, int in_len, char *out, int &out_len);
 int       Zinflate(char *in, int in_len, char *out, int &out_len);
 void      stack_trace();
+int       safer_unlink(const char *pathname, const char *regex);
 
 /* bnet.c */
 int32_t    bnet_recv             (BSOCK *bsock);
@@ -246,7 +248,7 @@ void       set_db_type           (const char *name);
 void       register_message_callback(void msg_callback(int type, char *msg));
 
 /* bnet_server.c */
-void       bnet_thread_server(dlist *addr, int max_clients, workq_t *client_wq,
+void       bnet_thread_server(dlist *addr_list, int max_clients, workq_t *client_wq,
                    void *handle_client_request(void *bsock));
 void       bnet_stop_thread_server(pthread_t tid);
 void             bnet_server             (int port, void handle_client_request(BSOCK *bsock));
diff --git a/src/lib/rblist.c b/src/lib/rblist.c
index 7bf0266..2d5477f 100644
--- a/src/lib/rblist.c
+++ b/src/lib/rblist.c
@@ -250,6 +250,10 @@ void *rblist::any(void *item)
 {
    void *x;
 
+   if (!item) {
+      return NULL;
+   }
+
    x = item;
    if ((down && !left(x) && right(x)) || (!down && right(x))) {
       /* Move down to right one */
@@ -335,7 +339,6 @@ void rblist::destroy()
 
    x = first();
 // printf("head=%p first=%p left=%p right=%p\n", head, x, left(x), right(x));
-
    for (  ; (y=any(x)); ) {
       /* Prune the last item */
       if (parent(x)) {
@@ -349,9 +352,9 @@ void rblist::destroy()
          if (head == x) {  
             head = NULL;
          }
-//       if (num_items<30) {
-//          printf("free nitems=%d item=%p left=%p right=%p\n", num_items, x, left(x), right(x));
-//       }   
+//          if (num_items<30) {
+//             printf("free nitems=%d item=%p left=%p right=%p\n", num_items, x, left(x), right(x));
+//          }   
          free((void *)x);      /* free previous node */
          num_items--;
       }
diff --git a/src/lib/rwlock.c b/src/lib/rwlock.c
index ad4f38b..bc001ac 100644
--- a/src/lib/rwlock.c
+++ b/src/lib/rwlock.c
@@ -113,6 +113,11 @@ int rwl_destroy(brwlock_t *rwl)
   return (stat != 0 ? stat : (stat1 != 0 ? stat1 : stat2));
 }
 
+bool rwl_is_init(brwlock_t *rwl)
+{
+   return (rwl->valid == RWLOCK_VALID);
+}
+
 /*
  * Handle cleanup when the read lock condition variable
  * wait is released.
diff --git a/src/lib/rwlock.h b/src/lib/rwlock.h
index c07e5c6..334938b 100644
--- a/src/lib/rwlock.h
+++ b/src/lib/rwlock.h
@@ -73,6 +73,7 @@ typedef struct s_rwsteal_tag {
  */
 extern int rwl_init(brwlock_t *wrlock, int priority=0);
 extern int rwl_destroy(brwlock_t *rwlock);
+extern bool rwl_is_init(brwlock_t *rwl);
 extern int rwl_readlock(brwlock_t *rwlock);
 extern int rwl_readtrylock(brwlock_t *rwlock);
 extern int rwl_readunlock(brwlock_t *rwlock);
diff --git a/src/lib/signal.c b/src/lib/signal.c
index 79f0333..548466c 100644
--- a/src/lib/signal.c
+++ b/src/lib/signal.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -133,6 +133,7 @@ static void dbg_print_bacula()
 extern "C" void signal_handler(int sig)
 {
    static int already_dead = 0;
+   int chld_status=-1;
 
    /* If we come back more than once, get out fast! */
    if (already_dead) {
@@ -193,6 +194,13 @@ extern "C" void signal_handler(int sig)
          strcpy((char *)working_directory, "/tmp/");
       }
       unlink("./core");               /* get rid of any old core file */
+
+#ifdef DEVELOPER /* When DEVELOPER not set, this is done below */
+      /* print information about the current state into working/<file>.bactrace */
+      dbg_print_bacula();
+#endif
+
+
       sprintf(pid_buf, "%d", (int)main_pid);
       Dmsg1(300, "Working=%s\n", working_directory);
       Dmsg1(300, "btpath=%s\n", btpath);
@@ -226,13 +234,18 @@ extern "C" void signal_handler(int sig)
       sigaction(sig,  &sigdefault, NULL);
       if (pid > 0) {
          Dmsg0(500, "Doing waitpid\n");
-         waitpid(pid, NULL, 0);       /* wait for child to produce dump */
+         waitpid(pid, &chld_status, 0);   /* wait for child to produce dump */
          Dmsg0(500, "Done waitpid\n");
       } else {
          Dmsg0(500, "Doing sleep\n");
          bmicrosleep(30, 0);
       }
-      fprintf(stderr, _("It looks like the traceback worked ...\n"));
+      if (WEXITSTATUS(chld_status) == 0) {
+         fprintf(stderr, _("It looks like the traceback worked...\n"));
+      } else {
+         fprintf(stderr, _("The btraceback call returned %d\n"), 
+                           WEXITSTATUS(chld_status));
+      }
       /* If we want it printed, do so */
 #ifdef direct_print
       if (prt_kaboom) {
@@ -256,8 +269,12 @@ extern "C" void signal_handler(int sig)
          fprintf(stderr, " ==== End traceback output ====\n\n");
       }
 #endif
+
+#ifndef DEVELOPER /* When DEVELOPER set, this is done above */
       /* print information about the current state into working/<file>.bactrace */
       dbg_print_bacula();
+#endif
+
    }
 #endif
    exit_handler(sig);
diff --git a/src/lib/workq.c b/src/lib/workq.c
index ce1be83..e3f7517 100644
--- a/src/lib/workq.c
+++ b/src/lib/workq.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -31,8 +31,6 @@
  *
  *  Kern Sibbald, January MMI
  *
- *   Version $Id$
- *
  *  This code adapted from "Programming with POSIX Threads", by
  *    David R. Butenhof
  *
diff --git a/src/plugins/fd/Makefile.in b/src/plugins/fd/Makefile.in
index 35c5d2d..207590c 100644
--- a/src/plugins/fd/Makefile.in
+++ b/src/plugins/fd/Makefile.in
@@ -16,7 +16,7 @@ LIBDIR=../../lib
 .c.lo:
 	$(LIBTOOL_COMPILE) $(CXX) $(DEFS) $(DEBUG) $(CPPFLAGS) -I${SRCDIR} -I${FDDIR} -DTEST_PROGRAM -c $<
 
-all: bpipe-fd.la test-plugin-fd.la delta-test-fd.la
+all: bpipe-fd.la test-plugin-fd.la test-deltaseq-fd.la
 
 example-plugin-fd.lo: example-plugin-fd.c ${FDDIR}/fd_plugins.h
 	$(LIBTOOL_COMPILE) $(CXX) $(DEFS) $(DEBUG) $(CPPFLAGS) $(CFLAGS) -I../.. -I${FDDIR} -c example-plugin-fd.c
@@ -30,11 +30,11 @@ bpipe-fd.lo: bpipe-fd.c ${FDDIR}/fd_plugins.h
 bpipe-fd.la: Makefile bpipe-fd$(DEFAULT_OBJECT_TYPE)
 	$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -shared bpipe-fd.lo -o $@ -rpath $(plugindir) -module -export-dynamic -avoid-version 
 
-delta-test-fd.lo: delta-test-fd.c ${FDDIR}/fd_plugins.h fd_common.h
-	$(LIBTOOL_COMPILE) $(CXX) $(DEFS) $(DEBUG) $(CPPFLAGS) $(CFLAGS) -I../.. -I${FDDIR} -c delta-test-fd.c
+test-deltaseq-fd.lo: test-deltaseq-fd.c ${FDDIR}/fd_plugins.h fd_common.h
+	$(LIBTOOL_COMPILE) $(CXX) $(DEFS) $(DEBUG) $(CPPFLAGS) $(CFLAGS) -I../.. -I${FDDIR} -c test-deltaseq-fd.c
 
-delta-test-fd.la: Makefile delta-test-fd$(DEFAULT_OBJECT_TYPE)
-	$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -shared delta-test-fd.lo -o $@ -rpath $(plugindir) -module -export-dynamic -avoid-version 
+test-deltaseq-fd.la: Makefile test-deltaseq-fd$(DEFAULT_OBJECT_TYPE)
+	$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -shared test-deltaseq-fd.lo -o $@ -rpath $(plugindir) -module -export-dynamic -avoid-version 
 
 test-plugin-fd.lo: test-plugin-fd.c ${FDDIR}/fd_plugins.h
 	$(LIBTOOL_COMPILE) $(CXX) $(DEFS) $(DEBUG) $(CPPFLAGS) $(CFLAGS) -I../.. -I${FDDIR} -c test-plugin-fd.c
@@ -51,8 +51,8 @@ install-test-plugin: all
 	$(MKDIR) $(DESTDIR)$(plugindir)
 	$(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) test-plugin-fd.la $(DESTDIR)$(plugindir)
 	$(RMF) $(DESTDIR)$(plugindir)/test-plugin-fd.la
-	$(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) delta-test-fd.la $(DESTDIR)$(plugindir)
-	$(RMF) $(DESTDIR)$(plugindir)/delta-test-fd.la
+	$(LIBTOOL_INSTALL) $(INSTALL_PROGRAM) test-deltaseq-fd.la $(DESTDIR)$(plugindir)
+	$(RMF) $(DESTDIR)$(plugindir)/test-deltaseq-fd.la
 
 libtool-clean:
 	@find . -name '*.lo' -print | xargs $(LIBTOOL_CLEAN) $(RMF)
diff --git a/src/plugins/fd/bpipe-fd.c b/src/plugins/fd/bpipe-fd.c
index 6828c8a..f4269ef 100644
--- a/src/plugins/fd/bpipe-fd.c
+++ b/src/plugins/fd/bpipe-fd.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -66,6 +66,7 @@ static bRC startRestoreFile(bpContext *ctx, const char *cmd);
 static bRC endRestoreFile(bpContext *ctx);
 static bRC createFile(bpContext *ctx, struct restore_pkt *rp);
 static bRC setFileAttributes(bpContext *ctx, struct restore_pkt *rp);
+static bRC checkFile(bpContext *ctx, char *fname);
 
 static char *apply_rp_codes(struct plugin_ctx * p_ctx);
 
@@ -82,7 +83,7 @@ static pInfo pluginInfo = {
    PLUGIN_AUTHOR,
    PLUGIN_DATE,
    PLUGIN_VERSION,
-   PLUGIN_DESCRIPTION,
+   PLUGIN_DESCRIPTION
 };
 
 /* Plugin entry points for Bacula */
@@ -102,7 +103,8 @@ static pFuncs pluginFuncs = {
    endRestoreFile,
    pluginIO,
    createFile,
-   setFileAttributes
+   setFileAttributes,
+   checkFile
 };
 
 /*
@@ -475,6 +477,12 @@ static bRC setFileAttributes(bpContext *ctx, struct restore_pkt *rp)
    return bRC_OK;
 }
 
+/* When using Incremental dump, all previous dumps are necessary */
+static bRC checkFile(bpContext *ctx, char *fname)
+{
+   return bRC_OK;
+}
+
 /*************************************************************************
  * Apply codes in writer command:
  * %w -> "where"
@@ -563,7 +571,6 @@ static char *apply_rp_codes(struct plugin_ctx * p_ctx)
    return omsg;
 }
 
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/plugins/fd/example-plugin-fd.c b/src/plugins/fd/example-plugin-fd.c
index dced30e..47d5239 100644
--- a/src/plugins/fd/example-plugin-fd.c
+++ b/src/plugins/fd/example-plugin-fd.c
@@ -1,6 +1,6 @@
 /*
 
-   Copyright (C) 2007-2010 Kern Sibbald
+   Copyright (C) 2007-2012 Kern Sibbald
 
    You may freely use this code to create your own plugin provided
    it is to write a plugin for Bacula licensed under AGPLv3
@@ -39,6 +39,7 @@ static bRC startRestoreFile(bpContext *ctx, const char *cmd);
 static bRC endRestoreFile(bpContext *ctx);
 static bRC createFile(bpContext *ctx, struct restore_pkt *rp);
 static bRC setFileAttributes(bpContext *ctx, struct restore_pkt *rp);
+static bRC checkFile(bpContext *ctx, char *fname);
 
 
 /* Pointers to Bacula functions */
@@ -72,7 +73,8 @@ static pFuncs pluginFuncs = {
    endRestoreFile,
    pluginIO,
    createFile,
-   setFileAttributes
+   setFileAttributes,
+   checkFile
 };
 
 /*
@@ -184,16 +186,18 @@ static bRC handlePluginEvent(bpContext *ctx, bEvent *event, void *value)
    case bEventEndRestoreJob:
       printf("plugin: EndRestoreJob\n");
       break;
-
    /* Plugin command e.g. plugin = <plugin-name>:<name-space>:command */
    case bEventRestoreCommand:
       printf("plugin: backup command=%s\n", NPRT((char *)value));
       break;
-
    case bEventBackupCommand:
       printf("plugin: backup command=%s\n", NPRT((char *)value));
       break;
 
+   case bEventComponentInfo:
+      printf("plugin: Component=%s\n", NPRT((char *)value));
+      break;
+
    default:
       printf("plugin: unknown event=%d\n", event->eventType);
    }
@@ -281,6 +285,12 @@ static bRC setFileAttributes(bpContext *ctx, struct restore_pkt *rp)
    return bRC_OK;
 }
 
+/* When using Incremental dump, all previous dumps are necessary */
+static bRC checkFile(bpContext *ctx, char *fname)
+{
+   return bRC_OK;
+}
+
 
 #ifdef __cplusplus
 }
diff --git a/src/plugins/fd/delta-test-fd.c b/src/plugins/fd/test-deltaseq-fd.c
similarity index 100%
rename from src/plugins/fd/delta-test-fd.c
rename to src/plugins/fd/test-deltaseq-fd.c
diff --git a/src/plugins/fd/test-plugin-fd.c b/src/plugins/fd/test-plugin-fd.c
index 175e074..765903f 100644
--- a/src/plugins/fd/test-plugin-fd.c
+++ b/src/plugins/fd/test-plugin-fd.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -69,6 +69,7 @@ static bRC startRestoreFile(bpContext *ctx, const char *cmd);
 static bRC endRestoreFile(bpContext *ctx);
 static bRC createFile(bpContext *ctx, struct restore_pkt *rp);
 static bRC setFileAttributes(bpContext *ctx, struct restore_pkt *rp);
+static bRC checkFile(bpContext *ctx, char *fname);
 
 /* Pointers to Bacula functions */
 static bFuncs *bfuncs = NULL;
@@ -83,7 +84,7 @@ static pInfo pluginInfo = {
    PLUGIN_AUTHOR,
    PLUGIN_DATE,
    PLUGIN_VERSION,
-   PLUGIN_DESCRIPTION,
+   PLUGIN_DESCRIPTION
 };
 
 /* Plugin entry points for Bacula */
@@ -103,7 +104,8 @@ static pFuncs pluginFuncs = {
    endRestoreFile,
    pluginIO,
    createFile,
-   setFileAttributes
+   setFileAttributes,
+   checkFile
 };
 
 static struct ini_items test_items[] = {
@@ -257,6 +259,7 @@ static bRC handlePluginEvent(bpContext *ctx, bEvent *event, void *value)
    case bEventStartBackupJob:
       break;
    case bEventRestoreObject:
+   {
       printf("Plugin RestoreObject\n");
       if (!value) {
          bfuncs->DebugMessage(ctx, fi, li, dbglvl, "test-plugin-fd: End restore objects\n");
@@ -264,13 +267,27 @@ static bRC handlePluginEvent(bpContext *ctx, bEvent *event, void *value)
       }
       rop = (restore_object_pkt *)value;
       bfuncs->DebugMessage(ctx, fi, li, dbglvl, 
-                           "Get RestoreObject len=%d JobId=%d oname=%s type=%d data=%s\n",
+                           "Get RestoreObject len=%d JobId=%d oname=%s type=%d data=%.127s\n",
                            rop->object_len, rop->JobId, rop->object_name, rop->object_type,
                            rop->object);
+      FILE *fp;
+      POOLMEM *q;
+      char *working;
+      static int _nb=0;
+      q = get_pool_memory(PM_FNAME);
+
+      bfuncs->getBaculaValue(ctx, bVarWorkingDir, &working);
+      Mmsg(q, "%s/restore.%d", working, _nb++);
+      if ((fp = fopen(q, "w")) != NULL) {
+         fwrite(rop->object, rop->object_len, 1, fp);
+         fclose(fp);
+      }
+
+      free_pool_memory(q);
 
       if (!strcmp(rop->object_name, INI_RESTORE_OBJECT_NAME)) {
          ConfigFile ini;
-         if (ini.dump_string(rop->object, rop->object_len)) {
+         if (!ini.dump_string(rop->object, rop->object_len)) {
             break;
          }
          ini.register_items(test_items, sizeof(struct ini_items));
@@ -283,12 +300,14 @@ static bRC handlePluginEvent(bpContext *ctx, bEvent *event, void *value)
       }
 
       break;
+   }
    /* Plugin command e.g. plugin = <plugin-name>:<name-space>:read command:write command */
    case bEventRestoreCommand:
       /* Fall-through wanted */
    case bEventEstimateCommand:
       /* Fall-through wanted */
    case bEventBackupCommand:
+   {
       char *p;
       bfuncs->DebugMessage(ctx, fi, li, dbglvl, "test-plugin-fd: pluginEvent cmd=%s\n", (char *)value);
       p_ctx->cmd = strdup((char *)value);
@@ -316,10 +335,15 @@ static bRC handlePluginEvent(bpContext *ctx, bEvent *event, void *value)
       printf("test-plugin-fd: plugin=%s fname=%s reader=%s writer=%s\n", 
           p_ctx->cmd, p_ctx->fname, p_ctx->reader, p_ctx->writer);
       break;
+   }
    case bEventPluginCommand:
       break;
    case bEventVssBeforeCloseRestore:
       break;
+   case bEventComponentInfo:
+      printf("plugin: Component=%s\n", NPRT((char *)value));
+      break;
+
    default:
       printf("test-plugin-fd: unknown event=%d\n", event->eventType);
       break;
@@ -338,14 +362,230 @@ static bRC startBackupFile(bpContext *ctx, struct save_pkt *sp)
    }
 
    if (p_ctx->nb_obj == 0) {
+      sp->fname = (char *)"takeme.h";
+      bfuncs->DebugMessage(ctx, fi, li, dbglvl, "AcceptFile=%s = %d\n", 
+                           sp->fname, bfuncs->AcceptFile(ctx, sp));
+
+      sp->fname = (char *)"/path/to/excludeme.o";
+      bfuncs->DebugMessage(ctx, fi, li, dbglvl, "AcceptFile=%s = %d\n", 
+                           sp->fname, bfuncs->AcceptFile(ctx, sp));
+
+      sp->fname = (char *)"/path/to/excludeme.c";
+      bfuncs->DebugMessage(ctx, fi, li, dbglvl, "AcceptFile=%s = %d\n", 
+                           sp->fname, bfuncs->AcceptFile(ctx, sp));
+   }
+
+   if (p_ctx->nb_obj == 0) {
       sp->object_name = (char *)"james.xml";
       sp->object = (char *)"This is test data for the restore object. "
   "garbage=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
   "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa."
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+  "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
   "\0secret";
       sp->object_len = strlen(sp->object)+1+6+1; /* str + 0 + secret + 0 */
       sp->type = FT_RESTORE_FIRST;
+
+      static int _nb=0;
+      POOLMEM *q = get_pool_memory(PM_FNAME);
+      char *working;
+      FILE *fp;
+
+      bfuncs->getBaculaValue(ctx, bVarWorkingDir, &working);
+      Mmsg(q, "%s/torestore.%d", working, _nb++);
+      if ((fp = fopen(q, "w")) != NULL) {
+         fwrite(sp->object, sp->object_len, 1, fp);
+         fclose(fp);
+      }
+      free_pool_memory(q);
    
    } else if (p_ctx->nb_obj == 1) {
       ConfigFile ini;
@@ -370,7 +610,7 @@ static bRC startBackupFile(bpContext *ctx, struct save_pkt *sp)
    sp->statp.st_blksize = 4096;
    sp->statp.st_blocks = 1;
    bfuncs->DebugMessage(ctx, fi, li, dbglvl,
-                        "Creating RestoreObject len=%d oname=%s data=%s\n", 
+                        "Creating RestoreObject len=%d oname=%s data=%.127s\n", 
                         sp->object_len, sp->object_name, sp->object);
 
    printf("test-plugin-fd: startBackupFile\n");
@@ -457,6 +697,11 @@ static bRC setFileAttributes(bpContext *ctx, struct restore_pkt *rp)
    return bRC_OK;
 }
 
+/* When using Incremental dump, all previous dumps are necessary */
+static bRC checkFile(bpContext *ctx, char *fname)
+{
+   return bRC_OK;
+}
 
 #ifdef __cplusplus
 }
diff --git a/src/qt-console/bat.pro.in b/src/qt-console/bat.pro.in
index 192bd87..cacba21 100644
--- a/src/qt-console/bat.pro.in
+++ b/src/qt-console/bat.pro.in
@@ -12,7 +12,7 @@ bins.path = /$(DESTDIR)@sbindir@
 bins.files = bat
 confs.path = /$(DESTDIR)@sysconfdir@
 confs.commands = ./install_conf_file
-help.path = /$(DESTDIR)@htmldir@
+help.path = /$(DESTDIR)@docdir@
 help.files = help/*.html images/status.png images/mail-message-new.png
 
 TEMPLATE     = app
@@ -31,6 +31,10 @@ qwt {
   LIBS        += @QWT_LDFLAGS@ @QWT_LIB@
 }
 
+macx {
+  ICON = images/bat_icon.icns
+}
+
 RESOURCES    = main.qrc
 MOC_DIR      = moc
 OBJECTS_DIR  = obj
diff --git a/src/qt-console/bcomm/dircomm.cpp b/src/qt-console/bcomm/dircomm.cpp
index a74f579..b2261f9 100644
--- a/src/qt-console/bcomm/dircomm.cpp
+++ b/src/qt-console/bcomm/dircomm.cpp
@@ -51,6 +51,7 @@ DirComm::DirComm(Console *parent, int conn):  m_notifier(NULL),  m_api_set(false
    m_conn = conn;
    m_in_command = 0;
    m_in_select = false;
+   m_notify = false;
 }
 
 DirComm::~DirComm()
@@ -65,6 +66,7 @@ void DirComm::terminate()
          m_notifier->setEnabled(false);
          delete m_notifier;
          m_notifier = NULL;
+         m_notify = false;
       }
       if (mainWin->m_connDebug)
          Pmsg2(000, "DirComm %i terminating connections %s\n", m_conn, m_console->m_dir->name());
@@ -211,6 +213,7 @@ bool DirComm::connect_dir()
    m_notifier = new QSocketNotifier(m_sock->m_fd, QSocketNotifier::Read, 0);
    QObject::connect(m_notifier, SIGNAL(activated(int)), this, SLOT(notify_read_dir(int)));
    m_notifier->setEnabled(true);
+   m_notify = true;
 
    write(".api 1");
    m_api_set = true;
@@ -368,7 +371,8 @@ int DirComm::read()
       case BNET_TEXT_INPUT:
          if (mainWin->m_commDebug) Pmsg4(000, "conn %i TEXT_INPUT at_prompt=%d  m_in_select=%d notify=%d\n", 
                m_conn, m_at_prompt, m_in_select, is_notify_enabled());
-         if (!m_in_select && is_notify_enabled()) {
+         //if (!m_in_select && is_notify_enabled()) {
+         if (!m_in_select) {
             mainWin->waitExit();
             new textInputDialog(m_console, m_conn);
          } else {
@@ -454,6 +458,7 @@ int DirComm::read()
             m_notifier->setEnabled(false);
             delete m_notifier;
             m_notifier = NULL;
+            m_notify = false;
          }
          mainWin->set_status(_("Director disconnected."));
          stat = BNET_HARDEOF;
@@ -489,7 +494,7 @@ void DirComm::notify_read_dir(int /* fd */)
  *
  * When we are in a bat dialog, we want to control *all* output
  * from the Directory, so we set notify to off.
- *    m_console->notifiy(false);
+ *    m_console->notify(false);
  */
 bool DirComm::notify(bool enable) 
 { 
@@ -498,10 +503,9 @@ bool DirComm::notify(bool enable)
    mainWin->m_notify = enable;
    if (m_notifier) {
       prev_enabled = m_notifier->isEnabled();   
-      if (prev_enabled != enable) {
-         m_notifier->setEnabled(enable);
-      }
-      if (mainWin->m_connDebug) Pmsg3(000, "conn=%i notify=%d prev=%d\n", m_conn, enable, prev_enabled);
+      m_notifier->setEnabled(enable);
+      m_notify = enable;
+      if (mainWin->m_connDebug) Pmsg3(000, "conn=%i set_notify=%d prev=%d\n", m_conn, enable, prev_enabled);
    } else if (mainWin->m_connDebug) {
       Pmsg2(000, "m_notifier does not exist: %i %s\n", m_conn, m_console->m_dir->name());
    }
@@ -510,7 +514,7 @@ bool DirComm::notify(bool enable)
 
 bool DirComm::is_notify_enabled() const
 {
-   return mainWin->m_notify;
+   return m_notify;
 }
 
 /*
diff --git a/src/qt-console/bcomm/dircomm.h b/src/qt-console/bcomm/dircomm.h
index 31a5c82..b098914 100644
--- a/src/qt-console/bcomm/dircomm.h
+++ b/src/qt-console/bcomm/dircomm.h
@@ -79,6 +79,7 @@ private:
    bool m_at_prompt;
    bool m_at_main_prompt;
    bool m_sent_blank;
+   bool m_notify;
    int  m_in_command;
    QSocketNotifier *m_notifier;
    bool m_api_set;
diff --git a/src/qt-console/console/console.cpp b/src/qt-console/console/console.cpp
index d980fcf..65656a8 100644
--- a/src/qt-console/console/console.cpp
+++ b/src/qt-console/console/console.cpp
@@ -159,6 +159,7 @@ void Console::populateLists(bool /*forcenew*/)
       }
    }
    populateLists(conn);
+   notify(conn, true);
 }
 
 void Console::populateLists(int conn)
@@ -237,13 +238,15 @@ bool Console::dir_cmd(int conn, const char *cmd, QStringList &results)
    mainWin->waitEnter();
    DirComm *dircomm = m_dircommHash.value(conn);
    int stat;
-   bool prev_notify = mainWin->m_notify;
+   bool prev_notify = is_notify_enabled(conn);
 
    if (mainWin->m_connDebug) {
       QString dbgmsg = QString("dir_cmd conn %1 %2 %3\n").arg(conn).arg(m_dir->name()).arg(cmd);
       Pmsg1(000, "%s", dbgmsg.toUtf8().data());
    }
-   notify(conn, false);
+   if (prev_notify) {
+      notify(conn, false);
+   }
    dircomm->write(cmd);
    while ((stat = dircomm->read()) > 0 && dircomm->is_in_command()) {
       if (mainWin->m_displayAll) display_text(dircomm->msg());
@@ -294,7 +297,7 @@ bool Console::sql_cmd(int &conn, const char *query, QStringList &results, bool d
    DirComm *dircomm = m_dircommHash.value(conn);
    int stat;
    POOL_MEM cmd(PM_MESSAGE);
-   bool prev_notify = mainWin->m_notify;
+   bool prev_notify = is_notify_enabled(conn);
 
    if (!is_connectedGui()) {
       return false;
@@ -332,6 +335,9 @@ bool Console::sql_cmd(int &conn, const char *query, QStringList &results, bool d
    }
    discardToPrompt(conn);
    mainWin->waitExit();
+   if (donotify && prev_notify) {
+      dircomm->notify(true);
+   }
    return !mainWin->isClosing();      /* return false if closing */
 }
 
@@ -393,12 +399,13 @@ void Console::write_dir(int conn, const char *msg, bool dowait)
 bool Console::get_job_defaults(struct job_defaults &job_defs)
 {
    int conn;
+   getDirComm(conn);
    return get_job_defaults(conn, job_defs, true);
 }
 
 bool Console::get_job_defaults(int &conn, struct job_defaults &job_defs)
 {
-   return get_job_defaults(conn, job_defs, false);
+   return get_job_defaults(conn, job_defs, true);
 }
 
 /*  
@@ -410,14 +417,14 @@ bool Console::get_job_defaults(int &conn, struct job_defaults &job_defs, bool do
    QString scmd;
    int stat;
    char *def;
-   bool prev_notify = mainWin->m_notify;
+   bool prev_notify = is_notify_enabled(conn);
    bool rtn = false;
+   DirComm *dircomm = m_dircommHash.value(conn);
 
    if (donotify) {
-      conn = notifyOff();
+      dircomm->notify(false);
    }
    beginNewCommand(conn);
-   DirComm *dircomm = m_dircommHash.value(conn);
    bool prevWaitState = mainWin->getWaitState();
    if (!prevWaitState)
       mainWin->waitEnter();
@@ -714,14 +721,22 @@ int Console::notifyOff()
 bool Console::notify(int conn, bool enable)
 { 
    DirComm *dircomm = m_dircommHash.value(conn);
-   return dircomm->notify(enable);
+   if (dircomm) {
+      return dircomm->notify(enable);
+   } else {
+      return false;
+   }
 }
 
 /* knowing a connection, return notify state */
 bool Console::is_notify_enabled(int conn) const
 {
    DirComm *dircomm = m_dircommHash.value(conn);
-   return dircomm->is_notify_enabled();
+   if (dircomm) {
+      return dircomm->is_notify_enabled();
+   } else {
+      return false;
+   }
 }
 
 void Console::setDirectorTreeItem(QTreeWidgetItem *item)
@@ -871,7 +886,6 @@ bool Console::getDirComm(int &conn)
  */
 bool Console::findDirComm(int &conn)
 {
-   int i = 1;
    QHash<int, DirComm*>::const_iterator iter = m_dircommHash.constBegin();
    while (iter != m_dircommHash.constEnd()) {
       DirComm *dircomm = iter.value();
@@ -881,8 +895,7 @@ bool Console::findDirComm(int &conn)
       }
       if (mainWin->m_connDebug) {
          Pmsg4(000, "currentDirComm=%d at_prompt=%d at_main=%d && notify=%d\n",                                      
-            i, dircomm->m_at_prompt, dircomm->m_at_main_prompt, dircomm->is_notify_enabled());
-         i++;
+            dircomm->m_conn, dircomm->m_at_prompt, dircomm->m_at_main_prompt, dircomm->is_notify_enabled());
       }
       ++iter;
    }
diff --git a/src/qt-console/images/bat_icon.icns b/src/qt-console/images/bat_icon.icns
new file mode 100644
index 0000000..b76fe1d
Binary files /dev/null and b/src/qt-console/images/bat_icon.icns differ
diff --git a/src/qt-console/main.cpp b/src/qt-console/main.cpp
index 31be9eb..7c1f55b 100644
--- a/src/qt-console/main.cpp
+++ b/src/qt-console/main.cpp
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -38,11 +38,11 @@
 #include <QTranslator>
 
 /*
- * We need Qt version 4.6.2 or later to be able to comple correctly
+ * We need Qt version 4.8.4 or later to be able to comple correctly
  */
-#if QT_VERSION < 0x040602
+#if QT_VERSION < 0x040804
 #error "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
-#error "You need Qt version 4.6.2 or later to build Bat"
+#error "You need Qt version 4.8.4 or later to build Bat"
 #error "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
 #endif
 
@@ -76,11 +76,11 @@ int main(int argc, char *argv[])
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
      
    QTranslator qtTranslator;
-   qtTranslator.load(QString("qt_") + QLocale::system().name());
+   qtTranslator.load(QString("qt_") + QLocale::system().name(),QLibraryInfo::location(QLibraryInfo::TranslationsPath));
    app->installTranslator(&qtTranslator);
 
    QTranslator batTranslator;
-   batTranslator.load(QString("bat_") + QLocale::system().name());
+   batTranslator.load(QString("bat_") + QLocale::system().name(),QLibraryInfo::location(QLibraryInfo::TranslationsPath));
    app->installTranslator(&batTranslator);
 
    register_message_callback(message_callback);
diff --git a/src/qt-console/select/textinput.ui b/src/qt-console/select/textinput.ui
index a72fc8a..4991b8f 100644
--- a/src/qt-console/select/textinput.ui
+++ b/src/qt-console/select/textinput.ui
@@ -10,47 +10,89 @@
     <x>0</x>
     <y>0</y>
     <width>430</width>
-    <height>132</height>
+    <height>96</height>
    </rect>
   </property>
+  <property name="focusPolicy">
+   <enum>Qt::StrongFocus</enum>
+  </property>
   <property name="windowTitle">
-   <string>Selection dialog</string>
+   <string>Text input dialog</string>
   </property>
   <layout class="QGridLayout" name="gridLayout">
-   <item row="0" column="0">
-    <widget class="QLabel" name="labelWidget">
-     <property name="text">
-      <string/>
+   <item row="0" column="1">
+    <widget class="QLineEdit" name="lineEdit">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>50</width>
+       <height>0</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>100</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="focusPolicy">
+      <enum>Qt::TabFocus</enum>
      </property>
     </widget>
    </item>
-   <item row="1" column="1">
-    <widget class="QLabel" name="label">
+   <item row="0" column="0">
+    <widget class="QLabel" name="labelWidget">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
      <property name="text">
-      <string>TextLabel</string>
+      <string>Message</string>
      </property>
     </widget>
    </item>
-   <item row="2" column="1">
-    <widget class="QLineEdit" name="lineEdit"/>
-   </item>
-   <item row="3" column="1">
+   <item row="2" column="0" colspan="2">
     <layout class="QHBoxLayout" name="horizontalLayout">
+     <property name="spacing">
+      <number>5</number>
+     </property>
      <item>
       <spacer name="horizontalSpacer">
        <property name="orientation">
         <enum>Qt::Horizontal</enum>
        </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::Expanding</enum>
+       </property>
        <property name="sizeHint" stdset="0">
         <size>
-         <width>40</width>
-         <height>20</height>
+         <width>26</width>
+         <height>9</height>
         </size>
        </property>
       </spacer>
      </item>
      <item>
       <widget class="QDialogButtonBox" name="buttonBox">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="maximumSize">
+        <size>
+         <width>16777215</width>
+         <height>38</height>
+        </size>
+       </property>
        <property name="orientation">
         <enum>Qt::Horizontal</enum>
        </property>
diff --git a/src/qt-console/util/fmtwidgetitem.cpp b/src/qt-console/util/fmtwidgetitem.cpp
index d284ac2..ef742bf 100644
--- a/src/qt-console/util/fmtwidgetitem.cpp
+++ b/src/qt-console/util/fmtwidgetitem.cpp
@@ -130,7 +130,7 @@ QString convertBytesIEC(qint64 qfld)
 
    /* having divided for a smaller unit, now we can safely convert to double and
       use the extra room for decimals */
-   return QString("%1 %2iB").arg(qfld / 1000.0, 0, 'f', 2).arg(suffix);
+   return QString("%1 %2iB").arg(qfld / 1024.0, 0, 'f', 2).arg(suffix);
 }
 
 /* String to human value based on k=1000 */
diff --git a/src/stored/acquire.c b/src/stored/acquire.c
index 96bdc06..ef31f74 100644
--- a/src/stored/acquire.c
+++ b/src/stored/acquire.c
@@ -1,7 +1,7 @@
 /*
    Bacula(R) - The Network Backup Solution
 
-   Copyright (C) 2002-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2013 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -35,6 +35,8 @@
 #include "bacula.h"                   /* pull in global headers */
 #include "stored.h"                   /* pull in Storage Deamon headers */
 
+static int const rdbglvl = 100;
+
 /* Forward referenced functions */
 static void attach_dcr_to_dev(DCR *dcr);
 static void detach_dcr_from_dev(DCR *dcr);
@@ -51,7 +53,7 @@ static void set_dcr_from_vol(DCR *dcr, VOL_LIST *vol);
  */
 bool acquire_device_for_read(DCR *dcr)
 {
-   DEVICE *dev = dcr->dev;
+   DEVICE *dev;
    JCR *jcr = dcr->jcr;
    bool ok = false;
    bool tape_previously_mounted;
@@ -61,9 +63,11 @@ bool acquire_device_for_read(DCR *dcr)
    int vol_label_status;
    int retry = 0;
    
-   P(dev->read_acquire_mutex);
-   Dmsg2(950, "dcr=%p dev=%p\n", dcr, dcr->dev);
-   Dmsg2(950, "MediaType dcr=%s dev=%s\n", dcr->media_type, dev->device->media_type);
+   Enter(rdbglvl);
+   dev = dcr->dev;
+   dev->Lock_read_acquire();
+   Dmsg2(rdbglvl, "dcr=%p dev=%p\n", dcr, dcr->dev);
+   Dmsg2(rdbglvl, "MediaType dcr=%s dev=%s\n", dcr->media_type, dev->device->media_type);
    dev->dblock(BST_DOING_ACQUIRE);
 
    if (dev->num_writers > 0) {
@@ -91,12 +95,7 @@ bool acquire_device_for_read(DCR *dcr)
    }
    set_dcr_from_vol(dcr, vol);
 
-   if (generate_plugin_event(jcr, bsdEventDeviceOpen, dcr) != bRC_OK) {
-      Jmsg(jcr, M_FATAL, 0, _("generate_plugin_event(bsdEventDeviceOpen) Failed\n"));
-      goto get_out;
-   }
-
-   Dmsg2(100, "Want Vol=%s Slot=%d\n", vol->VolumeName, vol->Slot);
+   Dmsg2(rdbglvl, "Want Vol=%s Slot=%d\n", vol->VolumeName, vol->Slot);
     
    /*
     * If the MediaType requested for this volume is not the
@@ -110,7 +109,7 @@ bool acquire_device_for_read(DCR *dcr)
     *    them such as the block pointer (size may change), but we do
     *    not release the dcr.
     */
-   Dmsg2(50, "MediaType dcr=%s dev=%s\n", dcr->media_type, dev->device->media_type);
+   Dmsg2(rdbglvl, "MediaType dcr=%s dev=%s\n", dcr->media_type, dev->device->media_type);
    if (dcr->media_type[0] && strcmp(dcr->media_type, dev->device->media_type) != 0) {
       RCTX rctx;
       DIRSTORE *store;
@@ -119,12 +118,10 @@ bool acquire_device_for_read(DCR *dcr)
       Jmsg3(jcr, M_INFO, 0, _("Changing read device. Want Media Type=\"%s\" have=\"%s\"\n"
                               "  device=%s\n"), 
             dcr->media_type, dev->device->media_type, dev->print_name());
-      Dmsg3(50, "Changing read device. Want Media Type=\"%s\" have=\"%s\"\n"
+      Dmsg3(rdbglvl, "Changing read device. Want Media Type=\"%s\" have=\"%s\"\n"
                               "  device=%s\n", 
             dcr->media_type, dev->device->media_type, dev->print_name());
 
-      generate_plugin_event(jcr, bsdEventDeviceClose, dcr);
-
       dev->dunblock(DEV_UNLOCKED);
 
       lock_reservations();
@@ -156,8 +153,8 @@ bool acquire_device_for_read(DCR *dcr)
           * Switching devices, so acquire lock on new device,
           *   then release the old one.
           */
-         P(dcr->dev->read_acquire_mutex);
-         V(dev->read_acquire_mutex);
+         dcr->dev->Lock_read_acquire();      /* lock new one */
+         dev->Unlock_read_acquire();         /* release old one */
          dev = dcr->dev;                     /* get new device pointer */
          dev->dblock(BST_DOING_ACQUIRE); 
 
@@ -165,10 +162,6 @@ bool acquire_device_for_read(DCR *dcr)
          Jmsg(jcr, M_INFO, 0, _("Media Type change.  New read device %s chosen.\n"),
             dev->print_name());
          Dmsg1(50, "Media Type change.  New read device %s chosen.\n", dev->print_name());
-         if (generate_plugin_event(jcr, bsdEventDeviceOpen, dcr) != bRC_OK) {
-            Jmsg(jcr, M_FATAL, 0, _("generate_plugin_event(bsdEventDeviceOpen) Failed\n"));
-            goto get_out;
-         }
          bstrncpy(dcr->VolumeName, vol->VolumeName, sizeof(dcr->VolumeName));
          dcr->setVolCatName(vol->VolumeName);
          bstrncpy(dcr->media_type, vol->MediaType, sizeof(dcr->media_type));
@@ -180,17 +173,17 @@ bool acquire_device_for_read(DCR *dcr)
          /* error */
          Jmsg1(jcr, M_FATAL, 0, _("No suitable device found to read Volume \"%s\"\n"),
             vol->VolumeName);
-         Dmsg1(50, "No suitable device found to read Volume \"%s\"\n", vol->VolumeName);
+         Dmsg1(rdbglvl, "No suitable device found to read Volume \"%s\"\n", vol->VolumeName);
          goto get_out;
       }
    }
-   Dmsg2(400, "MediaType dcr=%s dev=%s\n", dcr->media_type, dev->device->media_type);
+   Dmsg2(rdbglvl, "MediaType dcr=%s dev=%s\n", dcr->media_type, dev->device->media_type);
 
    dev->clear_unload();
 
    if (dev->vol && dev->vol->is_swapping()) {
       dev->vol->set_slot(vol->Slot);
-      Dmsg3(100, "swapping: slot=%d Vol=%s dev=%s\n", dev->vol->get_slot(),
+      Dmsg3(rdbglvl, "swapping: slot=%d Vol=%s dev=%s\n", dev->vol->get_slot(),
          dev->vol->vol_name, dev->print_name());
    }
 
@@ -201,9 +194,9 @@ bool acquire_device_for_read(DCR *dcr)
 // tape_initially_mounted = tape_previously_mounted;
 
    /* Volume info is always needed because of VolParts */
-   Dmsg1(150, "dir_get_volume_info vol=%s\n", dcr->VolumeName);
+   Dmsg1(rdbglvl, "dir_get_volume_info vol=%s\n", dcr->VolumeName);
    if (!dir_get_volume_info(dcr, GET_VOL_INFO_FOR_READ)) {
-      Dmsg2(150, "dir_get_vol_info failed for vol=%s: %s\n", 
+      Dmsg2(rdbglvl, "dir_get_vol_info failed for vol=%s: %s\n", 
          dcr->VolumeName, jcr->errmsg);
       Jmsg1(jcr, M_WARNING, 0, "Read acquire: %s", jcr->errmsg);
    }
@@ -232,27 +225,27 @@ bool acquire_device_for_read(DCR *dcr)
        * reading. If it is a file, it opens it.
        * If it is a tape, it checks the volume name
        */
-      Dmsg1(100, "bstored: open vol=%s\n", dcr->VolumeName);
-      if (dev->open(dcr, OPEN_READ_ONLY) < 0) {
+      Dmsg1(rdbglvl, "open vol=%s\n", dcr->VolumeName);
+      if (!dev->open(dcr, OPEN_READ_ONLY)) {
          if (!dev->poll) {
             Jmsg3(jcr, M_WARNING, 0, _("Read open device %s Volume \"%s\" failed: ERR=%s\n"),
                   dev->print_name(), dcr->VolumeName, dev->bstrerror());
          }
          goto default_path;
       }
-      Dmsg1(50, "opened dev %s OK\n", dev->print_name());
+      Dmsg1(rdbglvl, "opened dev %s OK\n", dev->print_name());
       
       /* Read Volume Label */
-      Dmsg0(50, "calling read-vol-label\n");
+      Dmsg0(rdbglvl, "calling read-vol-label\n");
       vol_label_status = read_dev_volume_label(dcr);
       switch (vol_label_status) {
       case VOL_OK:
-         Dmsg0(50, "Got correct volume.\n");
+         Dmsg0(rdbglvl, "Got correct volume.\n");
          ok = true;
          dev->VolCatInfo = dcr->VolCatInfo;     /* structure assignment */
          break;                    /* got it */
       case VOL_IO_ERROR:
-         Dmsg0(50, "IO Error\n");
+         Dmsg0(rdbglvl, "IO Error\n");
          /*
           * Send error message generated by read_dev_volume_label()
           *  only we really had a tape mounted. This supresses superfluous
@@ -263,7 +256,7 @@ bool acquire_device_for_read(DCR *dcr)
          }
          goto default_path;
       case VOL_NAME_ERROR:
-         Dmsg3(50, "Vol name=%s want=%s drv=%s.\n", dev->VolHdr.VolumeName, 
+         Dmsg3(rdbglvl, "Vol name=%s want=%s drv=%s.\n", dev->VolHdr.VolumeName, 
                dcr->VolumeName, dev->print_name());
          if (dev->is_volume_to_unload()) {
             goto default_path;
@@ -279,7 +272,7 @@ bool acquire_device_for_read(DCR *dcr)
       default:
          Jmsg1(jcr, M_WARNING, 0, "Read acquire: %s", jcr->errmsg);
 default_path:
-         Dmsg0(50, "default path\n");
+         Dmsg0(rdbglvl, "default path\n");
          tape_previously_mounted = true;
          
          /*
@@ -293,7 +286,7 @@ default_path:
          /* Call autochanger only once unless ask_sysop called */
          if (try_autochanger) {
             int stat;
-            Dmsg2(200, "calling autoload Vol=%s Slot=%d\n",
+            Dmsg2(rdbglvl, "calling autoload Vol=%s Slot=%d\n",
                dcr->VolumeName, dcr->VolCatInfo.Slot);
             stat = autoload_device(dcr, 0, NULL);
             if (stat > 0) {
@@ -303,7 +296,7 @@ default_path:
          }
          
          /* Mount a specific volume and no other */
-         Dmsg0(200, "calling dir_ask_sysop\n");
+         Dmsg0(rdbglvl, "calling dir_ask_sysop\n");
          if (!dir_ask_sysop_to_mount_volume(dcr, ST_READ)) {
             goto get_out;             /* error return */
          }
@@ -337,11 +330,7 @@ default_path:
       dcr->VolumeName, dev->print_name());
 
 get_out:
-   dev->dlock();
-   /* If failed and not writing plugin close device */
-   if (!ok && dev->num_writers == 0) {
-      generate_plugin_event(jcr, bsdEventDeviceClose, dcr);
-   }
+   dev->Lock();
    dcr->clear_reserved();
    /* 
     * Normally we are blocked, but in at least one error case above 
@@ -351,11 +340,12 @@ get_out:
    if (dev->is_blocked()) {
       dev->dunblock(DEV_LOCKED);
    } else {
-      dev->dunlock();               /* dunblock() unlock the device too */
+      dev->Unlock();               /* dunblock() unlock the device too */
    }
-   Dmsg2(950, "dcr=%p dev=%p\n", dcr, dcr->dev);
-   Dmsg2(950, "MediaType dcr=%s dev=%s\n", dcr->media_type, dev->device->media_type);
-   V(dev->read_acquire_mutex);
+   Dmsg2(rdbglvl, "dcr=%p dev=%p\n", dcr, dcr->dev);
+   Dmsg2(rdbglvl, "MediaType dcr=%s dev=%s\n", dcr->media_type, dev->device->media_type);
+   dev->Unlock_read_acquire();
+   Leave(rdbglvl);
    return ok;
 }
 
@@ -375,10 +365,11 @@ DCR *acquire_device_for_append(DCR *dcr)
    bool ok = false;
    bool have_vol = false;
 
+   Enter(200);
    init_device_wait_timers(dcr);
 
-   P(dev->acquire_mutex);           /* only one job at a time */
-   dev->dlock();
+   dev->Lock_acquire();             /* only one job at a time */
+   dev->Lock();
    Dmsg1(100, "acquire_append device is %s\n", dev->is_tape()?"tape":
         (dev->is_dvd()?"DVD":"disk"));
 
@@ -413,9 +404,9 @@ DCR *acquire_device_for_append(DCR *dcr)
    }
 
    if (!have_vol) {
-      dev->r_dlock(true);
+      dev->rLock(true);
       block_device(dev, BST_DOING_ACQUIRE);
-      dev->dunlock();
+      dev->Unlock();
       Dmsg1(190, "jid=%u Do mount_next_write_vol\n", (uint32_t)jcr->JobId);
       if (!dcr->mount_next_write_volume()) {
          if (!job_canceled(jcr)) {
@@ -425,20 +416,15 @@ DCR *acquire_device_for_append(DCR *dcr)
             Dmsg1(200, "Could not ready device %s for append.\n", 
                dev->print_name());
          }
-         dev->dlock();
+         dev->Lock();
          unblock_device(dev);
          goto get_out;
       }
       Dmsg2(190, "Output pos=%u:%u\n", dcr->dev->file, dcr->dev->block_num);
-      dev->dlock();
+      dev->Lock();
       unblock_device(dev);
    }
 
-   if (generate_plugin_event(jcr, bsdEventDeviceOpen, dcr) != bRC_OK) {
-      Jmsg(jcr, M_FATAL, 0, _("generate_plugin_event(bsdEventDeviceOpen) Failed\n"));
-      goto get_out;
-   }
-
    dev->num_writers++;                /* we are now a writer */
    if (jcr->NumWriteVolumes == 0) {
       jcr->NumWriteVolumes = 1;
@@ -453,8 +439,9 @@ DCR *acquire_device_for_append(DCR *dcr)
 get_out:
    /* Don't plugin close here, we might have multiple writers */
    dcr->clear_reserved();
-   dev->dunlock();
-   V(dev->acquire_mutex);
+   dev->Unlock();
+   dev->Unlock_acquire();
+   Leave(200);
    return ok ? dcr : NULL;
 }
 
@@ -475,7 +462,7 @@ bool release_device(DCR *dcr)
    char tbuf[100];
    int was_blocked = BST_NOT_BLOCKED;
 
-   dev->dlock();
+   dev->Lock();
    if (!dev->is_blocked()) {
       block_device(dev, BST_RELEASING);
    } else {
@@ -490,7 +477,6 @@ bool release_device(DCR *dcr)
 
    if (dev->can_read()) {
       VOLUME_CAT_INFO *vol = &dev->VolCatInfo;
-      generate_plugin_event(jcr, bsdEventDeviceClose, dcr);
       dev->clear_read();              /* clear read bit */
       Dmsg2(150, "dir_update_vol_info. label=%d Vol=%s\n",
          dev->is_labeled(), vol->VolCatName);
@@ -545,11 +531,11 @@ bool release_device(DCR *dcr)
 
    /* If no writers, close if file or !CAP_ALWAYS_OPEN */
    if (dev->num_writers == 0 && (!dev->is_tape() || !dev->has_cap(CAP_ALWAYSOPEN))) {
-      generate_plugin_event(jcr, bsdEventDeviceClose, dcr);
       dvd_remove_empty_part(dcr);        /* get rid of any empty spool part */
       dev->close();
       free_volume(dev);
    }
+   unlock_volumes();
 
    /* Fire off Alert command and include any output */
    if (!job_canceled(jcr) && dcr->device->alert_command) {
@@ -582,7 +568,6 @@ bool release_device(DCR *dcr)
    Dmsg2(100, "JobId=%u broadcast wait_device_release at %s\n", 
          (uint32_t)jcr->JobId, bstrftimes(tbuf, sizeof(tbuf), (utime_t)time(NULL)));
    pthread_cond_broadcast(&wait_device_release);
-   unlock_volumes();
 
    /*
     * If we are the thread that blocked the device, then unblock it
@@ -592,7 +577,7 @@ bool release_device(DCR *dcr)
    } else {
       /* Otherwise, reset the prior block status and unlock */
       dev->set_blocked(was_blocked);
-      dev->dunlock();
+      dev->Unlock();
    }
 
    if (dcr->keep_dcr) {
@@ -600,7 +585,7 @@ bool release_device(DCR *dcr)
    } else {
       free_dcr(dcr);
    }
-   Dmsg2(100, "===== Device %s released by JobId=%u\n", dev->print_name(),
+   Dmsg2(100, "Device %s released by JobId=%u\n", dev->print_name(),
          (uint32_t)jcr->JobId);
    return ok;
 }
@@ -644,6 +629,12 @@ DCR *new_dcr(JCR *jcr, DCR *dcr, DEVICE *dev)
          Mmsg1(dev->errmsg, _("Unable to init mutex: ERR=%s\n"), be.bstrerror(errstat));
          Jmsg0(jcr, M_ERROR_TERM, 0, dev->errmsg);
       }
+      if ((errstat = pthread_mutex_init(&dcr->r_mutex, NULL)) != 0) {
+         berrno be;
+         dev->dev_errno = errstat;
+         Mmsg1(dev->errmsg, _("Unable to init r_mutex: ERR=%s\n"), be.bstrerror(errstat));
+         Jmsg0(jcr, M_ERROR_TERM, 0, dev->errmsg);
+      }
    }
    dcr->jcr = jcr;                 /* point back to jcr */
    /* Set device information, possibly change device */
@@ -660,13 +651,13 @@ DCR *new_dcr(JCR *jcr, DCR *dcr, DEVICE *dev)
          detach_dcr_from_dev(dcr);
       }
       /* Use job spoolsize prior to device spoolsize */
-      if (jcr->spool_size) {
+      if (jcr && jcr->spool_size) {
          dcr->max_job_spool_size = jcr->spool_size;
       } else {
          dcr->max_job_spool_size = dev->device->max_job_spool_size;
       }
       dcr->device = dev->device;
-      dcr->dev = dev;
+      dcr->set_dev(dev);
       attach_dcr_to_dev(dcr);
    }
    return dcr;
@@ -712,11 +703,12 @@ static void attach_dcr_to_dev(DCR *dcr)
    if (jcr) Dmsg1(500, "JobId=%u enter attach_dcr_to_dev\n", (uint32_t)jcr->JobId);
    /* ***FIXME*** return error if dev not initiated */
    if (!dcr->attached_to_dev && dev->initiated && jcr && jcr->getJobType() != JT_SYSTEM) {
-      dev->dlock();
+      dev->Lock();
+      Dmsg4(200, "Attach Jid=%d dcr=%p size=%d dev=%s\n", (uint32_t)jcr->JobId, 
+         dcr, dev->attached_dcrs->size(), dev->print_name());
       dev->attached_dcrs->append(dcr);  /* attach dcr to device */
-      dev->dunlock();
+      dev->Unlock();
       dcr->attached_to_dev = true;
-      Dmsg1(500, "JobId=%u attach_dcr_to_dev\n", (uint32_t)jcr->JobId);
    }
    V(dcr->m_mutex);
 }
@@ -732,10 +724,15 @@ static void locked_detach_dcr_from_dev(DCR *dcr)
    /* Detach this dcr only if attached */
    if (dcr->attached_to_dev && dev) {
       dcr->unreserve_device();
-      dev->dlock();
-      dcr->dev->attached_dcrs->remove(dcr);  /* detach dcr from device */
+      dev->Lock();
+      Dmsg4(200, "Detach Jid=%d dcr=%p size=%d to dev=%s\n", (uint32_t)dcr->jcr->JobId, 
+         dcr, dev->attached_dcrs->size(), dev->print_name());
+      dcr->attached_to_dev = false;
+      if (dev->attached_dcrs->size()) {
+         dev->attached_dcrs->remove(dcr);  /* detach dcr from device */
+      }
 //    remove_dcr_from_dcrs(dcr);      /* remove dcr from jcr list */
-      dev->dunlock();
+      dev->Unlock();
    }
    dcr->attached_to_dev = false;
 }
@@ -775,6 +772,7 @@ void free_dcr(DCR *dcr)
    }
    V(dcr->m_mutex);
    pthread_mutex_destroy(&dcr->m_mutex);
+   pthread_mutex_destroy(&dcr->r_mutex);
    free(dcr);
 }
 
diff --git a/src/stored/append.c b/src/stored/append.c
index 1af03fb..7b69a4c 100644
--- a/src/stored/append.c
+++ b/src/stored/append.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -89,8 +89,7 @@ bool do_append_data(JCR *jcr)
       return false;
    }
 
-   jcr->setJobStatus(JS_Running);
-   dir_send_job_status(jcr);
+   jcr->sendJobStatus(JS_Running);
 
    if (dev->VolCatInfo.VolCatName[0] == 0) {
       Pmsg0(000, _("NULL Volume name. This shouldn't happen!!!\n"));
@@ -214,18 +213,10 @@ fi_checked:
             stream_to_ascii(buf1, rec.Stream,rec.FileIndex),
             rec.data_len);
 
-         while (!write_record_to_block(dcr->block, &rec)) {
-            Dmsg2(850, "!write_record_to_block data_len=%d rem=%d\n", rec.data_len,
-                       rec.remainder);
-            if (!write_block_to_device(dcr)) {
-               Dmsg2(90, "Got write_block_to_dev error on device %s. %s\n",
-                  dev->print_name(), dev->bstrerror());
-               ok = false;
-               break;
-            }
-         }
+         ok = dcr->write_record(&rec);
          if (!ok) {
-            Dmsg0(400, "Not OK\n");
+            Dmsg2(90, "Got write_block_to_dev error on device %s. %s\n",
+                  dcr->dev->print_name(), dcr->dev->bstrerror());
             break;
          }
          jcr->JobBytes += rec.data_len;   /* increment bytes this job */
@@ -261,21 +252,6 @@ fi_checked:
       fd->fsend("3999 Failed append\n");
    }
 
-   /*
-    * Don't use time_t for job_elapsed as time_t can be 32 or 64 bits,
-    *   and the subsequent Jmsg() editing will break
-    */
-   int32_t job_elapsed = time(NULL) - jcr->run_time;
-
-   if (job_elapsed <= 0) {
-      job_elapsed = 1;
-   }
-
-   Jmsg(dcr->jcr, M_INFO, 0, _("Job write elapsed time = %02d:%02d:%02d, Transfer rate = %s Bytes/second\n"),
-         job_elapsed / 3600, job_elapsed % 3600 / 60, job_elapsed % 60,
-         edit_uint64_with_suffix(jcr->JobBytes / job_elapsed, ec));
-
-
    Dmsg1(200, "Write EOS label JobStatus=%c\n", jcr->JobStatus);
 
    /*
@@ -293,13 +269,9 @@ fi_checked:
          jcr->setJobStatus(JS_ErrorTerminated);
          ok = false;
       }
-      if (dev->VolCatInfo.VolCatName[0] == 0) {
-         Pmsg0(000, _("NULL Volume name. This shouldn't happen!!!\n"));
-         Dmsg0(000, _("NULL Volume name. This shouldn't happen!!!\n"));
-      }
       Dmsg0(90, "back from write_end_session_label()\n");
       /* Flush out final partial block of this session */
-      if (!write_block_to_device(dcr)) {
+      if (!dcr->write_block_to_device()) {
          /* Print only if ok and not cancelled to avoid spurious messages */
          if (ok && !jcr->is_job_canceled()) {
             Jmsg2(jcr, M_FATAL, 0, _("Fatal append error on device %s: ERR=%s\n"),
@@ -312,7 +284,6 @@ fi_checked:
       }
    }
 
-
    if (!ok && !jcr->is_JobStatus(JS_Incomplete)) {
       discard_data_spool(dcr);
    } else {
@@ -323,6 +294,20 @@ fi_checked:
    if (ok) {
       ok = dvd_close_job(dcr);  /* do DVD cleanup if any */
    }
+
+   /*
+    * Don't use time_t for job_elapsed as time_t can be 32 or 64 bits,
+    *   and the subsequent Jmsg() editing will break
+    */
+   int32_t job_elapsed = time(NULL) - jcr->run_time;
+
+   if (job_elapsed <= 0) {
+      job_elapsed = 1;
+   }
+
+   Jmsg(dcr->jcr, M_INFO, 0, _("Elapsed time=%02d:%02d:%02d, Transfer rate=%s Bytes/second\n"),
+         job_elapsed / 3600, job_elapsed % 3600 / 60, job_elapsed % 60,
+         edit_uint64_with_suffix(jcr->JobBytes / job_elapsed, ec));
    
    /*
     * Release the device -- and send final Vol info to DIR
@@ -336,7 +321,7 @@ fi_checked:
       commit_attribute_spool(jcr);
    }
 
-   dir_send_job_status(jcr);          /* update director */
+   jcr->sendJobStatus();          /* update director */
 
    Dmsg1(100, "return from do_append_data() ok=%d\n", ok);
    return ok;
diff --git a/src/stored/askdir.c b/src/stored/askdir.c
index 35200e0..9a89927 100644
--- a/src/stored/askdir.c
+++ b/src/stored/askdir.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -36,6 +36,8 @@
 #include "bacula.h"                   /* pull in global headers */
 #include "stored.h"                   /* pull in Storage Deamon headers */
 
+static const int dbglvl = 200;
+
 /* Requests sent to the Director */
 static char Find_media[]   = "CatReq Job=%s FindMedia=%d pool_name=%s media_type=%s\n";
 static char Get_Vol_Info[] = "CatReq Job=%s GetVolInfo VolName=%s write=%d\n";
@@ -48,7 +50,6 @@ static char Create_job_media[] = "CatReq Job=%s CreateJobMedia"
    " FirstIndex=%u LastIndex=%u StartFile=%u EndFile=%u"
    " StartBlock=%u EndBlock=%u Copy=%d Strip=%d MediaId=%s\n";
 static char FileAttributes[] = "UpdCat Job=%s FileAttributes ";
-static char Job_status[]     = "Status Job=%s JobStatus=%d\n";
 
 /* Responses received from the Director */
 static char OK_media[] = "1000 OK VolName=%127s VolJobs=%u VolFiles=%lu"
@@ -107,7 +108,7 @@ bool dir_update_device(JCR *jcr, DEVICE *dev)
       dev->is_tape()?100000:1,
       dev->autoselect, 0, 
       ChangerName.c_str(), MediaType.c_str(), VolumeName.c_str());
-   Dmsg1(100, ">dird: %s\n", dir->msg);
+   Dmsg1(dbglvl, ">dird: %s\n", dir->msg);
    return ok;
 }
 
@@ -136,7 +137,7 @@ bool dir_update_changer(JCR *jcr, AUTOCHANGER *changer)
       "*",                      /* ChangerName */
       MediaType.c_str(),        /* MediaType */
       "*");                     /* VolName */
-   Dmsg1(100, ">dird: %s\n", dir->msg);
+   Dmsg1(dbglvl, ">dird: %s\n", dir->msg);
    return ok;
 }
 #endif
@@ -147,7 +148,7 @@ bool dir_update_changer(JCR *jcr, AUTOCHANGER *changer)
  */
 bool dir_send_job_status(JCR *jcr)
 {
-   return jcr->dir_bsock->fsend(Job_status, jcr->Job, jcr->JobStatus);
+   return jcr->sendJobStatus();
 }
 
 /**
@@ -174,12 +175,12 @@ static bool do_get_volume_info(DCR *dcr)
 
     dcr->setVolCatInfo(false);
     if (dir->recv() <= 0) {
-       Dmsg0(200, "getvolname error bnet_recv\n");
+       Dmsg0(dbglvl, "getvolname error bnet_recv\n");
        Mmsg(jcr->errmsg, _("Network error on bnet_recv in req_vol_info.\n"));
        return false;
     }
     memset(&vol, 0, sizeof(vol));
-    Dmsg1(100, "<dird %s", dir->msg);
+    Dmsg1(dbglvl, "<dird %s", dir->msg);
     n = sscanf(dir->msg, OK_media, vol.VolCatName,
                &vol.VolCatJobs, &vol.VolCatFiles,
                &vol.VolCatBlocks, &vol.VolCatBytes,
@@ -191,7 +192,7 @@ static bool do_get_volume_info(DCR *dcr)
                &vol.EndFile, &vol.EndBlock, &vol.VolCatParts,
                &vol.LabelType, &vol.VolMediaId);
     if (n != 22) {
-       Dmsg3(100, "Bad response from Dir fields=%d, len=%d: %s", 
+       Dmsg3(dbglvl, "Bad response from Dir fields=%d, len=%d: %s", 
              n, dir->msglen, dir->msg);
        Mmsg(jcr->errmsg, _("Error getting Volume info: %s"), dir->msg);
        return false;
@@ -202,7 +203,7 @@ static bool do_get_volume_info(DCR *dcr)
     bstrncpy(dcr->VolumeName, vol.VolCatName, sizeof(dcr->VolumeName));
     dcr->VolCatInfo = vol;            /* structure assignment */
 
-    Dmsg2(100, "do_reqest_vol_info return true slot=%d Volume=%s\n",
+    Dmsg2(dbglvl, "do_reqest_vol_info return true slot=%d Volume=%s\n",
           vol.Slot, vol.VolCatName);
     return true;
 }
@@ -220,19 +221,19 @@ static bool do_get_volume_info(DCR *dcr)
  */
 bool dir_get_volume_info(DCR *dcr, enum get_vol_info_rw writing)
 {
-    JCR *jcr = dcr->jcr;
-    BSOCK *dir = jcr->dir_bsock;
+   JCR *jcr = dcr->jcr;
+   BSOCK *dir = jcr->dir_bsock;
 
-    P(vol_info_mutex);
-    dcr->setVolCatName(dcr->VolumeName);
-    bash_spaces(dcr->getVolCatName());
-    dir->fsend(Get_Vol_Info, jcr->Job, dcr->getVolCatName(),
-       writing==GET_VOL_INFO_FOR_WRITE?1:0);
-    Dmsg1(100, ">dird %s", dir->msg);
-    unbash_spaces(dcr->getVolCatName());
-    bool ok = do_get_volume_info(dcr);
-    V(vol_info_mutex);
-    return ok;
+   P(vol_info_mutex);
+   dcr->setVolCatName(dcr->VolumeName);
+   bash_spaces(dcr->getVolCatName());
+   dir->fsend(Get_Vol_Info, jcr->Job, dcr->getVolCatName(),
+      writing==GET_VOL_INFO_FOR_WRITE?1:0);
+   Dmsg1(dbglvl, ">dird %s", dir->msg);
+   unbash_spaces(dcr->getVolCatName());
+   bool ok = do_get_volume_info(dcr);
+   V(vol_info_mutex);
+   return ok;
 }
 
 
@@ -256,7 +257,7 @@ bool dir_find_next_appendable_volume(DCR *dcr)
     bool rtn;
     char lastVolume[MAX_NAME_LENGTH];
 
-    Dmsg2(200, "dir_find_next_appendable_volume: reserved=%d Vol=%s\n", 
+    Dmsg2(dbglvl, "dir_find_next_appendable_volume: reserved=%d Vol=%s\n", 
        dcr->is_reserved(), dcr->VolumeName);
 
     /*
@@ -274,33 +275,33 @@ bool dir_find_next_appendable_volume(DCR *dcr)
        dir->fsend(Find_media, jcr->Job, vol_index, dcr->pool_name, dcr->media_type);
        unbash_spaces(dcr->media_type);
        unbash_spaces(dcr->pool_name);
-       Dmsg1(100, ">dird %s", dir->msg);
+       Dmsg1(dbglvl, ">dird %s", dir->msg);
        if (do_get_volume_info(dcr)) {
           /* Give up if we get the same volume name twice */
           if (lastVolume[0] && strcmp(lastVolume, dcr->VolumeName) == 0) {
-             Dmsg1(100, "Got same vol = %s\n", lastVolume);
+             Dmsg1(dbglvl, "Got same vol = %s\n", lastVolume);
              break;
           }
           bstrncpy(lastVolume, dcr->VolumeName, sizeof(lastVolume));
           if (dcr->can_i_write_volume()) {
-             Dmsg1(100, "Call reserve_volume. Vol=%s\n", dcr->VolumeName);
+             Dmsg1(dbglvl, "Call reserve_volume for write. Vol=%s\n", dcr->VolumeName);
              if (reserve_volume(dcr, dcr->VolumeName) == NULL) {
-                Dmsg2(100, "Could not reserve volume %s on %s\n", dcr->VolumeName,
+                Dmsg2(dbglvl, "Could not reserve volume %s on %s\n", dcr->VolumeName,
                     dcr->dev->print_name());
                 continue;
              }
-             Dmsg1(100, "dir_find_next_appendable_volume return true. vol=%s\n",
+             Dmsg1(dbglvl, "dir_find_next_appendable_volume return true. vol=%s\n",
                 dcr->VolumeName);
              rtn = true;
              goto get_out;
           } else {
-             Dmsg1(100, "Volume %s is in use.\n", dcr->VolumeName);
+             Dmsg1(dbglvl, "Volume %s is in use.\n", dcr->VolumeName);
              /* If volume is not usable, it is in use by someone else */
              dcr->set_found_in_use();
              continue;
           }
        }
-       Dmsg2(100, "No vol. index %d return false. dev=%s\n", vol_index,
+       Dmsg2(dbglvl, "No vol. index %d return false. dev=%s\n", vol_index,
           dcr->dev->print_name());
        break;
     }
@@ -343,7 +344,7 @@ bool dir_update_volume_info(DCR *dcr, bool label, bool update_LastWritten)
 
    /* Lock during Volume update */
    P(vol_info_mutex);
-   Dmsg1(100, "Update cat VolBytes=%lld\n", vol->VolCatBytes);
+   Dmsg1(dbglvl, "Update cat VolBytes=%lld\n", vol->VolCatBytes);
    /* Just labeled or relabeled the tape */
    if (label) {
       bstrncpy(vol->VolCatStatus, "Append", sizeof(vol->VolCatStatus));
@@ -366,19 +367,21 @@ bool dir_update_volume_info(DCR *dcr, bool label, bool update_LastWritten)
       edit_int64(vol->VolWriteTime, ed4),
       edit_uint64(vol->VolFirstWritten, ed5),
       vol->VolCatParts);
-    Dmsg1(100, ">dird %s", dir->msg);
+    Dmsg1(dbglvl, ">dird %s", dir->msg);
 
    /* Do not lock device here because it may be locked from label */
-   if (!do_get_volume_info(dcr)) {
-      Jmsg(jcr, M_FATAL, 0, "%s", jcr->errmsg);
-      Dmsg2(100, _("Didn't get vol info vol=%s: ERR=%s"), 
-         vol->VolCatName, jcr->errmsg);
-      goto bail_out;
+   if (!jcr->is_canceled()) {
+      if (!do_get_volume_info(dcr)) {
+         Jmsg(jcr, M_FATAL, 0, "%s", jcr->errmsg);
+         Dmsg2(dbglvl, _("Didn't get vol info vol=%s: ERR=%s"), 
+            vol->VolCatName, jcr->errmsg);
+         goto bail_out;
+      }
+      Dmsg1(420, "get_volume_info() %s", dir->msg);
+      /* Update dev Volume info in case something changed (e.g. expired) */
+      dev->VolCatInfo = dcr->VolCatInfo;
+      ok = true;
    }
-   Dmsg1(420, "get_volume_info() %s", dir->msg);
-   /* Update dev Volume info in case something changed (e.g. expired) */
-   dev->VolCatInfo = dcr->VolCatInfo;
-   ok = true;
 
 bail_out:
    V(vol_info_mutex);
@@ -402,7 +405,7 @@ bool dir_create_jobmedia_record(DCR *dcr, bool zero)
    /* Throw out records where FI is zero -- i.e. nothing done */
    if (!zero && dcr->VolFirstIndex == 0 && 
         (dcr->StartBlock != 0 || dcr->EndBlock != 0)) {
-      Dmsg0(100, "JobMedia FI=0 StartBlock!=0 record suppressed\n");
+      Dmsg0(dbglvl, "JobMedia FI=0 StartBlock!=0 record suppressed\n");
       return true;
    }
 
@@ -423,16 +426,16 @@ bool dir_create_jobmedia_record(DCR *dcr, bool zero)
          dcr->Copy, dcr->Stripe, 
          edit_uint64(dcr->VolMediaId, ed1));
    }
-   Dmsg1(100, ">dird %s", dir->msg);
+   Dmsg1(dbglvl, ">dird %s", dir->msg);
    if (dir->recv() <= 0) {
-      Dmsg0(190, "create_jobmedia error bnet_recv\n");
+      Dmsg0(dbglvl, "create_jobmedia error bnet_recv\n");
       Jmsg(jcr, M_FATAL, 0, _("Error creating JobMedia record: ERR=%s\n"),
            dir->bstrerror());
       return false;
    }
-   Dmsg1(100, "<dird %s", dir->msg);
+   Dmsg1(dbglvl, "<dird %s", dir->msg);
    if (strcmp(dir->msg, OK_create) != 0) {
-      Dmsg1(130, "Bad response from Dir: %s\n", dir->msg);
+      Dmsg1(dbglvl, "Bad response from Dir: %s\n", dir->msg);
       Jmsg(jcr, M_FATAL, 0, _("Error creating JobMedia record: %s\n"), dir->msg);
       return false;
    }
@@ -511,7 +514,7 @@ bool dir_ask_sysop_to_create_appendable_volume(DCR *dcr)
    if (job_canceled(jcr)) {
       return false;
    }
-   Dmsg0(400, "enter dir_ask_sysop_to_create_appendable_volume\n");
+   Dmsg0(dbglvl, "enter dir_ask_sysop_to_create_appendable_volume\n");
    ASSERT(dev->blocked());
    for ( ;; ) {
       if (job_canceled(jcr)) {
@@ -537,17 +540,16 @@ bool dir_ask_sysop_to_create_appendable_volume(DCR *dcr)
                dcr->pool_name,
                dcr->media_type);
             Jmsg(jcr, M_MOUNT, 0, "%s", dev->errmsg);
-            Dmsg1(100, "%s", dev->errmsg);
+            Dmsg1(dbglvl, "%s", dev->errmsg);
          }
       }
 
-      jcr->setJobStatus(JS_WaitMedia);
-      dir_send_job_status(jcr);
+      jcr->sendJobStatus(JS_WaitMedia);
 
       stat = wait_for_sysop(dcr);
-      Dmsg1(100, "Back from wait_for_sysop stat=%d\n", stat);
+      Dmsg1(dbglvl, "Back from wait_for_sysop stat=%d\n", stat);
       if (dev->poll) {
-         Dmsg1(100, "Poll timeout in create append vol on device %s\n", dev->print_name());
+         Dmsg1(dbglvl, "Poll timeout in create append vol on device %s\n", dev->print_name());
          continue;
       }
 
@@ -556,7 +558,7 @@ bool dir_ask_sysop_to_create_appendable_volume(DCR *dcr)
             Mmsg(dev->errmsg, _("Max time exceeded waiting to mount Storage Device %s for Job %s\n"),
                dev->print_name(), jcr->Job);
             Jmsg(jcr, M_FATAL, 0, "%s", dev->errmsg);
-            Dmsg1(100, "Gave up waiting on device %s\n", dev->print_name());
+            Dmsg1(dbglvl, "Gave up waiting on device %s\n", dev->print_name());
             return false;             /* exceeded maximum waits */
          }
          continue;
@@ -567,13 +569,12 @@ bool dir_ask_sysop_to_create_appendable_volume(DCR *dcr)
          Jmsg(jcr, M_FATAL, 0, "%s", dev->errmsg);
          return false;
       }
-      Dmsg1(100, "Someone woke me for device %s\n", dev->print_name());
+      Dmsg1(dbglvl, "Someone woke me for device %s\n", dev->print_name());
    }
 
 get_out:
-   jcr->setJobStatus(JS_Running);
-   dir_send_job_status(jcr);
-   Dmsg0(100, "leave dir_ask_sysop_to_mount_create_appendable_volume\n");
+   jcr->sendJobStatus(JS_Running);
+   Dmsg0(dbglvl, "leave dir_ask_sysop_to_mount_create_appendable_volume\n");
    return true;
 }
 
@@ -595,7 +596,7 @@ bool dir_ask_sysop_to_mount_volume(DCR *dcr, int mode)
    DEVICE *dev = dcr->dev;
    JCR *jcr = dcr->jcr;
 
-   Dmsg0(400, "enter dir_ask_sysop_to_mount_volume\n");
+   Dmsg0(dbglvl, "enter dir_ask_sysop_to_mount_volume\n");
    if (!dcr->VolumeName[0]) {
       Mmsg0(dev->errmsg, _("Cannot request another volume: no volume name given.\n"));
       return false;
@@ -620,13 +621,13 @@ bool dir_ask_sysop_to_mount_volume(DCR *dcr, int mode)
       if (!dev->poll && (stat == W_TIMEOUT || stat == W_MOUNT)) {
          char *msg;
          if (mode == ST_APPEND) {
-            msg = _("Please mount Volume \"%s\" or label a new one for:\n"
+            msg = _("Please mount append Volume \"%s\" or label a new one for:\n"
               "    Job:          %s\n"
               "    Storage:      %s\n"
               "    Pool:         %s\n"
               "    Media type:   %s\n");
          } else {
-            msg = _("Please mount Volume \"%s\" for:\n"
+            msg = _("Please mount read Volume \"%s\" for:\n"
               "    Job:          %s\n"
               "    Storage:      %s\n"
               "    Pool:         %s\n"
@@ -638,18 +639,17 @@ bool dir_ask_sysop_to_mount_volume(DCR *dcr, int mode)
               dev->print_name(),
               dcr->pool_name,
               dcr->media_type);
-         Dmsg3(400, "Mount \"%s\" on device \"%s\" for Job %s\n",
+         Dmsg3(dbglvl, "Mount \"%s\" on device \"%s\" for Job %s\n",
                dcr->VolumeName, dev->print_name(), jcr->Job);
       }
 
-      jcr->setJobStatus(JS_WaitMount);
-      dir_send_job_status(jcr);
+      jcr->sendJobStatus(JS_WaitMount);
 
       stat = wait_for_sysop(dcr);          /* wait on device */
-      Dmsg1(100, "Back from wait_for_sysop stat=%d\n", stat);
+      Dmsg1(dbglvl, "Back from wait_for_sysop stat=%d\n", stat);
       if (dev->poll) {
-         Dmsg1(400, "Poll timeout in mount vol on device %s\n", dev->print_name());
-         Dmsg1(400, "Blocked=%s\n", dev->print_blocked());
+         Dmsg1(dbglvl, "Poll timeout in mount vol on device %s\n", dev->print_name());
+         Dmsg1(dbglvl, "Blocked=%s\n", dev->print_blocked());
          goto get_out;
       }
 
@@ -658,7 +658,7 @@ bool dir_ask_sysop_to_mount_volume(DCR *dcr, int mode)
             Mmsg(dev->errmsg, _("Max time exceeded waiting to mount Storage Device %s for Job %s\n"),
                dev->print_name(), jcr->Job);
             Jmsg(jcr, M_FATAL, 0, "%s", dev->errmsg);
-            Dmsg1(400, "Gave up waiting on device %s\n", dev->print_name());
+            Dmsg1(dbglvl, "Gave up waiting on device %s\n", dev->print_name());
             return false;             /* exceeded maximum waits */
          }
          continue;
@@ -669,13 +669,12 @@ bool dir_ask_sysop_to_mount_volume(DCR *dcr, int mode)
          Jmsg(jcr, M_FATAL, 0, "%s", dev->errmsg);
          return false;
       }
-      Dmsg1(400, "Someone woke me for device %s\n", dev->print_name());
+      Dmsg1(dbglvl, "Someone woke me for device %s\n", dev->print_name());
       break;
    }
 
 get_out:
-   jcr->setJobStatus(JS_Running);
-   dir_send_job_status(jcr);
-   Dmsg0(400, "leave dir_ask_sysop_to_mount_volume\n");
+   jcr->sendJobStatus(JS_Running);
+   Dmsg0(dbglvl, "leave dir_ask_sysop_to_mount_volume\n");
    return true;
 }
diff --git a/src/stored/autochanger.c b/src/stored/autochanger.c
index 67d1780..219f579 100644
--- a/src/stored/autochanger.c
+++ b/src/stored/autochanger.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -72,21 +72,6 @@ bool init_autochangers()
                device->hdr.name);
             OK = false;
          }   
-
-#ifdef xxx_needed
-         if (media_type == NULL) {
-            media_type = device->media_type;     /* get Media Type of first device */
-            continue;
-         }     
-         /* Ensure that other devices Media Types are the same */
-         if (strcmp(media_type, device->media_type) != 0) {
-            Jmsg(NULL, M_ERROR, 0, 
-               _("Media Type not the same for all devices in changer %s. Cannot continue.\n"),
-               changer->hdr.name);
-            OK = false;
-            continue;
-         }
-#endif
       }
    }
    return OK;
@@ -209,6 +194,10 @@ int autoload_device(DCR *dcr, int writing, BSOCK *dir)
                     slot, drive);
             Dmsg2(100, "load slot %d, drive %d, status is OK.\n", slot, drive);
             dev->set_slot(slot);      /* set currently loaded slot */
+            if (dev->vol) {
+               /* We just swapped this Volume so it cannot be swapping any more */
+               dev->vol->clear_swapping();
+            }
          } else {
             berrno be;
             be.set_errno(status);
@@ -260,7 +249,6 @@ int get_autochanger_loaded_slot(DCR *dcr)
       return -1;
    }
    if (!dcr->device->changer_command) {
-//    Jmsg(jcr, M_FATAL, 0, _("3992 Missing Changer command.\n"));
       return -1;
    }
    if (dev->get_slot() > 0) {
@@ -276,7 +264,7 @@ int get_autochanger_loaded_slot(DCR *dcr)
    changer = get_pool_memory(PM_FNAME);
    lock_changer(dcr);
    /* Suppress info when polling */
-   if (!dev->poll) {
+   if (!dev->poll && debug_level >= 1) {
       Jmsg(jcr, M_INFO, 0, _("3301 Issuing autochanger \"loaded? drive %d\" command.\n"),
            drive);
    }
@@ -288,14 +276,14 @@ int get_autochanger_loaded_slot(DCR *dcr)
       loaded = str_to_int32(results.c_str());
       if (loaded > 0) {
          /* Suppress info when polling */
-         if (!dev->poll) {
+         if (!dev->poll && debug_level >= 1) {
             Jmsg(jcr, M_INFO, 0, _("3302 Autochanger \"loaded? drive %d\", result is Slot %d.\n"),
                  drive, loaded);
          }
          dev->set_slot(loaded);
       } else {
          /* Suppress info when polling */
-         if (!dev->poll) {
+         if (!dev->poll && debug_level >= 1) {
             Jmsg(jcr, M_INFO, 0, _("3302 Autochanger \"loaded? drive %d\", result: nothing loaded.\n"),
                  drive);
          }
@@ -450,12 +438,12 @@ static bool unload_other_drive(DCR *dcr, int slot)
          continue;
       }
       dev_save = dcr->dev;
-      dcr->dev = dev;
+      dcr->set_dev(dev);
       if (dev->get_slot() <= 0 && get_autochanger_loaded_slot(dcr) <= 0) {
-         dcr->dev = dev_save;
+         dcr->set_dev(dev_save);
          continue;
       }
-      dcr->dev = dev_save;
+      dcr->set_dev(dev_save);
       if (dev->get_slot() == slot) {
          found = true;
          break;
@@ -510,12 +498,19 @@ bool unload_dev(DCR *dcr, DEVICE *dev)
    }
 
    save_dev = dcr->dev;               /* save dcr device */
-   dcr->dev = dev;                    /* temporarily point dcr at other device */
+   dcr->set_dev(dev);                 /* temporarily point dcr at other device */
 
-   if (dev->get_slot() <= 0 && get_autochanger_loaded_slot(dcr) <= 0) {
-      dcr->dev = save_dev;
+   /* Update slot if not set or not always_open */
+   if (dev->get_slot() <= 0 || !dev->has_cap(CAP_ALWAYSOPEN)) {
+      get_autochanger_loaded_slot(dcr);
+   }
+
+   /* Fail if we have no slot to unload */
+   if (dev->get_slot() <= 0) {
+      dcr->set_dev(save_dev);
       return false;
    }
+   
    save_slot = dcr->VolCatInfo.Slot;
    dcr->VolCatInfo.Slot = dev->get_slot();
 
@@ -539,11 +534,11 @@ bool unload_dev(DCR *dcr, DEVICE *dev)
    Dmsg1(100, "Run program=%s\n", changer_cmd);
    int stat = run_program_full_output(changer_cmd, timeout, results.addr());
    dcr->VolCatInfo.Slot = save_slot;
-   dcr->dev = save_dev;
+   dcr->set_dev(save_dev);
    if (stat != 0) {
       berrno be;
       be.set_errno(stat);
-      Jmsg(jcr, M_INFO, 0, _("3995 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"),
+      Jmsg(jcr, M_INFO, 0, _("3997 Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n"),
               dev->get_slot(), dev->drive_index, be.bstrerror());
 
       Dmsg3(100, "Bad autochanger \"unload slot %d, drive %d\": ERR=%s.\n",
@@ -603,6 +598,12 @@ bool autochanger_cmd(DCR *dcr, BSOCK *dir, const char *cmd)
       return true;
    }
 
+   /* If listing, reprobe changer */
+   if (bstrcmp(cmd, "list") || bstrcmp(cmd, "listall")) {
+      dcr->dev->set_slot(0);
+      get_autochanger_loaded_slot(dcr);
+   }
+
    changer = get_pool_memory(PM_FNAME);
    lock_changer(dcr);
    /* Now issue the command */
@@ -640,7 +641,6 @@ bool autochanger_cmd(DCR *dcr, BSOCK *dir, const char *cmd)
       be.set_errno(stat);
       dir->fsend(_("Autochanger error: ERR=%s\n"), be.bstrerror());
    }
-   bnet_sig(dir, BNET_EOD);
 
 bail_out:
    unlock_changer(dcr);
diff --git a/src/stored/bcopy.c b/src/stored/bcopy.c
index 72398c2..8db3259 100644
--- a/src/stored/bcopy.c
+++ b/src/stored/bcopy.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -31,8 +31,6 @@
  *
  *   Kern E. Sibbald, October 2002
  *
- *
- *   Version $Id$
  */
 
 #include "bacula.h"
@@ -199,13 +197,13 @@ int main (int argc, char *argv[])
    }
    Dmsg0(100, "About to acquire device for writing\n");
    /* For we must now acquire the device for writing */
-   out_dev->r_dlock();
-   if (out_dev->open(out_jcr->dcr, OPEN_READ_WRITE) < 0) {
+   out_dev->rLock(false);
+   if (!out_dev->open(out_jcr->dcr, OPEN_READ_WRITE)) {
       Emsg1(M_FATAL, 0, _("dev open failed: %s\n"), out_dev->errmsg);
-      out_dev->dunlock();
+      out_dev->Unlock();
       exit(1);
    }
-   out_dev->dunlock();
+   out_dev->Unlock();
    if (!acquire_device_for_append(out_jcr->dcr)) {
       free_jcr(in_jcr);
       exit(1);
@@ -215,7 +213,7 @@ int main (int argc, char *argv[])
    ok = read_records(in_jcr->dcr, record_cb, mount_next_read_volume);
 
    if (ok || out_dev->can_write()) {
-      if (!write_block_to_device(out_jcr->dcr)) {
+      if (!out_jcr->dcr->write_block_to_device()) {
          Pmsg0(000, _("Write of last block failed.\n"));
       }
    }
@@ -273,10 +271,10 @@ static bool record_cb(DCR *in_dcr, DEV_RECORD *rec)
             /* Skipping record, because does not match BSR filter */
            return true;
         }
-         while (!write_record_to_block(out_block, rec)) {
+         while (!write_record_to_block(out_jcr->dcr, rec)) {
             Dmsg2(150, "!write_record_to_block data_len=%d rem=%d\n", rec->data_len,
                        rec->remainder);
-            if (!write_block_to_device(out_jcr->dcr)) {
+            if (!out_jcr->dcr->write_block_to_device()) {
                Dmsg2(90, "Got write_block_to_dev error on device %s: ERR=%s\n",
                   out_dev->print_name(), out_dev->bstrerror());
                Jmsg(out_jcr, M_FATAL, 0, _("Cannot fixup device error. %s\n"),
@@ -284,7 +282,7 @@ static bool record_cb(DCR *in_dcr, DEV_RECORD *rec)
                return false;
             }
          }
-         if (!write_block_to_device(out_jcr->dcr)) {
+         if (!out_jcr->dcr->write_block_to_device()) {
             Dmsg2(90, "Got write_block_to_dev error on device %s: ERR=%s\n",
                out_dev->print_name(), out_dev->bstrerror());
             Jmsg(out_jcr, M_FATAL, 0, _("Cannot fixup device error. %s\n"),
@@ -309,10 +307,10 @@ static bool record_cb(DCR *in_dcr, DEV_RECORD *rec)
       return true;
    }
    records++;
-   while (!write_record_to_block(out_block, rec)) {
+   while (!write_record_to_block(out_jcr->dcr, rec)) {
       Dmsg2(150, "!write_record_to_block data_len=%d rem=%d\n", rec->data_len,
                  rec->remainder);
-      if (!write_block_to_device(out_jcr->dcr)) {
+      if (!out_jcr->dcr->write_block_to_device()) {
          Dmsg2(90, "Got write_block_to_dev error on device %s: ERR=%s\n",
             out_dev->print_name(), out_dev->bstrerror());
          Jmsg(out_jcr, M_FATAL, 0, _("Cannot fixup device error. %s\n"),
diff --git a/src/stored/block.c b/src/stored/block.c
index e5ac219..e731320 100644
--- a/src/stored/block.c
+++ b/src/stored/block.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -38,6 +38,19 @@
 #include "bacula.h"
 #include "stored.h"
 
+#ifdef DEBUG_BLOCK_CHECKSUM
+static const bool debug_block_checksum = true;
+#else
+static const bool debug_block_checksum = false;
+#endif
+
+#ifdef NO_TAPE_WRITE_TEST
+static const bool no_tape_write_test = true;
+#else
+static const bool no_tape_write_test = false;
+#endif
+
+
 static bool terminate_writing_volume(DCR *dcr);
 static bool do_new_file_bookkeeping(DCR *dcr);
 static bool do_dvd_size_checks(DCR *dcr);
@@ -79,7 +92,7 @@ void dump_block(DEV_BLOCK *b, const char *msg)
       rhl = RECHDR1_LENGTH;
    }
 
-   if (block_len > 100000) {
+   if (block_len > 4000000) {
       Dmsg3(20, "Dump block %s 0x%x blocksize too big %u\n", msg, b, block_len);
       return;
    }
@@ -165,10 +178,12 @@ void print_block_read_errors(JCR *jcr, DEV_BLOCK *block)
  */
 void free_block(DEV_BLOCK *block)
 {
-   Dmsg1(999, "free_block buffer %x\n", block->buf);
-   free_memory(block->buf);
-   Dmsg1(999, "free_block block %x\n", block);
-   free_memory((POOLMEM *)block);
+   if (block) {
+      Dmsg1(999, "free_block buffer %x\n", block->buf);
+      free_memory(block->buf);
+      Dmsg1(999, "free_block block %x\n", block);
+      free_memory((POOLMEM *)block);
+   }
 }
 
 /* Empty the block -- for writing */
@@ -187,7 +202,7 @@ void empty_block(DEV_BLOCK *block)
  * in the buffer should have already been reserved by
  * init_block.
  */
-static void ser_block_header(DEV_BLOCK *block, bool do_checksum)
+static uint32_t ser_block_header(DEV_BLOCK *block, bool do_checksum)
 {
    ser_declare;
    uint32_t CheckSum = 0;
@@ -212,6 +227,7 @@ static void ser_block_header(DEV_BLOCK *block, bool do_checksum)
    Dmsg1(1390, "ser_bloc_header: checksum=%x\n", CheckSum);
    ser_begin(block->buf, BLKHDR2_LENGTH);
    ser_uint32(CheckSum);              /* now add checksum to block header */
+   return CheckSum;
 }
 
 /*
@@ -318,6 +334,7 @@ static bool unser_block_header(JCR *jcr, DEVICE *dev, DEV_BLOCK *block)
             block_len, BlockCheckSum, CheckSum);
          if (block->read_errors == 0 || verbose >= 2) {
             Jmsg(jcr, M_ERROR, 0, "%s", dev->errmsg);
+            dump_block(block, "with checksum error");
          }
          block->read_errors++;
          if (!forge_on) {
@@ -335,20 +352,20 @@ static bool unser_block_header(JCR *jcr, DEVICE *dev, DEV_BLOCK *block)
  *        : false on failure
  *
  */
-bool write_block_to_device(DCR *dcr)
+bool DCR::write_block_to_device()
 {
    bool stat = true;
-   DEVICE *dev = dcr->dev;
-   JCR *jcr = dcr->jcr;
+   DCR *dcr = this;
 
    if (dcr->spooling) {
+      Dmsg0(100, "Write to spool\n");
       stat = write_block_to_spool_file(dcr);
       return stat;
    }
 
    if (!dcr->is_dev_locked()) {        /* device already locked? */
       /* note, do not change this to dcr->r_dlock */
-      dev->r_dlock();                  /* no, lock it */
+      dev->rLock();                  /* no, lock it */
    }
 
    /*
@@ -360,6 +377,7 @@ bool write_block_to_device(DCR *dcr)
    if (dcr->NewVol || dcr->NewFile) {
       if (job_canceled(jcr)) {
          stat = false;
+         Dmsg0(100, "Canceled\n");
          goto bail_out;
       }
       /* Create a jobmedia record for this job */
@@ -369,6 +387,7 @@ bool write_block_to_device(DCR *dcr)
             dcr->getVolCatName(), jcr->Job);
          set_new_volume_parameters(dcr);
          stat = false;
+         Dmsg0(100, "cannot create media record\n");
          goto bail_out;
       }
       if (dcr->NewVol) {
@@ -379,7 +398,7 @@ bool write_block_to_device(DCR *dcr)
       }
    }
 
-   if (!write_block_to_dev(dcr)) {
+   if (!dcr->write_block_to_dev()) {
        if (job_canceled(jcr) || jcr->getJobType() == JT_SYSTEM) {
           stat = false;
        } else {
@@ -390,7 +409,7 @@ bool write_block_to_device(DCR *dcr)
 bail_out:
    if (!dcr->is_dev_locked()) {        /* did we lock dev above? */
       /* note, do not change this to dcr->dunlock */
-      dev->dunlock();                  /* unlock it now */
+      dev->Unlock();                  /* unlock it now */
    }
    return stat;
 }
@@ -401,20 +420,19 @@ bail_out:
  *  Returns: true  on success or EOT
  *           false on hard error
  */
-bool write_block_to_dev(DCR *dcr)
+bool DCR::write_block_to_dev()
 {
    ssize_t stat = 0;
    uint32_t wlen;                     /* length to write */
    int hit_max1, hit_max2;
    bool ok = true;
-   DEVICE *dev = dcr->dev;
-   JCR *jcr = dcr->jcr;
-   DEV_BLOCK *block = dcr->block;
+   DCR *dcr = this;
+   uint32_t checksum;
 
-#ifdef NO_TAPE_WRITE_TEST
-   empty_block(block);
-   return true;
-#endif
+   if (no_tape_write_test) {
+      empty_block(block);
+      return true;
+   }
    if (job_canceled(jcr)) {
       return false;
    }
@@ -432,18 +450,22 @@ bool write_block_to_dev(DCR *dcr)
       Dmsg0(100, "return write_block_to_dev with ST_WEOT\n");
       dev->dev_errno = ENOSPC;
       Jmsg1(jcr, M_FATAL, 0,  _("Cannot write block. Device at EOM. dev=%s\n"), dev->print_name());
+      Dmsg1(100, "Attempt to write on read-only Volume. dev=%s\n", dev->print_name());
       return false;
    }
    if (!dev->can_append()) {
       dev->dev_errno = EIO;
       Jmsg1(jcr, M_FATAL, 0, _("Attempt to write on read-only Volume. dev=%s\n"), dev->print_name());
+      Dmsg1(100, "Attempt to write on read-only Volume. dev=%s\n", dev->print_name());
       return false;
    }
-
+ 
    if (!dev->is_open()) {
       Jmsg1(jcr, M_FATAL, 0, _("Attempt to write on closed device=%s\n"), dev->print_name());
+      Dmsg1(100, "Attempt to write on closed device=%s\n", dev->print_name());
       return false;
    }
+
    /*
     * Clear to the end of the buffer if it is not full,
     *  and on tape devices, apply min and fixed blocking.
@@ -472,7 +494,7 @@ bool write_block_to_dev(DCR *dcr)
       }
    }
 
-   ser_block_header(block, dev->do_checksum());
+   checksum = ser_block_header(block, dev->do_checksum());
 
    /* Limit maximum Volume size to value specified by user */
    hit_max1 = (dev->max_volume_size > 0) &&
@@ -502,7 +524,7 @@ bool write_block_to_dev(DCR *dcr)
       dev->file_size = 0;             /* reset file size */
 
       if (!dev->weof(1)) {            /* write eof */
-         Dmsg0(190, "WEOF error in max file size.\n");
+         Dmsg0(50, "WEOF error in max file size.\n");
          Jmsg(jcr, M_FATAL, 0, _("Unable to write EOF. ERR=%s\n"), 
             dev->bstrerror());
          terminate_writing_volume(dcr);
@@ -552,6 +574,15 @@ bool write_block_to_dev(DCR *dcr)
 
    } while (stat == -1 && (errno == EBUSY || errno == EIO) && retry++ < 3);
 
+   if (debug_block_checksum) {
+      uint32_t achecksum = ser_block_header(block, dev->do_checksum());
+      if (checksum != achecksum) {
+         Jmsg2(jcr, M_ERROR, 0, _("Block checksum changed during write: before=%ud after=%ud\n"),
+            checksum, achecksum);
+         dump_block(block, "with checksum error");
+      }
+   }
+
 #ifdef DEBUG_BLOCK_ZEROING
    if (bp[0] == 0 && bp[1] == 0 && bp[2] == 0 && block->buf[12] == 0) {
       Jmsg0(jcr, M_ABORT, 0, _("Write block header zeroed.\n"));
@@ -690,7 +721,7 @@ static void reread_last_block(DCR *dcr)
          DEV_BLOCK *lblock = new_block(dev);
          /* Note, this can destroy dev->errmsg */
          dcr->block = lblock;
-         if (!read_block_from_dev(dcr, NO_BLOCK_NUMBER_CHECK)) {
+         if (!dcr->read_block_from_dev(NO_BLOCK_NUMBER_CHECK)) {
             Jmsg(jcr, M_ERROR, 0, _("Re-read last block at EOT failed. ERR=%s"), 
                  dev->errmsg);
          } else {
@@ -733,10 +764,11 @@ static bool terminate_writing_volume(DCR *dcr)
    /* Create a JobMedia record to indicated end of tape */
    dev->VolCatInfo.VolCatFiles = dev->file;
    if (!dir_create_jobmedia_record(dcr)) {
-      Dmsg0(190, "Error from create JobMedia\n");
+      Dmsg0(50, "Error from create JobMedia\n");
       dev->dev_errno = EIO;
-       Jmsg2(dcr->jcr, M_FATAL, 0, _("Could not create JobMedia record for Volume=\"%s\" Job=%s\n"),
+        Mmsg2(dev->errmsg, _("Could not create JobMedia record for Volume=\"%s\" Job=%s\n"),
             dcr->getVolCatName(), dcr->jcr->Job);
+       Jmsg(dcr->jcr, M_FATAL, 0, "%s", dev->errmsg);
        ok = false;
    }
    dcr->block->write_failed = true;
@@ -745,7 +777,7 @@ static bool terminate_writing_volume(DCR *dcr)
       Jmsg(dcr->jcr, M_ERROR, 0, _("Error writing final EOF to tape. This Volume may not be readable.\n"
            "%s"), dev->errmsg);
       ok = false;
-      Dmsg0(100, "WEOF error.\n");
+      Dmsg0(50, "Error writing final EOF to volume.\n");
    }
    if (ok) {
       ok = write_ansi_ibm_labels(dcr, ANSI_EOV_LABEL, dev->VolHdr.VolumeName);
@@ -766,9 +798,11 @@ static bool terminate_writing_volume(DCR *dcr)
    }
    
    if (!dir_update_volume_info(dcr, false, true)) {
+      Mmsg(dev->errmsg, _("Error sending Volume info to Director.\n"));
       ok = false;
+      Dmsg0(50, "Error updating volume info.\n");
    }
-   Dmsg1(100, "dir_update_volume_info terminate writing -- %s\n", ok?"OK":"ERROR");
+   Dmsg1(50, "dir_update_volume_info terminate writing -- %s\n", ok?"OK":"ERROR");
 
    /*
     * Walk through all attached dcrs setting flag to call
@@ -788,6 +822,7 @@ static bool terminate_writing_volume(DCR *dcr)
       dev->VolCatInfo.VolCatErrors++;
       /* This may not be fatal since we already wrote an EOF */
       Jmsg(dcr->jcr, M_ERROR, 0, "%s", dev->errmsg);
+      Dmsg0(50, "Writing second EOF failed.\n");
    }
 
    dev->set_ateot();                  /* no more writing this tape */
@@ -807,7 +842,7 @@ static bool do_new_file_bookkeeping(DCR *dcr)
 
    /* Create a JobMedia record so restore can seek */
    if (!dir_create_jobmedia_record(dcr)) {
-      Dmsg0(190, "Error from create_job_media.\n");
+      Dmsg0(50, "Error from create_job_media.\n");
       dev->dev_errno = EIO;
       Jmsg2(jcr, M_FATAL, 0, _("Could not create JobMedia record for Volume=\"%s\" Job=%s\n"),
            dcr->getVolCatName(), jcr->Job);
@@ -817,7 +852,7 @@ static bool do_new_file_bookkeeping(DCR *dcr)
    }
    dev->VolCatInfo.VolCatFiles = dev->file;
    if (!dir_update_volume_info(dcr, false, false)) {
-      Dmsg0(190, "Error from update_vol_info.\n");
+      Dmsg0(50, "Error from update_vol_info.\n");
       terminate_writing_volume(dcr);
       dev->dev_errno = EIO;
       return false;
@@ -917,14 +952,14 @@ static bool do_dvd_size_checks(DCR *dcr)
  * Read block with locking
  *
  */
-bool read_block_from_device(DCR *dcr, bool check_block_numbers)
+bool DCR::read_block_from_device(bool check_block_numbers)
 {
    bool ok;
-   DEVICE *dev = dcr->dev;
+
    Dmsg0(250, "Enter read_block_from_device\n");
-   dev->r_dlock();
-   ok = read_block_from_dev(dcr, check_block_numbers);
-   dev->dunlock();
+   dev->rLock();
+   ok = read_block_from_dev(check_block_numbers);
+   dev->Unlock();
    Dmsg0(250, "Leave read_block_from_device\n");
    return ok;
 }
@@ -934,27 +969,35 @@ bool read_block_from_device(DCR *dcr, bool check_block_numbers)
  *  the block header.  For a file, the block may be partially
  *  or completely in the current buffer.
  */
-bool read_block_from_dev(DCR *dcr, bool check_block_numbers)
+bool DCR::read_block_from_dev(bool check_block_numbers)
 {
    ssize_t stat;
    int looping;
    int retry;
-   JCR *jcr = dcr->jcr;
-   DEVICE *dev = dcr->dev;
-   DEV_BLOCK *block = dcr->block;
+   DCR *dcr = this;
 
    if (job_canceled(jcr)) {
+      Mmsg(dev->errmsg, _("Job failed or canceled.\n"));
+      block->read_len = 0;
       return false;
    }
    
    if (dev->at_eot()) {
+      Mmsg(dev->errmsg, _("Attempt to read past end of tape or file.\n"));
+      block->read_len = 0;
       return false;
    }
    looping = 0;
    Dmsg1(250, "Full read in read_block_from_device() len=%d\n",
          block->buf_len);
 
-// ASSERT(dev->is_open());
+   if (!dev->is_open()) {
+      Mmsg4(dev->errmsg, _("Attempt to read closed device: fd=%d at file:blk %u:%u on device %s\n"),
+         dev->fd(), dev->file, dev->block_num, dev->print_name());
+      Jmsg(dcr->jcr, M_WARNING, 0, "%s", dev->errmsg);
+      block->read_len = 0;
+      return false;
+    }
 
 reread:
    if (looping > 1) {
@@ -971,8 +1014,9 @@ reread:
         dev->part <= dev->num_dvd_parts) {
       Dmsg0(400, "Call dvd_open_next_part\n");
       if (dvd_open_next_part(dcr) < 0) {
-         Jmsg3(dcr->jcr, M_FATAL, 0, _("Unable to open device part=%d %s: ERR=%s\n"),
+         Mmsg3(dev->errmsg, _("Unable to open device part=%d %s: ERR=%s\n"),
                dev->part, dev->print_name(), dev->bstrerror());
+         Jmsg(dcr->jcr, M_FATAL, 0, "%s", dev->errmsg);
          dev->dev_errno = EIO;
          return false;
       }
@@ -1039,6 +1083,7 @@ reread:
       Jmsg(jcr, M_ERROR, 0, "%s", dev->errmsg);
       dev->set_short_block();   
       block->read_len = block->binbuf = 0;
+      Dmsg2(200, "set block=%p binbuf=%d\n", block, block->binbuf);
       return false;             /* return error */
    }
 
@@ -1067,7 +1112,8 @@ reread:
       if (dev->is_tape()) {
          Dmsg0(250, "BSR for reread; block too big for buffer.\n");
          if (!dev->bsr(1)) {
-            Jmsg(jcr, M_ERROR, 0, "%s", dev->bstrerror());
+            Mmsg(dev->errmsg, "%s", dev->bstrerror());
+            Jmsg(jcr, M_ERROR, 0, "%s", dev->errmsg);
             block->read_len = 0;
             return false;
          }
diff --git a/src/stored/block.h b/src/stored/block.h
index 1dd9721..320058d 100644
--- a/src/stored/block.h
+++ b/src/stored/block.h
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -57,13 +57,12 @@
 #define WRITE_RECHDR_LENGTH RECHDR2_LENGTH
 
 /* Tape label and version definitions */
-#define BaculaId    "Bacula 1.0 immortal\n"
-#define OldBaculaId "Bacula 0.9 mortal\n"
-#define BaculaTapeVersion 11
+#define BaculaId         "Bacula 1.0 immortal\n"
+#define OldBaculaId      "Bacula 0.9 mortal\n"
+#define BaculaTapeVersion                11
 #define OldCompatibleBaculaTapeVersion1  10
 #define OldCompatibleBaculaTapeVersion2   9
 
-
 /*
  * This is the Media structure for a block header
  *  Note, when written, it is serialized.
diff --git a/src/stored/bls.c b/src/stored/bls.c
index 77fa78e..771f855 100644
--- a/src/stored/bls.c
+++ b/src/stored/bls.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -283,7 +283,7 @@ static void do_blocks(char *infname)
    DEV_BLOCK *block = dcr->block;
    char buf1[100], buf2[100];
    for ( ;; ) {
-      if (!read_block_from_device(dcr, NO_BLOCK_NUMBER_CHECK)) {
+      if (!dcr->read_block_from_device(NO_BLOCK_NUMBER_CHECK)) {
          Dmsg1(100, "!read_block(): ERR=%s\n", dev->bstrerror());
          if (dev->at_eot()) {
             if (!mount_next_read_volume(dcr)) {
@@ -294,8 +294,8 @@ static void do_blocks(char *infname)
             /* Read and discard Volume label */
             DEV_RECORD *record;
             record = new_record();
-            read_block_from_device(dcr, NO_BLOCK_NUMBER_CHECK);
-            read_record_from_block(dcr, block, record);
+            dcr->read_block_from_device(NO_BLOCK_NUMBER_CHECK);
+            read_record_from_block(dcr, record);
             get_session_record(dev, record, &sessrec);
             free_record(record);
             Jmsg(jcr, M_INFO, 0, _("Mounted Volume \"%s\".\n"), dcr->VolumeName);
@@ -323,7 +323,7 @@ static void do_blocks(char *infname)
         block->BlockNumber, block->block_len, block->BlockVer,
         block->VolSessionId, block->VolSessionTime);
       if (verbose == 1) {
-         read_record_from_block(dcr, block, rec);
+         read_record_from_block(dcr, rec);
          Pmsg9(-1, _("File:blk=%u:%u blk_num=%u blen=%u First rec FI=%s SessId=%u SessTim=%u Strm=%s rlen=%d\n"),
               dev->file, dev->block_num,
               block->BlockNumber, block->block_len,
diff --git a/src/stored/bscan.c b/src/stored/bscan.c
index 93b118d..e0f635f 100644
--- a/src/stored/bscan.c
+++ b/src/stored/bscan.c
@@ -839,9 +839,13 @@ static bool record_cb(DCR *dcr, DEV_RECORD *rec)
    case STREAM_ACL_AIX_AIXC:
    case STREAM_ACL_AIX_NFS4:
    case STREAM_ACL_FREEBSD_NFS4_ACL:
+   case STREAM_ACL_HURD_DEFAULT_ACL:
+   case STREAM_ACL_HURD_ACCESS_ACL:
       /* Ignore Unix ACL attributes */
       break;
 
+   case STREAM_XATTR_HURD:
+   case STREAM_XATTR_IRIX:
    case STREAM_XATTR_TRU64:
    case STREAM_XATTR_AIX:
    case STREAM_XATTR_OPENBSD:
diff --git a/src/stored/btape.c b/src/stored/btape.c
index 03c70b3..a3f751c 100644
--- a/src/stored/btape.c
+++ b/src/stored/btape.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -467,9 +467,9 @@ static bool open_the_device()
    bool ok = true;
 
    block = new_block(dev);
-   dev->r_dlock();
+   dev->rLock();
    Dmsg1(200, "Opening device %s\n", dcr->VolumeName);
-   if (dev->open(dcr, OPEN_READ_WRITE) < 0) {
+   if (!dev->open(dcr, OPEN_READ_WRITE)) {
       Emsg1(M_FATAL, 0, _("dev open failed: %s\n"), dev->errmsg);
       ok = false;
       goto bail_out;
@@ -478,7 +478,7 @@ static bool open_the_device()
    dev->set_append();                 /* put volume in append mode */
 
 bail_out:
-   dev->dunlock();
+   dev->Unlock();
    free_block(block);
    return ok;
 }
@@ -733,7 +733,7 @@ static void capcmd()
  */
 static void rectestcmd()
 {
-   DEV_BLOCK *block;
+   DEV_BLOCK *save_block;
    DEV_RECORD *rec;
    int i, blkno = 0;
 
@@ -750,7 +750,8 @@ static void rectestcmd()
    }
 
    Dsm_check(200);
-   block = new_block(dev);
+   save_block = dcr->block;
+   dcr->block = new_block(dev);
    rec = new_record();
 
    for (i=1; i<500000; i++) {
@@ -758,8 +759,8 @@ static void rectestcmd()
       memset(rec->data, i & 0xFF, i);
       rec->data_len = i;
       Dsm_check(200);
-      if (write_record_to_block(block, rec)) {
-         empty_block(block);
+      if (write_record_to_block(dcr, rec)) {
+         empty_block(dcr->block);
          blkno++;
          Pmsg2(0, _("Block %d i=%d\n"), blkno, i);
       } else {
@@ -768,7 +769,8 @@ static void rectestcmd()
       Dsm_check(200);
    }
    free_record(rec);
-   free_block(block);
+   free_block(dcr->block);
+   dcr->block = save_block;     /* restore block to dcr */
    Dsm_check(200);
 }
 
@@ -803,33 +805,33 @@ static bool re_read_block_test()
    rec->data = check_pool_memory_size(rec->data, block->buf_len);
    len = rec->data_len = block->buf_len-100;
    memset(rec->data, 1, rec->data_len);
-   if (!write_record_to_block(block, rec)) {
+   if (!write_record_to_block(dcr, rec)) {
       Pmsg0(0, _("Error writing record to block.\n"));
       goto bail_out;
    }
-   if (!write_block_to_dev(dcr)) {
+   if (!dcr->write_block_to_dev()) {
       Pmsg0(0, _("Error writing block to device.\n"));
       goto bail_out;
    } else {
       Pmsg1(0, _("Wrote first record of %d bytes.\n"), rec->data_len);
    }
    memset(rec->data, 2, rec->data_len);
-   if (!write_record_to_block(block, rec)) {
+   if (!write_record_to_block(dcr, rec)) {
       Pmsg0(0, _("Error writing record to block.\n"));
       goto bail_out;
    }
-   if (!write_block_to_dev(dcr)) {
+   if (!dcr->write_block_to_dev()) {
       Pmsg0(0, _("Error writing block to device.\n"));
       goto bail_out;
    } else {
       Pmsg1(0, _("Wrote second record of %d bytes.\n"), rec->data_len);
    }
    memset(rec->data, 3, rec->data_len);
-   if (!write_record_to_block(block, rec)) {
+   if (!write_record_to_block(dcr, rec)) {
       Pmsg0(0, _("Error writing record to block.\n"));
       goto bail_out;
    }
-   if (!write_block_to_dev(dcr)) {
+   if (!dcr->write_block_to_dev()) {
       Pmsg0(0, _("Error writing block to device.\n"));
       goto bail_out;
    } else {
@@ -855,13 +857,13 @@ static bool re_read_block_test()
       goto bail_out;
    }
    Pmsg0(0, _("Backspace record OK.\n"));
-   if (!read_block_from_dev(dcr, NO_BLOCK_NUMBER_CHECK)) {
+   if (!dcr->read_block_from_dev(NO_BLOCK_NUMBER_CHECK)) {
       berrno be;
       Pmsg1(0, _("Read block failed! ERR=%s\n"), be.bstrerror(dev->dev_errno));
       goto bail_out;
    }
    memset(rec->data, 0, rec->data_len);
-   if (!read_record_from_block(dcr, block, rec)) {
+   if (!read_record_from_block(dcr, rec)) {
       berrno be;
       Pmsg1(0, _("Read block failed! ERR=%s\n"), be.bstrerror(dev->dev_errno));
       goto bail_out;
@@ -965,11 +967,11 @@ static bool speed_test_bacula(fill_mode_t mode, uint64_t nb_gb, uint32_t nb)
       init_speed();
       for ( ; written < nb_gb; ) {
 
-         if (!write_record_to_block(block, rec)) {
+         if (!write_record_to_block(dcr, rec)) {
             Pmsg0(0, _("\nError writing record to block.\n"));
             goto bail_out;
          }
-         if (!write_block_to_dev(dcr)) {
+         if (!dcr->write_block_to_dev()) {
             Pmsg0(0, _("\nError writing block to device.\n"));
             goto bail_out;
          }
@@ -1143,11 +1145,11 @@ static bool write_two_files()
       for (j=0; j<len; j++) {
          *p++ = i;
       }
-      if (!write_record_to_block(block, rec)) {
+      if (!write_record_to_block(dcr, rec)) {
          Pmsg0(0, _("Error writing record to block.\n"));
          goto bail_out;
       }
-      if (!write_block_to_dev(dcr)) {
+      if (!dcr->write_block_to_dev()) {
          Pmsg0(0, _("Error writing block to device.\n"));
          goto bail_out;
       }
@@ -1159,11 +1161,11 @@ static bool write_two_files()
       for (j=0; j<len; j++) {
          *p++ = i;
       }
-      if (!write_record_to_block(block, rec)) {
+      if (!write_record_to_block(dcr, rec)) {
          Pmsg0(0, _("Error writing record to block.\n"));
          goto bail_out;
       }
-      if (!write_block_to_dev(dcr)) {
+      if (!dcr->write_block_to_dev()) {
          Pmsg0(0, _("Error writing block to device.\n"));
          goto bail_out;
       }
@@ -1220,7 +1222,7 @@ static bool write_read_test()
    /* Now read it back */
    for (i=1; i<=2*num_recs; i++) {
 read_again:
-      if (!read_block_from_dev(dcr, NO_BLOCK_NUMBER_CHECK)) {
+      if (!dcr->read_block_from_dev(NO_BLOCK_NUMBER_CHECK)) {
          berrno be;
          if (dev_state(dev, ST_EOF)) {
             Pmsg0(-1, _("Got EOF on tape.\n"));
@@ -1232,7 +1234,7 @@ read_again:
          goto bail_out;
       }
       memset(rec->data, 0, rec->data_len);
-      if (!read_record_from_block(dcr, block, rec)) {
+      if (!read_record_from_block(dcr, rec)) {
          berrno be;
          Pmsg2(0, _("Read record failed. Block %d! ERR=%s\n"), i, be.bstrerror(dev->dev_errno));
          goto bail_out;
@@ -1339,7 +1341,7 @@ static bool position_test()
          goto bail_out;
       }
 read_again:
-      if (!read_block_from_dev(dcr, NO_BLOCK_NUMBER_CHECK)) {
+      if (!dcr->read_block_from_dev(NO_BLOCK_NUMBER_CHECK)) {
          berrno be;
          if (dev_state(dev, ST_EOF)) {
             Pmsg0(-1, _("Got EOF on tape.\n"));
@@ -1364,7 +1366,7 @@ read_again:
          goto bail_out;
       }
       memset(rec->data, 0, rec->data_len);
-      if (!read_record_from_block(dcr, block, rec)) {
+      if (!read_record_from_block(dcr, rec)) {
          berrno be;
          Pmsg1(0, _("Read record failed! ERR=%s\n"), be.bstrerror(dev->dev_errno));
          goto bail_out;
@@ -1874,7 +1876,7 @@ static void fsrcmd()
 static void rbcmd()
 {
    dev->open(dcr, OPEN_READ_ONLY);
-   read_block_from_dev(dcr, NO_BLOCK_NUMBER_CHECK);  
+   dcr->read_block_from_dev(NO_BLOCK_NUMBER_CHECK);
 }
 
 /*
@@ -1901,11 +1903,11 @@ static void wrcmd()
    memset(rec->data, i & 0xFF, i);
    rec->data_len = i;
    Dsm_check(200);
-   if (!write_record_to_block(block, rec)) {
+   if (!write_record_to_block(dcr, rec)) {
       Pmsg0(0, _("Error writing record to block.\n"));
       goto bail_out;
    }
-   if (!write_block_to_dev(dcr)) {
+   if (!dcr->write_block_to_dev()) {
       Pmsg0(0, _("Error writing block to device.\n"));
       goto bail_out;
    } else {
@@ -2050,7 +2052,7 @@ static void scan_blocks()
    dev->update_pos(dcr);
    tot_files = dev->file;
    for (;;) {
-      if (!read_block_from_device(dcr, NO_BLOCK_NUMBER_CHECK)) {
+      if (!dcr->read_block_from_device(NO_BLOCK_NUMBER_CHECK)) {
          Dmsg1(100, "!read_block(): ERR=%s\n", dev->bstrerror());
          if (dev->state & ST_EOT) {
             if (blocks > 0) {
@@ -2113,7 +2115,7 @@ static void scan_blocks()
          block->VolSessionId, block->VolSessionTime);
       if (verbose == 1) {
          DEV_RECORD *rec = new_record();
-         read_record_from_block(dcr, block, rec);
+         read_record_from_block(dcr, rec);
          Pmsg9(-1, _("Block=%u file,blk=%u,%u blen=%u First rec FI=%s SessId=%u SessTim=%u Strm=%s rlen=%d\n"),
               block->BlockNumber, dev->file, dev->block_num, block->block_len,
               FI_to_ascii(buf1, rec->FileIndex), rec->VolSessionId, rec->VolSessionTime,
@@ -2272,7 +2274,7 @@ static void fillcmd()
          stream_to_ascii(buf1, rec.Stream, rec.FileIndex),
          rec.data_len);
 
-      while (!write_record_to_block(block, &rec)) {
+      while (!write_record_to_block(dcr, &rec)) {
          /*
           * When we get here we have just filled a block
           */
@@ -2354,7 +2356,7 @@ static void fillcmd()
          exit_code = 1;
       }
       /* Write out final block of this session */
-      if (!write_block_to_device(dcr)) {
+      if (!dcr->write_block_to_device()) {
          Pmsg0(-1, _("Set ok=false after write_block_to_device.\n"));
          ok = false;
          exit_code = 1;
@@ -2552,7 +2554,7 @@ static bool do_unfill()
       goto bail_out;
    }
    Pmsg1(-1, _("Reading block %u.\n"), last_block_num);
-   if (!read_block_from_device(dcr, NO_BLOCK_NUMBER_CHECK)) {
+   if (!dcr->read_block_from_device(NO_BLOCK_NUMBER_CHECK)) {
       Pmsg1(-1, _("Error reading block: ERR=%s\n"), dev->bstrerror());
       goto bail_out;
    }
@@ -2604,7 +2606,7 @@ static bool do_unfill()
       goto bail_out;
    }
    Pmsg1(-1, _("Reading block %d.\n"), dev->block_num);
-   if (!read_block_from_device(dcr, NO_BLOCK_NUMBER_CHECK)) {
+   if (!dcr->read_block_from_device(NO_BLOCK_NUMBER_CHECK)) {
       Pmsg1(-1, _("Error reading block: ERR=%s\n"), dev->bstrerror());
       goto bail_out;
    }
@@ -2620,7 +2622,7 @@ static bool do_unfill()
       goto bail_out;
    }
    Pmsg1(-1, _("Reading block %d.\n"), dev->block_num);
-   if (!read_block_from_device(dcr, NO_BLOCK_NUMBER_CHECK)) {
+   if (!dcr->read_block_from_device(NO_BLOCK_NUMBER_CHECK)) {
       Pmsg1(-1, _("Error reading block: ERR=%s\n"), dev->bstrerror());
       goto bail_out;
    }
@@ -2697,7 +2699,7 @@ static int flush_block(DEV_BLOCK *block, int dump)
    DEV_BLOCK *tblock;
    uint32_t this_file, this_block_num;
 
-   dev->r_dlock();
+   dev->rLock();
    if (!this_block) {
       this_block = new_block(dev);
    }
@@ -2707,7 +2709,7 @@ static int flush_block(DEV_BLOCK *block, int dump)
    /* Copy block */
    this_file = dev->file;
    this_block_num = dev->block_num;
-   if (!write_block_to_dev(dcr)) {
+   if (!dcr->write_block_to_dev()) {
       Pmsg3(000, _("Last block at: %u:%u this_dev_block_num=%d\n"),
                   last_file, last_block_num, this_block_num);
       if (vol_num == 1) {
@@ -2753,12 +2755,12 @@ static int flush_block(DEV_BLOCK *block, int dump)
          if (!fixup_device_block_write_error(jcr->dcr)) {
             Pmsg1(000, _("Cannot fixup device error. %s\n"), dev->bstrerror());
             ok = false;
-            dev->dunlock();
+            dev->Unlock();
             return 0;
          }
          BlockNumber = 0;             /* start counting for second tape */
       }
-      dev->dunlock();
+      dev->Unlock();
       return 1;                       /* end of tape reached */
    }
 
@@ -2777,7 +2779,7 @@ static int flush_block(DEV_BLOCK *block, int dump)
    last_file = this_file;
    last_block_num = this_block_num;
 
-   dev->dunlock();
+   dev->Unlock();
    return 1;
 }
 
@@ -2817,11 +2819,11 @@ static void qfillcmd()
          printf("+");
          fflush(stdout);
       }
-      if (!write_record_to_block(block, rec)) {
+      if (!write_record_to_block(dcr, rec)) {
          Pmsg0(0, _("Error writing record to block.\n"));
          goto bail_out;
       }
-      if (!write_block_to_dev(dcr)) {
+      if (!dcr->write_block_to_dev()) {
          Pmsg0(0, _("Error writing block to device.\n"));
          goto bail_out;
       }
diff --git a/src/stored/butil.c b/src/stored/butil.c
index 8d1f9c3..f6385f7 100644
--- a/src/stored/butil.c
+++ b/src/stored/butil.c
@@ -51,23 +51,23 @@ static void my_free_jcr(JCR *jcr);
 extern char *configfile;
 
 #ifdef DEBUG
-char *rec_state_to_str(DEV_RECORD *rec)
+char *rec_state_bits_to_str(DEV_RECORD *rec)
 {
    static char buf[200];
    buf[0] = 0;
-   if (rec->state & REC_NO_HEADER) {
+   if (rec->state_bits & REC_NO_HEADER) {
       strcat(buf, _("Nohdr,"));
    }
    if (is_partial_record(rec)) {
       strcat(buf, _("partial,"));
    }
-   if (rec->state & REC_BLOCK_EMPTY) {
+   if (rec->state_bits & REC_BLOCK_EMPTY) {
       strcat(buf, _("empty,"));
    }
-   if (rec->state & REC_NO_MATCH) {
+   if (rec->state_bits & REC_NO_MATCH) {
       strcat(buf, _("Nomatch,"));
    }
-   if (rec->state & REC_CONTINUATION) {
+   if (rec->state_bits & REC_CONTINUATION) {
       strcat(buf, _("cont,"));
    }
    if (buf[0]) {
diff --git a/src/stored/dev.c b/src/stored/dev.c
index 8bf46d3..3d4e44b 100644
--- a/src/stored/dev.c
+++ b/src/stored/dev.c
@@ -32,7 +32,7 @@
  *              Kern Sibbald, MM
  *
  *     NOTE!!!! None of these routines are reentrant. You must
- *        use dev->r_dlock() and dev->unlock() at a higher level,
+ *        use dev->rLock() and dev->Unlock() at a higher level,
  *        or use the xxx_device() equivalents.  By moving the
  *        thread synchronization to a higher level, we permit
  *        the higher level routines to "seize" the device and
@@ -89,6 +89,7 @@
 void set_os_device_parameters(DCR *dcr);   
 static bool dev_get_os_pos(DEVICE *dev, struct mtget *mt_stat);
 static const char *mode_to_str(int mode);
+static DEVICE *m_init_dev(JCR *jcr, DEVRES *device, bool new_init);
 
 /*
  * Allocate and initialize the DEVICE structure
@@ -104,6 +105,13 @@ static const char *mode_to_str(int mode);
 DEVICE *
 init_dev(JCR *jcr, DEVRES *device)
 {
+   DEVICE *dev = m_init_dev(jcr, device, false);
+   return dev;
+}
+
+static DEVICE *
+m_init_dev(JCR *jcr, DEVRES *device, bool new_init)
+{
    struct stat statp;
    int errstat;
    DCR *dcr = NULL;
@@ -196,6 +204,7 @@ init_dev(JCR *jcr, DEVRES *device)
    dev->drive_index = device->drive_index;
    dev->autoselect = device->autoselect;
    dev->dev_type = device->dev_type;
+   dev->device = device;
    if (dev->is_tape()) { /* No parts on tapes */
       dev->max_part_size = 0;
    } else {
@@ -205,8 +214,6 @@ init_dev(JCR *jcr, DEVRES *device)
    if (dev->vol_poll_interval && dev->vol_poll_interval < 60) {
       dev->vol_poll_interval = 60;
    }
-   /* Link the dev and device structures together */
-   dev->device = device;
    device->dev = dev;
 
    if (dev->is_fifo()) {
@@ -257,7 +264,7 @@ init_dev(JCR *jcr, DEVRES *device)
    dev->errmsg = get_pool_memory(PM_EMSG);
    *dev->errmsg = 0;
 
-   if ((errstat = pthread_mutex_init(&dev->m_mutex, NULL)) != 0) {
+   if ((errstat = dev->init_mutex()) != 0) {
       berrno be;
       dev->dev_errno = errstat;
       Mmsg1(dev->errmsg, _("Unable to init mutex: ERR=%s\n"), be.bstrerror(errstat));
@@ -278,25 +285,25 @@ init_dev(JCR *jcr, DEVRES *device)
    if ((errstat = pthread_mutex_init(&dev->spool_mutex, NULL)) != 0) {
       berrno be;
       dev->dev_errno = errstat;
-      Mmsg1(dev->errmsg, _("Unable to init mutex: ERR=%s\n"), be.bstrerror(errstat));
+      Mmsg1(dev->errmsg, _("Unable to init spool mutex: ERR=%s\n"), be.bstrerror(errstat));
       Jmsg0(jcr, M_ERROR_TERM, 0, dev->errmsg);
    }
-   if ((errstat = pthread_mutex_init(&dev->acquire_mutex, NULL)) != 0) {
+   if ((errstat = dev->init_acquire_mutex()) != 0) {
       berrno be;
       dev->dev_errno = errstat;
-      Mmsg1(dev->errmsg, _("Unable to init mutex: ERR=%s\n"), be.bstrerror(errstat));
+      Mmsg1(dev->errmsg, _("Unable to init acquire mutex: ERR=%s\n"), be.bstrerror(errstat));
       Jmsg0(jcr, M_ERROR_TERM, 0, dev->errmsg);
    }
-   /* Ensure that we respect this order in P/V operations */
-   bthread_mutex_set_priority(&dev->m_mutex,       PRIO_SD_DEV_ACCESS);
-   bthread_mutex_set_priority(&dev->spool_mutex,   PRIO_SD_DEV_SPOOL);
-   bthread_mutex_set_priority(&dev->acquire_mutex, PRIO_SD_DEV_ACQUIRE);
-   if ((errstat = pthread_mutex_init(&dev->read_acquire_mutex, NULL)) != 0) {
+   if ((errstat = dev->init_read_acquire_mutex()) != 0) {
       berrno be;
       dev->dev_errno = errstat;
-      Mmsg1(dev->errmsg, _("Unable to init mutex: ERR=%s\n"), be.bstrerror(errstat));
+      Mmsg1(dev->errmsg, _("Unable to init read acquire mutex: ERR=%s\n"), be.bstrerror(errstat));
       Jmsg0(jcr, M_ERROR_TERM, 0, dev->errmsg);
    }
+
+   dev->set_mutex_priorities();
+
+
 #ifdef xxx
    if ((errstat = rwl_init(&dev->lock)) != 0) {
       berrno be;
@@ -344,8 +351,8 @@ ssize_t DEVICE::d_write(int fd, const void *buffer, size_t count)
  * Open the device with the operating system and
  * initialize buffer pointers.
  *
- * Returns:  -1  on error
- *           fd  on success
+ * Returns:  true on success
+ *           false on error
  *
  * Note, for a tape, the VolName is the name we give to the
  *    volume (not really used here), but for a file, the
@@ -353,13 +360,13 @@ ssize_t DEVICE::d_write(int fd, const void *buffer, size_t count)
  *    In the case of a file, the full name is the device name
  *    (archive_name) with the VolName concatenated.
  */
-int
+bool
 DEVICE::open(DCR *dcr, int omode)
 {
    int preserve = 0;
    if (is_open()) {
       if (openmode == omode) {
-         return m_fd;
+         return true;
       } else {
          d_close(m_fd);
          clear_opened();
@@ -387,7 +394,7 @@ DEVICE::open(DCR *dcr, int omode)
    }
    state |= preserve;                 /* reset any important state info */
    Dmsg2(100, "preserve=0x%x fd=%d\n", preserve, m_fd);
-   return m_fd;
+   return m_fd >= 0;
 }
 
 void DEVICE::set_mode(int new_mode) 
@@ -521,7 +528,7 @@ void DEVICE::open_device(DCR *dcr, int omode)
 }
 
 /*
- * Open a file device
+ * Open a file device.
  */
 void DEVICE::open_file_device(DCR *dcr, int omode) 
 {
@@ -567,8 +574,8 @@ void DEVICE::open_file_device(DCR *dcr, int omode)
       Mmsg2(errmsg, _("Could not open: %s, ERR=%s\n"), archive_name.c_str(), 
             be.bstrerror());
       Dmsg1(100, "open failed: %s", errmsg);
-//    Jmsg1(NULL, M_WARNING, 0, "%s", errmsg);
-   } else {
+   }
+   if (m_fd >= 0) {
       dev_errno = 0;
       file = 0;
       file_addr = 0;
@@ -1407,6 +1414,7 @@ void DEVICE::lock_door()
 {
 #ifdef MTLOCK
    struct mtop mt_com;
+   if (!is_tape()) return;
    mt_com.mt_op = MTLOCK;
    mt_com.mt_count = 1;
    d_ioctl(m_fd, MTIOCTOP, (char *)&mt_com);
@@ -1417,6 +1425,7 @@ void DEVICE::unlock_door()
 {
 #ifdef MTUNLOCK
    struct mtop mt_com;
+   if (!is_tape()) return;
    mt_com.mt_op = MTUNLOCK;
    mt_com.mt_count = 1;
    d_ioctl(m_fd, MTIOCTOP, (char *)&mt_com);
@@ -1497,7 +1506,7 @@ bool DEVICE::reposition(DCR *dcr, uint32_t rfile, uint32_t rblock)
       return fsr(rblock-block_num);
    } else {
       while (rblock > block_num) {
-         if (!read_block_from_dev(dcr, NO_BLOCK_NUMBER_CHECK)) {
+         if (!dcr->read_block_from_dev(NO_BLOCK_NUMBER_CHECK)) {
             berrno be;
             dev_errno = errno;
             Dmsg2(30, "Failed to find requested block on %s: ERR=%s",
@@ -1747,7 +1756,8 @@ void DEVICE::close()
    case B_VTL_DEV:
    case B_VTAPE_DEV:
    case B_TAPE_DEV:
-      unlock_door(); 
+      unlock_door();
+      /* Fall through wanted */
    default:
       d_close(m_fd);
       break;
@@ -1812,10 +1822,13 @@ boffset_t DEVICE::lseek(DCR *dcr, boffset_t offset, int whence)
    return -1;
 }
 
-
+/*
+ * Truncate a volume.
+ */
 bool DEVICE::truncate(DCR *dcr) /* We need the DCR for DVD-writing */
 {
    struct stat st;
+   DEVICE *dev = this;
 
    Dmsg1(100, "truncate %s\n", print_name());
    switch (dev_type) {
@@ -1825,62 +1838,64 @@ bool DEVICE::truncate(DCR *dcr) /* We need the DCR for DVD-writing */
       /* maybe we should rewind and write and eof ???? */
       return true;                    /* we don't really truncate tapes */
    case B_FILE_DEV:
-      if (ftruncate(m_fd, 0) != 0) {
-         berrno be;
-         Mmsg2(errmsg, _("Unable to truncate device %s. ERR=%s\n"), 
-               print_name(), be.bstrerror());
-         return false;
-      }
-          
-      /*
-       * Check for a successful ftruncate() and issue a work-around for devices 
-       * (mostly cheap NAS) that don't support truncation. 
-       * Workaround supplied by Martin Schmid as a solution to bug #1011.
-       * 1. close file
-       * 2. delete file
-       * 3. open new file with same mode
-       * 4. change ownership to original
-       */
-
-      if (fstat(m_fd, &st) != 0) {
-         berrno be;
-         Mmsg2(errmsg, _("Unable to stat device %s. ERR=%s\n"), 
-               print_name(), be.bstrerror());
-         return false;
-      }
-          
-      if (st.st_size != 0) {             /* ftruncate() didn't work */
-         POOL_MEM archive_name(PM_FNAME);
-                
-         pm_strcpy(archive_name, dev_name);
-         if (!IsPathSeparator(archive_name.c_str()[strlen(archive_name.c_str())-1])) {
-            pm_strcat(archive_name, "/");
+      for ( ;; ) {
+         if (ftruncate(dev->m_fd, 0) != 0) {
+            berrno be;
+            Mmsg2(errmsg, _("Unable to truncate device %s. ERR=%s\n"), 
+                  print_name(), be.bstrerror());
+            return false;
          }
-         pm_strcat(archive_name, dcr->VolumeName);
-                   
-         Mmsg2(errmsg, _("Device %s doesn't support ftruncate(). Recreating file %s.\n"), 
-               print_name(), archive_name.c_str());
 
-         /* Close file and blow it away */
-         ::close(m_fd);
-         ::unlink(archive_name.c_str());
-                   
-         /* Recreate the file -- of course, empty */
-         set_mode(CREATE_READ_WRITE);
-         if ((m_fd = ::open(archive_name.c_str(), mode, st.st_mode)) < 0) {
+         /*
+          * Check for a successful ftruncate() and issue a work-around for devices 
+          * (mostly cheap NAS) that don't support truncation. 
+          * Workaround supplied by Martin Schmid as a solution to bug #1011.
+          * 1. close file
+          * 2. delete file
+          * 3. open new file with same mode
+          * 4. change ownership to original
+          */
+
+         if (fstat(dev->m_fd, &st) != 0) {
             berrno be;
-            dev_errno = errno;
-            Mmsg2(errmsg, _("Could not reopen: %s, ERR=%s\n"), archive_name.c_str(), 
-                  be.bstrerror());
-            Dmsg1(100, "reopen failed: %s", errmsg);
-            Emsg0(M_FATAL, 0, errmsg);
+            Mmsg2(errmsg, _("Unable to stat device %s. ERR=%s\n"), 
+                  print_name(), be.bstrerror());
             return false;
          }
+             
+         if (st.st_size != 0) {             /* ftruncate() didn't work */
+            POOL_MEM archive_name(PM_FNAME);
                    
-         /* Reset proper owner */
-         chown(archive_name.c_str(), st.st_uid, st.st_gid);  
+            pm_strcpy(archive_name, dev_name);
+            if (!IsPathSeparator(archive_name.c_str()[strlen(archive_name.c_str())-1])) {
+               pm_strcat(archive_name, "/");
+            }
+            pm_strcat(archive_name, dcr->VolumeName);
+                      
+            Mmsg2(errmsg, _("Device %s doesn't support ftruncate(). Recreating file %s.\n"), 
+                  print_name(), archive_name.c_str());
+
+            /* Close file and blow it away */
+            ::close(dev->m_fd);
+            ::unlink(archive_name.c_str());
+                      
+            /* Recreate the file -- of course, empty */
+            dev->set_mode(CREATE_READ_WRITE);
+            if ((dev->m_fd = ::open(archive_name.c_str(), mode, st.st_mode)) < 0) {
+               berrno be;
+               dev_errno = errno;
+               Mmsg2(errmsg, _("Could not reopen: %s, ERR=%s\n"), archive_name.c_str(), 
+                     be.bstrerror());
+               Dmsg1(100, "reopen failed: %s", errmsg);
+               Emsg0(M_FATAL, 0, errmsg);
+               return false;
+            }
+                      
+            /* Reset proper owner */
+            chown(archive_name.c_str(), st.st_uid, st.st_gid);  
+         }
+         break;
       }
-          
       return true;
    }
    return false;
@@ -2290,6 +2305,7 @@ dev_vol_name(DEVICE *dev)
  */
 void DEVICE::term(void)
 {
+   DEVICE *dev = NULL;
    Dmsg1(900, "term dev: %s\n", print_name());
    close();
    if (dev_name) {
@@ -2317,6 +2333,9 @@ void DEVICE::term(void)
       device->dev = NULL;
    }
    delete this;
+   if (dev) {
+      dev->term();
+   }
 }
 
 /*
diff --git a/src/stored/dev.h b/src/stored/dev.h
index d6d1004..c7a01cf 100644
--- a/src/stored/dev.h
+++ b/src/stored/dev.h
@@ -317,7 +317,7 @@ public:
    int is_tape() const { return (dev_type == B_TAPE_DEV || 
                                  dev_type == B_VTAPE_DEV); }
    int is_ftp() const { return dev_type == B_FTP_DEV; }
-   int is_file() const { return dev_type == B_FILE_DEV; }
+   int is_file() const { return (dev_type == B_FILE_DEV); }
    int is_fifo() const { return dev_type == B_FIFO_DEV; }
    int is_dvd() const  { return dev_type == B_DVD_DEV; }
    int is_vtl() const  { return dev_type == B_VTL_DEV; }
@@ -409,7 +409,7 @@ public:
    void clear_volhdr();          /* in dev.c */
    void close();                 /* in dev.c */
    void close_part(DCR *dcr);    /* in dev.c */
-   int open(DCR *dcr, int mode); /* in dev.c */
+   bool open(DCR *dcr, int mode); /* in dev.c */
    void term(void);              /* in dev.c */
    ssize_t read(void *buf, size_t len); /* in dev.c */
    ssize_t write(const void *buf, size_t len);  /* in dev.c */
@@ -455,16 +455,32 @@ public:
     * Locking and blocking calls
     */
 #ifdef  SD_DEBUG_LOCK
-   void _r_dlock(const char *, int, bool locked=false);      /* in lock.c */
-   void _r_dunlock(const char *, int);    /* in lock.c */
-   void _dlock(const char *, int);        /* in lock.c */
-   void _dunlock(const char *, int);      /* in lock.c */
+   void dbg_rLock(const char *, int, bool locked=false);    /* in lock.c */
+   void dbg_rUnlock(const char *, int);                     /* in lock.c */
+   void dbg_Lock(const char *, int);                        /* in lock.c */
+   void dbg_Unlock(const char *, int);                      /* in lock.c */
+   void dbg_Lock_acquire(const char *, int);                /* in lock.c */
+   void dbg_Unlock_acquire(const char *, int);              /* in lock.c */
+   void dbg_Lock_read_acquire(const char *, int);           /* in lock.c */
+   void dbg_Unlock_read_acquire(const char *, int);         /* in lock.c */
 #else
-   void r_dlock(bool locked=false);       /* in lock.c */
-   void r_dunlock() { dunlock(); }
-   void dlock() { P(m_mutex); } 
-   void dunlock() { V(m_mutex); } 
+   void rLock(bool locked=false);         /* in lock.c */
+   void rUnlock();                        /* in lock.c */
+   void Lock();                           /* in lock.c */
+   void Unlock();                         /* in lock.c */
+   void Lock_acquire();                   /* in lock.c */
+   void Unlock_acquire();                 /* in lock.c */
+   void Lock_read_acquire();              /* in lock.c */
+   void Unlock_read_acquire();            /* in lock.c */
+   void Lock_VolCatInfo();                /* in lock.c */
+   void Unlock_VolCatInfo();              /* in lock.c */
 #endif
+   int init_mutex();                      /* in lock.c */
+   int init_acquire_mutex();              /* in lock.c */
+   int init_read_acquire_mutex();         /* in lock.c */
+   int init_volcat_mutex();               /* in lock.c */
+   void set_mutex_priorities();           /* in lock.c */
+   int next_vol_timedwait(const struct timespec *timeout);  /* in lock.c */
    void dblock(int why);                  /* in lock.c */
    void dunblock(bool locked=false);      /* in lock.c */
    bool is_device_unmounted();            /* in lock.c */
@@ -485,6 +501,10 @@ inline const char *DEVICE::strerror() const { return errmsg; }
 inline const char *DEVICE::archive_name() const { return dev_name; }
 inline const char *DEVICE::print_name() const { return prt_name; }
 
+
+#define CHECK_BLOCK_NUMBERS    true
+#define NO_BLOCK_NUMBER_CHECK  false
+
 /*
  * Device Context (or Control) Record.
  *  There is one of these records for each Job that is using
@@ -500,6 +520,7 @@ inline const char *DEVICE::print_name() const { return prt_name; }
 class DCR {
 private:
    bool m_dev_locked;                 /* set if dev already locked */
+   int m_dev_lock;                    /* non-zero if rLock already called */
    bool m_reserved;                   /* set if reserved device */
    bool m_found_in_use;               /* set if a volume found in use */
 
@@ -507,6 +528,7 @@ public:
    dlink dev_link;                    /* link to attach to dev */
    JCR *jcr;                          /* pointer to JCR */
    bthread_mutex_t m_mutex;           /* access control */
+   pthread_mutex_t r_mutex;           /* rLock pre-mutex */
    DEVICE * volatile dev;             /* pointer to device */
    DEVRES *device;                    /* pointer to device resource */
    DEV_BLOCK *block;                  /* pointer to block */
@@ -544,19 +566,14 @@ public:
    VOLUME_CAT_INFO VolCatInfo;        /* Catalog info for desired volume */
 
    /* Methods */
+   void set_dev(DEVICE *ndev) { dev = ndev; }; 
+   void inc_dev_lock() { m_dev_lock++; };
+   void dec_dev_lock() { m_dev_lock--; };
    bool found_in_use() const { return m_found_in_use; };
    void set_found_in_use() { m_found_in_use = true; };
    void clear_found_in_use() { m_found_in_use = false; };
    bool is_reserved() const { return m_reserved; };
    bool is_dev_locked() { return m_dev_locked; }
-#ifdef SD_DEBUG_LOCK
-   void _dlock(const char *, int);      /* in lock.c */
-   void _dunlock(const char *, int);    /* in lock.c */
-#else
-   void dlock() { dev->dlock(); m_dev_locked = true; }
-   void dunlock() { m_dev_locked = false; dev->dunlock(); }
-#endif
-   void dblock(int why) { dev->dblock(why); }
    void setVolCatInfo(bool valid) { VolCatInfo.is_valid = valid; };
    bool haveVolCatInfo() const { return VolCatInfo.is_valid; };
    void setVolCatName(const char *name) {
@@ -565,6 +582,18 @@ public:
    };
    char *getVolCatName() { return VolCatInfo.VolCatName; };
 
+   /* Methods in lock.c */
+   void dblock(int why) { dev->dblock(why); }
+#ifdef  SD_DEBUG_LOCK
+   void dbg_mLock(const char *, int, bool locked);    /* in lock.c */
+   void dbg_mUnlock(const char *, int);               /* in lock.c */
+#else
+   void mLock(bool locked);
+   void mUnlock();
+#endif
+
+   /* Methods in record.c */
+   bool write_record(DEV_RECORD *rec);
 
    /* Methods in reserve.c */
    void clear_reserved();
@@ -590,34 +619,17 @@ public:
    bool do_unload();
    bool do_load(bool is_writing);
    bool is_tape_position_ok();
-};
 
-/*
- * Volume reservation class -- see reserve.c
- */
-class VOLRES { 
-   bool m_swapping;                   /* set when swapping to another drive */
-   bool m_in_use;                     /* set when volume reserved or in use */
-   int32_t m_slot;                    /* slot of swapping volume */
-   uint32_t m_JobId;                  /* JobId for read volumes */
-public:
-   dlink link;
-   char *vol_name;                    /* Volume name */
-   DEVICE *dev;                       /* Pointer to device to which we are attached */
-
-   bool is_swapping() const { return m_swapping; };
-   void set_swapping() { m_swapping = true; };
-   void clear_swapping() { m_swapping = false; };
-   bool is_in_use() const { return m_in_use; };
-   void set_in_use() { m_in_use = true; };
-   void clear_in_use() { m_in_use = false; };
-   void set_slot(int32_t slot) { m_slot = slot; };
-   void clear_slot() { m_slot = -1; };
-   int32_t get_slot() const { return m_slot; };
-   uint32_t get_jobid() const { return m_JobId; };
-   void set_jobid(uint32_t JobId) { m_JobId = JobId; };
-};
+   /* Methods in block.c */
+   bool write_block_to_device();
+   bool write_block_to_dev();
+   bool read_block_from_device(bool check_block_numbers);
+   bool read_block_from_dev(bool check_block_numbers);
 
+   /* Methods in label.c */
+   bool rewrite_volume_label(bool recycle);
+   
+};
 
 /* Get some definition of function to position
  *  to the end of the medium in MTEOM. System
diff --git a/src/stored/device.c b/src/stored/device.c
index 7cee4a0..1f4084d 100644
--- a/src/stored/device.c
+++ b/src/stored/device.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -108,7 +108,7 @@ bool fixup_device_block_write_error(DCR *dcr, int retries)
    block_device(dev, BST_DOING_ACQUIRE);
 
    /* Continue unlocked, but leave BLOCKED */
-   dev->dunlock();
+   dev->Unlock();
 
    bstrncpy(PrevVolName, dev->getVolCatName(), sizeof(PrevVolName));
    bstrncpy(dev->VolHdr.PrevVolumeName, PrevVolName, sizeof(dev->VolHdr.PrevVolumeName));
@@ -122,16 +122,16 @@ bool fixup_device_block_write_error(DCR *dcr, int retries)
         edit_uint64_with_commas(dev->VolCatInfo.VolCatBlocks, b2),
         bstrftime(dt, sizeof(dt), time(NULL)));
 
-   Dmsg0(050, "set_unload\n");
+   Dmsg1(050, "set_unload dev=%s\n", dev->print_name());
    dev->set_unload();
    if (!dcr->mount_next_write_volume()) {
       free_block(label_blk);
       dcr->block = block;
-      dev->dlock();  
+      dev->Lock();  
       goto bail_out;
    }
-   Dmsg1(050, "must_unload=%d\n", dev->must_unload());
-   dev->dlock();                    /* lock again */
+   Dmsg2(050, "must_unload=%d dev=%s\n", dev->must_unload(), dev->print_name());
+   dev->Lock();                    /* lock again */
 
    dev->VolCatInfo.VolCatJobs++;              /* increment number of jobs on vol */
    dir_update_volume_info(dcr, false, false); /* send Volume info to Director */
@@ -146,7 +146,7 @@ bool fixup_device_block_write_error(DCR *dcr, int retries)
     *  empty label_blk, and nothing will be written.
     */
    Dmsg0(190, "write label block to dev\n");
-   if (!write_block_to_dev(dcr)) {
+   if (!dcr->write_block_to_dev()) {
       berrno be;
       Pmsg1(0, _("write_block_to_device Volume label failed. ERR=%s"),
         be.bstrerror(dev->dev_errno));
@@ -181,7 +181,7 @@ bool fixup_device_block_write_error(DCR *dcr, int retries)
 
    /* Write overflow block to device */
    Dmsg0(190, "Write overflow block to dev\n");
-   if (!write_block_to_dev(dcr)) {
+   if (!dcr->write_block_to_dev()) {
       berrno be;
       Dmsg1(0, _("write_block_to_device overflow block failed. ERR=%s"),
         be.bstrerror(dev->dev_errno));
@@ -279,7 +279,7 @@ bool first_open_device(DCR *dcr)
       return false;
    }
 
-   dev->r_dlock();
+   dev->rLock();
 
    /* Defer opening files */
    if (!dev->is_tape()) {
@@ -294,7 +294,7 @@ bool first_open_device(DCR *dcr)
        mode = OPEN_READ_ONLY;
     }
    Dmsg0(129, "Opening device.\n");
-   if (dev->open(dcr, mode) < 0) {
+   if (!dev->open(dcr, mode)) {
       Emsg1(M_FATAL, 0, _("dev open failed: %s\n"), dev->errmsg);
       ok = false;
       goto bail_out;
@@ -302,7 +302,7 @@ bool first_open_device(DCR *dcr)
    Dmsg1(129, "open dev %s OK\n", dev->print_name());
 
 bail_out:
-   dev->dunlock();
+   dev->Unlock();
    return ok;
 }
 
@@ -319,7 +319,7 @@ bool open_device(DCR *dcr)
    } else {
       mode = OPEN_READ_WRITE;
    }
-   if (dev->open(dcr, mode) < 0) {
+   if (!dev->open(dcr, mode)) {
       /* If polling, ignore the error */
       /* If DVD, also ignore the error, very often you cannot open the device
        * (when there is no DVD, or when the one inserted is a wrong one) */
diff --git a/src/stored/dircmd.c b/src/stored/dircmd.c
index 65fcefe..a463802 100644
--- a/src/stored/dircmd.c
+++ b/src/stored/dircmd.c
@@ -249,8 +249,10 @@ void *handle_connection_request(void *arg)
    }
 bail_out:
    generate_daemon_event(jcr, "JobEnd");
+   generate_plugin_event(jcr, bsdEventJobEnd);
    dequeue_messages(jcr);             /* send any queued messages */
    bs->signal(BNET_TERMINATE);
+   free_plugins(jcr);                 /* release instantiated plugins */
    free_jcr(jcr);
    return NULL;
 }
@@ -276,6 +278,7 @@ static bool die_cmd(JCR *jcr)
    
    Pmsg1(000, "I have been requested to die ... (%s)\n", dir->msg);
    a = djcr->JobId;   /* ref NULL pointer */
+   djcr->JobId = a;
 #endif
    return 0;
 }
@@ -313,43 +316,51 @@ static bool cancel_cmd(JCR *cjcr)
    int oldStatus;
    char Job[MAX_NAME_LENGTH];
    JCR *jcr;
+   int status;
+   const char *reason;
 
    if (sscanf(dir->msg, "cancel Job=%127s", Job) == 1) {
-      if (!(jcr=get_jcr_by_full_name(Job))) {
-         dir->fsend(_("3904 Job %s not found.\n"), Job);
-      } else {
-         oldStatus = jcr->JobStatus;
-         jcr->setJobStatus(JS_Canceled);
-         Dmsg2(800, "Cancel JobId=%d %p\n", jcr->JobId, jcr);
-         if (!jcr->authenticated && oldStatus == JS_WaitFD) {
-            pthread_cond_signal(&jcr->job_start_wait); /* wake waiting thread */
-         }
-         if (jcr->file_bsock) {
-            jcr->file_bsock->set_terminated();
-            jcr->file_bsock->set_timed_out();
-            Dmsg2(800, "Term bsock jid=%d %p\n", jcr->JobId, jcr);
-         } else {
-            /* Still waiting for FD to connect, release it */
-            pthread_cond_signal(&jcr->job_start_wait); /* wake waiting job */
-            Dmsg2(800, "Signal FD connect jid=%d %p\n", jcr->JobId, jcr);
-         }
-         /* If thread waiting on mount, wake him */
-         if (jcr->dcr && jcr->dcr->dev && jcr->dcr->dev->waiting_for_mount()) {
-            pthread_cond_broadcast(&jcr->dcr->dev->wait_next_vol);
-            Dmsg1(100, "JobId=%u broadcast wait_device_release\n", (uint32_t)jcr->JobId);
-            pthread_cond_broadcast(&wait_device_release);
-         }
-         if (jcr->read_dcr && jcr->read_dcr->dev && jcr->read_dcr->dev->waiting_for_mount()) {
-            pthread_cond_broadcast(&jcr->read_dcr->dev->wait_next_vol);
-            Dmsg1(100, "JobId=%u broadcast wait_device_release\n", (uint32_t)jcr->JobId);
-            pthread_cond_broadcast(&wait_device_release);
-         }
-         dir->fsend(_("3000 JobId=%ld Job=\"%s\" marked to be canceled.\n"), jcr->JobId, jcr->Job);
-         free_jcr(jcr);
-      }
+      status = JS_Canceled;
+      reason = "canceled";
    } else {
       dir->fsend(_("3903 Error scanning cancel command.\n"));
+      goto bail_out;
+   }
+   if (!(jcr=get_jcr_by_full_name(Job))) {
+      dir->fsend(_("3904 Job %s not found.\n"), Job);
+   } else {
+      oldStatus = jcr->JobStatus;
+      jcr->setJobStatus(status);
+      Dmsg2(800, "Cancel JobId=%d %p\n", jcr->JobId, jcr);
+      if (!jcr->authenticated && oldStatus == JS_WaitFD) {
+         pthread_cond_signal(&jcr->job_start_wait); /* wake waiting thread */
+      }
+      if (jcr->file_bsock) {
+         jcr->file_bsock->set_terminated();
+         jcr->file_bsock->set_timed_out();
+         Dmsg2(800, "Term bsock jid=%d %p\n", jcr->JobId, jcr);
+      } else {
+         /* Still waiting for FD to connect, release it */
+         pthread_cond_signal(&jcr->job_start_wait); /* wake waiting job */
+         Dmsg2(800, "Signal FD connect jid=%d %p\n", jcr->JobId, jcr);
+      }
+      /* If thread waiting on mount, wake him */
+      if (jcr->dcr && jcr->dcr->dev && jcr->dcr->dev->waiting_for_mount()) {
+         pthread_cond_broadcast(&jcr->dcr->dev->wait_next_vol);
+         Dmsg1(100, "JobId=%u broadcast wait_device_release\n", (uint32_t)jcr->JobId);
+         pthread_cond_broadcast(&wait_device_release);
+      }
+      if (jcr->read_dcr && jcr->read_dcr->dev && jcr->read_dcr->dev->waiting_for_mount()) {
+         pthread_cond_broadcast(&jcr->read_dcr->dev->wait_next_vol);
+         Dmsg1(100, "JobId=%u broadcast wait_device_release\n", (uint32_t)jcr->JobId);
+         pthread_cond_broadcast(&wait_device_release);
+      }
+      dir->fsend(_("3000 JobId=%ld Job=\"%s\" marked to be %s.\n"), 
+         jcr->JobId, jcr->Job, reason);
+      free_jcr(jcr);
    }
+
+bail_out:
    dir->signal(BNET_EOD);
    return 1;
 }
@@ -405,7 +416,7 @@ static bool do_label(JCR *jcr, int relabel)
       dcr = find_device(jcr, dev_name, drive);
       if (dcr) {
          dev = dcr->dev;
-         dev->dlock();                 /* Use P to avoid indefinite block */
+         dev->Lock();                 /* Use P to avoid indefinite block */
          if (!dev->is_open() && !dev->is_busy()) {
             Dmsg1(400, "Can %slabel. Device is not open\n", relabel?"re":"");
             label_volume_if_ok(dcr, oldname, newname, poolname, slot, relabel);
@@ -420,7 +431,7 @@ static bool do_label(JCR *jcr, int relabel)
             Dmsg0(400, "Can relabel. device not used\n");
             label_volume_if_ok(dcr, oldname, newname, poolname, slot, relabel);
          }
-         dev->dunlock();
+         dev->Unlock();
          free_dcr(dcr);
       } else {
          dir->fsend(_("3999 Device \"%s\" not found or could not be opened.\n"), dev_name.c_str());
@@ -477,7 +488,7 @@ static void label_volume_if_ok(DCR *dcr, char *oldname,
    }
    /* Set old volume name for open if relabeling */
    dcr->setVolCatName(volname);
-   if (dev->open(dcr, mode) < 0) {
+   if (!dev->open(dcr, mode)) {
       dir->fsend(_("3910 Unable to open device \"%s\": ERR=%s\n"),
          dev->print_name(), dev->bstrerror());
       goto bail_out;      
@@ -513,7 +524,7 @@ static void label_volume_if_ok(DCR *dcr, char *oldname,
    case VOL_IO_ERROR:
    case VOL_NO_LABEL:
       if (!write_new_volume_label_to_dev(dcr, newname, poolname, 
-           relabel, true /* write dvd now */)) {
+              relabel, true /* write dvd now */)) {
          dir->fsend(_("3912 Failed to label Volume: ERR=%s\n"), dev->bstrerror());
          break;
       }
@@ -533,6 +544,9 @@ static void label_volume_if_ok(DCR *dcr, char *oldname,
    }
 
 bail_out:
+   if (dev->is_open() && !dev->has_cap(CAP_ALWAYSOPEN)) {
+      dev->close();
+   }
    if (!dev->is_open()) {
       dev->clear_volhdr();
    }
@@ -670,7 +684,7 @@ static bool mount_cmd(JCR *jcr)
       dcr = find_device(jcr, devname, drive);
       if (dcr) {
          dev = dcr->dev;
-         dev->dlock();                 /* Use P to avoid indefinite block */
+         dev->Lock();                 /* Use P to avoid indefinite block */
          Dmsg2(100, "mount cmd blocked=%d must_unload=%d\n", dev->blocked(), 
             dev->must_unload());
          switch (dev->blocked()) {         /* device blocked? */
@@ -694,7 +708,7 @@ static bool mount_cmd(JCR *jcr)
                try_autoload_device(jcr, dcr, slot, "");
             }
             /* We freed the device, so reopen it and wake any waiting threads */
-            if (dev->open(dcr, OPEN_READ_ONLY) < 0) {
+            if (!dev->open(dcr, OPEN_READ_ONLY)) {
                dir->fsend(_("3901 Unable to open device \"%s\": ERR=%s\n"),
                   dev->print_name(), dev->bstrerror());
                if (dev->blocked() == BST_UNMOUNTED) {
@@ -752,7 +766,7 @@ static bool mount_cmd(JCR *jcr)
                              dev->print_name());
                }
             } else if (dev->is_tape()) {
-               if (dev->open(dcr, OPEN_READ_ONLY) < 0) {
+               if (!dev->open(dcr, OPEN_READ_ONLY)) {
                   dir->fsend(_("3901 Unable to open device \"%s\": ERR=%s\n"),
                      dev->print_name(), dev->bstrerror());
                   break;
@@ -766,6 +780,9 @@ static bool mount_cmd(JCR *jcr)
                                     "If this is not a blank tape, try unmounting and remounting the Volume.\n"),
                              dev->print_name());
                }
+               if (dev->is_open() && !dev->has_cap(CAP_ALWAYSOPEN)) {
+                  dev->close();
+               }
             } else if (dev->is_unmountable()) {
                if (dev->mount(1)) {
                   dir->fsend(_("3002 Device \"%s\" is mounted.\n"), dev->print_name());
@@ -789,7 +806,7 @@ static bool mount_cmd(JCR *jcr)
             dir->fsend(_("3905 Unknown wait state %d\n"), dev->blocked());
             break;
          }
-         dev->dunlock();
+         dev->Unlock();
          free_dcr(dcr);
       } else {
          dir->fsend(_("3999 Device \"%s\" not found or could not be opened.\n"), devname.c_str());
@@ -817,7 +834,7 @@ static bool unmount_cmd(JCR *jcr)
       dcr = find_device(jcr, devname, drive);
       if (dcr) {
          dev = dcr->dev;
-         dev->dlock();                 /* Use P to avoid indefinite block */
+         dev->Lock();                 /* Use P to avoid indefinite block */
          if (!dev->is_open()) {
             if (!dev->is_busy()) {
                unload_autochanger(dcr, -1);          
@@ -881,7 +898,7 @@ static bool unmount_cmd(JCR *jcr)
                   dev->print_name());
             }
          }
-         dev->dunlock();
+         dev->Unlock();
          free_dcr(dcr);
       } else {
          dir->fsend(_("3999 Device \"%s\" not found or could not be opened.\n"), devname.c_str());
@@ -954,7 +971,7 @@ static bool release_cmd(JCR *jcr)
       dcr = find_device(jcr, devname, drive);
       if (dcr) {
          dev = dcr->dev;
-         dev->dlock();                 /* Use P to avoid indefinite block */
+         dev->Lock();                 /* Use P to avoid indefinite block */
          if (!dev->is_open()) {
             if (!dev->is_busy()) {
                unload_autochanger(dcr, -1);
@@ -992,7 +1009,7 @@ static bool release_cmd(JCR *jcr)
             dir->fsend(_("3022 Device \"%s\" released.\n"), 
                dev->print_name());
          }
-         dev->dunlock();
+         dev->Unlock();
          free_dcr(dcr);
       } else {
          dir->fsend(_("3999 Device \"%s\" not found or could not be opened.\n"), devname.c_str());
@@ -1102,9 +1119,9 @@ static bool changer_cmd(JCR *jcr)
       dcr = find_device(jcr, devname, -1);
       if (dcr) {
          dev = dcr->dev;
-         dev->dlock();                 /* Use P to avoid indefinite block */
+         dev->Lock();                 /* Use P to avoid indefinite block */
          if (!dev->device->changer_res) {
-            dir->fsend(_("3995 Device \"%s\" is not an autochanger.\n"), 
+            dir->fsend(_("3998 Device \"%s\" is not an autochanger.\n"), 
                dev->print_name());
          /* Under certain "safe" conditions, we can steal the lock */
          } else if (safe_cmd || !dev->is_open() || dev->can_steal_lock()) {
@@ -1114,7 +1131,7 @@ static bool changer_cmd(JCR *jcr)
          } else {                     /* device not being used */
             autochanger_cmd(dcr, dir, cmd);
          }
-         dev->dunlock();
+         dev->Unlock();
          free_dcr(dcr);
       } else {
          dir->fsend(_("3999 Device \"%s\" not found or could not be opened.\n"), devname.c_str());
@@ -1144,7 +1161,7 @@ static bool readlabel_cmd(JCR *jcr)
       dcr = find_device(jcr, devname, drive);
       if (dcr) {
          dev = dcr->dev;
-         dev->dlock();                 /* Use P to avoid indefinite block */
+         dev->Lock();                 /* Use P to avoid indefinite block */
          if (!dev->is_open()) {
             read_volume_label(jcr, dcr, dev, Slot);
             dev->close();
@@ -1156,7 +1173,7 @@ static bool readlabel_cmd(JCR *jcr)
          } else {                     /* device not being used */
             read_volume_label(jcr, dcr, dev, Slot);
          }
-         dev->dunlock();
+         dev->Unlock();
          free_dcr(dcr);
       } else {
          dir->fsend(_("3999 Device \"%s\" not found or could not be opened.\n"), devname.c_str());
@@ -1180,7 +1197,7 @@ static void read_volume_label(JCR *jcr, DCR *dcr, DEVICE *dev, int Slot)
    BSOCK *dir = jcr->dir_bsock;
    bsteal_lock_t hold;
 
-   dcr->dev = dev;
+   dcr->set_dev(dev);
    steal_device_lock(dev, &hold, BST_WRITING_LABEL);
 
    if (!try_autoload_device(jcr, dcr, Slot, "")) {
diff --git a/src/stored/dvd.c b/src/stored/dvd.c
index b0c7656..5b8ea26 100644
--- a/src/stored/dvd.c
+++ b/src/stored/dvd.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2005-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2005-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -360,33 +360,13 @@ int dvd_open_next_part(DCR *dcr)
             return -1;
          }
       }
-
-#ifdef neeeded
-      Dmsg2(400, "num_dvd_parts=%d part=%d\n", dev->num_dvd_parts, dev->part);
-      make_spooled_dvd_filename(dev, archive_name);   /* makes spool name */
-      
-      /* Check if the next part exists in spool directory . */
-      Dmsg1(100, "Check if part on spool: %s\n", archive_name.c_str());
-      if ((stat(archive_name.c_str(), &buf) == 0) || (errno != ENOENT)) {
-         Dmsg1(29, "======= Part %s is in the way, deleting it...\n", archive_name.c_str());
-         /* Then try to unlink it */
-         if (unlink(archive_name.c_str()) < 0) {
-            berrno be;
-            dev->set_part_spooled(false);
-            dev->dev_errno = errno;
-            Mmsg2(dev->errmsg, _("open_next_part can't unlink existing part %s, ERR=%s\n"), 
-                   archive_name.c_str(), be.bstrerror());
-            return -1;
-         }
-      }
-#endif
    }
 
    Dmsg2(400, "Call dev->open(vol=%s, mode=%d)\n", dcr->getVolCatName(), 
          dev->openmode);
 
    /* Open next part.  Note, this sets part_size for part opened. */
-   if (dev->open(dcr, OPEN_READ_ONLY) < 0) {
+   if (!dev->open(dcr, OPEN_READ_ONLY)) {
       return -1;
    } 
    dev->set_labeled();                   /* all next parts are "labeled" */
@@ -415,7 +395,7 @@ static bool dvd_open_first_part(DCR *dcr, int mode)
    dev->part = 1;
    dev->part_start = 0;
 
-   if (dev->open(dcr, mode) < 0) {
+   if (!dev->open(dcr, mode)) {
       Dmsg0(400, "open dev() failed\n");
       return false;
    }
diff --git a/src/stored/job.c b/src/stored/job.c
index 8be2b4e..9d8cd7c 100644
--- a/src/stored/job.c
+++ b/src/stored/job.c
@@ -74,7 +74,7 @@ bool job_cmd(JCR *jcr)
    BSOCK *dir = jcr->dir_bsock;
    POOL_MEM job_name, client_name, job, fileset_name, fileset_md5;
    int32_t JobType, level, spool_attributes, no_attributes, spool_data;
-   int32_t write_part_after_job, PreferMountedVols;
+   int32_t write_part_after_job, PreferMountedVols, rerunning;
    int stat;
    JCR *ojcr;
 
@@ -88,7 +88,7 @@ bool job_cmd(JCR *jcr)
               &JobType, &level, fileset_name.c_str(), &no_attributes,
               &spool_attributes, fileset_md5.c_str(), &spool_data,
               &write_part_after_job, &PreferMountedVols, spool_size,
-              &jcr->rerunning, &jcr->VolSessionId, &jcr->VolSessionTime);
+              &rerunning, &jcr->VolSessionId, &jcr->VolSessionTime);
    if (stat != 17) {
       pm_strcpy(jcr->errmsg, dir->msg);
       dir->fsend(BAD_job, stat, jcr->errmsg);
@@ -96,7 +96,8 @@ bool job_cmd(JCR *jcr)
       jcr->setJobStatus(JS_ErrorTerminated);
       return false;
    }
-   Dmsg3(100, "==== rerunning=%d VolSesId=%d VolSesTime=%d\n", jcr->rerunning,
+   jcr->rerunning = (rerunning) ? true : false;
+   Dmsg3(100, "rerunning=%d VolSesId=%d VolSesTime=%d\n", jcr->rerunning,
          jcr->VolSessionId, jcr->VolSessionTime);
    /*
     * Since this job could be rescheduled, we
@@ -110,6 +111,8 @@ bool job_cmd(JCR *jcr)
    }
    jcr->JobId = JobId;
    Dmsg2(800, "Start JobId=%d %p\n", JobId, jcr);
+   set_jcr_in_tsd(jcr);
+
    /*
     * If job rescheduled because previous was incomplete,
     * the Resched flag is set and VolSessionId and VolSessionTime
diff --git a/src/stored/label.c b/src/stored/label.c
index 9fd0c3d..c7ce4d1 100644
--- a/src/stored/label.c
+++ b/src/stored/label.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -37,7 +37,7 @@
 #include "stored.h"                   /* pull in Storage Deamon headers */
 
 /* Forward referenced functions */
-static void create_volume_label_record(DCR *dcr, DEV_RECORD *rec);
+static void create_volume_label_record(DCR *dcr, DEVICE *dev, DEV_RECORD *rec);
 
 /*
  * Read the volume label
@@ -79,7 +79,7 @@ int read_dev_volume_label(DCR *dcr)
       dev->VolHdr.VolumeName[0]?dev->VolHdr.VolumeName:"*NULL*");
 
    if (!dev->is_open()) {
-      if (dev->open(dcr, OPEN_READ_ONLY) < 0) {
+      if (!dev->open(dcr, OPEN_READ_ONLY)) {
          return VOL_IO_ERROR;
       }
    }
@@ -126,12 +126,12 @@ int read_dev_volume_label(DCR *dcr)
    empty_block(block);
 
    Dmsg0(130, "Big if statement in read_volume_label\n");
-   if (!read_block_from_dev(dcr, NO_BLOCK_NUMBER_CHECK)) {
+   if (!dcr->read_block_from_dev(NO_BLOCK_NUMBER_CHECK)) {
       Mmsg(jcr->errmsg, _("Requested Volume \"%s\" on %s is not a Bacula "
            "labeled Volume, because: ERR=%s"), NPRT(VolName), 
            dev->print_name(), dev->print_errmsg());
       Dmsg1(130, "%s", jcr->errmsg);
-   } else if (!read_record_from_block(dcr, block, record)) {
+   } else if (!read_record_from_block(dcr, record)) {
       Mmsg(jcr->errmsg, _("Could not read Volume label from block.\n"));
       Dmsg1(130, "%s", jcr->errmsg);
    } else if (!unser_volume_label(dev, record)) {
@@ -215,7 +215,7 @@ int read_dev_volume_label(DCR *dcr)
    }
 
 
-   if (debug_level >= 10) {
+   if (debug_level >= 200) {
       dump_volume_label(dev);
    }
    Dmsg0(130, "Leave read_volume_label() VOL_OK\n");
@@ -256,22 +256,23 @@ bail_out:
  *  Returns: false on failure
  *           true  on success
  */
-bool write_volume_label_to_block(DCR *dcr)
+static bool write_volume_label_to_block(DCR *dcr)
 {
-   DEV_RECORD rec;
    DEVICE *dev = dcr->dev;
-   JCR *jcr = dcr->jcr;
    DEV_BLOCK *block = dcr->block;
+   DEV_RECORD rec;
+   JCR *jcr = dcr->jcr;
 
    Dmsg0(130, "write Label in write_volume_label_to_block()\n");
+
    memset(&rec, 0, sizeof(rec));
    rec.data = get_memory(SER_LENGTH_Volume_Label);
    empty_block(block);                /* Volume label always at beginning */
 
-   create_volume_label_record(dcr, &rec);
+   create_volume_label_record(dcr, dev, &rec);
 
    block->BlockNumber = 0;
-   if (!write_record_to_block(block, &rec)) {
+   if (!write_record_to_block(dcr, &rec)) {
       free_pool_memory(rec.data);
       Jmsg1(jcr, M_FATAL, 0, _("Cannot write Volume label to block for device %s\n"),
          dev->print_name());
@@ -295,13 +296,12 @@ bool write_volume_label_to_block(DCR *dcr)
  *  This routine should be used only when labeling a blank tape.
  */
 bool write_new_volume_label_to_dev(DCR *dcr, const char *VolName, 
-                                   const char *PoolName, bool relabel, bool dvdnow)
+              const char *PoolName, bool relabel, bool dvdnow)
 {
-   DEVICE * volatile dev = dcr->dev;
-
+   DEVICE *dev = dcr->dev;
+   DEV_BLOCK *block = dcr->block;
 
    Dmsg0(150, "write_volume_label()\n");
-   empty_block(dcr->block);
    if (*VolName == 0) {
       Pmsg0(0, "=== ERROR: write_new_volume_label_to_dev called with NULL VolName\n");
       goto bail_out;
@@ -322,67 +322,65 @@ bool write_new_volume_label_to_dev(DCR *dcr, const char *VolName,
    dev->setVolCatName(VolName);
    dcr->setVolCatName(VolName);
    Dmsg1(150, "New VolName=%s\n", VolName);
-   if (dev->open(dcr, OPEN_READ_WRITE) < 0) {
+   if (!dev->open(dcr, OPEN_READ_WRITE)) {
       /* If device is not tape, attempt to create it */
-      if (dev->is_tape() || dev->open(dcr, CREATE_READ_WRITE) < 0) {
+      if (dev->is_tape() || !dev->open(dcr, CREATE_READ_WRITE)) {
          Jmsg3(dcr->jcr, M_WARNING, 0, _("Open device %s Volume \"%s\" failed: ERR=%s\n"),
                dev->print_name(), dcr->VolumeName, dev->bstrerror());
          goto bail_out;
       }
    }
    Dmsg1(150, "Label type=%d\n", dev->label_type);
-   if (!dev->rewind(dcr)) {
-      Dmsg2(130, "Bad status on %s from rewind: ERR=%s\n", dev->print_name(), dev->print_errmsg());
-      if (!forge_on) {
-         goto bail_out;
+
+   for ( ;; ) {
+      empty_block(block);
+      if (!dev->rewind(dcr)) {
+         Dmsg2(130, "Bad status on %s from rewind: ERR=%s\n", dev->print_name(), dev->print_errmsg());
+         if (!forge_on) {
+            goto bail_out;
+         }
       }
-   }
 
-   /* Temporarily mark in append state to enable writing */
-   dev->set_append();
+      /* Temporarily mark in append state to enable writing */
+      dev->set_append();
 
-   /* Create PRE_LABEL or VOL_LABEL if DVD */
-   create_volume_label(dev, VolName, PoolName, dvdnow);
+      /* Create PRE_LABEL or VOL_LABEL if DVD */
+      create_volume_label(dev, VolName, PoolName, dvdnow);
 
-   /*
-    * If we have already detected an ANSI label, re-read it
-    *   to skip past it. Otherwise, we write a new one if 
-    *   so requested.  
-    */
-   if (dev->label_type != B_BACULA_LABEL) {
-      if (read_ansi_ibm_label(dcr) != VOL_OK) {
-         dev->rewind(dcr);
+      /*
+       * If we have already detected an ANSI label, re-read it
+       *   to skip past it. Otherwise, we write a new one if 
+       *   so requested.  
+       */
+      if (dev->label_type != B_BACULA_LABEL) {
+         if (read_ansi_ibm_label(dcr) != VOL_OK) {
+            dev->rewind(dcr);
+            goto bail_out;
+         }
+      } else if (!write_ansi_ibm_labels(dcr, ANSI_VOL_LABEL, VolName)) {
          goto bail_out;
       }
-   } else if (!write_ansi_ibm_labels(dcr, ANSI_VOL_LABEL, VolName)) {
-      goto bail_out;
-   }
-
-   create_volume_label_record(dcr, dcr->rec);
-   dcr->rec->Stream = 0;
-   dcr->rec->maskedStream = 0;
 
-   if (!write_record_to_block(dcr->block, dcr->rec)) {
-      Dmsg2(130, "Bad Label write on %s: ERR=%s\n", dev->print_name(), dev->print_errmsg());
-      goto bail_out;
-   } else {
-      Dmsg2(130, "Wrote label of %d bytes to %s\n", dcr->rec->data_len, dev->print_name());
-   }
+      create_volume_label_record(dcr, dev, dcr->rec);
+      dcr->rec->Stream = 0;
+      dcr->rec->maskedStream = 0;
 
-   Dmsg0(130, "Call write_block_to_dev()\n");
-   if (!write_block_to_dev(dcr)) {
-      Dmsg2(130, "Bad Label write on %s: ERR=%s\n", dev->print_name(), dev->print_errmsg());
-      goto bail_out;
-   }
+      if (!write_record_to_block(dcr, dcr->rec)) {
+         Dmsg2(130, "Bad Label write on %s: ERR=%s\n", dev->print_name(), dev->print_errmsg());
+         goto bail_out;
+      } else {
+         Dmsg2(130, "Wrote label of %d bytes to %s\n", dcr->rec->data_len, dev->print_name());
+      }
 
-   /* Now commit block to DVD if we should write now */
-   if (dev->is_dvd() && dvdnow) {
-      Dmsg1(150, "New VolName=%s\n", dev->VolCatInfo.VolCatName);
-      if (!dvd_write_part(dcr)) {
-         Dmsg2(130, "Bad DVD write on %s: ERR=%s\n", dev->print_name(), dev->print_errmsg());
+      Dmsg0(130, "Call write_block_to_dev()\n");
+      if (!dcr->write_block_to_dev()) {
+         Dmsg2(130, "Bad Label write on %s: ERR=%s\n", dev->print_name(), dev->print_errmsg());
          goto bail_out;
       }
+      break;
    }
+   dev = dcr->dev;
+
 
    Dmsg0(130, " Wrote block to device\n");
 
@@ -420,12 +418,11 @@ bail_out:
  *  Returns: true if OK
  *           false if unable to write it
  */
-bool rewrite_volume_label(DCR *dcr, bool recycle)
+bool DCR::rewrite_volume_label(bool recycle)
 {
-   DEVICE *dev = dcr->dev;
-   JCR *jcr = dcr->jcr;
+   DCR *dcr = this;
 
-   if (dev->open(dcr, OPEN_READ_WRITE) < 0) {
+   if (!dev->open(dcr, OPEN_READ_WRITE)) {
        Jmsg3(jcr, M_WARNING, 0, _("Open device %s Volume \"%s\" failed: ERR=%s\n"),
              dev->print_name(), dcr->VolumeName, dev->bstrerror());
       return false;
@@ -457,13 +454,12 @@ bool rewrite_volume_label(DCR *dcr, bool recycle)
       }
       if (recycle) {
          Dmsg1(150, "Doing recycle. Vol=%s\n", dcr->VolumeName);
-//       volume_unused(dcr);             /* mark volume unused */
          if (!dev->truncate(dcr)) {
             Jmsg2(jcr, M_FATAL, 0, _("Truncate error on device %s: ERR=%s\n"),
                   dev->print_name(), dev->print_errmsg());
             return false;
          }
-         if (dev->open(dcr, OPEN_READ_WRITE) < 0) {
+         if (!dev->open(dcr, OPEN_READ_WRITE)) {
             Jmsg2(jcr, M_FATAL, 0,
                _("Failed to re-open DVD after truncate on device %s: ERR=%s\n"),
                dev->print_name(), dev->print_errmsg());
@@ -487,7 +483,7 @@ bool rewrite_volume_label(DCR *dcr, bool recycle)
 
       /* Attempt write to check write permission */
       Dmsg1(200, "Attempt to write to device fd=%d.\n", dev->fd());
-      if (!write_block_to_dev(dcr)) {
+      if (!dcr->write_block_to_dev()) {
          Jmsg2(jcr, M_ERROR, 0, _("Unable to write device %s: ERR=%s\n"),
             dev->print_name(), dev->print_errmsg());
          Dmsg0(200, "===ERROR write block to dev\n");
@@ -540,11 +536,10 @@ bool rewrite_volume_label(DCR *dcr, bool recycle)
  *   Assumes that the dev->VolHdr structure is properly
  *   initialized.
 */
-static void create_volume_label_record(DCR *dcr, DEV_RECORD *rec)
+static void create_volume_label_record(DCR *dcr, DEVICE *dev, DEV_RECORD *rec)
 {
    ser_declare;
    struct date_time dt;
-   DEVICE *dev = dcr->dev;
    JCR *jcr = dcr->jcr;
    char buf[100];
 
@@ -583,7 +578,7 @@ static void create_volume_label_record(DCR *dcr, DEV_RECORD *rec)
    ser_string(dev->VolHdr.LabelProg);
    ser_string(dev->VolHdr.ProgVersion);
    ser_string(dev->VolHdr.ProgDate);
-
+      
    ser_end(rec->data, SER_LENGTH_Volume_Label);
    bstrncpy(dcr->VolumeName, dev->VolHdr.VolumeName, sizeof(dcr->VolumeName));
    rec->data_len = ser_length(rec->data);
@@ -738,13 +733,13 @@ bool write_session_label(DCR *dcr, int label)
     */
    if (!can_write_record_to_block(block, rec)) {
       Dmsg0(150, "Cannot write session label to block.\n");
-      if (!write_block_to_device(dcr)) {
+      if (!dcr->write_block_to_device()) {
          Dmsg0(130, "Got session label write_block_to_dev error.\n");
          free_record(rec);
          return false;
       }
    }
-   if (!write_record_to_block(block, rec)) {
+   if (!write_record_to_block(dcr, rec)) {
       free_record(rec);
       return false;
    }
diff --git a/src/stored/lock.c b/src/stored/lock.c
index d20c1bf..73d1a66 100644
--- a/src/stored/lock.c
+++ b/src/stored/lock.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -28,7 +28,7 @@
 /*
  * Collection of Bacula Storage daemon locking software
  *
- *  Kern Sibbald, 2000-2007.  June 2007
+ *  Kern Sibbald, June 2007
  *
  */
 
@@ -51,20 +51,20 @@ const int dbglvl = 500;
  *               is "marked" in use.  When setting and removing the
                  block, the device is locked, but after dblock is
                  called the device is unlocked.
- *  2. dlock()   simple mutex that locks the device structure. A dlock
+ *  2. Lock()    simple mutex that locks the device structure. A Lock
  *               can be acquired while a device is blocked if it is not
  *               locked.      
- *  3. r_dlock(locked)  "recursive" dlock, when means that a dlock (mutex)
+ *  3. rLock(locked)  "recursive" Lock, when means that a Lock (mutex)
  *               will be acquired on the device if it is not blocked
  *               by some other thread. If the device was blocked by
  *               the current thread, it will acquire the lock.
  *               If some other thread has set a block on the device,
  *               this call will wait until the device is unblocked.
  *               Can be called with locked true, which means the
- *               dlock is already set
+ *               Lock is already set
  *
  *  A lock is normally set when modifying the device structure.
- *  A r_lock is normally acquired when you want to block the device
+ *  A rLock is normally acquired when you want to block the device
  *    i.e. it will wait until the device is not blocked.
  *  A block is normally set during long operations like writing to
  *    the device.
@@ -73,7 +73,7 @@ const int dbglvl = 500;
  *  A lock cannot be violated. No other thread can touch the
  *    device while a lock is set.  
  *  When a block is set, every thread accept the thread that set
- *    the block will block if r_dlock is called.
+ *    the block will block if rLock is called.
  *  A device can be blocked for multiple reasons, labeling, writing,
  *    acquiring (opening) the device, waiting for the operator, unmounted,
  *    ...
@@ -86,29 +86,29 @@ const int dbglvl = 500;
  *
  * Functions:
  *
- *   DEVICE::dlock()   does P(m_mutex)     (in dev.h)
- *   DEVICE::dunlock() does V(m_mutex)
+ *   DEVICE::Lock()   does P(m_mutex)     (in dev.h)
+ *   DEVICE::Unlock() does V(m_mutex)
  *
- *   DEVICE::r_dlock(locked) allows locking the device when this thread
+ *   DEVICE::rLock(locked) allows locking the device when this thread
  *                     already has the device blocked.
  *                    if (!locked)
- *                       dlock()
+ *                       Lock()
  *                    if blocked and not same thread that locked
  *                       pthread_cond_wait
  *                    leaves device locked 
  *
- *   DEVICE::r_dunlock() unlocks but does not unblock
- *                    same as dunlock();
+ *   DEVICE::rUnlock() unlocks but does not unblock
+ *                    same as Unlock();
  *
  *   DEVICE::dblock(why)  does 
- *                    r_dlock();         (recursive device lock)
+ *                    rLock();         (recursive device lock)
  *                    block_device(this, why) 
- *                    r_dunlock()
+ *                    rUnlock()
  *
  *   DEVICE::dunblock does
- *                    dlock()
+ *                    Lock()
  *                    unblock_device()
- *                    dunlock()
+ *                    Unlock()
  *
  *   block_device() does  (must be locked and not blocked at entry)  
  *                    set blocked status
@@ -126,10 +126,10 @@ const int dbglvl = 500;
  *                    save status
  *                    set new blocked status
  *                    set new pid
- *                    unlock()
+ *                    Unlock()
  *
  *   give_back_device_lock() does (must be blocked but not locked)
- *                    dlock()
+ *                    Lock()
  *                    reset blocked status
  *                    save previous blocked
  *                    reset pid
@@ -138,40 +138,68 @@ const int dbglvl = 500;
  *
  */
 
-
 void DEVICE::dblock(int why)
 {
-   r_dlock();              /* need recursive lock to block */
+   rLock(false);              /* need recursive lock to block */
    block_device(this, why);
-   r_dunlock();
+   rUnlock();
 }
 
 void DEVICE::dunblock(bool locked)
 {
    if (!locked) {
-      dlock();
+      Lock();
    }
    unblock_device(this);
-   dunlock();
+   Unlock();
 }
 
 
 #ifdef SD_DEBUG_LOCK
-void DCR::_dlock(const char *file, int line)
+
+/*
+ * Debug DCR locks  N.B.
+ *
+ */
+void DCR::dbg_mLock(const char *file, int line, bool locked)
 {
-   dev->_dlock(file, line);
-   m_dev_locked = true;
+   real_P(r_mutex);
+   if (is_dev_locked()) {
+      real_V(r_mutex);
+      return;
+   }
+   Dmsg3(sd_dbglvl, "mLock %d from %s:%d\n", locked, file, line);
+   dev->dbg_rLock(file,line,locked);
+   inc_dev_lock();
+   real_V(r_mutex);
+   return;
 }
-void DCR::_dunlock(const char *file, int line)
-{
-   m_dev_locked = false;
-   dev->_dunlock(file, line);
 
+void DCR::dbg_mUnlock(const char *file, int line)
+{
+   Dmsg2(sd_dbglvl, "mUnlock from %s:%d\n", file, line);
+   real_P(r_mutex);
+   if (!is_dev_locked()) {
+      real_P(r_mutex);
+      ASSERT2(0, "Call on dcr mUnlock when not locked");
+      return;
+   }
+   dec_dev_lock();
+   /* When the count goes to zero, unlock it */
+   if (!is_dev_locked()) {
+      dev->dbg_rUnlock(file,line);
+   }
+   real_V(r_mutex);
+   return;
 }
 
-void DEVICE::_dlock(const char *file, int line)
+/*
+ * Debug DEVICE locks  N.B.
+ *
+ */
+void DEVICE::dbg_Lock(const char *file, int line)
 {
-   Dmsg3(sd_dbglvl, "dlock from %s:%d precnt=%d\n", file, line, m_count); 
+   Dmsg3(sd_dbglvl, "Lock from %s:%d precnt=%d\n", file, line, m_count); 
    /* Note, this *really* should be protected by a mutex, but
     *  since it is only debug code we don't worry too much.  
     */
@@ -180,25 +208,161 @@ void DEVICE::_dlock(const char *file, int line)
             get_jobid_from_tid(m_pid),
             file, line, m_count);
    }
-   P(m_mutex);
+   bthread_mutex_lock_p(&m_mutex, file, line);
    m_pid = pthread_self();
    m_count++; 
 }
 
-void DEVICE::_dunlock(const char *file, int line)
+void DEVICE::dbg_Unlock(const char *file, int line)
 {
    m_count--; 
-   Dmsg3(sd_dbglvl+1, "dunlock from %s:%d postcnt=%d\n", file, line, m_count); 
-   V(m_mutex);   
+   Dmsg3(sd_dbglvl, "Unlock from %s:%d postcnt=%d\n", file, line, m_count); 
+   bthread_mutex_unlock_p(&m_mutex, file, line);
+}
+
+void DEVICE::dbg_rUnlock(const char *file, int line)
+{
+   Dmsg2(sd_dbglvl, "rUnlock from %s:%d\n", file, line); 
+   dbg_Unlock(file, line);
+}
+
+void DEVICE::dbg_Lock_acquire(const char *file, int line)
+{
+   Dmsg2(sd_dbglvl, "Lock_acquire from %s:%d\n", file, line); 
+   bthread_mutex_lock_p(&acquire_mutex, file, line);
+}
+
+void DEVICE::dbg_Unlock_acquire(const char *file, int line)
+{
+   Dmsg2(sd_dbglvl, "Unlock_acquire from %s:%d\n", file, line); 
+   bthread_mutex_unlock_p(&acquire_mutex, file, line);
 }
 
-void DEVICE::_r_dunlock(const char *file, int line)
+void DEVICE::dbg_Lock_read_acquire(const char *file, int line)
 {
-   this->_dunlock(file, line);
+   Dmsg2(sd_dbglvl, "Lock_read_acquire from %s:%d\n", file, line); 
+   bthread_mutex_lock_p(&read_acquire_mutex, file, line);
+}
+
+void DEVICE::dbg_Unlock_read_acquire(const char *file, int line)
+{
+   Dmsg2(sd_dbglvl, "Unlock_read_acquire from %s:%d\n", file, line); 
+   bthread_mutex_unlock_p(&read_acquire_mutex, file, line);
+}
+
+
+#else
+
+/*
+ * DCR locks  N.B.
+ *
+ */
+/* Multiple rLock implementation */
+void DCR::mLock(bool locked)
+{
+   P(r_mutex);
+   if (is_dev_locked()) {
+      V(r_mutex);
+      return;
+   }
+   dev->rLock(locked);
+   inc_dev_lock();
+   V(r_mutex);
+   return;
+}
+
+/* Multiple rUnlock implementation */
+void DCR::mUnlock()
+{
+   P(r_mutex);
+   if (!is_dev_locked()) {
+      V(r_mutex);
+      ASSERT2(0, "Call on dcr mUnlock when not locked");
+      return;
+   }
+   dec_dev_lock();
+   /* When the count goes to zero, unlock it */
+   if (!is_dev_locked()) {
+      dev->rUnlock();
+   }
+   V(r_mutex);
+   return;
+}
+
+/*
+ * DEVICE locks  N.B.
+ *
+ */
+
+void DEVICE::rUnlock()
+{
+   Unlock();
+}
+
+void DEVICE::Lock()
+{
+   P(m_mutex);
+}
+
+void DEVICE::Unlock()
+{
+   V(m_mutex);
+}
+
+void DEVICE::Lock_acquire()
+{
+   P(acquire_mutex);
+}
+
+void DEVICE::Unlock_acquire()
+{
+   V(acquire_mutex);
+}
+
+void DEVICE::Lock_read_acquire()
+{
+   P(read_acquire_mutex);
+}
+
+void DEVICE::Unlock_read_acquire()
+{
+   V(read_acquire_mutex);
 }
 
 #endif
 
+/* Main device access control */
+int DEVICE::init_mutex()
+{
+   return pthread_mutex_init(&m_mutex, NULL);
+}
+
+/* Write device acquire mutex */
+int DEVICE::init_acquire_mutex()
+{
+   return pthread_mutex_init(&acquire_mutex, NULL);
+}
+
+/* Read device acquire mutex */
+int DEVICE::init_read_acquire_mutex()
+{
+   return pthread_mutex_init(&read_acquire_mutex, NULL);
+}
+
+/* Set order in which device locks must be acquired */
+void DEVICE::set_mutex_priorities()
+{
+   /* Ensure that we respect this order in P/V operations */
+   bthread_mutex_set_priority(&m_mutex,       PRIO_SD_DEV_ACCESS);
+   bthread_mutex_set_priority(&spool_mutex,   PRIO_SD_DEV_SPOOL);
+   bthread_mutex_set_priority(&acquire_mutex, PRIO_SD_DEV_ACQUIRE);
+}
+
+int DEVICE::next_vol_timedwait(const struct timespec *timeout)
+{
+   return pthread_cond_timedwait(&wait_next_vol, &m_mutex, timeout);
+}
+
 
 /*
  * This is a recursive lock that checks if the device is blocked.
@@ -208,44 +372,50 @@ void DEVICE::_r_dunlock(const char *file, int line)
  * and preparing the label.
  */
 #ifdef SD_DEBUG_LOCK
-void DEVICE::_r_dlock(const char *file, int line, bool locked)
+void DEVICE::dbg_rLock(const char *file, int line, bool locked)
 {
-   Dmsg3(sd_dbglvl+1, "r_dlock blked=%s from %s:%d\n", this->print_blocked(),
+   Dmsg3(sd_dbglvl, "rLock blked=%s from %s:%d\n", print_blocked(),
          file, line);
+   if (!locked) {
+      /* lockmgr version of P(m_mutex) */
+      bthread_mutex_lock_p(&m_mutex, file, line);
+      m_count++;
+   }
 #else
-void DEVICE::r_dlock(bool locked)
+void DEVICE::rLock(bool locked)
 {
-#endif
-   int stat;
    if (!locked) {
-      P(m_mutex); /*    this->dlock();   */
-      m_count++;  /*    this->dlock() */
+      Lock();
+      m_count++;
    }
-   if (this->blocked() && !pthread_equal(this->no_wait_id, pthread_self())) {
-      this->num_waiting++;             /* indicate that I am waiting */
-      while (this->blocked()) {
+#endif
+
+   if (blocked() && !pthread_equal(no_wait_id, pthread_self())) {
+      num_waiting++;             /* indicate that I am waiting */
+      while (blocked()) {
+         int stat;
 #ifndef HAVE_WIN32
          /* thread id on Win32 may be a struct */
-         Dmsg3(sd_dbglvl, "r_dlock blked=%s no_wait=%p me=%p\n", this->print_blocked(),
-               this->no_wait_id, pthread_self());
+         Dmsg3(sd_dbglvl, "rLock blked=%s no_wait=%p me=%p\n", print_blocked(),
+               no_wait_id, pthread_self());
 #endif
          if ((stat = pthread_cond_wait(&this->wait, &m_mutex)) != 0) {
             berrno be;
-            this->dunlock();
+            this->Unlock();
             Emsg1(M_ABORT, 0, _("pthread_cond_wait failure. ERR=%s\n"),
                be.bstrerror(stat));
          }
       }
-      this->num_waiting--;             /* no longer waiting */
+      num_waiting--;             /* no longer waiting */
    }
 }
 
 /*
  * Block all other threads from using the device
  *  Device must already be locked.  After this call,
- *  the device is blocked to any thread calling dev->r_lock(),
+ *  the device is blocked to any thread calling dev->rLock(),
  *  but the device is not locked (i.e. no P on device).  Also,
- *  the current thread can do slip through the dev->r_lock()
+ *  the current thread can do slip through the dev->rLock()
  *  calls without blocking.
  */
 void _block_device(const char *file, int line, DEVICE *dev, int state)
@@ -280,7 +450,6 @@ void _unblock_device(const char *file, int line, DEVICE *dev)
  */
 void _steal_device_lock(const char *file, int line, DEVICE *dev, bsteal_lock_t *hold, int state)
 {
-
    Dmsg3(sd_dbglvl, "steal lock. old=%s from %s:%d\n", dev->print_blocked(),
       file, line);
    hold->dev_blocked = dev->blocked();
@@ -289,7 +458,7 @@ void _steal_device_lock(const char *file, int line, DEVICE *dev, bsteal_lock_t *
    dev->set_blocked(state);
    Dmsg1(sd_dbglvl, "steal lock. new=%s\n", dev->print_blocked());
    dev->no_wait_id = pthread_self();
-   dev->dunlock();
+   dev->Unlock();
 }
 
 /*
@@ -300,7 +469,7 @@ void _give_back_device_lock(const char *file, int line, DEVICE *dev, bsteal_lock
 {
    Dmsg3(sd_dbglvl, "return lock. old=%s from %s:%d\n",
       dev->print_blocked(), file, line);
-   dev->dlock();
+   dev->Lock();
    dev->set_blocked(hold->dev_blocked);
    dev->dev_prev_blocked = hold->dev_prev_blocked;
    dev->no_wait_id = hold->no_wait_id;
@@ -343,6 +512,7 @@ const char *DEVICE::print_blocked() const
 bool DEVICE::is_device_unmounted()
 {
    bool stat;
+
    int blk = blocked();
    stat = (blk == BST_UNMOUNTED) ||
           (blk == BST_UNMOUNTED_WAITING_FOR_SYSOP);
diff --git a/src/stored/mac.c b/src/stored/mac.c
index 0797b24..7883c9d 100644
--- a/src/stored/mac.c
+++ b/src/stored/mac.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2006-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2006-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -122,7 +122,7 @@ ok_out:
       Dmsg1(100, "ok=%d\n", ok);
       if (ok || dev->can_write()) {
          /* Flush out final partial block of this session */
-         if (!write_block_to_device(jcr->dcr)) {
+         if (!jcr->dcr->write_block_to_device()) {
             Jmsg2(jcr, M_FATAL, 0, _("Fatal append error on device %s: ERR=%s\n"),
                   dev->print_name(), dev->bstrerror());
             Dmsg0(100, _("Set ok=FALSE after write_block_to_device.\n"));
@@ -138,6 +138,20 @@ ok_out:
          commit_data_spool(jcr->dcr);
       }
 
+      /*
+       * Don't use time_t for job_elapsed as time_t can be 32 or 64 bits,
+       *   and the subsequent Jmsg() editing will break
+       */
+      int32_t job_elapsed = time(NULL) - jcr->run_time;
+
+      if (job_elapsed <= 0) {
+         job_elapsed = 1;
+      }
+
+      Jmsg(jcr, M_INFO, 0, _("Elapsed time=%02d:%02d:%02d, Transfer rate=%s Bytes/second\n"),
+            job_elapsed / 3600, job_elapsed % 3600 / 60, job_elapsed % 60,
+            edit_uint64_with_suffix(jcr->JobBytes / job_elapsed, ec1));
+
       if (ok && dev->is_dvd()) {
          ok = dvd_close_job(jcr->dcr);   /* do DVD cleanup if any */
       }
@@ -238,10 +252,10 @@ static bool record_cb(DCR *dcr, DEV_RECORD *rec)
       jcr->JobId,
       FI_to_ascii(buf1, rec->FileIndex), rec->VolSessionId,
       stream_to_ascii(buf2, rec->Stream, rec->FileIndex), rec->data_len);
-   while (!write_record_to_block(jcr->dcr->block, rec)) {
+   while (!write_record_to_block(jcr->dcr, rec)) {
       Dmsg4(200, "!write_record_to_block blkpos=%u:%u len=%d rem=%d\n", 
             dev->file, dev->block_num, rec->data_len, rec->remainder);
-      if (!write_block_to_device(jcr->dcr)) {
+      if (!jcr->dcr->write_block_to_device()) {
          Dmsg2(90, "Got write_block_to_dev error on device %s. %s\n",
             dev->print_name(), dev->bstrerror());
          Jmsg2(jcr, M_FATAL, 0, _("Fatal append error on device %s: ERR=%s\n"),
diff --git a/src/stored/mount.c b/src/stored/mount.c
index 782181a..a825123 100644
--- a/src/stored/mount.c
+++ b/src/stored/mount.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -37,6 +37,8 @@
 #include "bacula.h"                   /* pull in global headers */
 #include "stored.h"                   /* pull in Storage Deamon headers */
 
+static pthread_mutex_t mount_mutex = PTHREAD_MUTEX_INITIALIZER;
+
 enum {
    try_next_vol = 1,
    try_read_vol,
@@ -77,27 +79,27 @@ bool DCR::mount_next_write_volume()
       dev->print_name());
 
    init_device_wait_timers(dcr);
+
+   P(mount_mutex);
    
    /*
     * Attempt to mount the next volume. If something non-fatal goes
     *  wrong, we come back here to re-try (new op messages, re-read
     *  Volume, ...)
     */
-   lock_volumes();
-
 mount_next_vol:
    Dmsg1(150, "mount_next_vol retry=%d\n", retry);
    /* Ignore retry if this is poll request */
    if (retry++ > 4) {
       /* Last ditch effort before giving up, force operator to respond */
       VolCatInfo.Slot = 0;
-      unlock_volumes();
+      V(mount_mutex);
       if (!dir_ask_sysop_to_mount_volume(dcr, ST_APPEND)) {
          Jmsg(jcr, M_FATAL, 0, _("Too many errors trying to mount device %s.\n"),
               dev->print_name());
          goto no_lock_bail_out;
       }
-      lock_volumes();
+      P(mount_mutex);
       Dmsg1(150, "Continue after dir_ask_sysop_to_mount. must_load=%d\n", dev->must_load());
    }
    if (job_canceled(jcr)) {
@@ -162,13 +164,13 @@ mount_next_vol:
    Dmsg2(250, "Ask=%d autochanger=%d\n", ask, autochanger);
 
    if (ask) {
-      unlock_volumes();
+      V(mount_mutex);
       dcr->setVolCatInfo(false);   /* out of date when Vols unlocked */
       if (!dir_ask_sysop_to_mount_volume(dcr, ST_APPEND)) {
          Dmsg0(150, "Error return ask_sysop ...\n");
          goto no_lock_bail_out;
       }
-      lock_volumes();
+      P(mount_mutex);
    }
    if (job_canceled(jcr)) {
       goto bail_out;
@@ -188,10 +190,10 @@ mount_next_vol:
       mode = OPEN_READ_WRITE;
    }
    /* Try autolabel if enabled */
-   if (dev->open(dcr, mode) < 0) {
+   if (!dev->open(dcr, mode)) {
       try_autolabel(false);      /* try to create a new volume label */
    }
-   while (dev->open(dcr, mode) < 0) {
+   while (!dev->open(dcr, mode)) {
       Dmsg1(150, "open_device failed: ERR=%s\n", dev->bstrerror());
       if ((dev->is_file() && dev->is_removable()) || dev->is_dvd()) {
          bool ok = true;
@@ -202,7 +204,7 @@ mount_next_vol:
             }
          }
          if (ok && dev->scan_dir_for_volume(dcr)) {
-            if (dev->open(dcr, mode) >= 0) {
+            if (dev->open(dcr, mode)) {
                break;                    /* got a valid volume */
             }
          }
@@ -243,7 +245,7 @@ read_volume:
     * Check that volcatinfo is good   
     */
    if (!dev->haveVolCatInfo()) {
-      Dmsg0(100, "Do not have volcatinfo\n");
+      Dmsg0(210, "Do not have volcatinfo\n");
       if (!find_a_volume()) {
          goto mount_next_vol;
       }
@@ -265,7 +267,7 @@ read_volume:
     */
    recycle = strcmp(dev->VolCatInfo.VolCatStatus, "Recycle") == 0;
    if (dev->VolHdr.LabelType == PRE_LABEL || recycle) {
-      if (!rewrite_volume_label(dcr, recycle)) {
+      if (!dcr->rewrite_volume_label(recycle)) {
          mark_volume_in_error();
          goto mount_next_vol;
       }
@@ -306,11 +308,11 @@ read_volume:
    Dmsg1(150, "set APPEND, normal return from mount_next_write_volume. dev=%s\n",
       dev->print_name());
 
-   unlock_volumes();
+   V(mount_mutex);
    return true;
 
 bail_out:
-   unlock_volumes();
+   V(mount_mutex);
 
 no_lock_bail_out:
    return false;
@@ -320,7 +322,8 @@ no_lock_bail_out:
  * This routine is meant to be called once the first pass
  *   to ensure that we have a candidate volume to mount.
  *   Otherwise, we ask the sysop to created one.
- * Note, the the Volumes are locked on entry and exit.
+ * Note, mount_mutex is already locked on entry and thus
+ *   must remain locked on exit from this function.
  */
 bool DCR::find_a_volume()
 {
@@ -344,12 +347,12 @@ bool DCR::find_a_volume()
             if (job_canceled(jcr)) {
                return false;
             }
-            unlock_volumes();
+            V(mount_mutex);
             if (!dir_ask_sysop_to_create_appendable_volume(dcr)) {
-               lock_volumes();
+               P(mount_mutex);
                return false;
              }
-             lock_volumes();
+             P(mount_mutex);
              if (job_canceled(jcr)) {
                 return false;
              }
@@ -579,7 +582,11 @@ void DCR::do_swapping(bool is_writing)
          Dmsg2(100, "Vol=%s on dev=%s\n", dev->swap_dev->vol->vol_name,
               dev->swap_dev->print_name());
       }
+      Dmsg2(100, "Set swap_dev=NULL for dev=%s swap_dev=%s\n",
+         dev->print_name(), dev->swap_dev->print_name());
       dev->swap_dev = NULL;
+   } else {
+      Dmsg0(100, "No swap_dev set\n");
    }
 }
 
@@ -859,7 +866,11 @@ bool mount_next_read_volume(DCR *dcr)
     * End Of Tape -- mount next Volume (if another specified)
     */
    if (jcr->NumReadVolumes > 1 && jcr->CurReadVolume < jcr->NumReadVolumes) {
+      dev->Lock();
       dev->close();
+      dev->set_read();
+      dcr->set_reserved();
+      dev->Unlock();
       if (!acquire_device_for_read(dcr)) {
          Jmsg2(jcr, M_FATAL, 0, _("Cannot open Dev=%s, Vol=%s\n"), dev->print_name(),
                dcr->VolumeName);
diff --git a/src/stored/parse_bsr.c b/src/stored/parse_bsr.c
index d4eb27c..f9fb517 100644
--- a/src/stored/parse_bsr.c
+++ b/src/stored/parse_bsr.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2002-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2002-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -30,7 +30,6 @@
  *
  *     Kern Sibbald, June MMII
  *
- *   Version $Id$
  */
 
 
diff --git a/src/stored/protos.h b/src/stored/protos.h
index 9aaee10..ed9badf 100644
--- a/src/stored/protos.h
+++ b/src/stored/protos.h
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -80,16 +80,9 @@ DEV_BLOCK *dup_block(DEV_BLOCK *eblock);
 void    init_block_write(DEV_BLOCK *block);
 void    empty_block(DEV_BLOCK *block);
 void    free_block(DEV_BLOCK *block);
-bool    write_block_to_device(DCR *dcr);
-bool    write_block_to_dev(DCR *dcr);
 void    print_block_read_errors(JCR *jcr, DEV_BLOCK *block);
 void    ser_block_header(DEV_BLOCK *block);
 
-#define CHECK_BLOCK_NUMBERS    true
-#define NO_BLOCK_NUMBER_CHECK  false
-bool    read_block_from_device(DCR *dcr, bool check_block_numbers);
-bool    read_block_from_dev(DCR *dcr, bool check_block_numbers);
-
 /* From butil.c -- utilities for SD tool programs */
 void    print_ls_output(const char *fname, const char *link, int type, struct stat *statp);
 JCR    *setup_jcr(const char *name, char *dev_name, BSR *bsr,
@@ -151,20 +144,18 @@ int      read_dev_volume_label(DCR *dcr);
 int      read_dvd_volume_label(DCR *dcr, bool write);
 void     create_session_label(DCR *dcr, DEV_RECORD *rec, int label);
 void     create_volume_label(DEVICE *dev, const char *VolName, const char *PoolName, bool dvdnow);
-bool     write_new_volume_label_to_dev(DCR *dcr, const char *VolName, 
-           const char *PoolName, bool relabel, bool dvdnow);
 #define ANSI_VOL_LABEL 0
 #define ANSI_EOF_LABEL 1
 #define ANSI_EOV_LABEL 2
 bool     write_ansi_ibm_labels(DCR *dcr, int type, const char *VolName);
 int      read_ansi_ibm_label(DCR *dcr);
 bool     write_session_label(DCR *dcr, int label);
-bool     write_volume_label_to_block(DCR *dcr);
-bool     rewrite_volume_label(DCR *dcr, bool recycle);
 void     dump_volume_label(DEVICE *dev);
 void     dump_label_record(DEVICE *dev, DEV_RECORD *rec, int verbose);
 bool     unser_volume_label(DEVICE *dev, DEV_RECORD *rec);
 bool     unser_session_label(SESSION_LABEL *label, DEV_RECORD *rec);
+bool     write_new_volume_label_to_dev(DCR *dcr, const char *VolName, 
+            const char *PoolName, bool relabel, bool dvdnow);
 
 /* From locks.c */
 void     _lock_device(const char *file, int line, DEVICE *dev);
@@ -200,9 +191,9 @@ void     create_restore_volume_list(JCR *jcr);
 /* From record.c */
 const char *FI_to_ascii(char *buf, int fi);
 const char *stream_to_ascii(char *buf, int stream, int fi);
-bool        write_record_to_block(DEV_BLOCK *block, DEV_RECORD *rec);
+bool        write_record_to_block(DCR *dcr, DEV_RECORD *rec);
 bool        can_write_record_to_block(DEV_BLOCK *block, DEV_RECORD *rec);
-bool        read_record_from_block(DCR *dcr, DEV_BLOCK *block, DEV_RECORD *rec);
+bool        read_record_from_block(DCR *dcr, DEV_RECORD *rec);
 DEV_RECORD *new_record();
 void        free_record(DEV_RECORD *rec);
 void        empty_record(DEV_RECORD *rec);
diff --git a/src/stored/read_record.c b/src/stored/read_record.c
index d998ccb..92383ab 100644
--- a/src/stored/read_record.c
+++ b/src/stored/read_record.c
@@ -48,7 +48,7 @@ static void handle_session_record(DEVICE *dev, DEV_RECORD *rec, SESSION_LABEL *s
 static BSR *position_to_first_file(JCR *jcr, DCR *dcr);
 static bool try_repositioning(JCR *jcr, DEV_RECORD *rec, DCR *dcr);
 #ifdef DEBUG
-static char *rec_state_to_str(DEV_RECORD *rec);
+static char *rec_state_bits_to_str(DEV_RECORD *rec);
 #endif
 
 static const int dbglvl = 500;
@@ -83,7 +83,7 @@ bool read_records(DCR *dcr,
          ok = false;
          break;
       }
-      if (!read_block_from_device(dcr, CHECK_BLOCK_NUMBERS)) {
+      if (!dcr->read_block_from_device(CHECK_BLOCK_NUMBERS)) {
          if (dev->at_eot()) {
             DEV_RECORD *trec = new_record();
             Jmsg(jcr, M_INFO, 0, _("End of Volume at file %u on device %s, Volume \"%s\"\n"),
@@ -119,8 +119,8 @@ bool read_records(DCR *dcr,
              *  and pass it off to the callback routine, then continue
              *  most likely reading the previous record.
              */
-            read_block_from_device(dcr, NO_BLOCK_NUMBER_CHECK);
-            read_record_from_block(dcr, block, trec);
+            dcr->read_block_from_device(NO_BLOCK_NUMBER_CHECK);
+            read_record_from_block(dcr, trec);
             handle_session_record(dev, trec, &sessrec);
             ok = record_cb(dcr, trec);
             free_record(trec);
@@ -189,23 +189,23 @@ bool read_records(DCR *dcr,
          rec = new_record();
          recs->prepend(rec);
          Dmsg3(dbglvl, "New record for state=%s SI=%d ST=%d\n",
-             rec_state_to_str(rec),
+             rec_state_bits_to_str(rec),
              block->VolSessionId, block->VolSessionTime);
       }
-      Dmsg3(dbglvl, "Before read rec loop. stat=%s blk=%d rem=%d\n", rec_state_to_str(rec),
+      Dmsg3(dbglvl, "Before read rec loop. stat=%s blk=%d rem=%d\n", rec_state_bits_to_str(rec),
             block->BlockNumber, rec->remainder);
       record = 0;
-      rec->state = 0;
+      rec->state_bits = 0;
       lastFileIndex = no_FileIndex;
       Dmsg1(dbglvl, "Block %s empty\n", is_block_empty(rec)?"is":"NOT");
-      for (rec->state=0; ok && !is_block_empty(rec); ) {
-         if (!read_record_from_block(dcr, block, rec)) {
-            Dmsg3(400, "!read-break. state=%s blk=%d rem=%d\n", rec_state_to_str(rec),
+      for (rec->state_bits=0; ok && !is_block_empty(rec); ) {
+         if (!read_record_from_block(dcr, rec)) {
+            Dmsg3(400, "!read-break. state_bits=%s blk=%d rem=%d\n", rec_state_bits_to_str(rec),
                   block->BlockNumber, rec->remainder);
             break;
          }
-         Dmsg5(dbglvl, "read-OK. state=%s blk=%d rem=%d file:block=%u:%u\n",
-                 rec_state_to_str(rec), block->BlockNumber, rec->remainder,
+         Dmsg5(dbglvl, "read-OK. state_bits=%s blk=%d rem=%d file:block=%u:%u\n",
+                 rec_state_bits_to_str(rec), block->BlockNumber, rec->remainder,
                  dev->file, dev->block_num);
          /*
           * At this point, we have at least a record header.
@@ -214,8 +214,8 @@ bool read_records(DCR *dcr,
           *  get all the data.
           */
          record++;
-         Dmsg6(dbglvl, "recno=%d state=%s blk=%d SI=%d ST=%d FI=%d\n", record,
-            rec_state_to_str(rec), block->BlockNumber,
+         Dmsg6(dbglvl, "recno=%d state_bits=%s blk=%d SI=%d ST=%d FI=%d\n", record,
+            rec_state_bits_to_str(rec), block->BlockNumber,
             rec->VolSessionId, rec->VolSessionTime, rec->FileIndex);
 
          if (rec->FileIndex == EOM_LABEL) { /* end of tape? */
@@ -268,7 +268,7 @@ bool read_records(DCR *dcr,
                Dmsg4(dbglvl, "BSR no match: clear rem=%d FI=%d before set_eof pos %u:%u\n",
                   rec->remainder, rec->FileIndex, dev->file, dev->block_num);
                rec->remainder = 0;
-               rec->state &= ~REC_PARTIAL_RECORD;
+               rec->state_bits &= ~REC_PARTIAL_RECORD;
                if (try_repositioning(jcr, rec, dcr)) {
                   break;
                }
@@ -277,14 +277,14 @@ bool read_records(DCR *dcr,
          }
          dcr->VolLastIndex = rec->FileIndex;  /* let caller know where we are */
          if (is_partial_record(rec)) {
-            Dmsg6(dbglvl, "Partial, break. recno=%d state=%s blk=%d SI=%d ST=%d FI=%d\n", record,
-               rec_state_to_str(rec), block->BlockNumber,
+            Dmsg6(dbglvl, "Partial, break. recno=%d state_bits=%s blk=%d SI=%d ST=%d FI=%d\n", record,
+               rec_state_bits_to_str(rec), block->BlockNumber,
                rec->VolSessionId, rec->VolSessionTime, rec->FileIndex);
             break;                    /* read second part of record */
          }
 
-         Dmsg6(dbglvl, "OK callback. recno=%d state=%s blk=%d SI=%d ST=%d FI=%d\n", record,
-               rec_state_to_str(rec), block->BlockNumber,
+         Dmsg6(dbglvl, "OK callback. recno=%d state_bits=%s blk=%d SI=%d ST=%d FI=%d\n", record,
+               rec_state_bits_to_str(rec), block->BlockNumber,
                rec->VolSessionId, rec->VolSessionTime, rec->FileIndex);
          if (lastFileIndex != no_FileIndex && lastFileIndex != rec->FileIndex) {
             if (is_this_bsr_done(jcr->bsr, rec) && try_repositioning(jcr, rec, dcr)) {
@@ -369,7 +369,7 @@ static bool try_repositioning(JCR *jcr, DEV_RECORD *rec, DCR *dcr)
       if (dev_addr > bsr_addr) {
          return false;
       }
-      Dmsg4(10, "Try_Reposition from (file:block) %u:%u to %u:%u\n",
+      Dmsg4(dbglvl, "Try_Reposition from (file:block) %u:%u to %u:%u\n",
             dev->file, dev->block_num, file, block);
       dev->reposition(dcr, file, block);
       rec->Block = 0;
@@ -437,23 +437,23 @@ static void handle_session_record(DEVICE *dev, DEV_RECORD *rec, SESSION_LABEL *s
 }
 
 #ifdef DEBUG
-static char *rec_state_to_str(DEV_RECORD *rec)
+static char *rec_state_bits_to_str(DEV_RECORD *rec)
 {
    static char buf[200];
    buf[0] = 0;
-   if (rec->state & REC_NO_HEADER) {
+   if (rec->state_bits & REC_NO_HEADER) {
       bstrncat(buf, "Nohdr,", sizeof(buf));
    }
    if (is_partial_record(rec)) {
       bstrncat(buf, "partial,", sizeof(buf));
    }
-   if (rec->state & REC_BLOCK_EMPTY) {
+   if (rec->state_bits & REC_BLOCK_EMPTY) {
       bstrncat(buf, "empty,", sizeof(buf));
    }
-   if (rec->state & REC_NO_MATCH) {
+   if (rec->state_bits & REC_NO_MATCH) {
       bstrncat(buf, "Nomatch,", sizeof(buf));
    }
-   if (rec->state & REC_CONTINUATION) {
+   if (rec->state_bits & REC_CONTINUATION) {
       bstrncat(buf, "cont,", sizeof(buf));
    }
    if (buf[0]) {
diff --git a/src/stored/record.c b/src/stored/record.c
index 32f09a9..73f0c9f 100644
--- a/src/stored/record.c
+++ b/src/stored/record.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -27,7 +27,7 @@
 */
 /*
  *
- *   record.c -- tape record handling functions
+ *   record.c -- Volume (tape/disk) record handling functions
  *
  *              Kern Sibbald, April MMI
  *                added BB02 format October MMII
@@ -246,6 +246,7 @@ DEV_RECORD *new_record(void)
    rec = (DEV_RECORD *)get_memory(sizeof(DEV_RECORD));
    memset(rec, 0, sizeof(DEV_RECORD));
    rec->data = get_pool_memory(PM_MESSAGE);
+   rec->state = st_none;
    return rec;
 }
 
@@ -255,7 +256,8 @@ void empty_record(DEV_RECORD *rec)
    rec->VolSessionId = rec->VolSessionTime = 0;
    rec->FileIndex = rec->Stream = 0;
    rec->data_len = rec->remainder = 0;
-   rec->state &= ~(REC_PARTIAL_RECORD|REC_BLOCK_EMPTY|REC_NO_MATCH|REC_CONTINUATION);
+   rec->state_bits &= ~(REC_PARTIAL_RECORD|REC_BLOCK_EMPTY|REC_NO_MATCH|REC_CONTINUATION);
+   rec->state = st_none;
 }
 
 /*
@@ -273,89 +275,13 @@ void free_record(DEV_RECORD *rec)
    Dmsg0(950, "Leave free_record.\n");
 }
 
-
-/*
- * Write a Record to the block
- *
- *  Returns: false on failure (none or partially written)
- *           true  on success (all bytes written)
- *
- *  and remainder returned in packet.
- *
- *  We require enough room for the header, and we deal with
- *  two special cases. 1. Only part of the record may have
- *  been transferred the last time (when remainder is
- *  non-zero), and 2. The remaining bytes to write may not
- *  all fit into the block.
- */
-bool write_record_to_block(DEV_BLOCK *block, DEV_RECORD *rec)
+static bool write_header_to_block(DEV_BLOCK *block, DEV_RECORD *rec)
 {
    ser_declare;
-   uint32_t remlen;
-   char buf1[100], buf2[100];
-
-   remlen = block->buf_len - block->binbuf;
-
-   ASSERT(block->binbuf == (uint32_t) (block->bufp - block->buf));
-   ASSERT(block->buf_len >= block->binbuf);
-
-   Dmsg6(890, "write_record_to_block() FI=%s SessId=%d Strm=%s len=%d\n"
-      "rem=%d remainder=%d\n",
-      FI_to_ascii(buf1, rec->FileIndex), rec->VolSessionId,
-      stream_to_ascii(buf2, rec->Stream, rec->FileIndex), rec->data_len,
-      remlen, rec->remainder);
-
-   /*
-    * If rec->remainder is non-zero, we have been called a
-    *  second (or subsequent) time to finish writing a record
-    *  that did not previously fit into the block.
-    */
-   if (rec->remainder == 0) {
-      /* Require enough room to write a full header */
-      if (remlen >= WRITE_RECHDR_LENGTH) {
-         ser_begin(block->bufp, WRITE_RECHDR_LENGTH);
-         if (BLOCK_VER == 1) {
-            ser_uint32(rec->VolSessionId);
-            ser_uint32(rec->VolSessionTime);
-         } else {
-            block->VolSessionId = rec->VolSessionId;
-            block->VolSessionTime = rec->VolSessionTime;
-         }
-         ser_int32(rec->FileIndex);
-         ser_int32(rec->Stream);
-         ser_uint32(rec->data_len);
 
-         block->bufp += WRITE_RECHDR_LENGTH;
-         block->binbuf += WRITE_RECHDR_LENGTH;
-         remlen -= WRITE_RECHDR_LENGTH;
-         rec->remainder = rec->data_len;
-         if (rec->FileIndex > 0) {
-            /* If data record, update what we have in this block */
-            if (block->FirstIndex == 0) {
-               block->FirstIndex = rec->FileIndex;
-            }
-            block->LastIndex = rec->FileIndex;
-         }
-      } else {
-         rec->remainder = rec->data_len + WRITE_RECHDR_LENGTH;
-         return false;
-      }
-   } else {
-      /*
-       * We are here to write unwritten bytes from a previous
-       * time. Presumably we have a new buffer (possibly
-       * containing a volume label), so the new header
-       * should be able to fit in the block -- otherwise we have
-       * an error.  Note, we have to continue splitting the
-       * data record if it is longer than the block.
-       *
-       * First, write the header, then write as much as
-       * possible of the data record.
-       *
-       * Every time we write a header and it is a continuation
-       * of a previous partially written record, we store the
-       * Stream as -Stream in the record header.
-       */
+   rec->remlen = block->buf_len - block->binbuf;
+   /* Require enough room to write a full header */
+   if (rec->remlen >= WRITE_RECHDR_LENGTH) {
       ser_begin(block->bufp, WRITE_RECHDR_LENGTH);
       if (BLOCK_VER == 1) {
          ser_uint32(rec->VolSessionId);
@@ -365,21 +291,13 @@ bool write_record_to_block(DEV_BLOCK *block, DEV_RECORD *rec)
          block->VolSessionTime = rec->VolSessionTime;
       }
       ser_int32(rec->FileIndex);
-      if (rec->remainder > rec->data_len) {
-         ser_int32(rec->Stream);      /* normal full header */
-         ser_uint32(rec->data_len);
-         rec->remainder = rec->data_len; /* must still do data record */
-      } else {
-         ser_int32(-rec->Stream);     /* mark this as a continuation record */
-         ser_uint32(rec->remainder);  /* bytes to do */
-      }
-
-      /* Require enough room to write a full header */
-      ASSERT(remlen >= WRITE_RECHDR_LENGTH);
+      ser_int32(rec->Stream);
+      ser_uint32(rec->data_len);
 
       block->bufp += WRITE_RECHDR_LENGTH;
       block->binbuf += WRITE_RECHDR_LENGTH;
-      remlen -= WRITE_RECHDR_LENGTH;
+      rec->remlen -= WRITE_RECHDR_LENGTH;
+      rec->remainder = rec->data_len;
       if (rec->FileIndex > 0) {
          /* If data record, update what we have in this block */
          if (block->FirstIndex == 0) {
@@ -387,54 +305,206 @@ bool write_record_to_block(DEV_BLOCK *block, DEV_RECORD *rec)
          }
          block->LastIndex = rec->FileIndex;
       }
+   } else {
+      rec->remainder = rec->data_len + WRITE_RECHDR_LENGTH;
+      return false;
    }
-   if (remlen == 0) {
-      return false;                   /* partial transfer */
-   }
+   return true;
+}
 
+static void write_continue_header_to_block(DEV_BLOCK *block, DEV_RECORD *rec)
+{
+   ser_declare;
+
+   rec->remlen = block->buf_len - block->binbuf;
    /*
-    * Now deal with data record.
-    * Part of it may have already been transferred, and we
-    * may not have enough room to transfer the whole this time.
+    * We have unwritten bytes from a previous
+    * time. Presumably we have a new buffer (possibly
+    * containing a volume label), so the new header
+    * should be able to fit in the block -- otherwise we have
+    * an error.  Note, we have to continue splitting the
+    * data record if it is longer than the block.
+    *
+    * First, write the header.
+    *
+    * Every time we write a header and it is a continuation
+    * of a previous partially written record, we store the
+    * Stream as -Stream in the record header.
     */
-   if (rec->remainder > 0) {
-      /* Write as much of data as possible */
-      if (remlen >= rec->remainder) {
-         memcpy(block->bufp, rec->data+rec->data_len-rec->remainder,
-                rec->remainder);
-         block->bufp += rec->remainder;
-         block->binbuf += rec->remainder;
-      } else {
-         memcpy(block->bufp, rec->data+rec->data_len-rec->remainder,
-                remlen);
+   ser_begin(block->bufp, WRITE_RECHDR_LENGTH);
+   if (BLOCK_VER == 1) {
+      ser_uint32(rec->VolSessionId);
+      ser_uint32(rec->VolSessionTime);
+   } else {
+      block->VolSessionId = rec->VolSessionId;
+      block->VolSessionTime = rec->VolSessionTime;
+   }
+   ser_int32(rec->FileIndex);
+   if (rec->remainder > rec->data_len) {
+      ser_int32(rec->Stream);      /* normal full header */
+      ser_uint32(rec->data_len);
+      rec->remainder = rec->data_len; /* must still do data record */
+   } else {
+      ser_int32(-rec->Stream);     /* mark this as a continuation record */
+      ser_uint32(rec->remainder);  /* bytes to do */
+   }
+
+   /* Require enough room to write a full header */
+   ASSERT(rec->remlen >= WRITE_RECHDR_LENGTH);
+
+   block->bufp += WRITE_RECHDR_LENGTH;
+   block->binbuf += WRITE_RECHDR_LENGTH;
+   rec->remlen -= WRITE_RECHDR_LENGTH;
+   if (rec->FileIndex > 0) {
+      /* If data record, update what we have in this block */
+      if (block->FirstIndex == 0) {
+         block->FirstIndex = rec->FileIndex;
+      }
+      block->LastIndex = rec->FileIndex;
+   }
+}
+
+static bool write_data_to_block(DEV_BLOCK *block, DEV_RECORD *rec)
+{
+   rec->remlen = block->buf_len - block->binbuf;
+   /* Write as much of data as possible */
+   if (rec->remlen >= rec->remainder) {
+      memcpy(block->bufp, rec->data+rec->data_len-rec->remainder,
+             rec->remainder);
+      block->bufp += rec->remainder;
+      block->binbuf += rec->remainder;
+   } else {
+      memcpy(block->bufp, rec->data+rec->data_len-rec->remainder,
+             rec->remlen);
 #ifdef xxxxxSMCHECK
-         if (!sm_check_rtn(__FILE__, __LINE__, False)) {
-            /* We damaged a buffer */
-            Dmsg6(0, "Damaged block FI=%s SessId=%d Strm=%s len=%d\n"
-               "rem=%d remainder=%d\n",
-               FI_to_ascii(buf1, rec->FileIndex), rec->VolSessionId,
-               stream_to_ascii(buf2, rec->Stream, rec->FileIndex), rec->data_len,
-               remlen, rec->remainder);
-            Dmsg5(0, "Damaged block: bufp=%x binbuf=%d buf_len=%d rem=%d moved=%d\n",
-               block->bufp, block->binbuf, block->buf_len, block->buf_len-block->binbuf,
-               remlen);
-            Dmsg2(0, "Damaged block: buf=%x binbuffrombuf=%d \n",
-               block->buf, block->bufp-block->buf);
-
-               Emsg0(M_ABORT, 0, _("Damaged buffer\n"));
-         }
+      if (!sm_check_rtn(__FILE__, __LINE__, False)) {
+         /* We damaged a buffer */
+         Dmsg6(0, "Damaged block FI=%s SessId=%d Strm=%s len=%d\n"
+            "rem=%d remainder=%d\n",
+            FI_to_ascii(buf1, rec->FileIndex), rec->VolSessionId,
+            stream_to_ascii(buf2, rec->Stream, rec->FileIndex), rec->data_len,
+            rec->remlen, rec->remainder);
+         Dmsg5(0, "Damaged block: bufp=%x binbuf=%d buf_len=%d rem=%d moved=%d\n",
+            block->bufp, block->binbuf, block->buf_len, block->buf_len-block->binbuf,
+            rec->remlen);
+         Dmsg2(0, "Damaged block: buf=%x binbuffrombuf=%d \n",
+            block->buf, block->bufp-block->buf);
+         Emsg0(M_ABORT, 0, _("Damaged buffer\n"));
+      }
 #endif
 
-         block->bufp += remlen;
-         block->binbuf += remlen;
-         rec->remainder -= remlen;
-         return false;                /* did partial transfer */
+      block->bufp += rec->remlen;
+      block->binbuf += rec->remlen;
+      rec->remainder -= rec->remlen;
+      return false;                /* did partial transfer */
+   }
+   return true;
+}
+
+/*
+ * Write a Record to the block
+ *
+ *  Returns: false means the block could not be written to tape/disk.
+ *           true  on success (all bytes written to the block).
+ */
+bool DCR::write_record(DEV_RECORD *rec)
+{
+   while (!write_record_to_block(this, rec)) {
+      Dmsg2(850, "!write_record_to_block data_len=%d rem=%d\n", rec->data_len,
+                 rec->remainder);
+      if (!write_block_to_device()) {
+         Dmsg2(90, "Got write_block_to_dev error on device %s. %s\n",
+            dev->print_name(), dev->bstrerror());
+         return false;
       }
    }
-   rec->remainder = 0;                /* did whole transfer */
    return true;
 }
 
+/*
+ * Write a Record to the block
+ *
+ *  Returns: false on failure (none or partially written)
+ *           true  on success (all bytes written)
+ *
+ *  and remainder returned in packet.
+ *
+ *  We require enough room for the header, and we deal with
+ *  two special cases. 1. Only part of the record may have
+ *  been transferred the last time (when remainder is
+ *  non-zero), and 2. The remaining bytes to write may not
+ *  all fit into the block.
+ */
+bool write_record_to_block(DCR *dcr, DEV_RECORD *rec)
+{
+   char buf1[100], buf2[100];
+   DEV_BLOCK *block = dcr->block;
+
+   for ( ;; ) {
+      ASSERT(block->binbuf == (uint32_t)(block->bufp - block->buf));
+      ASSERT(block->buf_len >= block->binbuf);
+
+      Dmsg6(890, "write_record_to_block() FI=%s SessId=%d Strm=%s len=%d\n"
+         "rem=%d remainder=%d\n",
+         FI_to_ascii(buf1, rec->FileIndex), rec->VolSessionId,
+         stream_to_ascii(buf2, rec->Stream, rec->FileIndex), rec->data_len,
+         rec->remlen, rec->remainder);
+
+      switch (rec->state) {
+      case st_none:
+         /* Figure out what to do */
+         rec->state = st_header;
+         continue;              /* go to next state */
+
+      case st_header:
+         /*
+          * Write header
+          *
+          * If rec->remainder is non-zero, we have been called a
+          *  second (or subsequent) time to finish writing a record
+          *  that did not previously fit into the block.
+          */
+          if (!write_header_to_block(block, rec)) {
+             return false;        /* write block then come back here */
+          }
+          rec->state = st_data;  /* after header, now write data */
+          continue;
+
+      /* Write continuation header */
+      case st_header_cont:
+         write_continue_header_to_block(block, rec);
+         rec->state = st_data;
+         if (rec->remlen == 0) {
+            return false;                   /* partial transfer */
+         }
+         continue;
+
+      /* Write normal data */
+      case st_data:
+         /*
+          * Write data
+          *
+          * Part of it may have already been transferred, and we
+          * may not have enough room to transfer the whole this time.
+          */
+         if (rec->remainder > 0) {
+            if (!write_data_to_block(block, rec)) {
+               rec->state = st_header_cont;
+               return false;
+            }
+         }
+         rec->remainder = 0;                /* did whole transfer */
+         rec->state = st_none;
+         return true;
+
+      default:
+         Dmsg0(000, "Something went wrong. Default state.\n");
+         rec->state = st_none;
+         return true;
+      }
+   }
+   return true;
+}
 
 /*
  * Test if we can write whole record to the block
@@ -476,7 +546,7 @@ uint64_t get_record_address(DEV_RECORD *rec)
  *                 routine may have to be called again with a new
  *                 block if the entire record was not read.
  */
-bool read_record_from_block(DCR *dcr, DEV_BLOCK *block, DEV_RECORD *rec)
+bool read_record_from_block(DCR *dcr, DEV_RECORD *rec)
 {
    ser_declare;
    uint32_t remlen;
@@ -488,45 +558,45 @@ bool read_record_from_block(DCR *dcr, DEV_BLOCK *block, DEV_RECORD *rec)
    uint32_t rhl;
    char buf1[100], buf2[100];
 
-   remlen = block->binbuf;
+   remlen = dcr->block->binbuf;
 
    /* Clear state flags */
-   rec->state = 0;
-   if (block->dev->is_tape()) {
-      rec->state |= REC_ISTAPE;
+   rec->state_bits = 0;
+   if (dcr->block->dev->is_tape()) {
+      rec->state_bits |= REC_ISTAPE;
    }
-   rec->Block = ((DEVICE *)block->dev)->EndBlock;
-   rec->File = ((DEVICE *)block->dev)->EndFile;
+   rec->Block = ((DEVICE *)(dcr->block->dev))->EndBlock;
+   rec->File = ((DEVICE *)(dcr->block->dev))->EndFile;
 
    /*
     * Get the header. There is always a full header,
     * otherwise we find it in the next block.
     */
-   Dmsg3(450, "Block=%d Ver=%d size=%u\n", block->BlockNumber, block->BlockVer,
-         block->block_len);
-   if (block->BlockVer == 1) {
+   Dmsg3(450, "Block=%d Ver=%d size=%u\n", dcr->block->BlockNumber, dcr->block->BlockVer,
+         dcr->block->block_len);
+   if (dcr->block->BlockVer == 1) {
       rhl = RECHDR1_LENGTH;
    } else {
       rhl = RECHDR2_LENGTH;
    }
    if (remlen >= rhl) {
       Dmsg4(450, "Enter read_record_block: remlen=%d data_len=%d rem=%d blkver=%d\n",
-            remlen, rec->data_len, rec->remainder, block->BlockVer);
+            remlen, rec->data_len, rec->remainder, dcr->block->BlockVer);
 
-      unser_begin(block->bufp, WRITE_RECHDR_LENGTH);
-      if (block->BlockVer == 1) {
+      unser_begin(dcr->block->bufp, WRITE_RECHDR_LENGTH);
+      if (dcr->block->BlockVer == 1) {
          unser_uint32(VolSessionId);
          unser_uint32(VolSessionTime);
       } else {
-         VolSessionId = block->VolSessionId;
-         VolSessionTime = block->VolSessionTime;
+         VolSessionId = dcr->block->VolSessionId;
+         VolSessionTime = dcr->block->VolSessionTime;
       }
       unser_int32(FileIndex);
       unser_int32(Stream);
       unser_uint32(data_bytes);
 
-      block->bufp += rhl;
-      block->binbuf -= rhl;
+      dcr->block->bufp += rhl;
+      dcr->block->binbuf -= rhl;
       remlen -= rhl;
 
       /* If we are looking for more (remainder!=0), we reject anything
@@ -534,7 +604,7 @@ bool read_record_from_block(DCR *dcr, DEV_BLOCK *block, DEV_RECORD *rec)
        */
       if (rec->remainder && (rec->VolSessionId != VolSessionId ||
                              rec->VolSessionTime != VolSessionTime)) {
-         rec->state |= REC_NO_MATCH;
+         rec->state_bits |= REC_NO_MATCH;
          Dmsg0(450, "remainder and VolSession doesn't match\n");
          return false;             /* This is from some other Session */
       }
@@ -545,11 +615,11 @@ bool read_record_from_block(DCR *dcr, DEV_BLOCK *block, DEV_RECORD *rec)
       if (Stream < 0) {               /* continuation record? */
          Dmsg1(500, "Got negative Stream => continuation. remainder=%d\n",
             rec->remainder);
-         rec->state |= REC_CONTINUATION;
+         rec->state_bits |= REC_CONTINUATION;
          if (!rec->remainder) {       /* if we didn't read previously */
             rec->data_len = 0;        /* return data as if no continuation */
          } else if (rec->Stream != -Stream) {
-            rec->state |= REC_NO_MATCH;
+            rec->state_bits |= REC_NO_MATCH;
             return false;             /* This is from some other Session */
          }
          rec->Stream = -Stream;       /* set correct Stream */
@@ -563,10 +633,10 @@ bool read_record_from_block(DCR *dcr, DEV_BLOCK *block, DEV_RECORD *rec)
       rec->VolSessionTime = VolSessionTime;
       rec->FileIndex = FileIndex;
       if (FileIndex > 0) {
-         if (block->FirstIndex == 0) {
-            block->FirstIndex = FileIndex;
+         if (dcr->block->FirstIndex == 0) {
+            dcr->block->FirstIndex = FileIndex;
          }
-         block->LastIndex = FileIndex;
+         dcr->block->LastIndex = FileIndex;
       }
 
       Dmsg6(450, "rd_rec_blk() got FI=%s SessId=%d Strm=%s len=%u\n"
@@ -584,8 +654,8 @@ bool read_record_from_block(DCR *dcr, DEV_BLOCK *block, DEV_RECORD *rec)
        * then reread.
        */
       Dmsg0(450, "read_record_block: nothing\n");
-      rec->state |= (REC_NO_HEADER | REC_BLOCK_EMPTY);
-      empty_block(block);                      /* mark block empty */
+      rec->state_bits |= (REC_NO_HEADER | REC_BLOCK_EMPTY);
+      empty_block(dcr->block);                 /* mark block empty */
       return false;
    }
 
@@ -595,8 +665,8 @@ bool read_record_from_block(DCR *dcr, DEV_BLOCK *block, DEV_RECORD *rec)
        * Something is wrong, force read of next block, abort 
        *   continuing with this block.
        */
-      rec->state |= (REC_NO_HEADER | REC_BLOCK_EMPTY);
-      empty_block(block);
+      rec->state_bits |= (REC_NO_HEADER | REC_BLOCK_EMPTY);
+      empty_block(dcr->block);
       Jmsg2(dcr->jcr, M_WARNING, 0, _("Sanity check failed. maxlen=%d datalen=%d. Block discarded.\n"),
          MAX_BLOCK_LENGTH, data_bytes);
       return false;
@@ -614,19 +684,19 @@ bool read_record_from_block(DCR *dcr, DEV_BLOCK *block, DEV_RECORD *rec)
     */
    if (remlen >= data_bytes) {
       /* Got whole record */
-      memcpy(rec->data+rec->data_len, block->bufp, data_bytes);
-      block->bufp += data_bytes;
-      block->binbuf -= data_bytes;
+      memcpy(rec->data+rec->data_len, dcr->block->bufp, data_bytes);
+      dcr->block->bufp += data_bytes;
+      dcr->block->binbuf -= data_bytes;
       rec->data_len += data_bytes;
    } else {
       /* Partial record */
-      memcpy(rec->data+rec->data_len, block->bufp, remlen);
-      block->bufp += remlen;
-      block->binbuf -= remlen;
+      memcpy(rec->data+rec->data_len, dcr->block->bufp, remlen);
+      dcr->block->bufp += remlen;
+      dcr->block->binbuf -= remlen;
       rec->data_len += remlen;
       rec->remainder = 1;             /* partial record transferred */
       Dmsg1(450, "read_record_block: partial xfered=%d\n", rec->data_len);
-      rec->state |= (REC_PARTIAL_RECORD | REC_BLOCK_EMPTY);
+      rec->state_bits |= (REC_PARTIAL_RECORD | REC_BLOCK_EMPTY);
       return true;
    }
    rec->remainder = 0;
diff --git a/src/stored/record.h b/src/stored/record.h
index 04a93cb..62c245d 100644
--- a/src/stored/record.h
+++ b/src/stored/record.h
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -50,6 +50,13 @@ enum {
    VOL_NO_MEDIA                           /* Hard error -- no media present */
 };
 
+enum rec_state {
+   st_none,                               /* No state */
+   st_header,                             /* Write header */
+   st_header_cont,
+   st_data,
+};
+
 
 /*  See block.h for RECHDR_LENGTH */
 
@@ -78,8 +85,8 @@ enum {
 #define REC_CONTINUATION     (1<<4)   /* Continuation record found */
 #define REC_ISTAPE           (1<<5)   /* Set if device is tape */
 
-#define is_partial_record(r) ((r)->state & REC_PARTIAL_RECORD)
-#define is_block_empty(r)    ((r)->state & REC_BLOCK_EMPTY)
+#define is_partial_record(r) ((r)->state_bits & REC_PARTIAL_RECORD)
+#define is_block_empty(r)    ((r)->state_bits & REC_BLOCK_EMPTY)
 
 /*
  * DEV_RECORD for reading and writing records.
@@ -102,7 +109,9 @@ struct DEV_RECORD {
    int32_t  maskedStream;             /* Masked Stream without high bits */
    uint32_t data_len;                 /* current record length */
    uint32_t remainder;                /* remaining bytes to read/write */
-   uint32_t state;                    /* state bits */
+   uint32_t remlen;                   /* temp remainder bytes */
+   uint32_t state_bits;               /* state bits */
+   rec_state state;                   /* state of write_record_to_block */
    BSR *bsr;                          /* pointer to bsr that matched */
    uint8_t  ser_buf[WRITE_RECHDR_LENGTH];   /* serialized record header goes here */
    POOLMEM *data;                     /* Record data. This MUST be a memory pool item */
@@ -172,6 +181,7 @@ struct Volume_Label {
   char LabelProg[50];                 /* Label program name */
   char ProgVersion[50];               /* Program version */
   char ProgDate[50];                  /* Program build date/time */
+
 };
 
 #define SER_LENGTH_Volume_Label 1024   /* max serialised length of volume label */
diff --git a/src/stored/reserve.c b/src/stored/reserve.c
index a40be16..10cc4f8 100644
--- a/src/stored/reserve.c
+++ b/src/stored/reserve.c
@@ -58,7 +58,8 @@ static char use_device[]  = "use device=%127s\n";
 
 /* Responses sent to Director daemon */
 static char OK_device[] = "3000 OK use device device=%s\n";
-static char NO_device[] = "3924 Device \"%s\" not in SD Device resources.\n";
+static char NO_device[] = "3924 Device \"%s\" not in SD Device"
+   " resources or no matching Media Type.\n";
 static char BAD_use[]   = "3913 Bad use command: %s\n";
 
 bool use_cmd(JCR *jcr) 
@@ -143,8 +144,7 @@ void DCR::clear_reserved()
  */
 void DCR::unreserve_device()
 {
-   dev->dlock();
-   lock_volumes();
+   dev->Lock();
    if (is_reserved()) {
       clear_reserved();
       reserved_volume = false;
@@ -157,12 +157,11 @@ void DCR::unreserve_device()
          dev->num_writers = 0;
       }
       if (dev->num_reserved() == 0 && dev->num_writers == 0) {
+         generate_plugin_event(jcr, bsdEventDeviceClose, this);
          volume_unused(this);
       }
    }
-   unlock_volumes();
-   generate_plugin_event(jcr, bsdEventDeviceClose, this);
-   dev->dunlock();
+   dev->Unlock();
 }
 
 /*
@@ -672,7 +671,7 @@ static int reserve_device(RCTX &rctx)
       Dmsg3(dbglvl, "Vol=%s num_writers=%d, have_vol=%d\n", 
          rctx.VolumeName, dcr->dev->num_writers, rctx.have_volume);
       if (rctx.have_volume) {
-         Dmsg0(dbglvl, "Call reserve_volume\n");
+         Dmsg0(dbglvl, "Call reserve_volume for append.\n");
          if (reserve_volume(dcr, rctx.VolumeName)) {
             Dmsg1(dbglvl, "Reserved vol=%s\n", rctx.VolumeName);
          } else {
@@ -772,7 +771,7 @@ static bool reserve_device_for_read(DCR *dcr)
       return false;
    }
 
-   dev->dlock();  
+   dev->Lock();  
 
    if (dev->is_device_unmounted()) {             
       Dmsg1(dbglvl, "Device %s is BLOCKED due to user unmount.\n", dev->print_name());
@@ -803,7 +802,7 @@ static bool reserve_device_for_read(DCR *dcr)
    ok = true;
 
 bail_out:
-   dev->dunlock();
+   dev->Unlock();
    return ok;
 }
 
@@ -834,7 +833,7 @@ static bool reserve_device_for_append(DCR *dcr, RCTX &rctx)
       return false;
    }
 
-   dev->dlock();
+   dev->Lock();
 
    /* If device is being read, we cannot write it */
    if (dev->can_read()) {
@@ -871,7 +870,7 @@ static bool reserve_device_for_append(DCR *dcr, RCTX &rctx)
    ok = true;
 
 bail_out:
-   dev->dunlock();
+   dev->Unlock();
    return ok;
 }
 
diff --git a/src/stored/sd_plugins.c b/src/stored/sd_plugins.c
index 8ea73af..a9df662 100644
--- a/src/stored/sd_plugins.c
+++ b/src/stored/sd_plugins.c
@@ -35,7 +35,7 @@
 #include "stored.h"
 #include "sd_plugins.h"
 
-const int dbglvl = 50;
+const int dbglvl = 250;
 const char *plugin_type = "-sd.so";
 
 
@@ -261,7 +261,7 @@ void new_plugins(JCR *jcr)
    if (jcr->is_job_canceled()) {
       return;
    }
-   /*
+   /* 
     * If plugins already loaded, just return
     */
    if (jcr->plugin_ctx_list) {
diff --git a/src/stored/spool.c b/src/stored/spool.c
index b4098b2..42868f9 100644
--- a/src/stored/spool.c
+++ b/src/stored/spool.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2004-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2004-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -295,7 +295,7 @@ static bool despool_data(DCR *dcr, bool commit)
          ok = false;
          break;
       }
-      ok = write_block_to_device(dcr);
+      ok = dcr->write_block_to_device();
       if (!ok) {
          Jmsg2(jcr, M_FATAL, 0, _("Fatal append error on device %s: ERR=%s\n"),
                dcr->dev->print_name(), dcr->dev->bstrerror());
@@ -365,7 +365,7 @@ static bool despool_data(DCR *dcr, bool commit)
    free_pool_memory(rdev->errmsg);
    /* Be careful to NULL the jcr and free rdev after free_dcr() */
    rdcr->jcr = NULL;
-   rdcr->dev = NULL;
+   rdcr->set_dev(NULL);
    free_dcr(rdcr);
    free(rdev);
    dcr->spooling = true;           /* turn on spooling again */
@@ -475,16 +475,19 @@ bool write_block_to_spool_file(DCR *dcr)
    }
    V(mutex);
    if (despool) {
-#ifdef xDEBUG
-      char ec1[30], ec2[30], ec3[30], ec4[30];
-      Dmsg4(100, "Despool in write_block_to_spool_file max_size=%s size=%s "
-            "max_job_size=%s job_size=%s\n",
-            edit_uint64_with_commas(dcr->max_job_spool_size, ec1),
-            edit_uint64_with_commas(dcr->job_spool_size, ec2),
-            edit_uint64_with_commas(dcr->dev->max_spool_size, ec3),
-            edit_uint64_with_commas(dcr->dev->spool_size, ec4));
-#endif
-      Jmsg(dcr->jcr, M_INFO, 0, _("User specified spool size reached.\n"));
+      char ec1[30], ec2[30];
+      if (dcr->max_job_spool_size > 0) {
+         Jmsg(dcr->jcr, M_INFO, 0, _("User specified Job spool size reached: "
+            "JobSpoolSize=%s MaxJobSpoolSize=%s\n"),
+            edit_uint64_with_commas(dcr->job_spool_size, ec1),
+            edit_uint64_with_commas(dcr->max_job_spool_size, ec2));
+      } else {
+         Jmsg(dcr->jcr, M_INFO, 0, _("User specified Device spool size reached: "
+            "DevSpoolSize=%s MaxDevSpoolSize=%s\n"),
+            edit_uint64_with_commas(dcr->dev->spool_size, ec1),
+            edit_uint64_with_commas(dcr->dev->max_spool_size, ec2));
+      }
+
       if (!despool_data(dcr, false)) {
          Pmsg0(000, _("Bad return from despool in write_block.\n"));
          return false;
diff --git a/src/stored/status.c b/src/stored/status.c
index 1b6843a..20f2c08 100644
--- a/src/stored/status.c
+++ b/src/stored/status.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2003-2010 Free Software Foundation Europe e.V.
+   Copyright (C) 2003-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -37,7 +37,7 @@
 #include "stored.h"
 #include "lib/status.h"
 
-/* Exported variables */
+/* Imported functions */
 
 /* Imported variables */
 extern BSOCK *filed_chan;
@@ -102,18 +102,43 @@ void output_status(STATUS_PKT *sp)
    list_volumes(sendit, (void *)sp);
    if (!sp->api) sendit("====\n\n", 6, sp);
 
-#ifdef xxx
-   if (debug_level > 10) {
-      bs->fsend(_("====\n\n"));
-      dump_resource(R_DEVICE, resources[R_DEVICE-r_first].res_head, sendit, user);
-      bs->fsend(_("====\n\n"));
-   }
-#endif
 
    list_spool_stats(sendit, (void *)sp);
    if (!sp->api) sendit("====\n\n", 6, sp);
+
 }
 
+static void list_resources(STATUS_PKT *sp)
+{
+#ifdef when_working
+   POOL_MEM msg(PM_MESSAGE);
+   int len;
+
+   len = Mmsg(msg, _("\nSD Resources:\n"));
+   if (!sp->api) sendit(msg, len, sp);
+   dump_resource(R_DEVICE, resources[R_DEVICE-r_first], sp);
+   if (!sp->api) sendit("====\n\n", 6, sp);
+#endif
+}
+
+#ifdef xxxx
+static find_device(char *devname)
+{
+   foreach_res(device, R_DEVICE) {
+      if (strcasecmp(device->hdr.name, devname) == 0) {
+         found = true;
+         break;
+      }
+   }
+   if (!found) {
+      foreach_res(changer, R_AUTOCHANGER) {
+         if (strcasecmp(changer->hdr.name, devname) == 0) {
+            break;
+         }
+      }
+   }
+}
+#endif
 
 static void list_devices(STATUS_PKT *sp)
 {
@@ -143,21 +168,24 @@ static void list_devices(STATUS_PKT *sp)
          }
       }
    }
+
+
    foreach_res(device, R_DEVICE) {
       dev = device->dev;
       if (dev && dev->is_open()) {
          if (dev->is_labeled()) {
-            len = Mmsg(msg, _("Device %s is mounted with:\n"
+            len = Mmsg(msg, _("\nDevice %s is %s:\n"
                               "    Volume:      %s\n"
                               "    Pool:        %s\n"
                               "    Media type:  %s\n"),
                dev->print_name(), 
+               dev->blocked()?_("waiting for"):_("mounted with"),
                dev->VolHdr.VolumeName, 
-               dev->pool_name[0]?dev->pool_name:"*unknown*",
+               dev->pool_name[0]?dev->pool_name:_("*unknown*"),
                dev->device->media_type);
             sendit(msg, len, sp);
          } else {
-            len = Mmsg(msg, _("Device %s open but no Bacula volume is currently mounted.\n"), 
+            len = Mmsg(msg, _("\nDevice %s open but no Bacula volume is currently mounted.\n"), 
                dev->print_name());
             sendit(msg, len, sp);
          }
@@ -196,14 +224,16 @@ static void list_devices(STATUS_PKT *sp)
 
       } else {
          if (dev) {
-            len = Mmsg(msg, _("Device %s is not open.\n"), dev->print_name());
+            len = Mmsg(msg, _("\nDevice %s is not open.\n"), dev->print_name());
             sendit(msg, len, sp);
             send_blocked_status(dev, sp);
         } else {
-            len = Mmsg(msg, _("Device \"%s\" is not open or does not exist.\n"), device->hdr.name);
+            len = Mmsg(msg, _("\nDevice \"%s\" is not open or does not exist.\n"), device->hdr.name);
             sendit(msg, len, sp);
          }
       }
+
+      if (!sp->api) sendit("==\n", 4, sp);
    }
    if (!sp->api) sendit("====\n\n", 6, sp);
 }
@@ -237,6 +267,21 @@ static void list_status_header(STATUS_PKT *sp)
               (int)sizeof(boffset_t), (int)sizeof(size_t), (int)sizeof(int32_t),
               (int)sizeof(int64_t), (int)DEVELOPER_MODE, (int)BEEF);
    sendit(msg, len, sp);
+   if (bplugin_list->size() > 0) {
+      Plugin *plugin;
+      int len;
+      pm_strcpy(msg, " Plugin: ");
+      foreach_alist(plugin, bplugin_list) {
+         len = pm_strcat(msg, plugin->file);
+         if (len > 80) {
+            pm_strcat(msg, "\n   ");
+         } else {
+            pm_strcat(msg, " ");
+         }
+      }
+      len = pm_strcat(msg, "\n");
+      sendit(msg.c_str(), len, sp);
+   }
 }
 
 static void send_blocked_status(DEVICE *dev, STATUS_PKT *sp)
@@ -260,33 +305,30 @@ static void send_blocked_status(DEVICE *dev, STATUS_PKT *sp)
       break;
    case BST_WAITING_FOR_SYSOP:
       {
-         dlist *dcrs = dev->attached_dcrs;
+         DCR *dcr;
          bool found_jcr = false;
-
-         if (dcrs != NULL) {
-            DCR *dcr;
-            for (dcr = (DCR *)dcrs->first(); dcr != NULL; dcr = (DCR *)dcrs->next(dcr)) {
-               if (dcr->jcr->JobStatus == JS_WaitMount) {
-                  len = Mmsg(msg, _("    Device is BLOCKED waiting for mount of volume \"%s\",\n"
-                                    "       Pool:        %s\n"
-                                    "       Media type:  %s\n"),
-                             dcr->VolumeName,
-                             dcr->pool_name,
-                             dcr->media_type);
-                  sendit(msg, len, sp);
-                  found_jcr = true;
-               } else if (dcr->jcr->JobStatus == JS_WaitMedia) {
-                  len = Mmsg(msg, _("    Device is BLOCKED waiting to create a volume for:\n"
-                                    "       Pool:        %s\n"
-                                    "       Media type:  %s\n"),
-                             dcr->pool_name,
-                             dcr->media_type);
-                  sendit(msg, len, sp);
-                  found_jcr = true;
-               }
+         dev->Lock();
+         foreach_dlist(dcr, dev->attached_dcrs) {
+            if (dcr->jcr->JobStatus == JS_WaitMount) {
+               len = Mmsg(msg, _("    Device is BLOCKED waiting for mount of volume \"%s\",\n"
+                                 "       Pool:        %s\n"
+                                 "       Media type:  %s\n"),
+                          dcr->VolumeName,
+                          dcr->pool_name,
+                          dcr->media_type);
+               sendit(msg, len, sp);
+               found_jcr = true;
+            } else if (dcr->jcr->JobStatus == JS_WaitMedia) {
+               len = Mmsg(msg, _("    Device is BLOCKED waiting to create a volume for:\n"
+                                 "       Pool:        %s\n"
+                                 "       Media type:  %s\n"),
+                          dcr->pool_name,
+                          dcr->media_type);
+               sendit(msg, len, sp);
+               found_jcr = true;
             }
          }
-
+         dev->Unlock();
          if (!found_jcr) {
             len = Mmsg(msg, _("    Device is BLOCKED waiting for media.\n"));
             sendit(msg, len, sp);
@@ -307,15 +349,12 @@ static void send_blocked_status(DEVICE *dev, STATUS_PKT *sp)
    /* Send autochanger slot status */
    if (dev->is_autochanger()) {
       if (dev->get_slot() > 0) {
-         len = Mmsg(msg, _("    Slot %d is loaded in drive %d.\n"), 
-            dev->get_slot(), dev->drive_index);
+         len = Mmsg(msg, _("    Slot %d %s loaded in drive %d.\n"), 
+            dev->get_slot(), dev->is_open()?"is": "was last", dev->drive_index);
          sendit(msg, len, sp);
-      } else if (dev->get_slot() == 0) {
+      } else if (dev->get_slot() <= 0) {
          len = Mmsg(msg, _("    Drive %d is not loaded.\n"), dev->drive_index);
          sendit(msg, len, sp);
-      } else {
-         len = Mmsg(msg, _("    Drive %d status unknown.\n"), dev->drive_index);
-         sendit(msg, len, sp);
       }
    }
    if (debug_level > 1) {
@@ -328,28 +367,28 @@ static void send_device_status(DEVICE *dev, STATUS_PKT *sp)
    POOL_MEM msg(PM_MESSAGE);
    int len;
 
-   len = Mmsg(msg, _("Configured device capabilities:\n"));
-   sendit(msg, len, sp);
-
-   len = Mmsg(msg, "%sEOF %sBSR %sBSF %sFSR %sFSF %sEOM %sREM %sRACCESS %sAUTOMOUNT %sLABEL %sANONVOLS %sALWAYSOPEN\n",
-      dev->capabilities & CAP_EOF ? "" : "!", 
-      dev->capabilities & CAP_BSR ? "" : "!", 
-      dev->capabilities & CAP_BSF ? "" : "!", 
-      dev->capabilities & CAP_FSR ? "" : "!", 
-      dev->capabilities & CAP_FSF ? "" : "!", 
-      dev->capabilities & CAP_EOM ? "" : "!", 
-      dev->capabilities & CAP_REM ? "" : "!", 
-      dev->capabilities & CAP_RACCESS ? "" : "!",
-      dev->capabilities & CAP_AUTOMOUNT ? "" : "!", 
-      dev->capabilities & CAP_LABEL ? "" : "!", 
-      dev->capabilities & CAP_ANONVOLS ? "" : "!", 
-      dev->capabilities & CAP_ALWAYSOPEN ? "" : "!");
-   sendit(msg, len, sp);
+   if (debug_level > 5) {
+      len = Mmsg(msg, _("Configured device capabilities:\n"));
+      sendit(msg, len, sp);
+      len = Mmsg(msg, "  %sEOF %sBSR %sBSF %sFSR %sFSF %sEOM %sREM %sRACCESS %sAUTOMOUNT %sLABEL %sANONVOLS %sALWAYSOPEN\n",
+         dev->capabilities & CAP_EOF ? "" : "!", 
+         dev->capabilities & CAP_BSR ? "" : "!", 
+         dev->capabilities & CAP_BSF ? "" : "!", 
+         dev->capabilities & CAP_FSR ? "" : "!", 
+         dev->capabilities & CAP_FSF ? "" : "!", 
+         dev->capabilities & CAP_EOM ? "" : "!", 
+         dev->capabilities & CAP_REM ? "" : "!", 
+         dev->capabilities & CAP_RACCESS ? "" : "!",
+         dev->capabilities & CAP_AUTOMOUNT ? "" : "!", 
+         dev->capabilities & CAP_LABEL ? "" : "!", 
+         dev->capabilities & CAP_ANONVOLS ? "" : "!", 
+         dev->capabilities & CAP_ALWAYSOPEN ? "" : "!");
+      sendit(msg, len, sp);
+   }
 
    len = Mmsg(msg, _("Device state:\n"));
    sendit(msg, len, sp);
-
-   len = Mmsg(msg, "%sOPENED %sTAPE %sLABEL %sMALLOC %sAPPEND %sREAD %sEOT %sWEOT %sEOF %sNEXTVOL %sSHORT %sMOUNTED\n", 
+   len = Mmsg(msg, "  %sOPENED %sTAPE %sLABEL %sMALLOC %sAPPEND %sREAD %sEOT %sWEOT %sEOF %sNEXTVOL %sSHORT %sMOUNTED\n", 
       dev->is_open() ? "" : "!", 
       dev->is_tape() ? "" : "!", 
       dev->is_labeled() ? "" : "!", 
@@ -363,35 +402,50 @@ static void send_device_status(DEVICE *dev, STATUS_PKT *sp)
       dev->state & ST_SHORT ? "" : "!", 
       dev->state & ST_MOUNTED ? "" : "!");
    sendit(msg, len, sp);
-
-   len = Mmsg(msg, _("num_writers=%d reserved=%d block=%d\n\n"), dev->num_writers, 
+   len = Mmsg(msg, _("  num_writers=%d reserves=%d block=%d\n"), dev->num_writers,
               dev->num_reserved(), dev->blocked());
    sendit(msg, len, sp);
 
-   len = Mmsg(msg, _("Device parameters:\n"));
+   len = Mmsg(msg, _("Attached Jobs: "));
    sendit(msg, len, sp);
+   DCR *dcr = NULL; 
+   bool found = false;
+   dev->Lock();
+   foreach_dlist(dcr, dev->attached_dcrs) {
+      if (dcr->jcr) {
+         if (found) {
+            sendit(",", 1, sp);
+         }
+         len = Mmsg(msg, "%d", (int)dcr->jcr->JobId);
+         sendit(msg, len, sp);
+         found = true;
+      }
+   }
+   dev->Unlock();
+   sendit("\n", 1, sp);
 
-   len = Mmsg(msg, _("Archive name: %s Device name: %s\n"), dev->archive_name(),
+   len = Mmsg(msg, _("Device parameters:\n"));
+   sendit(msg, len, sp);
+   len = Mmsg(msg, _("  Archive name: %s Device name: %s\n"), dev->archive_name(),
       dev->name());
    sendit(msg, len, sp);
-
-   len = Mmsg(msg, _("File=%u block=%u\n"), dev->file, dev->block_num);
+   len = Mmsg(msg, _("  File=%u block=%u\n"), dev->file, dev->block_num);
    sendit(msg, len, sp);
-
-   len = Mmsg(msg, _("Min block=%u Max block=%u\n"), dev->min_block_size, dev->max_block_size);
+   len = Mmsg(msg, _("  Min block=%u Max block=%u\n"), dev->min_block_size, dev->max_block_size);
    sendit(msg, len, sp);
 }
 
 static void list_running_jobs(STATUS_PKT *sp)
 {
    bool found = false;
-   int bps, sec;
+   int avebps, bps, sec;
    JCR *jcr;
    DCR *dcr, *rdcr;
    char JobName[MAX_NAME_LENGTH];
-   char b1[30], b2[30], b3[30];
+   char b1[50], b2[50], b3[50], b4[50];
    int len;
    POOL_MEM msg(PM_MESSAGE);
+   time_t now = time(NULL);
 
    len = Mmsg(msg, _("\nRunning Jobs:\n"));
    if (!sp->api) sendit(msg, len, sp);
@@ -442,16 +496,27 @@ static void list_running_jobs(STATUS_PKT *sp)
                    dcr->spooling, dcr->despooling, dcr->despool_wait);
             sendit(msg, len, sp);
          }
-         sec = time(NULL) - jcr->run_time;
+         if (jcr->last_time == 0) {
+            jcr->last_time = jcr->run_time;
+         }
+         sec = now - jcr->last_time;
          if (sec <= 0) {
             sec = 1;
          }
-         bps = jcr->JobBytes / sec;
-         len = Mmsg(msg, _("    Files=%s Bytes=%s Bytes/sec=%s\n"),
+         bps = (jcr->JobBytes - jcr->LastJobBytes) / sec;
+         if (jcr->LastRate == 0) {
+            jcr->LastRate = bps;
+         }
+         avebps = (jcr->LastRate + bps) / 2;
+         len = Mmsg(msg, _("    Files=%s Bytes=%s AveBytes/sec=%s LastBytes/sec=%s\n"),
             edit_uint64_with_commas(jcr->JobFiles, b1),
             edit_uint64_with_commas(jcr->JobBytes, b2),
-            edit_uint64_with_commas(bps, b3));
+            edit_uint64_with_commas(avebps, b3),
+            edit_uint64_with_commas(bps, b4));
          sendit(msg, len, sp);
+         jcr->LastRate = avebps;
+         jcr->LastJobBytes = jcr->JobBytes;
+         jcr->last_time = now;
          found = true;
 #ifdef DEBUG
          if (jcr->file_bsock) {
@@ -695,8 +760,7 @@ bool qstatus_cmd(JCR *jcr)
    sp.bs = dir;
    if (sscanf(dir->msg, qstatus, cmd.c_str()) != 1) {
       pm_strcpy(jcr->errmsg, dir->msg);
-      Jmsg1(jcr, M_FATAL, 0, _("Bad .status command: %s\n"), jcr->errmsg);
-      dir->fsend(_("3900 Bad .status command, missing argument.\n"));
+      dir->fsend(_("3900 No arg in .status command: %s\n"), jcr->errmsg);
       dir->signal(BNET_EOD);
       return false;
    }
@@ -704,7 +768,7 @@ bool qstatus_cmd(JCR *jcr)
 
    Dmsg1(200, "cmd=%s\n", cmd.c_str());
 
-   if (strcmp(cmd.c_str(), "current") == 0) {
+   if (strcasecmp(cmd.c_str(), "current") == 0) {
       dir->fsend(OKqstatus, cmd.c_str());
       foreach_jcr(njcr) {
          if (njcr->JobId != 0) {
@@ -712,7 +776,7 @@ bool qstatus_cmd(JCR *jcr)
          }
       }
       endeach_jcr(njcr);
-   } else if (strcmp(cmd.c_str(), "last") == 0) {
+   } else if (strcasecmp(cmd.c_str(), "last") == 0) {
       dir->fsend(OKqstatus, cmd.c_str());
       if ((last_jobs) && (last_jobs->size() > 0)) {
          job = (s_last_job*)last_jobs->last();
@@ -739,10 +803,12 @@ bool qstatus_cmd(JCR *jcr)
    } else if (strcasecmp(cmd.c_str(), "terminated") == 0) {
        sp.api = true;
        list_terminated_jobs(&sp);
+   } else if (strcasecmp(cmd.c_str(), "resources") == 0) {
+       sp.api = true;
+       list_resources(&sp);
    } else {
       pm_strcpy(jcr->errmsg, dir->msg);
-      Jmsg1(jcr, M_FATAL, 0, _("Bad .status command: %s\n"), jcr->errmsg);
-      dir->fsend(_("3900 Bad .status command, wrong argument.\n"));
+      dir->fsend(_("3900 Unknown arg in .status command: %s\n"), jcr->errmsg);
       dir->signal(BNET_EOD);
       return false;
    }
diff --git a/src/stored/stored.c b/src/stored/stored.c
index 05c108a..a180cfa 100644
--- a/src/stored/stored.c
+++ b/src/stored/stored.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -85,7 +85,7 @@ static void usage()
    fprintf(stderr, _(
 PROG_COPYRIGHT
 "\nVersion: %s (%s)\n\n"
-"Usage: stored [options] [-c config_file] [config_file]\n"
+"Usage: bacula-sd [options] [-c config_file] [config_file]\n"
 "        -c <file>   use <file> as configuration file\n"
 "        -d <nn>     set debug level to <nn>\n"
 "        -dt         print timestamp in debug output\n"
@@ -249,6 +249,7 @@ int main (int argc, char *argv[])
    read_state_file(me->working_directory, "bacula-sd", 
                    get_first_port_host_order(me->sdaddrs));
 
+   set_jcr_in_tsd(INVALID_JCR);
    /* Make sure on Solaris we can run concurrent, watch dog + servers + misc */
    set_thread_concurrency(me->max_concurrent_jobs * 2 + 4);
    lmgr_init_thread(); /* initialize the lockmanager stack */
@@ -259,7 +260,6 @@ int main (int argc, char *argv[])
 
    cleanup_old_files();
 
-
    /* Ensure that Volume Session Time and Id are both
     * set and are both non-zero.
     */
@@ -457,25 +457,82 @@ static int check_resources()
    return OK;
 }
 
+/*
+ * Remove old .spool files written by me from the working directory.
+ */
 static void cleanup_old_files()
 {
-   POOLMEM *cleanup = get_pool_memory(PM_MESSAGE);
-   POOLMEM *results = get_pool_memory(PM_MESSAGE);
+   DIR* dp;
+   struct dirent *entry, *result;
+   int rc, name_max;
+   int my_name_len = strlen(my_name);
    int len = strlen(me->working_directory);
-#if defined(HAVE_WIN32)
-   pm_strcpy(cleanup, "del /q ");
-#else
-   pm_strcpy(cleanup, "/bin/rm -f ");
-#endif
-   pm_strcat(cleanup, me->working_directory);
+   POOLMEM *cleanup = get_pool_memory(PM_MESSAGE);
+   POOLMEM *basename = get_pool_memory(PM_MESSAGE);
+   regex_t preg1;
+   char prbuf[500];
+   const int nmatch = 30;
+   regmatch_t pmatch[nmatch];
+   berrno be;
+
+   /* Look for .spool files but don't allow spaces */
+   const char *pat1 = "^[^ ]+\\.spool$";
+
+   /* Setup working directory prefix */
+   pm_strcpy(basename, me->working_directory);
    if (len > 0 && !IsPathSeparator(me->working_directory[len-1])) {
-      pm_strcat(cleanup, "/");
+      pm_strcat(basename, "/");
+   }
+
+   /* Compile regex expressions */
+   rc = regcomp(&preg1, pat1, REG_EXTENDED);
+   if (rc != 0) {
+      regerror(rc, &preg1, prbuf, sizeof(prbuf));
+      Pmsg2(000,  _("Could not compile regex pattern \"%s\" ERR=%s\n"),
+           pat1, prbuf);
+      goto get_out2;
+   }
+
+   name_max = pathconf(".", _PC_NAME_MAX);
+   if (name_max < 1024) {
+      name_max = 1024;
    }
-   pm_strcat(cleanup, my_name);
-   pm_strcat(cleanup, "*.spool");
-   run_program(cleanup, 0, results);
+      
+   if (!(dp = opendir(me->working_directory))) {
+      berrno be;
+      Pmsg2(000, "Failed to open working dir %s for cleanup: ERR=%s\n", 
+            me->working_directory, be.bstrerror());
+      goto get_out1;
+   }
+
+   entry = (struct dirent *)malloc(sizeof(struct dirent) + name_max + 1000);
+   while (1) {
+      if ((readdir_r(dp, entry, &result) != 0) || (result == NULL)) {
+         break;
+      }
+      /* Exclude any name with ., .., not my_name or containing a space */
+      if (strcmp(result->d_name, ".") == 0 || strcmp(result->d_name, "..") == 0 ||
+          strncmp(result->d_name, my_name, my_name_len) != 0) {
+         Dmsg1(500, "Skipped: %s\n", result->d_name);
+         continue;    
+      }
+
+      /* Unlink files that match regex */
+      if (regexec(&preg1, result->d_name, nmatch, pmatch,  0) == 0) {
+         pm_strcpy(cleanup, basename);
+         pm_strcat(cleanup, result->d_name);
+         Dmsg1(500, "Unlink: %s\n", cleanup);
+         unlink(cleanup);
+      }
+   }
+   free(entry);
+   closedir(dp);
+
+get_out1:
+   regfree(&preg1);
+get_out2:
    free_pool_memory(cleanup);
-   free_pool_memory(results);
+   free_pool_memory(basename);
 }
 
 
diff --git a/src/stored/stored.h b/src/stored/stored.h
index 7d0fe50..2af78c4 100644
--- a/src/stored/stored.h
+++ b/src/stored/stored.h
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2013 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -28,7 +28,6 @@
 /*
  * Storage daemon specific defines and includes
  *
- *  Version $Id$
  */
 
 #ifndef __STORED_H_
@@ -65,6 +64,7 @@ const int sd_dbglvl = 300;
 #include "stored_conf.h"
 #include "bsr.h"
 #include "jcr.h"
+#include "vol_mgr.h"
 #include "reserve.h"
 #include "protos.h"
 #ifdef HAVE_LIBZ
diff --git a/src/stored/vol_mgr.c b/src/stored/vol_mgr.c
index e16e433..f3e28e7 100644
--- a/src/stored/vol_mgr.c
+++ b/src/stored/vol_mgr.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2011 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2013 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -100,7 +100,7 @@ void term_vol_list_lock()
    rwl_destroy(&vol_list_lock);
 }
 
-/* 
+/*
  * This allows a given thread to recursively call to lock_volumes()
  */
 void _lock_volumes(const char *file, int line)
@@ -149,17 +149,17 @@ void add_read_volume(JCR *jcr, const char *VolumeName)
 {
    VOLRES *nvol, *vol;
 
-   lock_read_volumes();
    nvol = new_vol_item(NULL, VolumeName);
    nvol->set_jobid(jcr->JobId);
+   lock_read_volumes();
    vol = (VOLRES *)read_vol_list->binary_insert(nvol, read_compare);
+   unlock_read_volumes();
    if (vol != nvol) {
       free_vol_item(nvol);
       Dmsg2(dbglvl, "read_vol=%s JobId=%d already in list.\n", VolumeName, jcr->JobId);
    } else {
       Dmsg2(dbglvl, "add read_vol=%s JobId=%d\n", VolumeName, jcr->JobId);
    }
-   unlock_read_volumes();
 }
 
 /*
@@ -181,6 +181,7 @@ void remove_read_volume(JCR *jcr, const char *VolumeName)
       free_vol_item(fvol);
    }
    unlock_read_volumes();
+// pthread_cond_broadcast(&wait_next_vol);
 }
 
 /*
@@ -196,19 +197,17 @@ static void debug_list_volumes(const char *imsg)
    VOLRES *vol;
    POOL_MEM msg(PM_MESSAGE);
 
-   lock_volumes();
-   foreach_dlist(vol, vol_list) {
+   foreach_vol(vol) {
       if (vol->dev) {
-         Mmsg(msg, "List %s: %s in_use=%d on device %s\n", imsg, 
-              vol->vol_name, vol->is_in_use(), vol->dev->print_name());
+         Mmsg(msg, "List %s: %s in_use=%d swap=%d on device %s\n", imsg, 
+              vol->vol_name, vol->is_in_use(), vol->is_swapping(), vol->dev->print_name());
       } else {
-         Mmsg(msg, "List %s: %s in_use=%d no dev\n", imsg, vol->vol_name, 
-              vol->is_in_use());
+         Mmsg(msg, "List %s: %s in_use=%d swap=%d no dev\n", imsg, vol->vol_name, 
+              vol->is_in_use(), vol->is_swapping());
       }
       Dmsg1(dbglvl, "%s", msg.c_str());
    }
-
-   unlock_volumes();
+   endeach_vol(vol);
 }
 
 
@@ -221,32 +220,40 @@ void list_volumes(void sendit(const char *msg, int len, void *sarg), void *arg)
    POOL_MEM msg(PM_MESSAGE);
    int len;
 
-   lock_volumes();
-   foreach_dlist(vol, vol_list) {
+   foreach_vol(vol) {
       DEVICE *dev = vol->dev;
       if (dev) {
          len = Mmsg(msg, "%s on device %s\n", vol->vol_name, dev->print_name());
          sendit(msg.c_str(), len, arg);
-         len = Mmsg(msg, "    Reader=%d writers=%d devres=%d volinuse=%d\n", 
-            dev->can_read()?1:0, dev->num_writers, dev->num_reserved(),   
+         len = Mmsg(msg, "    Reader=%d writers=%d reserves=%d volinuse=%d\n",
+            dev->can_read()?1:0, dev->num_writers, dev->num_reserved(),
             vol->is_in_use());
          sendit(msg.c_str(), len, arg);
       } else {
-         len = Mmsg(msg, "%s no device. volinuse= %d\n", vol->vol_name, 
+         len = Mmsg(msg, "Volume %s no device. volinuse= %d\n", vol->vol_name,
             vol->is_in_use());
          sendit(msg.c_str(), len, arg);
       }
    }
-   unlock_volumes();
+   endeach_vol(vol);
 
    lock_read_volumes();
    foreach_dlist(vol, read_vol_list) {
-      len = Mmsg(msg, "%s read volume JobId=%d\n", vol->vol_name, 
-            vol->get_jobid());
-      sendit(msg.c_str(), len, arg);
+      DEVICE *dev = vol->dev;
+      if (dev) {
+         len = Mmsg(msg, "Read volume: %s on device %s\n", vol->vol_name, dev->print_name());
+         sendit(msg.c_str(), len, arg);
+         len = Mmsg(msg, "    Reader=%d writers=%d reserves=%d volinuse=%d JobId=%d\n",
+            dev->can_read()?1:0, dev->num_writers, dev->num_reserved(),
+            vol->is_in_use(), vol->get_jobid());
+         sendit(msg.c_str(), len, arg);
+      } else {
+         len = Mmsg(msg, "Volume: %s no device. volinuse= %d\n", vol->vol_name,
+            vol->is_in_use());
+         sendit(msg.c_str(), len, arg);
+      }
    }
    unlock_read_volumes();
-
 }
 
 /*
@@ -264,6 +271,8 @@ static VOLRES *new_vol_item(DCR *dcr, const char *VolumeName)
       Dmsg3(dbglvl, "new Vol=%s at %p dev=%s\n",
             VolumeName, vol->vol_name, vol->dev->print_name());
    }
+   vol->init_mutex();
+   vol->inc_use_count();
    return vol;
 }
 
@@ -271,10 +280,18 @@ static void free_vol_item(VOLRES *vol)
 {
    DEVICE *dev = NULL;
 
+   vol->dec_use_count();
+   vol->Lock();
+   if (vol->use_count() > 0) {
+      vol->Unlock();
+      return;
+   }
+   vol->Unlock();
    free(vol->vol_name);
    if (vol->dev) {
       dev = vol->dev;
    }
+   vol->destroy_mutex();
    free(vol);
    if (dev) {
       dev->vol = NULL;
@@ -295,42 +312,38 @@ static void free_vol_item(VOLRES *vol)
  *
  * Some details of the Volume list handling:
  *
- *  1. The Volume list entry must be attached to the drive (rather than 
- *       attached to a job as it currently is. I.e. the drive that "owns" 
+ *  1. The Volume list entry is attached to the drive (rather than
+ *       attached to a job as it was previously. I.e. the drive that "owns"
  *       the volume (in use, mounted)
  *       must point to the volume (still to be maintained in a list).
  *
- *  2. The Volume is entered in the list when a drive is reserved.  
+ *  2. The Volume is entered in the list when a drive is reserved.
  *
  *  3. When a drive is in use, the device code must appropriately update the
- *      volume name as it changes (currently the list is static -- an entry is
- *      removed when the Volume is no longer reserved, in use or mounted).  
- *      The new code must keep the same list entry as long as the drive
+ *       volume name as it changes.
+  *      This code keeps the same list entry as long as the drive
  *       has any volume associated with it but the volume name in the list
  *       must be updated when the drive has a different volume mounted.
  *
- *  4. A job that has reserved a volume, can un-reserve the volume, and if the 
+ *  4. A job that has reserved a volume, can un-reserve the volume, and if the
  *      volume is not mounted, and not reserved, and not in use, it will be
  *      removed from the list.
  *
  *  5. If a job wants to reserve a drive with a different Volume from the one on
  *      the drive, it can re-use the drive for the new Volume.
- *
+
  *  6. If a job wants a Volume that is in a different drive, it can either use the
  *      other drive or take the volume, only if the other drive is not in use or
  *      not reserved.
  *
- *  One nice aspect of this is that the reserve use count and the writer use count 
- *  already exist and are correctly programmed and will need no changes -- use 
+ *  One nice aspect of this is that the reserve use count and the writer use count
+ *  already exist and are correctly programmed and will need no changes -- use
  *  counts are always very tricky.
  *
- *  The old code had a concept of "reserving" a Volume, but was changed 
- *  to reserving and using a drive.  A volume is must be attached to (owned by) a 
- *  drive and can move from drive to drive or be unused given certain specific 
- *  conditions of the drive.  The key is that the drive must "own" the Volume.  
- *  The old code had the job (dcr) owning the volume (more or less).  The job was
- *  to change the insertion and removal of the volumes from the list to be based 
- *  on the drive rather than the job.  
+ *  The old code had a concept of "reserving" a Volume, but was changed
+ *  to reserving and using a drive.  A volume is must be attached to (owned by) a
+ *  drive and can move from drive to drive or be unused given certain specific
+ *  conditions of the drive.  The key is that the drive must "own" the Volume.
  *
  *  Return: VOLRES entry on success
  *          NULL volume busy on another drive
@@ -345,16 +358,17 @@ VOLRES *reserve_volume(DCR *dcr, const char *VolumeName)
    }
    ASSERT(dev != NULL);
 
-   Dmsg2(dbglvl, "enter reserve_volume=%s drive=%s\n", VolumeName, 
+   Dmsg2(dbglvl, "enter reserve_volume=%s drive=%s\n", VolumeName,
       dcr->dev->print_name());
-   /* 
+
+   /*
     * We lock the reservations system here to ensure
     *  when adding a new volume that no newly scheduled
     *  job can reserve it.
     */
    lock_volumes();
    debug_list_volumes("begin reserve_volume");
-   /* 
+   /*
     * First, remove any old volume attached to this device as it
     *  is no longer used.
     */
@@ -415,7 +429,7 @@ VOLRES *reserve_volume(DCR *dcr, const char *VolumeName)
       if (vol->dev) {
          Dmsg2(dbglvl, "dev=%s vol->dev=%s\n", dev->print_name(), vol->dev->print_name());
       }
-         
+
       /*
        * Check if we are trying to use the Volume on a different drive
        *  dev      is our device
@@ -428,11 +442,11 @@ VOLRES *reserve_volume(DCR *dcr, const char *VolumeName)
             Dmsg3(dbglvl, "==== Swap vol=%s from dev=%s to %s\n", 
                VolumeName, vol->dev->print_name(), dev->print_name());
             free_volume(dev);            /* free any volume attached to our drive */
-            Dmsg0(50, "set_unload\n");
+            Dmsg1(50, "set_unload dev=%s\n", dev->print_name());
             dev->set_unload();           /* Unload any volume that is on our drive */
-            dcr->dev = vol->dev;         /* temp point to other dev */
+            dcr->set_dev(vol->dev);      /* temp point to other dev */
             slot = get_autochanger_loaded_slot(dcr);  /* get slot on other drive */
-            dcr->dev = dev;              /* restore dev */
+            dcr->set_dev(dev);           /* restore dev */
             vol->set_slot(slot);         /* save slot */
             vol->dev->set_unload();      /* unload the other drive */
             vol->set_swapping();         /* swap from other drive */
@@ -442,13 +456,18 @@ VOLRES *reserve_volume(DCR *dcr, const char *VolumeName)
             vol->dev = dev;              /* point the Volume at our drive */
             dev->vol = vol;              /* point our drive at the Volume */
          } else {
-            Dmsg5(dbglvl, "==== Swap not possible Vol busy=%d swap=%d vol=%s from dev=%s to %s\n", 
-               vol->dev->is_busy(), vol->is_swapping(),
+            Jmsg7(dcr->jcr, M_WARNING, 0, "Need volume from other drive, "
+               "but swap not possible. Status: read=%d num_writers=%d "
+               "num_reserve=%d swap=%d vol=%s from dev=%s to %s\n", 
+               vol->dev->can_read(), vol->dev->num_writers,
+               vol->dev->num_reserved(), vol->is_swapping(),
                VolumeName, vol->dev->print_name(), dev->print_name());
             if (vol->is_swapping() && dev->swap_dev) {
-               Dmsg2(dbglvl, "Swap vol=%s dev=%s\n", vol->vol_name, dev->swap_dev->print_name());
+               Dmsg3(dbglvl, "Swap failed vol=%s from=%s to dev=%s\n", 
+                 vol->vol_name, dev->swap_dev->print_name(), dev->print_name());
             } else {
-               Dmsg1(dbglvl, "swap_dev=%p\n", dev->swap_dev);
+               Dmsg3(dbglvl, "Swap failed vol=%s from=%p to dev=%s\n", 
+                  vol->vol_name, dev->swap_dev, dev->print_name());
             }
             debug_list_volumes("failed swap");
             vol = NULL;                  /* device busy */
@@ -474,35 +493,68 @@ get_out:
    return vol;
 }
 
-/* 
- * Switch from current device to given device  
- *   (not yet used) 
+/*
+ * Start walk of vol chain
+ * The proper way to walk the vol chain is:
+ *    VOLRES *vol;
+ *    foreach_vol(vol) {
+ *      ...
+ *    }
+ *    endeach_vol(vol);
+ *
+ *  It is possible to leave out the endeach_vol(vol), but
+ *   in that case, the last vol referenced must be explicitly
+ *   released with:
+ *
+ *    free_vol_item(vol);
+ *
  */
-#ifdef xxx
-void switch_device(DCR *dcr, DEVICE *dev)
+VOLRES *vol_walk_start()
 {
-   DCR save_dcr;
-
-   dev->dlock();
-   memcpy(&save_dcr, dcr, sizeof(save_dcr));
-   clean_device(dcr);                  /* clean up the dcr */
-
-   dcr->dev = dev;                     /* get new device pointer */
-   Jmsg(dcr->jcr, M_INFO, 0, _("Device switch. New device %s chosen.\n"),
-      dcr->dev->print_name());
+   VOLRES *vol;
+   lock_volumes();
+   vol = (VOLRES *)vol_list->first();
+   if (vol) {
+      vol->inc_use_count();
+      Dmsg2(dbglvl, "Inc walk_start use_count=%d volname=%s\n",
+            vol->use_count(), vol->vol_name);
+   }
+   unlock_volumes();
+   return vol;
+}
 
-   bstrncpy(dcr->VolumeName, save_dcr.VolumeName, sizeof(dcr->VolumeName));
-   bstrncpy(dcr->media_type, save_dcr.media_type, sizeof(dcr->media_type));
-   dcr->VolCatInfo.Slot = save_dcr.VolCatInfo.Slot;
-   bstrncpy(dcr->pool_name, save_dcr.pool_name, sizeof(dcr->pool_name));
-   bstrncpy(dcr->pool_type, save_dcr.pool_type, sizeof(dcr->pool_type));
-   bstrncpy(dcr->dev_name, dev->dev_name, sizeof(dcr->dev_name));
+/*
+ * Get next vol from chain, and release current one
+ */
+VOLRES *vol_walk_next(VOLRES *prev_vol)
+{
+   VOLRES *vol;
 
-// dcr->set_reserved();
+   lock_volumes();
+   vol = (VOLRES *)vol_list->next(prev_vol);
+   if (vol) {
+      vol->inc_use_count();
+      Dmsg2(dbglvl, "Inc walk_next use_count=%d volname=%s\n",
+            vol->use_count(), vol->vol_name);
+   }
+   unlock_volumes();
+   if (prev_vol) {
+      free_vol_item(prev_vol);
+   }
+   return vol;
+}
 
-   dev->dunlock();
+/*
+ * Release last vol referenced
+ */
+void vol_walk_end(VOLRES *vol)
+{
+   if (vol) {
+      Dmsg2(dbglvl, "Free walk_end use_count=%d volname=%s\n",
+            vol->use_count(), vol->vol_name);
+      free_vol_item(vol);
+   }
 }
-#endif
 
 /*
  * Search for a Volume name in the Volume list.
@@ -554,7 +606,7 @@ static VOLRES *find_read_volume(const char *VolumeName)
 }
 
 
-/*  
+/*
  * Free a Volume from the Volume list if it is no longer used
  *   Note, for tape drives we want to remember where the Volume
  *   was when last used, so rather than free the volume entry,
@@ -573,15 +625,17 @@ bool volume_unused(DCR *dcr)
       debug_list_volumes("null vol cannot unreserve_volume");
       return false;
    }
+
+   Dmsg1(dbglvl, "=== clear in_use vol=%s\n", dev->vol->vol_name);
+   dev->vol->clear_in_use();
+
    if (dev->vol->is_swapping()) {
       Dmsg1(dbglvl, "vol_unused: vol being swapped on %s\n", dev->print_name());
-      Dmsg1(dbglvl, "=== clear in_use vol=%s\n", dev->vol->vol_name);
-      dev->vol->clear_in_use();
       debug_list_volumes("swapping vol cannot free_volume");
       return false;
    }
 
-   /*  
+   /*
     * If this is a tape, we do not free the volume, rather we wait
     *  until the autoloader unloads it, or until another tape is
     *  explicitly read in this drive. This allows the SD to remember
@@ -589,13 +643,11 @@ bool volume_unused(DCR *dcr)
     */
    Dmsg4(dbglvl, "=== set not reserved vol=%s num_writers=%d dev_reserved=%d dev=%s\n",
       dev->vol->vol_name, dev->num_writers, dev->num_reserved(), dev->print_name());
-   Dmsg1(dbglvl, "=== clear in_use vol=%s\n", dev->vol->vol_name);
-   dev->vol->clear_in_use();
    if (dev->is_tape() || dev->is_autochanger()) {
       return true;
    } else {
       /*
-       * Note, this frees the volume reservation entry, but the 
+       * Note, this frees the volume reservation entry, but the
        *   file descriptor remains open with the OS.
        */
       return free_volume(dev);
@@ -628,6 +680,7 @@ bool free_volume(DEVICE *dev)
       Dmsg1(dbglvl, "=== cannot clear swapping vol=%s\n", vol->vol_name);
    }
    unlock_volumes();
+// pthread_cond_broadcast(&wait_next_vol);
    return true;
 }
 
@@ -660,6 +713,7 @@ static void free_volume_list()
          }
          free(vol->vol_name);
          vol->vol_name = NULL;
+         vol->destroy_mutex();
       }
       delete vol_list;
       vol_list = NULL;
@@ -684,6 +738,7 @@ void free_volume_lists()
          }
          free(vol->vol_name);
          vol->vol_name = NULL;
+         vol->destroy_mutex();
       }
       delete read_vol_list;
       read_vol_list = NULL;
@@ -748,13 +803,13 @@ get_out:
 
 }
 
-/*  
+/*
  * Create a temporary copy of the volume list.  We do this,
  *   to avoid having the volume list locked during the
  *   call to reserve_device(), which would cause a deadlock.
  * Note, we may want to add an update counter on the vol_list
  *   so that if it is modified while we are traversing the copy
- *   we can take note and act accordingly (probably redo the 
+ *   we can take note and act accordingly (probably redo the
  *   search at least a few times).
  */
 dlist *dup_vol_list(JCR *jcr)
@@ -762,12 +817,11 @@ dlist *dup_vol_list(JCR *jcr)
    dlist *temp_vol_list;
    VOLRES *vol = NULL;
 
-   lock_volumes();
-   Dmsg0(dbglvl, "lock volumes\n");                           
+   Dmsg0(dbglvl, "lock volumes\n");
 
    Dmsg0(dbglvl, "duplicate vol list\n");
    temp_vol_list = New(dlist(vol, &vol->link));
-   foreach_dlist(vol, vol_list) {
+   foreach_vol(vol) {
       VOLRES *nvol;
       VOLRES *tvol = (VOLRES *)malloc(sizeof(VOLRES));
       memset(tvol, 0, sizeof(VOLRES));
@@ -781,8 +835,8 @@ dlist *dup_vol_list(JCR *jcr)
          Jmsg(jcr, M_WARNING, 0, "Logic error. Duplicating vol list hit duplicate.\n");
       }
    }
+   endeach_vol(vol);
    Dmsg0(dbglvl, "unlock volumes\n");
-   unlock_volumes();
    return temp_vol_list;
 }
 
@@ -792,7 +846,7 @@ dlist *dup_vol_list(JCR *jcr)
 void free_temp_vol_list(dlist *temp_vol_list)
 {
    dlist *save_vol_list;
-   
+
    lock_volumes();
    save_vol_list = vol_list;
    vol_list = temp_vol_list;
diff --git a/src/stored/vol_mgr.h b/src/stored/vol_mgr.h
new file mode 100644
index 0000000..44659ed
--- /dev/null
+++ b/src/stored/vol_mgr.h
@@ -0,0 +1,100 @@
+/*
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2000-2013 Free Software Foundation Europe e.V.
+
+   The main author of Bacula is Kern Sibbald, with contributions from
+   many others, a complete list can be found in the file AUTHORS.
+   This program is Free Software; you can redistribute it and/or
+   modify it under the terms of version three of the GNU Affero General Public
+   License as published by the Free Software Foundation and included
+   in the file LICENSE.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU Affero General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.
+
+   Bacula® is a registered trademark of Kern Sibbald.
+   The licensor of Bacula is the Free Software Foundation Europe
+   (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
+   Switzerland, email:ftf at fsfeurope.org.
+*/
+/*
+ * Pulled out of dev.h
+ *
+ * Kern Sibbald, MMXIII
+ *
+ */
+
+/*
+ * Some details of how volume reservations work
+ *
+ * class VOLRES:
+ *   set_in_use()     volume being used on current drive
+ *   clear_in_use()   no longer being used.  Can be re-used or moved.
+ *   set_swapping()   set volume being moved to another drive
+ *   is_swapping()    volume is being moved to another drive
+ *   clear_swapping() volume normal
+ *
+ */
+
+#ifndef __VOL_MGR_H
+#define __VOL_MGR_H 1
+
+class VOLRES;
+VOLRES *vol_walk_start();
+VOLRES *vol_walk_next(VOLRES *prev_vol);
+void vol_walk_end(VOLRES *vol);
+
+/*
+ * Volume reservation class -- see vol_mgr.c and reserve.c
+ */
+class VOLRES { 
+   bool m_swapping;                   /* set when swapping to another drive */
+   bool m_in_use;                     /* set when volume reserved or in use */
+   bool m_reading;                    /* set when reading */
+   int32_t m_slot;                    /* slot of swapping volume */
+   uint32_t m_JobId;                  /* JobId for read volumes */
+   volatile int32_t m_use_count;      /* Use count */
+   pthread_mutex_t m_mutex;           /* Vol muntex */
+public:
+   dlink link;
+   char *vol_name;                    /* Volume name */
+   DEVICE *dev;                       /* Pointer to device to which we are attached */
+
+   void init_mutex() { pthread_mutex_init(&m_mutex, NULL); };
+   void destroy_mutex() { pthread_mutex_destroy(&m_mutex); };
+   void Lock() { P(m_mutex); };
+   void Unlock() { V(m_mutex); };
+   void inc_use_count(void) {P(m_mutex); m_use_count++; V(m_mutex); };
+   void dec_use_count(void) {P(m_mutex); m_use_count--; V(m_mutex); };
+   int32_t use_count() const { return m_use_count; };
+   bool is_swapping() const { return m_swapping; };
+   bool is_reading() const { return m_reading; };
+   bool is_writing() const { return !m_reading; };
+   void set_reading() { m_reading = true; };
+   void clear_reading() { m_reading = false; };
+   void set_swapping() { m_swapping = true; };
+   void clear_swapping() { m_swapping = false; };
+   bool is_in_use() const { return m_in_use; };
+   void set_in_use() { m_in_use = true; };
+   void clear_in_use() { m_in_use = false; };
+   void set_slot(int32_t slot) { m_slot = slot; };
+   void clear_slot() { m_slot = -1; };
+   int32_t get_slot() const { return m_slot; };
+   uint32_t get_jobid() const { return m_JobId; };
+   void set_jobid(uint32_t JobId) { m_JobId = JobId; };
+};
+
+#define foreach_vol(vol) \
+   for (vol=vol_walk_start(); vol; (vol=vol_walk_next(vol)) )
+
+#define endeach_vol(vol) vol_walk_end(vol)
+
+#endif
diff --git a/src/stored/wait.c b/src/stored/wait.c
index 0a7a3d1..87f809f 100644
--- a/src/stored/wait.c
+++ b/src/stored/wait.c
@@ -59,7 +59,7 @@ int wait_for_sysop(DCR *dcr)
    DEVICE *dev = dcr->dev;
    JCR *jcr = dcr->jcr;
 
-   dev->dlock();  
+   dev->Lock();  
    Dmsg1(dbglvl, "Enter blocked=%s\n", dev->print_blocked());
 
    /*
@@ -206,7 +206,7 @@ int wait_for_sysop(DCR *dcr)
       Dmsg1(dbglvl, "set %s\n", dev->print_blocked());
    }
    Dmsg1(dbglvl, "Exit blocked=%s\n", dev->print_blocked());
-   dev->dunlock();
+   dev->Unlock();
    return stat;
 }
 
diff --git a/src/streams.h b/src/streams.h
index 1fc8c82..78b1e68 100644
--- a/src/streams.h
+++ b/src/streams.h
@@ -169,6 +169,13 @@
 #define STREAM_ACL_FREEBSD_NFS4_ACL      1017    /* FreeBSD specific acl_t string representation
                                                   * from acl_to_text (NFSv4 or ZFS acl)
                                                   */
+#define STREAM_ACL_HURD_DEFAULT_ACL      1018    /* GNU HURD specific acl_t string representation
+                                                  * from acl_to_text (POSIX acl) for default acls.
+                                                  */
+#define STREAM_ACL_HURD_ACCESS_ACL       1019    /* GNU HURD specific acl_t string representation
+                                                  * from acl_to_text (POSIX acl) for access acls.
+                                                  */
+#define STREAM_XATTR_HURD                1989    /* GNU HURD specific extended attributes */
 #define STREAM_XATTR_IRIX                1990    /* IRIX specific extended attributes */
 #define STREAM_XATTR_TRU64               1991    /* TRU64 specific extended attributes */
 #define STREAM_XATTR_AIX                 1992    /* AIX specific extended attributes */
diff --git a/src/tools/Makefile.in b/src/tools/Makefile.in
index 0c3f305..3bdacc8 100644
--- a/src/tools/Makefile.in
+++ b/src/tools/Makefile.in
@@ -1,8 +1,6 @@
 #
 # Bacula Tools Makefile
 #
-# Version $Id$
-#
 @MCOMMON@
 
 PYTHON_INC = @PYTHON_INCDIR@
@@ -29,15 +27,15 @@ dummy:
 
 GETTEXT_LIBS = @LIBINTL@
 
-FINDOBJS = testfind.o ../dird/dird_conf.o ../dird/inc_conf.o ../dird/run_conf.o
+FINDOBJS = testfind.o ../dird/dird_conf.o ../dird/inc_conf.o ../dird/ua_acl.o ../dird/run_conf.o
 
 # these are the objects that are changed by the .configure process
 EXTRAOBJS = @OBJLIST@
 
-DIRCONFOBJS = ../dird/dird_conf.o ../dird/run_conf.o ../dird/inc_conf.o
+DIRCONFOBJS = ../dird/dird_conf.o ../dird/ua_acl.o ../dird/run_conf.o ../dird/inc_conf.o
 
 NODIRTOOLS = bsmtp
-DIRTOOLS = bsmtp dbcheck drivetype fstype testfind testls bregex bwild bbatch bregtest bvfs_test ing_test
+DIRTOOLS = bsmtp dbcheck drivetype fstype testfind testls bregex bwild bbatch bregtest bvfs_test ing_test bpluginfo timelimit
 TOOLS = $(@DIR_TOOLS@)
 
 INSNODIRTOOLS = bsmtp
@@ -79,12 +77,19 @@ drivetype: Makefile drivetype.o ../lib/libbac$(DEFAULT_ARCHIVE_TYPE) ../findlib/
 dird_conf.o: ../dird/dird_conf.c
 	$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
 
+ua_acl.o: ../dird/ua_acl.c
+	$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
+
 run_conf.o: ../dird/run_conf.c
 	$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
 
 inc_conf.o: ../dird/inc_conf.c
 	$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
 
+timelimit: timelimit.o
+	${CC} ${DEFS} ${DEBUG} -pipe -DHAVE_ERRNO_H -DHAVE_SETITIMER -DHAVE_SIGACTION -c timelimit.c 
+	${CC} -o timelimit timelimit.o
+
 testfind: Makefile ../lib/libbac$(DEFAULT_ARCHIVE_TYPE) ../lib/libbaccfg$(DEFAULT_ARCHIVE_TYPE) \
 	  ../findlib/libbacfind$(DEFAULT_ARCHIVE_TYPE) $(FINDOBJS)
 	$(LIBTOOL_LINK) $(CXX) -g $(LDFLAGS) -o $@ $(FINDOBJS) -L. -L../lib -L../findlib \
@@ -134,6 +139,12 @@ gigaslam: gigaslam.o
 grow: Makefile grow.o ../lib/libbac$(DEFAULT_ARCHIVE_TYPE)
 	$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L../lib -o $@ grow.o -lbac -lm $(DLIB) $(LIBS) $(GETTEXT_LIBS) $(OPENSSL_LIBS)
 
+bpluginfo.o: bpluginfo.c
+	$(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) -I../filed -I../dird -I../stored $(DINCLUDE) $(CFLAGS) $<
+
+bpluginfo: Makefile bpluginfo.o
+	$(LIBTOOL_LINK) $(CXX) $(LDFLAGS) -L../lib -o $@ bpluginfo.o -lbac $(GETTEXT_LIBS)
+
 Makefile: $(srcdir)/Makefile.in $(topdir)/config.status
 	cd $(topdir) \
 	  && CONFIG_FILES=$(thisdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
diff --git a/src/tools/assert_macro.h b/src/tools/assert_macro.h
new file mode 100644
index 0000000..477b912
--- /dev/null
+++ b/src/tools/assert_macro.h
@@ -0,0 +1,166 @@
+/*
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
+
+   The main author of Bacula is Kern Sibbald, with contributions from
+   many others, a complete list can be found in the file AUTHORS.
+   This program is Free Software; you can redistribute it and/or
+   modify it under the terms of version three of the GNU Affero General Public
+   License as published by the Free Software Foundation and included
+   in the file LICENSE.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU Affero General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.
+
+   Bacula® is a registered trademark of Kern Sibbald.
+   The licensor of Bacula is the Free Software Foundation Europe
+   (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
+   Switzerland, email:ftf at fsfeurope.org.
+*/
+/**
+ * Assertion definitions
+ * 
+ */
+
+
+#ifndef _ASSERT_MACRO_H
+#define _ASSERT_MACRO_H 1
+
+/* Assertions definitions */
+
+/* check valid pointer if not return */
+#ifndef ASSERT_NVAL_RET
+#define ASSERT_NVAL_RET(value) \
+   if ( ! value ){ \
+      return; \
+   }
+#endif
+
+/* check an error if true return */
+#ifndef ASSERT_VAL_RET
+#define ASSERT_VAL_RET(value) \
+   if ( value ){ \
+      return; \
+   }
+#endif
+
+/* check valid pointer with Null return */
+#ifndef ASSERT_NVAL_RET_NULL
+#define ASSERT_NVAL_RET_NULL(value) \
+   if ( ! value ) \
+   { \
+      return NULL; \
+   }
+#endif
+
+/* if value then Null return */
+#ifndef ASSERT_VAL_RET_NULL
+#define ASSERT_VAL_RET_NULL(value) \
+   if ( value ) \
+   { \
+      return NULL; \
+   }
+#endif
+
+/* check valid pointer with int/err return */
+#ifndef ASSERT_NVAL_RET_ONE
+#define ASSERT_NVAL_RET_ONE(value) \
+   if ( ! value ) \
+   { \
+      return 1; \
+   }
+#endif
+
+/* check valid pointer with int/err return */
+#ifndef ASSERT_NVAL_RET_NONE
+#define ASSERT_NVAL_RET_NONE(value) \
+   if ( ! value ) \
+   { \
+      return -1; \
+   }
+#endif
+
+/* check error if not exit with error */
+#ifndef ASSERT_NVAL_EXIT_ONE
+#define ASSERT_NVAL_EXIT_ONE(value) \
+   if ( ! value ){ \
+      exit ( 1 ); \
+   }
+#endif
+
+/* check error if not exit with error */
+#ifndef ASSERT_NVAL_EXIT_E
+#define ASSERT_NVAL_EXIT_E(value,ev) \
+   if ( ! value ){ \
+      exit ( ev ); \
+   }
+#endif
+
+/* check error if not return zero */
+#ifndef ASSERT_NVAL_RET_ZERO
+#define ASSERT_NVAL_RET_ZERO(value) \
+   if ( ! value ){ \
+      return 0; \
+   }
+#endif
+
+/* check error if not return value */
+#ifndef ASSERT_NVAL_RET_V
+#define ASSERT_NVAL_RET_V(value,rv) \
+   if ( ! value ){ \
+      return rv; \
+   }
+#endif
+
+/* checks error value then int/err return */
+#ifndef ASSERT_VAL_RET_ONE
+#define ASSERT_VAL_RET_ONE(value) \
+   if ( value ) \
+   { \
+      return 1; \
+   }
+#endif
+
+/* checks error value then int/err return */
+#ifndef ASSERT_VAL_RET_NONE
+#define ASSERT_VAL_RET_NONE(value) \
+   if ( value ) \
+   { \
+      return -1; \
+   }
+#endif
+
+/* checks error value then exit one */
+#ifndef ASSERT_VAL_EXIT_ONE
+#define ASSERT_VAL_EXIT_ONE(value) \
+   if ( value ) \
+   { \
+      exit (1); \
+   }
+#endif
+
+/* check error if not return zero */
+#ifndef ASSERT_VAL_RET_ZERO
+#define ASSERT_VAL_RET_ZERO(value) \
+   if ( value ){ \
+      return 0; \
+   }
+#endif
+
+/* check error if not return value */
+#ifndef ASSERT_VAL_RET_V
+#define ASSERT_VAL_RET_V(value,rv) \
+   if ( value ){ \
+      return rv; \
+   }
+#endif
+
+#endif /* _ASSERT_MACRO_H */
diff --git a/src/tools/bpluginfo.c b/src/tools/bpluginfo.c
new file mode 100644
index 0000000..faa2754
--- /dev/null
+++ b/src/tools/bpluginfo.c
@@ -0,0 +1,637 @@
+/*
+ * Contributed in 2012 by Inteos sp. z o.o.
+ * 
+ * Utility tool display various information about Bacula plugin,
+ * including but not limited to:
+ * - Name and Author of the plugin
+ * - Plugin License
+ * - Description
+ * - API version
+ * - Enabled functions, etc.
+ */
+/*
+   Bacula® - The Network Backup Solution
+
+   Copyright (C) 2006-2012 Free Software Foundation Europe e.V.
+
+   The main author of Bacula is Kern Sibbald, with contributions from
+   many others, a complete list can be found in the file AUTHORS.
+   This program is Free Software; you can redistribute it and/or
+   modify it under the terms of version three of the GNU Affero General Public
+   License as published by the Free Software Foundation and included
+   in the file LICENSE.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU Affero General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA.
+
+   Bacula® is a registered trademark of Kern Sibbald.
+   The licensor of Bacula is the Free Software Foundation Europe
+   (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
+   Switzerland, email:ftf at fsfeurope.org.
+*/
+
+#include <stdio.h>
+#include <unistd.h>
+#include <limits.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#ifndef __WIN32__
+#include <dlfcn.h>
+#endif
+#include "bacula.h"
+#include "../filed/fd_plugins.h"
+#include "../dird/dir_plugins.h"
+// I can't include sd_plugins.h here ...
+#include "../stored/stored.h"
+#include "assert_macro.h"
+
+extern "C" {
+   typedef int (*loadPlugin) (void *binfo, void *bfuncs, void **pinfo,
+               void **pfuncs);
+   typedef int (*unloadPlugin) (void);
+}
+#define DEFAULT_API_VERSION   1
+enum plugintype {
+   DIRPLUGIN,
+   FDPLUGIN,
+   SDPLUGIN,
+   ERRORPLUGIN,
+};
+
+/*
+ * pDirInfo
+ * pInfo
+ * psdInfo
+ */
+typedef union _pluginfo pluginfo;
+union _pluginfo {
+   pDirInfo pdirinfo;
+   pInfo pfdinfo;
+   psdInfo psdinfo;
+};
+
+/*
+ * pDirFuncs
+ * pFuncs
+ * psdFuncs
+ */
+typedef union _plugfuncs plugfuncs;
+union _plugfuncs {
+   pDirFuncs pdirfuncs;
+   pFuncs pfdfuncs;
+   psdFuncs psdfuncs;
+};
+
+/*
+ * bDirFuncs
+ * bFuncs
+ * bsdFuncs
+ */
+/*
+ * TODO: change to union
+ * 
+typedef union _baculafuncs baculafuncs;
+union _baculafuncs {
+   bDirFuncs bdirfuncs;
+   bFuncs bfdfuncs;
+   bsdFuncs bsdfuncs;
+};
+*/
+typedef struct _baculafuncs baculafuncs;
+struct _baculafuncs {
+   uint32_t size;
+   uint32_t version;
+   int (*registerBaculaEvents) (void *ctx, ...);
+   int (*getBaculaValue) (void *ctx, int var, void *value);
+   int (*setBaculaValue) (void *ctx, int var, void *value);
+   int (*JobMessage) (void *ctx, const char *file, int line, int type, int64_t mtime,
+            const char *fmt, ...);
+   int (*DebugMessage) (void *ctx, const char *file, int line, int level,
+         const char *fmt, ...);
+   void *(*baculaMalloc) (void *ctx, const char *file, int line, size_t size);
+   void (*baculaFree) (void *ctx, const char *file, int line, void *mem);
+};
+
+/* 
+ * bDirInfo
+ * bInfo
+ * bsdInfo
+ */
+typedef union _baculainfos baculainfos;
+union _baculainfos {
+   bDirInfo bdirinfo;
+   bInfo bfdinfo;
+   bsdInfo bsdinfo;
+};
+
+/*
+typedef struct _baculainfos baculainfos;
+struct _baculainfos {
+   uint32_t size;
+   uint32_t version;
+};
+*/
+
+typedef struct _progdata progdata;
+struct _progdata {
+   int verbose;
+   int listinfo;
+   int listfunc;
+   char *pluginfile;
+   void *pluginhandle;
+   int bapiversion;
+   int bplugtype;
+   pluginfo *pinfo;
+   plugfuncs *pfuncs;
+};
+
+/* memory allocation/deallocation */
+#define MALLOC(size) \
+   (char *) bmalloc ( size );
+
+#define ASSERT_MEMORY(m) \
+   if ( m == NULL ){ \
+      printf ( "Error: memory allocation error!\n" ); \
+      exit (10); \
+   }
+
+#define FREE(ptr) \
+   if ( ptr != NULL ){ \
+      bfree ( ptr ); \
+      ptr = NULL; \
+   }
+
+int registerBaculaEvents(void *ctx, ...)
+{
+   return 0;
+};
+
+int getBaculaValue(void *ctx, int var, void *value)
+{
+   return 0;
+};
+
+int setBaculaValue(void *ctx, int var, void *value)
+{
+   return 0;
+};
+
+int DebugMessage(void *ctx, const char *file, int line, int level, const char *fmt, ...)
+{
+#ifdef DEBUGMSG
+   printf("DG: %s:%d %s\n", file, line, fmt);
+#endif
+   return 0;
+};
+
+int JobMessage(void *ctx, const char *file, int line, int type, int64_t mtime,
+          const char *fmt, ...)
+{
+#ifdef DEBUGMSG
+   printf("JM: %s:%d <%d> %s\n", file, line, type, fmt);
+#endif
+   return 0;
+};
+
+void *baculaMalloc(void *ctx, const char *file, int line, size_t size)
+{
+   return MALLOC(size);
+};
+
+void baculaFree(void *ctx, const char *file, int line, void *mem)
+{
+   FREE(mem);
+};
+
+/*
+ * displays a short help
+ */
+void print_help(int argc, char *argv[])
+{
+
+   printf("\n"
+     "Usage: bpluginfo [options] <plugin_file.so>\n"
+     "       -v          verbose\n"
+     "       -i          list plugin header information only (default)\n"
+     "       -f          list plugin functions information only\n"
+     "       -a <api>    bacula api version (default %d)\n"
+     "       -h          help screen\n" "\n", DEFAULT_API_VERSION);
+}
+
+/* allocates and resets a main program data variable */
+progdata *allocpdata(void)
+{
+
+   progdata *pdata;
+
+   pdata = (progdata *) bmalloc(sizeof(progdata));
+   ASSERT_MEMORY(pdata);
+   memset(pdata, 0, sizeof(progdata));
+
+   return pdata;
+}
+
+/* releases all allocated program data resources */
+void freepdata(progdata * pdata)
+{
+
+   if (pdata->pluginfile) {
+      FREE(pdata->pluginfile);
+   }
+   FREE(pdata);
+}
+
+/*
+ * parse execution arguments and fills required pdata structure fields
+ * 
+ * input:
+ *    pdata - pointer to program data structure
+ *    argc, argv - execution envinroment variables
+ * output:
+ *    pdata - required structure fields
+ * 
+ * supported options:
+ * -v    verbose flag
+ * -i    list plugin header info only (default)
+ * -f    list implemented functions only
+ * -a    bacula api version (default 1)
+ * -h    help screen
+ */
+void parse_args(progdata * pdata, int argc, char *argv[])
+{
+
+   int i;
+   char *dirtmp;
+   char *progdir;
+   int api;
+   int s;
+
+   if (argc < 2) {
+      /* TODO - add a real help screen */
+      printf("\nNot enough parameters!\n");
+      print_help(argc, argv);
+      exit(1);
+   }
+
+   if (argc > 5) {
+      /* TODO - add a real help screen */
+      printf("\nToo many parameters!\n");
+      print_help(argc, argv);
+      exit(1);
+   }
+
+   for (i = 1; i < argc; i++) {
+      if (strcmp(argv[i], "-h") == 0) {
+         /* help screen */
+         print_help(argc, argv);
+         exit(0);
+      }
+      if (strcmp(argv[i], "-v") == 0) {
+          /* verbose option */
+          pdata->verbose = 1;
+          continue;
+      }
+      if (strcmp(argv[i], "-f") == 0) {
+         /* functions list */
+         pdata->listfunc = 1;
+         continue;
+      }
+      if (strcmp(argv[i], "-i") == 0) {
+         /* header list */
+         pdata->listinfo = 1;
+         continue;
+      }
+      if (strcmp(argv[i], "-a") == 0) {
+         /* bacula api version */
+         if (i < argc - 1) {
+            s = sscanf(argv[i + 1], "%d", &api);
+            if (s == 1) {
+               pdata->bapiversion = api;
+               i++;
+               continue;
+            }
+         }
+         printf("\nAPI version number required!\n");
+         print_help(argc, argv);
+         exit(1);
+      }
+      if (!pdata->pluginfile) {
+          if (argv[i][0] != '/') {
+             dirtmp = MALLOC(PATH_MAX);
+             ASSERT_MEMORY(dirtmp);
+             progdir = MALLOC(PATH_MAX);
+             ASSERT_MEMORY(progdir);
+             dirtmp = getcwd(dirtmp, PATH_MAX);
+      
+             strcat(dirtmp, "/");
+             strcat(dirtmp, argv[i]);
+      
+             if (realpath(dirtmp, progdir) == NULL) {
+                /* error in resolving path */
+                FREE(progdir);
+                progdir = bstrdup(argv[i]);
+             }
+             pdata->pluginfile = bstrdup(progdir);
+             FREE(dirtmp);
+             FREE(progdir);
+          } else {
+             pdata->pluginfile = bstrdup(argv[i]);
+          }
+    continue;
+      }
+   }
+}
+
+/*
+ * checks a plugin type based on a plugin magic string
+ * 
+ * input:
+ *    pdata - program data with plugin info structure
+ * output:
+ *    int - enum plugintype
+ */
+int getplugintype(progdata * pdata)
+{
+
+   ASSERT_NVAL_RET_V(pdata, ERRORPLUGIN);
+
+   pluginfo *pinfo = pdata->pinfo;
+
+   ASSERT_NVAL_RET_V(pinfo, ERRORPLUGIN);
+
+   if (pinfo->pdirinfo.plugin_magic &&
+       strcmp(pinfo->pdirinfo.plugin_magic, DIR_PLUGIN_MAGIC) == 0) {
+      return DIRPLUGIN;
+   } else
+      if (pinfo->pfdinfo.plugin_magic &&
+     strcmp(pinfo->pfdinfo.plugin_magic, FD_PLUGIN_MAGIC) == 0) {
+      return FDPLUGIN;
+   } else
+      if (pinfo->psdinfo.plugin_magic &&
+     strcmp(pinfo->psdinfo.plugin_magic, SD_PLUGIN_MAGIC) == 0) {
+      return SDPLUGIN;
+   } else {
+      return ERRORPLUGIN;
+   }
+}
+
+/*
+ * prints any available information about a plugin
+ * 
+ * input:
+ *    pdata - program data with plugin info structure
+ * output:
+ *    printed info
+ */
+void dump_pluginfo(progdata * pdata)
+{
+
+   ASSERT_NVAL_RET(pdata);
+
+   pluginfo *pinfo = pdata->pinfo;
+
+   ASSERT_NVAL_RET(pinfo);
+
+   plugfuncs *pfuncs = pdata->pfuncs;
+
+   ASSERT_NVAL_RET(pfuncs);
+
+   switch (pdata->bplugtype) {
+   case DIRPLUGIN:
+      printf("\nPlugin type:\t\tBacula Director plugin\n");
+      if (pdata->verbose) {
+         printf("Plugin magic:\t\t%s\n", NPRT(pinfo->pdirinfo.plugin_magic));
+      }
+      printf("Plugin version:\t\t%s\n", pinfo->pdirinfo.plugin_version);
+      printf("Plugin release date:\t%s\n", NPRT(pinfo->pdirinfo.plugin_date));
+      printf("Plugin author:\t\t%s\n", NPRT(pinfo->pdirinfo.plugin_author));
+      printf("Plugin licence:\t\t%s\n", NPRT(pinfo->pdirinfo.plugin_license));
+      printf("Plugin description:\t%s\n", NPRT(pinfo->pdirinfo.plugin_description));
+      printf("Plugin API version:\t%d\n", pinfo->pdirinfo.version);
+      break;
+   case FDPLUGIN:
+      printf("\nPlugin type:\t\tFile Daemon plugin\n");
+      if (pdata->verbose) {
+         printf("Plugin magic:\t\t%s\n", NPRT(pinfo->pfdinfo.plugin_magic));
+      }
+      printf("Plugin version:\t\t%s\n", pinfo->pfdinfo.plugin_version);
+      printf("Plugin release date:\t%s\n", NPRT(pinfo->pfdinfo.plugin_date));
+      printf("Plugin author:\t\t%s\n", NPRT(pinfo->pfdinfo.plugin_author));
+      printf("Plugin licence:\t\t%s\n", NPRT(pinfo->pfdinfo.plugin_license));
+      printf("Plugin description:\t%s\n", NPRT(pinfo->pfdinfo.plugin_description));
+      printf("Plugin API version:\t%d\n", pinfo->pfdinfo.version);
+      break;
+   case SDPLUGIN:
+      printf("\nPlugin type:\t\tBacula Storage plugin\n");
+      if (pdata->verbose) {
+         printf("Plugin magic:\t\t%s\n", NPRT(pinfo->psdinfo.plugin_magic));
+      }
+      printf("Plugin version:\t\t%s\n", pinfo->psdinfo.plugin_version);
+      printf("Plugin release date:\t%s\n", NPRT(pinfo->psdinfo.plugin_date));
+      printf("Plugin author:\t\t%s\n", NPRT(pinfo->psdinfo.plugin_author));
+      printf("Plugin licence:\t\t%s\n", NPRT(pinfo->psdinfo.plugin_license));
+      printf("Plugin description:\t%s\n", NPRT(pinfo->psdinfo.plugin_description));
+      printf("Plugin API version:\t%d\n", pinfo->psdinfo.version);
+      break;
+   default:
+      printf("\nUnknown plugin type or other Error\n\n");
+   }
+}
+
+/*
+ * prints any available information about plugin' functions
+ * 
+ * input:
+ *    pdata - program data with plugin info structure
+ * output:
+ *    printed info
+ */
+void dump_plugfuncs(progdata * pdata)
+{
+
+   ASSERT_NVAL_RET(pdata);
+
+   plugfuncs *pfuncs = pdata->pfuncs;
+
+   ASSERT_NVAL_RET(pfuncs);
+
+   printf("\nPlugin functions:\n");
+
+   switch (pdata->bplugtype) {
+   case DIRPLUGIN:
+      if (pdata->verbose) {
+          if (pfuncs->pdirfuncs.newPlugin) {
+             printf(" newPlugin()\n");
+          }
+          if (pfuncs->pdirfuncs.freePlugin) {
+             printf(" freePlugin()\n");
+          }
+      }
+      if (pfuncs->pdirfuncs.getPluginValue) {
+         printf(" getPluginValue()\n");
+      }
+      if (pfuncs->pdirfuncs.setPluginValue) {
+         printf(" setPluginValue()\n");
+      }
+      if (pfuncs->pdirfuncs.handlePluginEvent) {
+         printf(" handlePluginEvent()\n");
+      }
+      break;
+   case FDPLUGIN:
+      if (pdata->verbose) {
+          if (pfuncs->pfdfuncs.newPlugin) {
+             printf(" newPlugin()\n");
+          }
+          if (pfuncs->pfdfuncs.freePlugin) {
+             printf(" freePlugin()\n");
+          }
+      }
+      if (pfuncs->pfdfuncs.getPluginValue) {
+         printf(" getPluginValue()\n");
+      }
+      if (pfuncs->pfdfuncs.setPluginValue) {
+         printf(" setPluginValue()\n");
+      }
+      if (pfuncs->pfdfuncs.handlePluginEvent) {
+         printf(" handlePluginEvent()\n");
+      }
+      if (pfuncs->pfdfuncs.startBackupFile) {
+         printf(" startBackupFile()\n");
+      }
+      if (pfuncs->pfdfuncs.endBackupFile) {
+         printf(" endBackupFile()\n");
+      }
+      if (pfuncs->pfdfuncs.startRestoreFile) {
+         printf(" startRestoreFile()\n");
+      }
+      if (pfuncs->pfdfuncs.endRestoreFile) {
+         printf(" endRestoreFile()\n");
+      }
+      if (pfuncs->pfdfuncs.pluginIO) {
+         printf(" pluginIO()\n");
+      }
+      if (pfuncs->pfdfuncs.createFile) {
+         printf(" createFile()\n");
+      }
+      if (pfuncs->pfdfuncs.setFileAttributes) {
+         printf(" setFileAttributes()\n");
+      }
+      if (pfuncs->pfdfuncs.checkFile) {
+         printf(" checkFile()\n");
+      }
+      break;
+   case SDPLUGIN:
+      if (pdata->verbose) {
+          if (pfuncs->psdfuncs.newPlugin) {
+             printf(" newPlugin()\n");
+          }
+          if (pfuncs->psdfuncs.freePlugin) {
+             printf(" freePlugin()\n");
+          }
+      }
+      if (pfuncs->psdfuncs.getPluginValue) {
+         printf(" getPluginValue()\n");
+      }
+      if (pfuncs->psdfuncs.setPluginValue) {
+         printf(" setPluginValue()\n");
+      }
+      if (pfuncs->psdfuncs.handlePluginEvent) {
+         printf(" handlePluginEvent()\n");
+      }
+      break;
+   default:
+      printf("\nUnknown plugin type or other Error\n\n");
+   }
+}
+
+/*
+ * input parameters:
+ *    argv[0] [options] <plugin_filename.so>
+ * 
+ * exit codes:
+ *    0 - success
+ *    1 - cannot load a plugin
+ *    2 - cannot find a loadPlugin function
+ *    3 - cannot find an unloadPlugin function
+ *    10 - not enough memory
+ */
+int main(int argc, char *argv[])
+{
+
+   progdata *pdata;
+   loadPlugin loadplugfunc;
+   unloadPlugin unloadplugfunc;
+   baculafuncs bfuncs = {
+      sizeof(bfuncs),
+      1,
+      registerBaculaEvents,
+      getBaculaValue,
+      setBaculaValue,
+      JobMessage,
+      DebugMessage,
+      baculaMalloc,
+      baculaFree,
+   };
+   baculainfos binfos;
+
+   pdata = allocpdata();
+   parse_args(pdata, argc, argv);
+
+   binfos.bfdinfo.size = sizeof(binfos);
+   binfos.bfdinfo.version = DEFAULT_API_VERSION;
+
+   pdata->pluginhandle = dlopen(pdata->pluginfile, RTLD_LAZY);
+   if (pdata->pluginhandle == NULL) {
+      printf("\nCannot load a plugin: %s\n\n", dlerror());
+      freepdata(pdata);
+      exit(1);
+   }
+
+   loadplugfunc = (loadPlugin) dlsym(pdata->pluginhandle, "loadPlugin");
+   if (loadplugfunc == NULL) {
+      printf("\nCannot find loadPlugin function: %s\n", dlerror());
+      printf("\nWhether the file is a really Bacula plugin?\n\n");
+      freepdata(pdata);
+      exit(2);
+   }
+
+   unloadplugfunc = (unloadPlugin) dlsym(pdata->pluginhandle, "unloadPlugin");
+   if (unloadplugfunc == NULL) {
+      printf("\nCannot find unloadPlugin function: %s\n", dlerror());
+      printf("\nWhether the file is a really Bacula plugin?\n\n");
+      freepdata(pdata);
+      exit(3);
+   }
+
+   if (pdata->bapiversion > 0) {
+      binfos.bdirinfo.version = pdata->bapiversion;
+   }
+
+   loadplugfunc(&binfos, &bfuncs, (void **)&pdata->pinfo, (void **)&pdata->pfuncs);
+
+   pdata->bplugtype = getplugintype(pdata);
+
+   if (!pdata->listfunc) {
+      dump_pluginfo(pdata);
+   }
+   if ((!pdata->listinfo && pdata->listfunc) || pdata->verbose) {
+      dump_plugfuncs(pdata);
+   }
+   printf("\n");
+
+   unloadplugfunc();
+
+   dlclose(pdata->pluginhandle);
+
+   freepdata(pdata);
+
+   return 0;
+}
diff --git a/src/tools/bsmtp.c b/src/tools/bsmtp.c
index 2cbf007..d502ead 100644
--- a/src/tools/bsmtp.c
+++ b/src/tools/bsmtp.c
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2001-2009 Free Software Foundation Europe e.V.
+   Copyright (C) 2001-2012 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -62,13 +62,8 @@
      Note, the original W.Z. Venema smtp.c had no license and no
      copyright.  See:
         http://archives.neohapsis.com/archives/postfix/2000-05/1520.html
- 
-
-   Version $Id$
-
  */
 
-
 #include "bacula.h"
 #include "jcr.h"
 #define MY_NAME "bsmtp"
@@ -77,14 +72,24 @@
 #include <lmcons.h>
 #endif
 
-/* Dummy functions */
+/*
+ * Dummy functions
+ */
 int generate_daemon_event(JCR *jcr, const char *event) 
-   { return 1; }
+{
+   return 1;
+}
 
 #ifndef MAXSTRING
 #define MAXSTRING 254
 #endif
 
+enum resolv_type {
+   RESOLV_PROTO_ANY,
+   RESOLV_PROTO_IPV4,
+   RESOLV_PROTO_IPV6
+};
+
 static FILE *sfp;
 static FILE *rfp;
 
@@ -97,6 +102,7 @@ static char *reply_addr = NULL;
 static int mailport = 25;
 static char my_hostname[MAXSTRING];
 static bool content_utf8 = false;
+static resolv_type default_resolv_type = RESOLV_PROTO_IPV4;
 
 /* 
  * Take input that may have names and other stuff and strip
@@ -185,7 +191,12 @@ static void usage()
    fprintf(stderr,
 _("\n"
 "Usage: %s [-f from] [-h mailhost] [-s subject] [-c copy] [recipient ...]\n"
+"       -4          forces bsmtp to use IPv4 addresses only.\n"
+#ifdef HAVE_IPV6
+"       -6          forces bsmtp to use IPv6 addresses only.\n"
+#endif
 "       -8          set charset to UTF-8\n"
+"       -a          use any ip protocol for address resolution\n"
 "       -c          set the Cc: field\n"
 "       -d <nn>     set debug level to <nn>\n"
 "       -dt         print a timestamp in debug output\n"
@@ -202,10 +213,9 @@ _("\n"
 
 /*
  * Return the offset west from localtime to UTC in minutes
-  * Same as timezone.tz_minuteswest
-  *   Unix tz_offset coded by:  Attila Fülöp
-  */
-
+ * Same as timezone.tz_minuteswest
+ *   Unix tz_offset coded by:  Attila Fülöp
+ */
 static long tz_offset(time_t lnow, struct tm &tm)
 {
 #if defined(HAVE_WIN32)
@@ -247,31 +257,42 @@ static void get_date_string(char *buf, int buf_len)
 
    my_timezone = tz_offset(now, tm);
    strftime(buf, buf_len, "%a, %d %b %Y %H:%M:%S", &tm);
-   sprintf(tzbuf, " %+2.2ld%2.2u", -my_timezone / 60, abs(my_timezone) % 60);
+   snprintf(tzbuf, sizeof(tzbuf), " %+2.2ld%2.2u", -my_timezone / 60, abs(my_timezone) % 60);
    strcat(buf, tzbuf);              /* add +0100 */
    strftime(tzbuf, sizeof(tzbuf), " (%Z)", &tm);
    strcat(buf, tzbuf);              /* add (CEST) */
 }
 
-
 /*********************************************************************
  *
  *  Program to send email
  */
 int main (int argc, char *argv[])
 {
-    char buf[1000];
-    struct sockaddr_in sin;
-    struct hostent *hp;
-    int i, ch;
-    unsigned long maxlines, lines;
+   char buf[1000];
+   int i, ch;
+   unsigned long maxlines, lines;
 #if defined(HAVE_WIN32)
-    SOCKET s;
+   SOCKET s;
 #else
-    int s, r;
-    struct passwd *pwd;
+   int s, r;
+   struct passwd *pwd;
+#endif
+   char *cp, *p;
+#ifdef HAVE_GETADDRINFO
+   int res;
+   struct addrinfo hints;
+   struct addrinfo *ai, *rp;
+   char mail_port[10];
+#else
+   struct hostent *hp;
+   struct sockaddr_in sin;
+#endif
+#ifdef HAVE_IPV6
+   const char *options = "468ac:d:f:h:r:s:l:?";
+#else
+   const char *options = "48ac:d:f:h:r:s:l:?";
 #endif
-    char *cp, *p;
     
    setlocale(LC_ALL, "en_US");
    bindtextdomain("bacula", LOCALEDIR);
@@ -280,11 +301,26 @@ int main (int argc, char *argv[])
    my_name_is(argc, argv, "bsmtp");
    maxlines = 0;
 
-   while ((ch = getopt(argc, argv, "8c:d:f:h:r:s:l:?")) != -1) {
+   while ((ch = getopt(argc, argv, options)) != -1) {
       switch (ch) {
+      case '4':
+         default_resolv_type = RESOLV_PROTO_IPV4;
+         break;
+
+#ifdef HAVE_IPV6
+      case '6':
+         default_resolv_type = RESOLV_PROTO_IPV6;
+         break;
+#endif
+
       case '8':
          content_utf8 = true;
          break;
+
+      case 'a':
+         default_resolv_type = RESOLV_PROTO_ANY;
+         break;
+
       case 'c':
          Dmsg1(20, "cc=%s\n", optarg);
          cc_addr = optarg;
@@ -345,7 +381,6 @@ int main (int argc, char *argv[])
       exit(1);
    }
 
-
    /*
     *  Determine SMTP server
     */
@@ -372,12 +407,28 @@ int main (int argc, char *argv[])
       Pmsg1(0, _("Fatal gethostname error: ERR=%s\n"), strerror(errno));
       exit(1);
    }
+#ifdef HAVE_GETADDRINFO
+   memset(&hints, 0, sizeof(struct addrinfo));
+   hints.ai_family = AF_UNSPEC;
+   hints.ai_socktype = 0;
+   hints.ai_protocol = 0;
+   hints.ai_flags = AI_CANONNAME;
+
+   if ((res = getaddrinfo(my_hostname, NULL, &hints, &ai)) != 0) {
+      Pmsg2(0, _("Fatal getaddrinfo for myself failed \"%s\": ERR=%s\n"),
+            my_hostname, gai_strerror(res));
+      exit(1);
+   }
+   strcpy(my_hostname, ai->ai_canonname);
+   freeaddrinfo(ai);
+#else
    if ((hp = gethostbyname(my_hostname)) == NULL) {
-      Pmsg2(0, _("Fatal gethostbyname for myself failed \"%s\": ERR=%s\n"), my_hostname,
-         strerror(errno));
+      Pmsg2(0, _("Fatal gethostbyname for myself failed \"%s\": ERR=%s\n"),
+            my_hostname, strerror(errno));
       exit(1);
    }
    strcpy(my_hostname, hp->h_name);
+#endif
    Dmsg1(20, "My hostname is: %s\n", my_hostname);
 
    /*
@@ -389,15 +440,15 @@ int main (int argc, char *argv[])
       LPSTR lpszBuffer = (LPSTR)alloca(dwSize);
 
       if (GetUserName(lpszBuffer, &dwSize)) {
-         sprintf(buf, "%s@%s", lpszBuffer, my_hostname);
+         snprintf(buf, sizeof(buf), "%s@%s", lpszBuffer, my_hostname);
       } else {
-         sprintf(buf, "unknown-user@%s", my_hostname);
+         snprintf(buf, sizeof(buf), "unknown-user@%s", my_hostname);
       }
 #else
       if ((pwd = getpwuid(getuid())) == 0) {
-         sprintf(buf, "userid-%d@%s", (int)getuid(), my_hostname);
+         snprintf(buf, sizeof(buf), "userid-%d@%s", (int)getuid(), my_hostname);
       } else {
-         sprintf(buf, "%s@%s", pwd->pw_name, my_hostname);
+         snprintf(buf, sizeof(buf), "%s@%s", pwd->pw_name, my_hostname);
       }
 #endif
       from_addr = bstrdup(buf);
@@ -407,14 +458,72 @@ int main (int argc, char *argv[])
    /*
     *  Connect to smtp daemon on mailhost.
     */
-hp:
+lookup_host:
+#ifdef HAVE_GETADDRINFO
+   memset(&hints, 0, sizeof(struct addrinfo));
+   switch (default_resolv_type) {
+   case RESOLV_PROTO_ANY:
+      hints.ai_family = AF_UNSPEC;
+      break;
+   case RESOLV_PROTO_IPV4:
+      hints.ai_family = AF_INET;
+      break;
+#ifdef HAVE_IPV6
+   case RESOLV_PROTO_IPV6:
+      hints.ai_family = AF_INET6;
+      break;
+#endif
+   default:
+      hints.ai_family = AF_UNSPEC;
+      break;
+   }
+   hints.ai_socktype = SOCK_STREAM;
+   hints.ai_protocol = 0;
+   hints.ai_flags = 0;
+   snprintf(mail_port, sizeof(mail_port), "%d", mailport);
+
+   if ((res = getaddrinfo(mailhost, mail_port, &hints, &ai)) != 0) {
+      Pmsg2(0, _("Error unknown mail host \"%s\": ERR=%s\n"),
+            mailhost, gai_strerror(res));
+      if (strcasecmp(mailhost, "localhost")) {
+         Pmsg0(0, _("Retrying connection using \"localhost\".\n"));
+         mailhost = "localhost";
+         goto lookup_host;
+      }
+      exit(1);
+   }
+
+   for (rp = ai; rp != NULL; rp = rp->ai_next) {
+#if defined(HAVE_WIN32)
+      s = WSASocket(rp->ai_family, rp->ai_socktype, rp->ai_protocol, NULL, 0, 0);
+#else
+      s = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol);
+#endif
+      if (s < 0) {
+         continue;
+      }
+
+      if (connect(s, rp->ai_addr, rp->ai_addrlen) != -1) {
+         break;
+      }
+
+      close(s);
+   }
+
+   if (!rp) {
+      Pmsg1(0, _("Failed to connect to mailhost %s\n"), mailhost);
+      exit(1);
+   }
+
+   freeaddrinfo(ai);
+#else
    if ((hp = gethostbyname(mailhost)) == NULL) {
       Pmsg2(0, _("Error unknown mail host \"%s\": ERR=%s\n"), mailhost,
          strerror(errno));
       if (strcasecmp(mailhost, "localhost") != 0) {
          Pmsg0(0, _("Retrying connection using \"localhost\".\n"));
          mailhost = "localhost";
-         goto hp;
+         goto lookup_host;
       }
       exit(1);
    }
@@ -443,6 +552,7 @@ hp:
       exit(1);
    }
    Dmsg0(20, "Connected\n");
+#endif
 
 #if defined(HAVE_WIN32)
    int fdSocket = _open_osfhandle(s, _O_RDWR | _O_BINARY);
diff --git a/src/tools/timelimit.1 b/src/tools/timelimit.1
new file mode 100644
index 0000000..1d3a7c9
--- /dev/null
+++ b/src/tools/timelimit.1
@@ -0,0 +1,217 @@
+.\" Copyright (c) 2001, 2007 - 2010  Peter Pentchev
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $Ringlet$
+.\"
+.Dd September 29, 2010
+.Dt TIMELIMIT 1
+.Os
+.Sh NAME
+.Nm timelimit
+.Nd effectively limit the absolute execution time of a process
+.Sh SYNOPSIS
+.Nm
+.Op Fl pq
+.Op Fl S Ar killsig
+.Op Fl s Ar warnsig
+.Op Fl T Ar killtime
+.Op Fl t Ar warntime
+.Ar command
+.Op Ar arguments ...
+.Sh DESCRIPTION
+The
+.Nm
+utility executes a given
+.Ar command
+with the supplied
+.Ar arguments
+and terminates the spawned process after a given time with a given signal.
+If the process exits before the time limit has elapsed,
+.Nm
+will silently exit, too.
+.Pp
+Options:
+.Bl -tag -width indent
+.It Fl p
+If the child process is terminated by a signal,
+.Nm
+propagates this condition, i.e. sends the same signal to itself.
+This allows the program executing
+.Nm
+to determine whether the child process was terminated by a signal or
+actually exited with an exit code larger than 128.
+.It Fl q
+Quiet operation -
+.Nm
+does not output diagnostic messages about signals sent to the child process.
+.It Fl S Ar killsig
+Specify the number of the signal to be sent to the process
+.Ar killtime
+seconds after
+.Ar warntime
+has expired.
+Defaults to 9 (SIGKILL).
+.It Fl s Ar warnsig
+Specify the number of the signal to be sent to the process
+.Ar warntime
+seconds after it has been started.
+Defaults to 15 (SIGTERM).
+.It Fl T Ar killtime
+Specify the maximum execution time of the process before sending
+.Ar killsig
+after
+.Ar warnsig
+has been sent.
+Defaults to 120 seconds.
+.It Fl t Ar warntime
+Specify the maximum execution time of the process in seconds before sending
+.Ar warnsig .
+Defaults to 3600 seconds.
+.El
+.Pp
+On systems that support the
+.Xr setitimer 2
+system call, the
+.Ar warntime
+and
+.Ar killtime
+values may be specified in fractional seconds with microsecond precision.
+.Sh ENVIRONMENT
+.Bl -tag -width indent
+.It Ev KILLSIG
+The
+.Ar killsig
+to use if the
+.Fl S
+option was not specified.
+.It Ev KILLTIME
+The
+.Ar killtime
+to use if the
+.Fl T
+option was not specified.
+.It Ev WARNSIG
+The
+.Ar warnsig
+to use if the
+.Fl s
+option was not specified.
+.It Ev WARNTIME
+The
+.Ar warntime
+to use if the
+.Fl t
+option was not specified.
+.El
+.Sh EXIT STATUS
+If the child process exits normally, the
+.Nm
+utility will pass its exit code on up.
+If the child process is terminated by a signal and the
+.Fl p
+flag was not specified, the
+.Nm
+utility's exit status is 128 plus the signal number, similar to
+.Xr sh 1 .
+If the
+.Fl p
+flag was specified, the
+.Nm
+utility will raise the signal itself so that its own parent process
+may in turn reliably distinguish between a signal and a larger than 128
+exit code.
+.Pp
+In rare cases, the
+.Nm
+utility may encounter a system or user error; then, its exit status is one
+of the standard
+.Xr sysexits 3
+values:
+.Bl -tag -width indent
+.It Dv EX_USAGE
+The command-line parameters and options were incorrectly specified.
+.It Dv EX_SOFTWARE
+The
+.Nm
+utility itself received an unexpected signal while waiting for the child
+process to terminate.
+.It Dv EX_OSERR
+The
+.Nm
+utility was unable to execute the child process, wait for it to terminate,
+or examine its exit status.
+.El
+.Sh EXAMPLES
+.Pp
+The following examples are shown as given to the shell:
+.Pp
+.Dl timelimit -p /usr/local/bin/rsync rsync://some.host/dir /opt/mirror
+.Pp
+Run the rsync program to mirror a WWW or FTP site and kill it if it
+runs longer than 1 hour (that is 3600 seconds) with SIGTERM.
+If the rsync process does not exit after receiving the SIGTERM,
+.Nm
+issues a SIGKILL 120 seconds after the SIGTERM.
+If the rsync process is terminated by a signal,
+.Nm
+will itself raise this signal.
+.Pp
+.Dl tcpserver 0 8888 timelimit -t600 -T300 /opt/services/chat/stats
+.Pp
+Start a
+.Xr tcpserver n
+process listening on tcp port 8888; each client connection shall invoke
+an instance of an IRC statistics tool under
+.Pa /opt/services/chat
+and kill it after 600 seconds have elapsed.
+If the stats process is still running after the SIGTERM, it will be
+killed by a SIGKILL sent 300 seconds later.
+.Pp
+.Dl env WARNTIME=4.99 WARNSIG=1 KILLTIME=1.000001 timelimit sh stats.sh
+.Pp
+Start a shell script and kill it with a SIGHUP in a little under 5 seconds.
+If the shell gets stuck and does not respond to the SIGHUP, kill it
+with the default SIGKILL just a bit over a second afterwards.
+.Sh SEE ALSO
+.Xr kill 1 ,
+.Xr rsync 1 ,
+.Xr signal 3 ,
+.Xr tcpserver n
+.Sh STANDARDS
+No standards documentation was harmed in the process of creating
+.Nm .
+.Sh BUGS
+Please report any bugs in
+.Nm
+to the author.
+.Sh AUTHOR
+The
+.Nm
+utility was conceived and written by
+.An Peter Pentchev Aq roam at ringlet.net
+with contributions and suggestions by
+.An Karsten W Rohrbach Aq karsten at rohrbach.de ,
+.An Teddy Hogeborn Aq teddy at fukt.bsnet.se ,
+and
+.An Tomasz Nowak Aq nowak2000 at poczta.onet.pl .
diff --git a/src/tools/timelimit.c b/src/tools/timelimit.c
new file mode 100644
index 0000000..c337a18
--- /dev/null
+++ b/src/tools/timelimit.c
@@ -0,0 +1,537 @@
+/*-
+ * Copyright (c) 2001, 2007 - 2010  Peter Pentchev
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+
+/* we hope all OS's have those..*/
+#include <sys/types.h>
+#include <sys/signal.h>
+#include <sys/time.h>
+#include <sys/wait.h>
+
+#include <signal.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <errno.h>
+
+#ifdef HAVE_ERR
+#include <err.h>
+#endif /* HAVE_ERR */
+
+#ifdef HAVE_SYSEXITS_H
+#include <sysexits.h>
+#else
+#define EX_OK           0       /* successful termination */
+#define EX__BASE        64      /* base value for error messages */
+#define EX_USAGE        64      /* command line usage error */
+#define EX_DATAERR      65      /* data format error */
+#define EX_NOINPUT      66      /* cannot open input */
+#define EX_NOUSER       67      /* addressee unknown */
+#define EX_NOHOST       68      /* host name unknown */
+#define EX_UNAVAILABLE  69      /* service unavailable */
+#define EX_SOFTWARE     70      /* internal software error */
+#define EX_OSERR        71      /* system error (e.g., can't fork) */
+#define EX_OSFILE       72      /* critical OS file missing */
+#define EX_CANTCREAT    73      /* can't create (user) output file */
+#define EX_IOERR        74      /* input/output error */
+#define EX_TEMPFAIL     75      /* temp failure; user is invited to retry */
+#define EX_PROTOCOL     76      /* remote error in protocol */
+#define EX_NOPERM       77      /* permission denied */
+#define EX_CONFIG       78      /* configuration error */
+#define EX__MAX 78      /* maximum listed value */
+#endif /* HAVE_SYSEXITS_H */
+
+#ifndef __unused
+#ifdef __GNUC__
+#define __unused __attribute__((unused))
+#else  /* __GNUC__ */
+#define __unused
+#endif /* __GNUC__ */
+#endif /* __unused */
+
+#ifndef __dead2
+#ifdef __GNUC__
+#define __dead2 __attribute__((noreturn))
+#else  /* __GNUC__ */
+#define __dead2
+#endif /* __GNUC__ */
+#endif /* __dead2 */
+
+#define PARSE_CMDLINE
+
+unsigned long   warntime, warnmsec, killtime, killmsec;
+unsigned long   warnsig, killsig;
+volatile int    fdone, falarm, fsig, sigcaught;
+int             propagate, quiet;
+
+static struct {
+        const char      *name, opt, issig;
+        unsigned long   *sec, *msec;
+} envopts[] = {
+        {"KILLSIG",     'S',    1,      &killsig, NULL},
+        {"KILLTIME",    'T',    0,      &killtime, &killmsec},
+        {"WARNSIG",     's',    1,      &warnsig, NULL},
+        {"WARNTIME",    't',    0,      &warntime, &warnmsec},
+        {NULL,          0,      0,      NULL, NULL}
+};
+
+static struct {
+        const char      *name;
+        int              num;
+} signals[] = {
+        /* We kind of assume that the POSIX-mandated signals are present */
+        {"ABRT",        SIGABRT},
+        {"ALRM",        SIGALRM},
+        {"BUS",         SIGBUS},
+        {"CHLD",        SIGCHLD},
+        {"CONT",        SIGCONT},
+        {"FPE",         SIGFPE},
+        {"HUP",         SIGHUP},
+        {"ILL",         SIGILL},
+        {"INT",         SIGINT},
+        {"KILL",        SIGKILL},
+        {"PIPE",        SIGPIPE},
+        {"QUIT",        SIGQUIT},
+        {"SEGV",        SIGSEGV},
+        {"STOP",        SIGSTOP},
+        {"TERM",        SIGTERM},
+        {"TSTP",        SIGTSTP},
+        {"TTIN",        SIGTTIN},
+        {"TTOU",        SIGTTOU},
+        {"USR1",        SIGUSR1},
+        {"USR2",        SIGUSR2},
+        {"PROF",        SIGPROF},
+        {"SYS",         SIGSYS},
+        {"TRAP",        SIGTRAP},
+        {"URG",         SIGURG},
+        {"VTALRM",      SIGVTALRM},
+        {"XCPU",        SIGXCPU},
+        {"XFSZ",        SIGXFSZ},
+
+        /* Some more signals found on a Linux 2.6 system */
+#ifdef SIGIO
+        {"IO",          SIGIO},
+#endif
+#ifdef SIGIOT
+        {"IOT",         SIGIOT},
+#endif
+#ifdef SIGLOST
+        {"LOST",        SIGLOST},
+#endif
+#ifdef SIGPOLL
+        {"POLL",        SIGPOLL},
+#endif
+#ifdef SIGPWR
+        {"PWR",         SIGPWR},
+#endif
+#ifdef SIGSTKFLT
+        {"STKFLT",      SIGSTKFLT},
+#endif
+#ifdef SIGWINCH
+        {"WINCH",       SIGWINCH},
+#endif
+
+        /* Some more signals found on a FreeBSD 8.x system */
+#ifdef SIGEMT
+        {"EMT",         SIGEMT},
+#endif
+#ifdef SIGINFO
+        {"INFO",        SIGINFO},
+#endif
+#ifdef SIGLWP
+        {"LWP",         SIGLWP},
+#endif
+#ifdef SIGTHR
+        {"THR",         SIGTHR},
+#endif
+};
+#define SIGNALS (sizeof(signals) / sizeof(signals[0]))
+
+#ifndef HAVE_ERR
+static void     err(int, const char *, ...);
+static void     errx(int, const char *, ...);
+#endif /* !HAVE_ERR */
+
+static void     usage(void);
+
+static void     init(int, char *[]);
+static pid_t    doit(char *[]);
+static void     child(char *[]);
+static void     raisesignal(int) __dead2;
+static void     setsig_fatal(int, void (*)(int));
+static void     setsig_fatal_gen(int, void (*)(int), int, const char *);
+static void     terminated(const char *);
+
+#ifndef HAVE_ERR
+static void
+err(int code, const char *fmt, ...) {
+        va_list v;
+
+        va_start(v, fmt);
+        vfprintf(stderr, fmt, v);
+        va_end(v);
+
+        fprintf(stderr, ": %s\n", strerror(errno));
+        exit(code);
+}
+
+static void
+errx(int code, const char *fmt, ...) {
+        va_list v;
+
+        va_start(v, fmt);
+        vfprintf(stderr, fmt, v);
+        va_end(v);
+
+        fprintf(stderr, "\n");
+        exit(code);
+}
+
+static void
+warnx(const char *fmt, ...) {
+        va_list v;
+
+        va_start(v, fmt);
+        vfprintf(stderr, fmt, v);
+        va_end(v);
+
+        fprintf(stderr, "\n");
+}
+#endif /* !HAVE_ERR */
+
+static void
+usage(void) {
+        errx(EX_USAGE, "usage: timelimit [-pq] [-S ksig] [-s wsig] "
+            "[-T ktime] [-t wtime] command");
+}
+
+static void
+atou_fatal(const char *s, unsigned long *sec, unsigned long *msec, int issig) {
+        unsigned long v, vm, mul;
+        const char *p;
+        size_t i;
+
+        if (s[0] < '0' || s[0] > '9') {
+                if (s[0] == '\0' || !issig)
+                        usage();
+                for (i = 0; i < SIGNALS; i++)
+                        if (!strcmp(signals[i].name, s))
+                                break;
+                if (i == SIGNALS)
+                        usage();
+                *sec = (unsigned long)signals[i].num;
+                if (msec != NULL)
+                        *msec = 0;
+                return;
+        }
+
+        v = 0;
+        for (p = s; (*p >= '0') && (*p <= '9'); p++)
+                v = v * 10 + *p - '0';
+        if (*p == '\0') {
+                *sec = v;
+                if (msec != NULL)
+                        *msec = 0;
+                return;
+        } else if (*p != '.' || msec == NULL) {
+                usage();
+        }
+        p++;
+
+        vm = 0;
+        mul = 1000000;
+        for (; (*p >= '0') && (*p <= '9'); p++) {
+                vm = vm * 10 + *p - '0';
+                mul = mul / 10;
+        }
+        if (*p != '\0')
+                usage();
+        else if (mul < 1)
+                errx(EX_USAGE, "no more than microsecond precision");
+#ifndef HAVE_SETITIMER
+        if (msec != 0)
+                errx(EX_UNAVAILABLE,
+                    "subsecond precision not supported on this platform");
+#endif
+        *sec = v;
+        *msec = vm * mul;
+}
+
+static void
+init(int argc, char *argv[]) {
+#ifdef PARSE_CMDLINE
+        int ch, listsigs;
+#endif
+        int optset;
+        unsigned i;
+        char *s;
+        
+        /* defaults */
+        quiet = 0;
+        warnsig = SIGTERM;
+        killsig = SIGKILL;
+        warntime = 900;
+        warnmsec = 0;
+        killtime = 5;
+        killmsec = 0;
+
+        optset = 0;
+        
+        /* process environment variables first */
+        for (i = 0; envopts[i].name != NULL; i++)
+                if ((s = getenv(envopts[i].name)) != NULL) {
+                        atou_fatal(s, envopts[i].sec, envopts[i].msec,
+                            envopts[i].issig);
+                        optset = 1;
+                }
+
+#ifdef PARSE_CMDLINE
+        listsigs = 0;
+        while ((ch = getopt(argc, argv, "+lqpS:s:T:t:")) != -1) {
+                switch (ch) {
+                        case 'l':
+                                listsigs = 1;
+                                break;
+                        case 'p':
+                                propagate = 1;
+                                break;
+                        case 'q':
+                                quiet = 1;
+                                break;
+                        default:
+                                /* check if it's a recognized option */
+                                for (i = 0; envopts[i].name != NULL; i++)
+                                        if (ch == envopts[i].opt) {
+                                                atou_fatal(optarg,
+                                                    envopts[i].sec,
+                                                    envopts[i].msec,
+                                                    envopts[i].issig);
+                                                optset = 1;
+                                                break;
+                                        }
+                                if (envopts[i].name == NULL)
+                                        usage();
+                }
+        }
+
+        if (listsigs) {
+                for (i = 0; i < SIGNALS; i++)
+                        printf("%s%c", signals[i].name,
+                            i + 1 < SIGNALS? ' ': '\n');
+                exit(EX_OK);
+        }
+#else
+        optind = 1;
+#endif
+
+        if (!optset) /* && !quiet? */
+                warnx("using defaults: warntime=%lu, warnsig=%lu, "
+                    "killtime=%lu, killsig=%lu",
+                    warntime, warnsig, killtime, killsig);
+
+        argc -= optind;
+        argv += optind;
+        if (argc == 0)
+                usage();
+
+        /* sanity checks */
+        if ((warntime == 0 && warnmsec == 0) || (killtime == 0 && killmsec == 0))
+                usage();
+}
+
+static void
+sigchld(int sig __unused) {
+
+        fdone = 1;
+}
+
+static void
+sigalrm(int sig __unused) {
+
+        falarm = 1;
+}
+
+static void
+sighandler(int sig) {
+
+        sigcaught = sig;
+        fsig = 1;
+}
+
+static void
+setsig_fatal(int sig, void (*handler)(int)) {
+        
+        setsig_fatal_gen(sig, handler, 1, "setting");
+}
+
+static void
+setsig_fatal_gen(int sig, void (*handler)(int), int nocld, const char *what) {
+#ifdef HAVE_SIGACTION
+        struct sigaction act;
+
+        memset(&act, 0, sizeof(act));
+        act.sa_handler = handler;
+        act.sa_flags = 0;
+#ifdef SA_NOCLDSTOP
+        if (nocld)
+                act.sa_flags |= SA_NOCLDSTOP;
+#endif /* SA_NOCLDSTOP */
+        if (sigaction(sig, &act, NULL) < 0)
+                err(EX_OSERR, "%s signal handler for %d", what, sig);
+#else  /* HAVE_SIGACTION */
+        if (signal(sig, handler) == SIG_ERR)
+                err(EX_OSERR, "%s signal handler for %d", what, sig);
+#endif /* HAVE_SIGACTION */
+}
+
+static void
+settimer(const char *name, unsigned long sec, unsigned long msec)
+{
+#ifdef HAVE_SETITIMER
+        struct itimerval tval;
+
+        tval.it_interval.tv_sec = tval.it_interval.tv_usec = 0;
+        tval.it_value.tv_sec = sec;
+        tval.it_value.tv_usec = msec;
+        if (setitimer(ITIMER_REAL, &tval, NULL) == -1)
+                err(EX_OSERR, "could not set the %s timer", name);
+#else
+        alarm(sec);
+#endif
+}
+    
+static pid_t
+doit(char *argv[]) {
+        pid_t pid;
+
+        /* install signal handlers */
+        fdone = falarm = fsig = sigcaught = 0;
+        setsig_fatal(SIGALRM, sigalrm);
+        setsig_fatal(SIGCHLD, sigchld);
+        setsig_fatal(SIGTERM, sighandler);
+        setsig_fatal(SIGHUP, sighandler);
+        setsig_fatal(SIGINT, sighandler);
+        setsig_fatal(SIGQUIT, sighandler);
+
+        /* fork off the child process */
+        if ((pid = fork()) < 0)
+                err(EX_OSERR, "fork");
+        if (pid == 0)
+                child(argv);
+
+        /* sleep for the allowed time */
+        settimer("warning", warntime, warnmsec);
+        while (!(fdone || falarm || fsig))
+                pause();
+        alarm(0);
+
+        /* send the warning signal */
+        if (fdone)
+                return (pid);
+        if (fsig)
+                terminated("run");
+        falarm = 0;
+        if (!quiet)
+                warnx("sending warning signal %lu", warnsig);
+        kill(pid, (int) warnsig);
+
+#ifndef HAVE_SIGACTION
+        /* reset our signal handlers, just in case */
+        setsig_fatal(SIGALRM, sigalrm);
+        setsig_fatal(SIGCHLD, sigchld);
+        setsig_fatal(SIGTERM, sighandler);
+        setsig_fatal(SIGHUP, sighandler);
+        setsig_fatal(SIGINT, sighandler);
+        setsig_fatal(SIGQUIT, sighandler);
+#endif /* HAVE_SIGACTION */
+
+        /* sleep for the grace time */
+        settimer("kill", killtime, killmsec);
+        while (!(fdone || falarm || fsig))
+                pause();
+        alarm(0);
+
+        /* send the kill signal */
+        if (fdone)
+                return (pid);
+        if (fsig)
+                terminated("grace");
+        if (!quiet)
+                warnx("sending kill signal %lu", killsig);
+        kill(pid, (int) killsig);
+        setsig_fatal_gen(SIGCHLD, SIG_DFL, 0, "restoring");
+        return (pid);
+}
+
+static void
+terminated(const char *period) {
+
+        errx(EX_SOFTWARE, "terminated by signal %d during the %s period",
+            sigcaught, period);
+}
+
+static void
+child(char *argv[]) {
+
+        execvp(argv[0], argv);
+        err(EX_OSERR, "executing %s", argv[0]);
+}
+
+static __dead2 void
+raisesignal (int sig) {
+
+        setsig_fatal_gen(sig, SIG_DFL, 0, "restoring");
+        raise(sig);
+        while (1)
+                pause();
+        /* NOTREACHED */
+}
+
+int
+main(int argc, char *argv[]) {
+        pid_t pid;
+        int status;
+
+        init(argc, argv);
+        argc -= optind;
+        argv += optind;
+        pid = doit(argv);
+
+        if (waitpid(pid, &status, 0) == -1)
+                err(EX_OSERR, "could not get the exit status for process %ld",
+                    (long)pid);
+        if (WIFEXITED(status))
+                return (WEXITSTATUS(status));
+        else if (!WIFSIGNALED(status))
+                return (EX_OSERR);
+        if (propagate)
+                raisesignal(WTERMSIG(status));
+        else
+                return (WTERMSIG(status) + 128);
+}
diff --git a/src/version.h b/src/version.h
index c0aebdc..6f1d7e0 100644
--- a/src/version.h
+++ b/src/version.h
@@ -1,16 +1,16 @@
 
 #undef  VERSION
-#define VERSION "5.2.6"
-#define BDATE   "21 February 2012"
-#define LSMDATE "21Feb12"
+#define VERSION "5.2.13"
+#define BDATE   "19 February 2013"
+#define LSMDATE "19Jan13"
 
 #define PROG_COPYRIGHT "Copyright (C) %d-2012 Free Software Foundation Europe e.V.\n"
-#define BYEAR "2012"       /* year for copyright messages in progs */
+#define BYEAR "2013"       /* year for copyright messages in progs */
 
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2012 Free Software Foundation Europe e.V.
+   Copyright (C) 2000-2013 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -77,7 +77,6 @@
  *   it can always be turned on, but we advise to use it only
  *   for debug
  */
-#if DEVELOPER
 # ifndef _USE_LOCKMGR
 #  define _USE_LOCKMGR
 # endif /* _USE_LOCKMGR */
@@ -98,7 +97,6 @@
  * dozens of thread, so turn this only for debugging.
  */
 /* #define USE_LOCKMGR_SAFEKILL */
-#endif  /* DEVELOPER */
 
 #if !HAVE_LINUX_OS && !HAVE_SUN_OS && !HAVE_DARWIN_OS && !HAVE_FREEBSD_OS
 # undef _USE_LOCKMGR
@@ -146,6 +144,7 @@
 /* #define TRACE_RES 1 */
 /* #define DEBUG_MEMSET 1 */
 /* #define DEBUG_MUTEX 1 */
+/* #define DEBUG_BLOCK_CHECKSUM 1 */
 #define BEEF 0
 
 /*
diff --git a/src/win32/compat/compat.cpp b/src/win32/compat/compat.cpp
index 48446aa..17e279b 100644
--- a/src/win32/compat/compat.cpp
+++ b/src/win32/compat/compat.cpp
@@ -2733,3 +2733,18 @@ void LogErrorMsg(const char *message)
       DeregisterEventSource(eventHandler);
    }
 }
+
+/*
+ * Don't allow OS to suspend while backup running
+ *   Note, the OS automatically tracks these for each thread
+ */
+void prevent_os_suspensions()
+{
+   /* not in mingw */
+//   SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED);
+}
+
+void allow_os_suspensions()
+{
+//   SetThreadExecutionState(ES_CONTINUOUS);
+}
diff --git a/src/win32/compat/mingwconfig.h b/src/win32/compat/mingwconfig.h
index 2d408bf..2b29c64 100644
--- a/src/win32/compat/mingwconfig.h
+++ b/src/win32/compat/mingwconfig.h
@@ -49,13 +49,13 @@
 /* #undef HAVE_SYS_BITYPES_H */
 
 /* Define if you have zlib */
-/*   #define HAVE_LIBZ 1 */
+#define HAVE_LIBZ 1
 
 /* Define if you have lzo lib */
-/*   #define HAVE_LZO 1 */
+/* #define HAVE_LZO 1 */
 
 /* Define to 1 if you have the <lzo/lzoconf.h> header file. */
-/*   #define HAVE_LZO_LZOCONF_H 1 */
+/* #define HAVE_LZO_LZOCONF_H 1  */
 
 
 /* File daemon specif libraries */
diff --git a/src/win32/compat/netinet/tcp.h b/src/win32/compat/netinet/tcp.h
new file mode 100644
index 0000000..e69de29
diff --git a/src/win32/compat/winconfig.h b/src/win32/compat/winconfig.h
deleted file mode 100644
index ff24e81..0000000
--- a/src/win32/compat/winconfig.h
+++ /dev/null
@@ -1,641 +0,0 @@
-/*
- *  This file was originally generated by configure, but has been edited
- *  to provide the correct defines for the Native Win32 build under
- *  Visual Studio.
- *
- *  Note!!! We normally do NOT build the Windows versions with this header
- *    file.  We use the Mingw environment defined in mingwconfig.h.
- */
-/* ------------------------------------------------------------------------- */
-/* --                     CONFIGURE SPECIFIED FEATURES                    -- */
-/* ------------------------------------------------------------------------- */
-
-#ifndef __WINCONFIG_H
-#define __WINCONFIG_H
-
-#define HAVE_OPENSSL 1
-#define HAVE_CRYPTO 1
-#define HAVE_TLS 1
-
-/* Define if you want to use MySQL as Catalog database */
-/* #undef USE_MYSQL_DB */
-
-/* Define if you want SmartAlloc debug code enabled */
-#define SMARTALLOC 1
-
-/* Define to `int' if <sys/types.h> doesn't define.  */
-/* #undef daddr_t */
-
-/* Define to `int' if <sys/types.h> doesn't define.  */
-#define major_t int
-
-/* Define to `int' if <sys/types.h> doesn't define.  */
-#define minor_t int
-
-/* Define to `int' if <sys/types.h> doesn't define.  */
-/* #undef ssize_t */
-
-/* Define if you want to use MySQL */
-/* #define HAVE_MYSQL 1 */
-
-/* Defined if MySQL thread safe library is present */
-/* #undef HAVE_THREAD_SAFE_MYSQL */
-
-/* Define if you want to use embedded MySQL */
-/* #undef HAVE_EMBEDDED_MYSQL */
-
-/* Define if you want to use SQLite3 */
-/* #undef HAVE_SQLITE3 */
-
-/* Define if you want to use Berkeley DB */
-/* #undef HAVE_BERKELEY_DB */
-
-
-/* Define if you want to use PostgreSQL */
-/* #undef HAVE_PGSQL */
-
-/* ------------------------------------------------------------------------- */
-/* --                     CONFIGURE DETECTED FEATURES                     -- */
-/* ------------------------------------------------------------------------- */
-
-/* Define if you need function prototypes */
-#define PROTOTYPES 1
-
-/* Define if you have XPointer typedef */
-/* #undef HAVE_XPOINTER */
-
-/* Define if you have _GNU_SOURCE getpt() */
-/* #undef HAVE_GETPT */
-
-/* Define if you have GCC */
-/* #undef HAVE_GCC 1 */
-
-/* Define if you have the Andrew File System.  */
-/* #undef AFS */
-
-/* Define If you want find -nouser and -nogroup to make tables of
-   used UIDs and GIDs at startup instead of using getpwuid or
-   getgrgid when needed.  Speeds up -nouser and -nogroup unless you
-   are running NIS or Hesiod, which make password and group calls
-   very expensive.  */
-/* #undef CACHE_IDS */
-
-/* Define to use SVR4 statvfs to get filesystem type.  */
-/* #undef FSTYPE_STATVFS */
-
-/* Define to use SVR3.2 statfs to get filesystem type.  */
-/* #undef FSTYPE_USG_STATFS */
-
-/* Define to use AIX3 statfs to get filesystem type.  */
-/* #undef FSTYPE_AIX_STATFS */
-
-/* Define to use 4.3BSD getmntent to get filesystem type.  */
-/* #undef FSTYPE_MNTENT 1 */
-
-/* Define to use 4.4BSD and TRU64 statfs to get filesystem type.  */
-/* #undef FSTYPE_STATFS */
-
-/* Define to use Ultrix getmnt to get filesystem type.  */
-/* #undef FSTYPE_GETMNT */
-
-/* Define to `unsigned long' if <sys/types.h> doesn't define.  */
-/* #undef dev_t */
-
-/* Define to `unsigned long' if <sys/types.h> doesn't define.  */
-/* #undef ino_t */
-
-/* Define to 1 if utime.h exists and declares struct utimbuf.  */
-#ifdef HAVE_MINGW
-#define HAVE_UTIME_H 1
-#endif
-
-/* Data types */
-#define HAVE_U_INT 1
-#define HAVE_INTXX_T 1
-#define HAVE_U_INTXX_T 1
-/* #undef HAVE_UINTXX_T */
-#define HAVE_INT64_T 1
-#define HAVE_U_INT64_T 1
-#define HAVE_INTMAX_T 1
-/* #undef HAVE_U_INTMAX_T */
-
-/* Define if you want TCP Wrappers support */
-/* #undef HAVE_LIBWRAP */
-
-/* Define if you have sys/bitypes.h */
-/* #undef HAVE_SYS_BITYPES_H */
-
-/* Directory for PID files */
-/* #define _PATH_BACULA_PIDDIR "/var/run" */
-#undef _PATH_BACULA_PIDDIR
-
-/* Define if you have zlib */
-#define HAVE_LIBZ 1
-
-/* General libs */
-/* #undef LIBS */
-
-/* File daemon specif libraries */
-#define FDLIBS 1
-
-/* Path to Sendmail program */
-/* #undef SENDMAIL_PATH */
-
-/* What kind of signals we have */
-/*#define HAVE_POSIX_SIGNALS 1 */
-/* #undef HAVE_BSD_SIGNALS */
-/* #undef HAVE_USG_SIGHOLD */
-
-/* Operating systems */
-/* OSes */
-/* #undef HAVE_LINUX_OS */
-/* #undef HAVE_FREEBSD_OS */
-/* #undef HAVE_NETBSD_OS */
-/* #undef HAVE_OPENBSD_OS */
-/* #undef HAVE_BSDI_OS */
-/* #undef HAVE_HPUX_OS */
-/* #undef HAVE_SUN_OS */
-/* #undef HAVE_IRIX_OS */
-/* #undef HAVE_AIX_OS */
-/* #undef HAVE_SGI_OS */
-/* #define HAVE_CYGWIN 1 */
-/* #undef HAVE_OSF1_OS */
-/* #undef HAVE_DARWIN_OS */
-
-/* Set to correct scanf value for long long int */
-#define lld "lld"
-#define llu "llu"
-
-/*#define HAVE_READLINE 1 */
-
-/* #undef HAVE_GMP */
-
-/* #undef HAVE_CWEB */
-
-/* #define HAVE_FCHDIR 1 */
-
-/* #undef HAVE_GETOPT_LONG */
-
-/* #undef HAVE_LIBSM */
-
-/* Check for thread safe routines */
-/*#define HAVE_LOCALTIME_R 1 */
-/* #undef HAVE_READDIR_R */
-/*#define HAVE_STRERROR_R 1*/
-/* #undef HAVE_GETHOSTBYNAME_R */
-
-#define HAVE_STRTOLL 1
-/* #undef HAVE_INET_PTON */
-
-/*#define HAVE_SOCKLEN_T 1 */
-
-/* #undef HAVE_OLD_SOCKOPT */
-
-/* #undef HAVE_BIGENDIAN */
-
-/* Define to 1 if the `closedir' function returns void instead of `int'. */
-/* #undef CLOSEDIR_VOID */
-
-/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
-   systems. This function is required for `alloca.c' support on those systems.
-   */
-/* #undef CRAY_STACKSEG_END */
-
-/* Define to 1 if using `alloca.c'. */
-/* #undef C_ALLOCA */
-
-/* Define to 1 if you have `alloca', as a function or macro. */
-#define HAVE_ALLOCA 1
-#ifndef HAVE_MINGW
-#define alloca _alloca
-#endif
-/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
-   */
-#define HAVE_ALLOCA_H 1
-
-/* Define to 1 if you have the <arpa/nameser.h> header file. */
-/*#define HAVE_ARPA_NAMESER_H 1 */
-
-/* Define to 1 if you have the <assert.h> header file. */
-#define HAVE_ASSERT_H 1
-
-/* Define to 1 if you have the `chflags' function. */
-/* #undef HAVE_CHFLAGS */
-
-/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
-   */
-#define HAVE_DIRENT_H 1
-
-/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
-/* #undef HAVE_DOPRNT */
-
-/* Define to 1 if you have the `fchdir' function. */
-/*#define HAVE_FCHDIR 1 */
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#define HAVE_FCNTL_H 1
-
-/* Define to 1 if your system has a working POSIX `fnmatch' function. */
-/*#define HAVE_FNMATCH 1 */
-
-/* Define to 1 if you have the `fork' function. */
-/*#define HAVE_FORK 1 */
-
-/* Define to 1 if you have the `getcwd' function. */
-#define HAVE_GETCWD 1
-
-/* Define to 1 if you have the `getdomainname' function. */
-/*#define HAVE_GETDOMAINNAME 1 */
-
-/* Define to 1 if you have the `gethostbyname_r' function. */
-/* #undef HAVE_GETHOSTBYNAME_R */
-
-/* Define to 1 if you have the `gethostid' function. */
-#define HAVE_GETHOSTID 1
-
-/* Define to 1 if you have the `gethostname' function. */
-#define HAVE_GETHOSTNAME 1
-
-/* Define to 1 if you have the `getmntent' function. */
-/*#define HAVE_GETMNTENT 1 */
-
-/* Define to 1 if you have the `getpid' function. */
-#define HAVE_GETPID 1
-#define getpid _getpid
-
-/* Define to 1 if you have the `gettimeofday' function. */
-#define HAVE_GETTIMEOFDAY 1
-
-/* Define to 1 if you have the <grp.h> header file. */
-/*#define HAVE_GRP_H 1*/
-
-/* Define to 1 if you have the `inet_pton' function. */
-/* #undef HAVE_INET_PTON */
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#define HAVE_INTTYPES_H 1
-
-/* Define to 1 if you have the `lchown' function. */
-#define HAVE_LCHOWN 1
-
-/* Define to 1 if you have the <libc.h> header file. */
-/* #undef HAVE_LIBC_H */
-
-/* Define to 1 if you have the `inet' library (-linet). */
-/* #undef HAVE_LIBINET */
-
-/* Define to 1 if you have the `nsl' library (-lnsl). */
-/* #undef HAVE_LIBNSL */
-
-/* Define to 1 if you have the `resolv' library (-lresolv). */
-/* #undef HAVE_LIBRESOLV */
-
-/* Define to 1 if you have the `socket' library (-lsocket). */
-/* #undef HAVE_LIBSOCKET */
-
-/* Define to 1 if you have the `sun' library (-lsun). */
-/* #undef HAVE_LIBSUN */
-
-/* Define to 1 if you have the `xnet' library (-lxnet). */
-/* #undef HAVE_LIBXNET */
-
-/* Define to 1 if you have the <limits.h> header file. */
-#define HAVE_LIMITS_H 1
-
-/* Define to 1 if you have the `localtime_r' function. */
-#define HAVE_LOCALTIME_R 1
-
-/* Define to 1 if you have the `lstat' function. */
-#define HAVE_LSTAT 1
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the <mtio.h> header file. */
-/* #undef HAVE_MTIO_H */
-
-/* Define to 1 if you have the `nanosleep' function. */
-#define HAVE_NANOSLEEP 1
-
-/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
-/* #undef HAVE_NDIR_H */
-
-/* Define to 1 if you have the `putenv' function. */
-#define HAVE_PUTENV 1
-
-/* Define to 1 if you have the <pwd.h> header file. */
-/*#define HAVE_PWD_H 1*/
-
-/* Define to 1 if you have the `readdir_r' function. */
-/* #undef HAVE_READDIR_R */
-
-/* Define to 1 if you have the <resolv.h> header file. */
-/*#define HAVE_RESOLV_H 1*/
-
-/* Define to 1 if you have the `select' function. */
-#define HAVE_SELECT 1
-
-/* Define to 1 if you have the `setenv' function. */
-#define HAVE_SETENV 1
-
-/* Define to 1 if you have the `setlocale' function. */
-#undef HAVE_SETLOCALE
-
-/* Define to 1 if translation of program messages to the user's native
-   language is requested. */
-#if (defined _MSC_VER) && (_MSC_VER >= 1400) // VC8+
-/* Enable NLS only if we are using the new VC++.
- * NLS should also work with VC++ 7.1, but the Makefiles are
- * not adapted to support it (include, lib...). */
-//#define ENABLE_NLS 1
-#endif
-
-#undef  LOCALEDIR
-#define LOCALEDIR "."
-
-#undef HAVE_NL_LANGINFO
-
-/* Define to 1 if you have the `setpgid' function. */
-#define HAVE_SETPGID 1
-
-/* Define to 1 if you have the `setpgrp' function. */
-#define HAVE_SETPGRP 1
-
-/* Define to 1 if you have the `setsid' function. */
-#define HAVE_SETSID 1
-
-/* Define to 1 if you have the `signal' function. */
-/*#define HAVE_SIGNAL 1 */
-
-/* Define to 1 if you have the `snprintf' function. */
-#define HAVE_SNPRINTF 1
-#define HAVE_SNPRINTF_DECL 1
-
-/* Define to 1 if you have the <stdarg.h> header file. */
-#define HAVE_STDARG_H 1
-
-/* Define to 1 if you have the <stdint.h> header file. */
-/*#define HAVE_STDINT_H 1 */
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the `strcasecmp' function. */
-/*#define HAVE_STRCASECMP 1*/
-
-/* Define to 1 if you have the `strerror' function. */
-#define HAVE_STRERROR 1
-
-/* Define to 1 if you have the `strerror_r' function. */
-#define HAVE_STRERROR_R 1
-
-/* Define to 1 if you have the `strftime' function. */
-#define HAVE_STRFTIME 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#define HAVE_STRINGS_H 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the `strncmp' function. */
-#define HAVE_STRNCMP 1
-
-/* Define to 1 if you have the `strncpy' function. */
-#define HAVE_STRNCPY 1
-
-/* Define to 1 if you have the `strtoll' function. */
-#define HAVE_STRTOLL 1
-
-/* Define to 1 if `st_blksize' is member of `struct stat'. */
-#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
-
-/* Define to 1 if `st_blocks' is member of `struct stat'. */
-#define HAVE_STRUCT_STAT_ST_BLOCKS 1
-
-/* Define to 1 if `st_rdev' is member of `struct stat'. */
-#define HAVE_STRUCT_STAT_ST_RDEV 1
-
-/* Define to 1 if `tm_zone' is member of `struct tm'. */
-/* #undef HAVE_STRUCT_TM_TM_ZONE */
-
-/* Define to 1 if your `struct stat' has `st_blksize'. Deprecated, use
-   `HAVE_STRUCT_STAT_ST_BLKSIZE' instead. */
-#define HAVE_ST_BLKSIZE 1
-
-/* Define to 1 if your `struct stat' has `st_blocks'. Deprecated, use
-   `HAVE_STRUCT_STAT_ST_BLOCKS' instead. */
-#define HAVE_ST_BLOCKS 1
-
-/* Define to 1 if your `struct stat' has `st_rdev'. Deprecated, use
-   `HAVE_STRUCT_STAT_ST_RDEV' instead. */
-#define HAVE_ST_RDEV 1
-
-/* Define to 1 if you have the <sys/byteorder.h> header file. */
-/* #undef HAVE_SYS_BYTEORDER_H */
-
-/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
-   */
-/* #undef HAVE_SYS_DIR_H */
-
-/* Define to 1 if you have the <sys/ioctl.h> header file. */
-#define HAVE_SYS_IOCTL_H 1
-
-/* Define to 1 if you have the <sys/mtio.h> header file. */
-#define HAVE_SYS_MTIO_H 1
-
-/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
-   */
-/* #undef HAVE_SYS_NDIR_H */
-
-/* Define to 1 if you have the <sys/select.h> header file. */
-#define HAVE_SYS_SELECT_H 1
-
-/* Define to 1 if you have the <sys/socket.h> header file. */
-#define HAVE_SYS_SOCKET_H 1
-
-/* Define to 1 if you have the <sys/sockio.h> header file. */
-/* #undef HAVE_SYS_SOCKIO_H */
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#define HAVE_SYS_TIME_H 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
-#define HAVE_SYS_WAIT_H 1
-
-/* Define to 1 if you have the `tcgetattr' function. */
-#define HAVE_TCGETATTR 1
-
-/* Define to 1 if you have the <termios.h> header file. */
-#define HAVE_TERMIOS_H 1
-
-/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use
-   `HAVE_STRUCT_TM_TM_ZONE' instead. */
-/* #undef HAVE_TM_ZONE */
-
-/* Define to 1 if you don't have `tm_zone' but do have the external array
-   `tzname'. */
-#define HAVE_TZNAME 1
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Define to 1 if you have the <varargs.h> header file. */
-/* #undef HAVE_VARARGS_H */
-
-/* Define to 1 if you have the `vfprintf' function. */
-#define HAVE_VFPRINTF 1
-
-/* Define to 1 if you have the `vprintf' function. */
-#define HAVE_VPRINTF 1
-
-/* Define to 1 if you have the `vsnprintf' function. */
-#define HAVE_VSNPRINTF 1
-#define HAVE_VSNPRINTF_DECL 1
-
-/* Define to 1 if you have the <zlib.h> header file. */
-#define HAVE_ZLIB_H 1
-
-/* Define to 1 if `major', `minor', and `makedev' are declared in <mkdev.h>.
-   */
-/* #undef MAJOR_IN_MKDEV */
-
-/* Define to 1 if `major', `minor', and `makedev' are declared in
-   <sysmacros.h>. */
-/* #undef MAJOR_IN_SYSMACROS */
-
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-/* #undef NO_MINUS_C_MINUS_O */
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT ""
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME ""
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING ""
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME ""
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION ""
-
-/* Define as the return type of signal handlers (`int' or `void'). */
-#define RETSIGTYPE void
-
-/* Define to 1 if the `setpgrp' function takes no argument. */
-#define SETPGRP_VOID 1
-
-/* The size of a `char', as computed by sizeof. */
-#define SIZEOF_CHAR 1
-
-/* The size of a `int', as computed by sizeof. */
-#define SIZEOF_INT 4
-
-/* The size of a `int *', as computed by sizeof. */
-#define SIZEOF_INT_P 4
-
-/* The size of a `long int', as computed by sizeof. */
-#define SIZEOF_LONG 4
-
-/* The size of a `long int', as computed by sizeof. */
-#define SIZEOF_LONG_INT 4
-
-/* The size of a `long long int', as computed by sizeof. */
-#define SIZEOF_LONG_LONG_INT 8
-
-/* The size of a `short int', as computed by sizeof. */
-#define SIZEOF_SHORT_INT 2
-
-/* The size of a `void *', as computed by sizeof. */
-#define SIZEOF_VOID_P 4
-
-/* The size of a `size_t', as computed by sizeof. */
-#define SIZEOF_SIZE_T 4
-
-/* If using the C implementation of alloca, define if you know the
-   direction of stack growth for your system; otherwise it will be
-   automatically deduced at run-time.
-        STACK_DIRECTION > 0 => grows toward higher addresses
-        STACK_DIRECTION < 0 => grows toward lower addresses
-        STACK_DIRECTION = 0 => direction of growth unknown */
-/* #undef STACK_DIRECTION */
-
-/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
-/* #undef STAT_MACROS_BROKEN */
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#define TIME_WITH_SYS_TIME 1
-
-/* Define to 1 if your <sys/time.h> declares `struct tm'. */
-/* #undef TM_IN_SYS_TIME */
-
-/* Define to 1 if the X Window System is missing or not being used. */
-/* #undef X_DISPLAY_MISSING */
-
-/* Define to empty if `const' does not conform to ANSI C. */
-/* #undef const */
-
-/* Define to `long' if <sys/types.h> does not define. */
-/* #undef daddr_t */
-
-/* Define to `unsigned long' if <sys/types.h> does not define. */
-/* #undef dev_t */
-
-/* Define to `int' if <sys/types.h> doesn't define. */
-/* #undef gid_t */
-
-/* Define to `unsigned long' if <sys/types.h> does not define. */
-/* #undef ino_t */
-
-/* Define to `int' if <sys/types.h> does not define. */
-#define major_t int
-
-/* Define to `int' if <sys/types.h> does not define. */
-#define minor_t int
-
-/* Define to `int' if <sys/types.h> does not define. */
-/* #undef mode_t */
-
-/* Define to `long' if <sys/types.h> does not define. */
-/* #undef off_t */
-
-/* Define to `int' if <sys/types.h> does not define. */
-/* #undef pid_t */
-
-/* Define to `unsigned' if <sys/types.h> does not define. */
-/* #undef size_t */
-
-/* Define to `int' if <sys/types.h> does not define. */
-/* #undef ssize_t */
-
-/* Define to `int' if <sys/types.h> doesn't define. */
-/* #undef uid_t */
-
-/* Use long unsigned int for ioctl request */
-#define HAVE_IOCTL_ULINT_REQUEST
-
-/* Little Endian */
-#define HAVE_LITTLE_ENDIAN 1
-
-/* Number of bits in a file offset, on hosts where this is settable. */
-#define _FILE_OFFSET_BITS 64
-
-/* Define to make fseeko etc. visible, on some hosts. */
-#define _LARGEFILE_SOURCE 1
-
-/* Define for large files, on AIX-style hosts. */
-#define _LARGE_FILES 1
-
-#endif /* __WINCONFIG_H */
diff --git a/src/win32/filed/plugins/exchange-fd.c b/src/win32/filed/plugins/exchange-fd.c
index f5f80b4..dcc7044 100644
--- a/src/win32/filed/plugins/exchange-fd.c
+++ b/src/win32/filed/plugins/exchange-fd.c
@@ -272,17 +272,13 @@ static bRC handlePluginEvent(bpContext *ctx, bEvent *event, void *value)
       }
       break;
    case bEventLevel:
-      if (!context->plugin_active) {
-         break;
-      }
+      /* We don't know if the plugin is active here yet */
       intval = (intptr_t)value;
       _DebugMessage(100, "JobLevel=%c %d\n", intval, intval);
       context->job_level = intval;
       break;
    case bEventSince:
-      if (!context->plugin_active) {
-         break;
-      }
+      /* We don't know if the plugin is active here yet */
       intval = (intptr_t)value;
       _DebugMessage(100, "since=%d\n", intval);
       context->job_since = (time_t)value;
diff --git a/src/win32/filed/vss.cpp b/src/win32/filed/vss.cpp
index 376a8eb..a923fb8 100644
--- a/src/win32/filed/vss.cpp
+++ b/src/win32/filed/vss.cpp
@@ -50,7 +50,6 @@ VSSClient *g_pVSSClient;
 static const GUID VSS_SWPRV_ProviderID =
    { 0xb5946137, 0x7b9f, 0x4925, { 0xaf, 0x80, 0x51, 0xab, 0xd6, 0x0b, 0x20, 0xd5 } };
 
-
 void 
 VSSCleanup()
 {
@@ -102,17 +101,10 @@ VSSPathConvertW(const wchar_t *szFilePath, wchar_t *szShadowPath, int nBuflen)
 // Constructor
 VSSClient::VSSClient()
 {
-    m_bCoInitializeCalled = false;
-    m_bCoInitializeSecurityCalled = false;
-    m_dwContext = 0; // VSS_CTX_BACKUP;
-    m_bDuringRestore = false;
-    m_bBackupIsInitialized = false;
-    m_pVssObject = NULL;
+    memset(this, 0, sizeof(VSSClient));
     m_pAlistWriterState = New(alist(10, not_owned_by_alist));
     m_pAlistWriterInfoText = New(alist(10, owned_by_alist));
     m_uidCurrentSnapshotSet = GUID_NULL;
-    memset(m_wszUniqueVolumeName, 0, sizeof(m_wszUniqueVolumeName));
-    memset(m_szShadowCopyName, 0, sizeof(m_szShadowCopyName));
 }
 
 // Destructor
@@ -121,7 +113,7 @@ VSSClient::~VSSClient()
    // Release the IVssBackupComponents interface 
    // WARNING: this must be done BEFORE calling CoUninitialize()
    if (m_pVssObject) {
-      m_pVssObject->Release();
+//      m_pVssObject->Release();
       m_pVssObject = NULL;
    }
 
@@ -130,8 +122,9 @@ VSSClient::~VSSClient()
    delete m_pAlistWriterInfoText;
 
    // Call CoUninitialize if the CoInitialize was performed successfully
-   if (m_bCoInitializeCalled)
+   if (m_bCoInitializeCalled) {
       CoUninitialize();
+   }
 }
 
 bool VSSClient::InitializeForBackup(JCR *jcr)
@@ -142,11 +135,11 @@ bool VSSClient::InitializeForBackup(JCR *jcr)
 }
 
 
-bool VSSClient::InitializeForRestore(JCR *jcr, bool (*VssInitCallback)(JCR *, int), WCHAR *job_metadata)
+bool VSSClient::InitializeForRestore(JCR *jcr)
 {
-   m_metadata = job_metadata;
+   m_metadata = NULL;
    m_jcr = jcr;
-   return Initialize(0, true/*=>Restore*/, VssInitCallback);
+   return Initialize(0, true/*=>Restore*/);
 }
 
 bool VSSClient::GetShadowPath(const char *szFilePath, char *szShadowPath, int nBuflen)
diff --git a/src/win32/filed/vss.h b/src/win32/filed/vss.h
index 4268bf1..6416086 100644
--- a/src/win32/filed/vss.h
+++ b/src/win32/filed/vss.h
@@ -60,7 +60,7 @@ public:
 
     // Backup Process
     bool InitializeForBackup(JCR *jcr);
-    bool InitializeForRestore(JCR *jcr, bool (*VssInitCallback)(JCR *, int) = NULL, WCHAR *job_metadata = NULL);
+    bool InitializeForRestore(JCR *jcr);
     virtual bool CreateSnapshots(char* szDriveLetters) = 0;
     virtual bool CloseBackup() = 0;
     virtual bool CloseRestore() = 0;
@@ -79,7 +79,7 @@ public:
     IUnknown *GetVssObject() { return m_pVssObject; };
          
 private:
-    virtual bool Initialize(DWORD dwContext, bool bDuringRestore = FALSE, bool (*VssInitCallback)(JCR *, int) = NULL) = 0;
+    virtual bool Initialize(DWORD dwContext, bool bDuringRestore = FALSE) = 0;
     virtual bool WaitAndCheckForAsyncOperation(IVssAsync*  pAsync) = 0;
     virtual void QuerySnapshotSet(GUID snapshotSetID) = 0;
 
@@ -103,6 +103,7 @@ protected:
     bool       m_bCoInitializeSecurityCalled;
     bool       m_bDuringRestore;  /* true if we are doing a restore */
     bool       m_bBackupIsInitialized;
+    bool       m_bWriterStatusCurrent;
 
     WCHAR     *m_metadata;
 };
@@ -122,7 +123,7 @@ public:
    virtual const char* GetDriverName() { return "Win32 VSS"; };
 #endif
 private:
-   virtual bool Initialize(DWORD dwContext, bool bDuringRestore, bool (*VssInitCallback)(JCR *, int) = NULL);
+   virtual bool Initialize(DWORD dwContext, bool bDuringRestore);
    virtual bool WaitAndCheckForAsyncOperation(IVssAsync* pAsync);
    virtual void QuerySnapshotSet(GUID snapshotSetID);
    bool CheckWriterStatus();   
@@ -143,7 +144,7 @@ public:
    virtual const char* GetDriverName() { return "Win32 VSS"; };
 #endif
 private:
-   virtual bool Initialize(DWORD dwContext, bool bDuringRestore, bool (*VssInitCallback)(JCR *, int) = NULL);
+   virtual bool Initialize(DWORD dwContext, bool bDuringRestore);
    virtual bool WaitAndCheckForAsyncOperation(IVssAsync*  pAsync);
    virtual void QuerySnapshotSet(GUID snapshotSetID);
    bool CheckWriterStatus();
@@ -164,7 +165,7 @@ public:
    virtual const char* GetDriverName() { return "Win32 VSS"; };
 #endif
 private:
-   virtual bool Initialize(DWORD dwContext, bool bDuringRestore, bool (*VssInitCallback)(JCR *, int) = NULL);
+   virtual bool Initialize(DWORD dwContext, bool bDuringRestore);
    virtual bool WaitAndCheckForAsyncOperation(IVssAsync*  pAsync);
    virtual void QuerySnapshotSet(GUID snapshotSetID);
    bool CheckWriterStatus();
diff --git a/src/win32/filed/vss_generic.cpp b/src/win32/filed/vss_generic.cpp
index 69f9d72..d3fca1f 100644
--- a/src/win32/filed/vss_generic.cpp
+++ b/src/win32/filed/vss_generic.cpp
@@ -87,7 +87,6 @@ class IXMLDOMDocument;
 
 #ifdef B_VSS_XP
    #define VSSClientGeneric VSSClientXP
-   
    #include "inc/WinXP/vss.h"
    #include "inc/WinXP/vswriter.h"
    #include "inc/WinXP/vsbackup.h"
@@ -96,7 +95,6 @@ class IXMLDOMDocument;
 
 #ifdef B_VSS_W2K3
    #define VSSClientGeneric VSSClient2003
-   
    #include "inc/Win2003/vss.h"
    #include "inc/Win2003/vswriter.h"
    #include "inc/Win2003/vsbackup.h"
@@ -104,7 +102,6 @@ class IXMLDOMDocument;
 
 #ifdef B_VSS_VISTA
    #define VSSClientGeneric VSSClientVista
-
    #include "inc/Win2003/vss.h"
    #include "inc/Win2003/vswriter.h"
    #include "inc/Win2003/vsbackup.h"
@@ -117,9 +114,122 @@ typedef void (APIENTRY* t_VssFreeSnapshotProperties)(IN VSS_SNAPSHOT_PROP*);
 static t_CreateVssBackupComponents p_CreateVssBackupComponents = NULL;
 static t_VssFreeSnapshotProperties p_VssFreeSnapshotProperties = NULL;
 
+#include "vss.h"
+
+static void JmsgVssApiStatus(JCR *jcr, int msg_status, HRESULT hr, const char *apiName)
+{
+   const char *errmsg;
+   if (hr == S_OK || hr == VSS_S_ASYNC_FINISHED) {
+      return;
+   }
+   switch (hr) {
+   case E_INVALIDARG:
+      errmsg = "One of the parameter values is not valid.";
+      break;
+   case E_OUTOFMEMORY:
+      errmsg = "The caller is out of memory or other system resources.";
+      break;
+   case E_ACCESSDENIED:
+      errmsg = "The caller does not have sufficient backup privileges or is not an administrator.";
+      break;
+   case VSS_E_INVALID_XML_DOCUMENT:
+      errmsg = "The XML document is not valid.";
+      break;
+   case VSS_E_OBJECT_NOT_FOUND:
+      errmsg = "The specified file does not exist.";
+      break;
+   case VSS_E_BAD_STATE:
+      errmsg = "Object is not initialized; called during restore or not called in correct sequence.";
+      break;
+   case VSS_E_WRITER_INFRASTRUCTURE:
+      errmsg = "The writer infrastructure is not operating properly. Check that the Event Service and VSS have been started, and check for errors associated with those services in the error log.";
+      break;
+   case VSS_S_ASYNC_CANCELLED:
+      errmsg = "The asynchronous operation was canceled by a previous call to IVssAsync::Cancel.";
+      break;
+   case VSS_S_ASYNC_PENDING:
+      errmsg = "The asynchronous operation is still running.";
+      break;
+   case RPC_E_CHANGED_MODE:
+      errmsg = "Previous call to CoInitializeEx specified the multithread apartment (MTA). This call indicates single-threaded apartment has occurred.";
+      break;
+   case S_FALSE:
+      errmsg = "No writer found for the current component.";
+      break;
+   default:
+      errmsg = "Unexpected error. The error code is logged in the error log file.";
+      break;
+   }
+   Jmsg(jcr, msg_status, 0, "VSS API failure calling \"%s\". ERR=%s\n", apiName, errmsg);
+}
+
+#ifndef VSS_WS_FAILED_AT_BACKUPSHUTDOWN
+#define VSS_WS_FAILED_AT_BACKUPSHUTDOWN (VSS_WRITER_STATE)15
+#endif
 
 
-#include "vss.h"
+static void JmsgVssWriterStatus(JCR *jcr, int msg_status, VSS_WRITER_STATE eWriterStatus, char *writer_name)
+{
+   const char *errmsg;
+   
+   /* The following are normal states */
+   if (eWriterStatus == VSS_WS_STABLE ||
+       eWriterStatus == VSS_WS_WAITING_FOR_BACKUP_COMPLETE) {
+      return;
+   }
+
+   /* Potential errors */
+   switch (eWriterStatus) {
+   default:
+   case VSS_WS_UNKNOWN:
+      errmsg = "The writer's state is not known. This is a writer error.";
+      break;
+   case VSS_WS_WAITING_FOR_FREEZE:
+      errmsg = "The writer is waiting for the freeze state.";
+      break;
+   case VSS_WS_WAITING_FOR_THAW:
+      errmsg = "The writer is waiting for the thaw state.";
+      break;
+   case VSS_WS_WAITING_FOR_POST_SNAPSHOT:
+      errmsg = "The writer is waiting for the PostSnapshot state.";
+      break;
+   case VSS_WS_WAITING_FOR_BACKUP_COMPLETE:
+      errmsg = "The writer is waiting for the requester to finish its backup operation.";
+      break;
+   case VSS_WS_FAILED_AT_IDENTIFY:
+      errmsg = "The writer vetoed the shadow copy creation process at the writer identification state.";
+      break;
+   case VSS_WS_FAILED_AT_PREPARE_BACKUP:
+      errmsg = "The writer vetoed the shadow copy creation process during the backup preparation state.";
+      break;
+   case VSS_WS_FAILED_AT_PREPARE_SNAPSHOT:
+      errmsg = "The writer vetoed the shadow copy creation process during the PrepareForSnapshot state.";
+      break;
+   case VSS_WS_FAILED_AT_FREEZE:
+      errmsg = "The writer vetoed the shadow copy creation process during the freeze state.";
+      break;
+   case VSS_WS_FAILED_AT_THAW:
+      errmsg = "The writer vetoed the shadow copy creation process during the thaw state.";
+      break;
+   case VSS_WS_FAILED_AT_POST_SNAPSHOT:
+      errmsg = "The writer vetoed the shadow copy creation process during the PostSnapshot state.";
+      break;
+   case VSS_WS_FAILED_AT_BACKUP_COMPLETE:
+      errmsg = "The shadow copy has been created and the writer failed during the BackupComplete state.";
+      break;
+   case VSS_WS_FAILED_AT_PRE_RESTORE:
+      errmsg = "The writer failed during the PreRestore state.";
+      break;
+   case VSS_WS_FAILED_AT_POST_RESTORE:
+      errmsg = "The writer failed during the PostRestore state.";
+      break;
+   case VSS_WS_FAILED_AT_BACKUPSHUTDOWN:
+      errmsg = "The writer failed during the shutdown of the backup application.";
+      
+   }
+   Jmsg(jcr, msg_status, 0, "VSS Writer \"%s\" has invalid state. ERR=%s\n", writer_name, errmsg);
+}
+
 
 /*  
  *
@@ -131,10 +241,12 @@ static t_VssFreeSnapshotProperties p_VssFreeSnapshotProperties = NULL;
 // Append a backslash to the current string 
 inline wstring AppendBackslash(wstring str)
 {
-    if (str.length() == 0)
+    if (str.length() == 0) {
         return wstring(L"\\");
-    if (str[str.length() - 1] == L'\\')
+    }
+    if (str[str.length() - 1] == L'\\') {
         return str;
+    }
     return str.append(L"\\");
 }
 
@@ -153,16 +265,19 @@ inline wstring GetUniqueVolumeNameForPath(wstring path)
     wchar_t volumeName[MAX_PATH];
     wchar_t volumeUniqueName[MAX_PATH];
 
-    if (!p_GetVolumePathNameW || !p_GetVolumePathNameW((LPCWSTR)path.c_str(), volumeRootPath, MAX_PATH))
-      return L"";
+    if (!p_GetVolumePathNameW || !p_GetVolumePathNameW((LPCWSTR)path.c_str(), volumeRootPath, MAX_PATH)) {
+       return L"";
+    }
     
     // Get the volume name alias (might be different from the unique volume name in rare cases)
-    if (!p_GetVolumeNameForVolumeMountPointW || !p_GetVolumeNameForVolumeMountPointW(volumeRootPath, volumeName, MAX_PATH))
+    if (!p_GetVolumeNameForVolumeMountPointW || !p_GetVolumeNameForVolumeMountPointW(volumeRootPath, volumeName, MAX_PATH)) {
        return L"";
+    }
     
     // Get the unique volume name    
-    if (!p_GetVolumeNameForVolumeMountPointW(volumeName, volumeUniqueName, MAX_PATH))
+    if (!p_GetVolumeNameForVolumeMountPointW(volumeName, volumeUniqueName, MAX_PATH)) {
        return L"";
+    }
     
     return volumeUniqueName;
 }
@@ -194,7 +309,6 @@ inline const wchar_t* GetStringFromWriterStatus(VSS_WRITER_STATE eWriterStatus)
     CHECK_CASE_FOR_CONSTANT(VSS_WS_FAILED_AT_BACKUP_COMPLETE);
     CHECK_CASE_FOR_CONSTANT(VSS_WS_FAILED_AT_PRE_RESTORE);
     CHECK_CASE_FOR_CONSTANT(VSS_WS_FAILED_AT_POST_RESTORE);
-    
     default:
         return L"Error or Undefined";
     }
@@ -226,19 +340,21 @@ VSSClientGeneric::VSSClientGeneric()
 // Destructor
 VSSClientGeneric::~VSSClientGeneric()
 {
-   if (m_hLib)
+   if (m_hLib) {
       FreeLibrary(m_hLib);
+   }
 }
 
 // Initialize the COM infrastructure and the internal pointers
-bool VSSClientGeneric::Initialize(DWORD dwContext, bool bDuringRestore, bool (*VssInitCallback)(JCR *, int))
+bool VSSClientGeneric::Initialize(DWORD dwContext, bool bDuringRestore)
 {
    CComPtr<IVssAsync>  pAsync1;
    VSS_BACKUP_TYPE backup_type;
+   IVssBackupComponents* pVssObj = (IVssBackupComponents*)m_pVssObject;
 
    if (!(p_CreateVssBackupComponents && p_VssFreeSnapshotProperties)) {
-      Dmsg2(0, "VSSClientGeneric::Initialize: p_CreateVssBackupComponents = 0x%08X, p_VssFreeSnapshotProperties = 0x%08X\n", p_CreateVssBackupComponents, p_VssFreeSnapshotProperties);
-      errno = ENOSYS;
+      Dmsg2(0, "VSSClientGeneric::Initialize: p_CreateVssBackupComponents=0x%08X, p_VssFreeSnapshotProperties=0x%08X\n", p_CreateVssBackupComponents, p_VssFreeSnapshotProperties);
+      Jmsg(m_jcr, M_FATAL, 0, "Entry point CreateVssBackupComponents or VssFreeSnapshotProperties missing.\n");
       return false;
    }
 
@@ -248,6 +364,7 @@ bool VSSClientGeneric::Initialize(DWORD dwContext, bool bDuringRestore, bool (*V
       hr = CoInitialize(NULL);
       if (FAILED(hr)) {
          Dmsg1(0, "VSSClientGeneric::Initialize: CoInitialize returned 0x%08X\n", hr);
+         JmsgVssApiStatus(m_jcr, M_FATAL, hr, "CoInitialize");
          errno = b_errno_win32;
          return false;
       }
@@ -271,51 +388,58 @@ bool VSSClientGeneric::Initialize(DWORD dwContext, bool bDuringRestore, bool (*V
 
       if (FAILED(hr)) {
          Dmsg1(0, "VSSClientGeneric::Initialize: CoInitializeSecurity returned 0x%08X\n", hr);
+         JmsgVssApiStatus(m_jcr, M_FATAL, hr, "CoInitializeSecurity");
          errno = b_errno_win32;
          return false;
       }
       m_bCoInitializeSecurityCalled = true;
    }
 
-   // Release the IVssBackupComponents interface 
-   if (m_pVssObject) {
-      m_pVssObject->Release();
+   // Release the any old IVssBackupComponents interface 
+   if (pVssObj) {
+      pVssObj->Release();
       m_pVssObject = NULL;
    }
 
-   // Create the internal backup components object
-   hr = p_CreateVssBackupComponents((IVssBackupComponents**) &m_pVssObject);
+   // Create new internal backup components object
+   hr = p_CreateVssBackupComponents((IVssBackupComponents**)&m_pVssObject);
    if (FAILED(hr)) {
       berrno be;
       Dmsg2(0, "VSSClientGeneric::Initialize: CreateVssBackupComponents returned 0x%08X. ERR=%s\n",
             hr, be.bstrerror(b_errno_win32));
+      JmsgVssApiStatus(m_jcr, M_FATAL, hr, "CreateVssBackupComponents");
       errno = b_errno_win32;
       return false;
    }
 
+   /* Define shorthand VssObject with time */
+   pVssObj = (IVssBackupComponents*)m_pVssObject;
+
+
+   if (!bDuringRestore) {
 #if   defined(B_VSS_W2K3) || defined(B_VSS_VISTA)
-   if (dwContext != VSS_CTX_BACKUP) {
-      hr = ((IVssBackupComponents*) m_pVssObject)->SetContext(dwContext);
-      if (FAILED(hr)) {
-         Dmsg1(0, "VSSClientGeneric::Initialize: IVssBackupComponents->SetContext returned 0x%08X\n", hr);
-         errno = b_errno_win32;
-         return false;
+      if (dwContext != VSS_CTX_BACKUP) {
+         hr = pVssObj->SetContext(dwContext);
+         if (FAILED(hr)) {
+            Dmsg1(0, "VSSClientGeneric::Initialize: IVssBackupComponents->SetContext returned 0x%08X\n", hr);
+            JmsgVssApiStatus(m_jcr, M_FATAL, hr, "SetContext");
+            errno = b_errno_win32;
+            return false;
+         }
       }
-   }
 #endif
 
-   if (!bDuringRestore) {
       // 1. InitializeForBackup
-      hr = ((IVssBackupComponents*) m_pVssObject)->InitializeForBackup();
+      hr = pVssObj->InitializeForBackup();
       if (FAILED(hr)) {
          Dmsg1(0, "VSSClientGeneric::Initialize: IVssBackupComponents->InitializeForBackup returned 0x%08X\n", hr);
+         JmsgVssApiStatus(m_jcr, M_FATAL, hr, "InitializeForBackup");
          errno = b_errno_win32; 
          return false;
       }
  
       // 2. SetBackupState
-      switch (m_jcr->getJobLevel())
-      {
+      switch (m_jcr->getJobLevel()) {
       case L_FULL:
          backup_type = VSS_BT_FULL;
          break;
@@ -330,75 +454,25 @@ bool VSSClientGeneric::Initialize(DWORD dwContext, bool bDuringRestore, bool (*V
          backup_type = VSS_BT_FULL;
          break;
       }
-      hr = ((IVssBackupComponents*) m_pVssObject)->SetBackupState(true, true, backup_type, false);
+      hr = pVssObj->SetBackupState(true, true, backup_type, false); /* FIXME: need to support partial files - make last parameter true when done */
       if (FAILED(hr)) {
          Dmsg1(0, "VSSClientGeneric::Initialize: IVssBackupComponents->SetBackupState returned 0x%08X\n", hr);
+         JmsgVssApiStatus(m_jcr, M_FATAL, hr, "SetBackupState");
          errno = b_errno_win32;
          return false;
       }
 
       // 3. GatherWriterMetaData
-      hr = ((IVssBackupComponents*) m_pVssObject)->GatherWriterMetadata(&pAsync1.p);
+      hr = pVssObj->GatherWriterMetadata(&pAsync1.p);
       if (FAILED(hr)) {
          Dmsg1(0, "VSSClientGeneric::Initialize: IVssBackupComponents->GatherWriterMetadata returned 0x%08X\n", hr);
+         JmsgVssApiStatus(m_jcr, M_FATAL, hr, "GatherWriterMetadata");
          errno = b_errno_win32;
          return false;
       }
       // Waits for the async operation to finish and checks the result
-      WaitAndCheckForAsyncOperation(pAsync1.p);
-   } else {
- 
-   /*
-    * Initialize for restore
-    */
-
-      HRESULT hr;
-
-#if 0
-      WCHAR *xml;
-      int fd;
-      struct stat stat;
-      /* obviously this is just temporary - the xml should come from somewhere like the catalog */
-      fd = open("C:\\james.xml", O_RDONLY);
-      Dmsg1(0, "fd = %d\n", fd);
-      fstat(fd, &stat);
-      Dmsg1(0, "size = %d\n", stat.st_size);
-      xml = new WCHAR[stat.st_size / sizeof(WCHAR) + 1];
-      read(fd, xml, stat.st_size);
-      close(fd);
-      xml[stat.st_size / sizeof(WCHAR)] = 0;
-#endif
-
-      // 1. InitializeForRestore
-      hr = ((IVssBackupComponents*) m_pVssObject)->InitializeForRestore(m_metadata);
-      if (FAILED(hr)) {
-         Dmsg1(0, "VSSClientGeneric::Initialize: IVssBackupComponents->InitializeForRestore returned 0x%08X\n", hr);
-         errno = b_errno_win32;
-         return false;
-      }
-      VssInitCallback(m_jcr, VSS_INIT_RESTORE_AFTER_INIT);
-
-      // 2. GatherWriterMetaData
-      hr = ((IVssBackupComponents*) m_pVssObject)->GatherWriterMetadata(&pAsync1.p);
-      if (FAILED(hr)) {
-         Dmsg1(0, "VSSClientGeneric::Initialize: IVssBackupComponents->GatherWriterMetadata returned 0x%08X\n", hr);
-         errno = b_errno_win32;
-         return false;
-      }
-      WaitAndCheckForAsyncOperation(pAsync1.p);
-      VssInitCallback(m_jcr, VSS_INIT_RESTORE_AFTER_GATHER);
-
-      // 3. PreRestore
-      hr = ((IVssBackupComponents*) m_pVssObject)->PreRestore(&pAsync1.p);
-      if (FAILED(hr)) {
-         Dmsg1(0, "VSSClientGeneric::Initialize: IVssBackupComponents->PreRestore returned 0x%08X\n", hr);
-         errno = b_errno_win32;
-         return false;
-      }
-      WaitAndCheckForAsyncOperation(pAsync1.p);
-      /* get latest info about writer status */
-      if (!CheckWriterStatus()) {
-         Dmsg0(0, "VSSClientGeneric::InitializePostPlugin: Failed to CheckWriterstatus\n");
+      if (!WaitAndCheckForAsyncOperation(pAsync1.p)) {
+         /* Error message already printed */
          errno = b_errno_win32;
          return false;
       }
@@ -429,59 +503,50 @@ bool VSSClientGeneric::WaitAndCheckForAsyncOperation(IVssAsync* pAsync)
 
    int queryErrors = 0;
    do {
-      if (hrReturned != S_OK) 
+      if (hrReturned != S_OK) {
          Sleep(1000);
-   
+      }
       hrReturned = S_OK;
       hr = pAsync->QueryStatus(&hrReturned, NULL);
-   
-      if (FAILED(hr)) 
+      if (FAILED(hr)) { 
          queryErrors++;
+      }
    } while ((timeout-- > 0) && (hrReturned == VSS_S_ASYNC_PENDING));
 
-   if (hrReturned == VSS_S_ASYNC_FINISHED)
+   if (hrReturned == VSS_S_ASYNC_FINISHED) {
       return true;
-
-   
-#ifdef xDEBUG 
-   // Check if the async operation succeeded...
-   if(hrReturned != VSS_S_ASYNC_FINISHED) {   
-      wchar_t *pwszBuffer = NULL;
-      /* I don't see the usefulness of the following -- KES */
-      FormatMessageW(
-         FORMAT_MESSAGE_ALLOCATE_BUFFER 
-         | FORMAT_MESSAGE_FROM_SYSTEM 
-         | FORMAT_MESSAGE_IGNORE_INSERTS,
-         NULL, hrReturned, 
-         MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), 
-         (LPWSTR)&pwszBuffer, 0, NULL);
-
-      LocalFree(pwszBuffer);         
-      errno = b_errno_win32;
    }
-#endif
-
+   
+   JmsgVssApiStatus(m_jcr, M_FATAL, hr, "Query Async Status after 10 minute wait");
    return false;
 }
 
 bool VSSClientGeneric::CreateSnapshots(char* szDriveLetters)
 {
+   IVssBackupComponents *pVssObj;
+   HRESULT hr;
+
    /* szDriveLetters contains all drive letters in uppercase */
    /* if a drive can not being added, it's converted to lowercase in szDriveLetters */
    /* http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vss/base/ivssbackupcomponents_startsnapshotset.asp */
-   
    if (!m_pVssObject || m_bBackupIsInitialized) {
+      Jmsg(m_jcr, M_FATAL, 0, "No pointer to VssObject or Backup is not Initialized\n");
       errno = ENOSYS;
       return false;  
    }
 
    m_uidCurrentSnapshotSet = GUID_NULL;
 
-   IVssBackupComponents *pVss = (IVssBackupComponents*)m_pVssObject;
+   pVssObj = (IVssBackupComponents*)m_pVssObject;
 
    /* startSnapshotSet */
-
-   pVss->StartSnapshotSet(&m_uidCurrentSnapshotSet);
+   hr = pVssObj->StartSnapshotSet(&m_uidCurrentSnapshotSet);
+   if (FAILED(hr)) {
+      JmsgVssApiStatus(m_jcr, M_FATAL, hr, "StartSnapshotSet");
+      errno = ENOSYS;
+      return false;
+   }
+      
 
    /* AddToSnapshotSet */
 
@@ -499,37 +564,53 @@ bool VSSClientGeneric::CreateSnapshots(char* szDriveLetters)
       szDrive[0] = szDriveLetters[i];
       volume = GetUniqueVolumeNameForPath(szDrive);
       // store uniquevolumname
-      if (SUCCEEDED(pVss->AddToSnapshotSet((LPWSTR)volume.c_str(), GUID_NULL, &pid))) {
+      if (SUCCEEDED(pVssObj->AddToSnapshotSet((LPWSTR)volume.c_str(), GUID_NULL, &pid))) {
          wcsncpy (m_wszUniqueVolumeName[szDriveLetters[i]-'A'], (LPWSTR) volume.c_str(), MAX_PATH);
       } else {            
-         szDriveLetters[i] = tolower (szDriveLetters[i]);               
+         szDriveLetters[i] = tolower(szDriveLetters[i]);               
       }
    }
 
    /* PrepareForBackup */
-   if (FAILED(pVss->PrepareForBackup(&pAsync1.p))) {      
+   hr = pVssObj->PrepareForBackup(&pAsync1.p);
+   if (FAILED(hr)) {
+      JmsgVssApiStatus(m_jcr, M_FATAL, hr, "PrepareForBackup");
       errno = b_errno_win32;
       return false;   
    }
    
    // Waits for the async operation to finish and checks the result
-   WaitAndCheckForAsyncOperation(pAsync1.p);
+   if (!WaitAndCheckForAsyncOperation(pAsync1.p)) {
+      errno = b_errno_win32;
+      return false;
+   }
 
    /* get latest info about writer status */
    if (!CheckWriterStatus()) {
-      errno = b_errno_win32;
+      errno = b_errno_win32;       /* Error already printed */
       return false;
    }
 
    /* DoSnapShotSet */   
-   if (FAILED(pVss->DoSnapshotSet(&pAsync2.p))) {      
+   hr = pVssObj->DoSnapshotSet(&pAsync2.p);
+   if (FAILED(hr)) {
+      JmsgVssApiStatus(m_jcr, M_FATAL, hr, "DoSnapshotSet");
       errno = b_errno_win32;
       return false;   
    }
 
    // Waits for the async operation to finish and checks the result
-   WaitAndCheckForAsyncOperation(pAsync2.p); 
+   if (!WaitAndCheckForAsyncOperation(pAsync2.p)) {
+      errno = b_errno_win32;
+      return false;
+   }
    
+   /* get latest info about writer status */
+   if (!CheckWriterStatus()) {
+      errno = b_errno_win32;      /* Error already printed */
+      return false;
+   }
+
    /* query snapshot info */   
    QuerySnapshotSet(m_uidCurrentSnapshotSet);
 
@@ -545,64 +626,63 @@ bool VSSClientGeneric::CloseBackup()
    bool bRet = false;
    HRESULT hr;
    BSTR xml;
+   IVssBackupComponents* pVssObj = (IVssBackupComponents*)m_pVssObject;
 
-   if (!m_pVssObject)
+   if (!m_pVssObject) {
+      Jmsg(m_jcr, M_FATAL, 0, "VssOject is NULL.\n");
       errno = ENOSYS;
-   else {
-      IVssBackupComponents* pVss = (IVssBackupComponents*) m_pVssObject;
-      CComPtr<IVssAsync>  pAsync;
+      return bRet;
+   }
+   CComPtr<IVssAsync>  pAsync;
 
-      SetVSSPathConvert(NULL, NULL);
+   SetVSSPathConvert(NULL, NULL);
 
-      m_bBackupIsInitialized = false;
+   m_bBackupIsInitialized = false;
 
-      hr = pVss->SaveAsXML(&xml);
-      if (hr == ERROR_SUCCESS)
-         m_metadata = xml;
-      else
-         m_metadata = NULL;
-#if 0
-{
-   HRESULT hr;
-   BSTR xml;
-   int fd;
+   hr = pVssObj->BackupComplete(&pAsync.p);
+   if (SUCCEEDED(hr)) {
+      // Waits for the async operation to finish and checks the result
+      WaitAndCheckForAsyncOperation(pAsync.p);
+      bRet = true;     
+   } else {
+      JmsgVssApiStatus(m_jcr, M_ERROR, hr, "BackupComplete");
+      errno = b_errno_win32;
+      pVssObj->AbortBackup();
+   }
 
-   hr = pVss->SaveAsXML(&xml);
-   fd = open("C:\\james.xml", O_CREAT | O_WRONLY | O_TRUNC, 0777);
-   write(fd, xml, wcslen(xml) * sizeof(WCHAR));
-   close(fd);
-}
-#endif
-      if (SUCCEEDED(pVss->BackupComplete(&pAsync.p))) {
-         // Waits for the async operation to finish and checks the result
-         WaitAndCheckForAsyncOperation(pAsync.p);
-         bRet = true;     
-      } else {
-         errno = b_errno_win32;
-         pVss->AbortBackup();
-      }
+   /* get latest info about writer status */
+   CheckWriterStatus();
 
-      /* get latest info about writer status */
-      CheckWriterStatus();
+   hr = pVssObj->SaveAsXML(&xml);
+   if (SUCCEEDED(hr)) {
+      m_metadata = xml;
+   } else {
+      m_metadata = NULL;
+   }
 
-      if (m_uidCurrentSnapshotSet != GUID_NULL) {
-         VSS_ID idNonDeletedSnapshotID = GUID_NULL;
-         LONG lSnapshots;
+   /* FIXME?: The docs http://msdn.microsoft.com/en-us/library/aa384582%28v=VS.85%29.aspx say this isn't required... */
+   if (m_uidCurrentSnapshotSet != GUID_NULL) {
+      VSS_ID idNonDeletedSnapshotID = GUID_NULL;
+      LONG lSnapshots;
 
-         pVss->DeleteSnapshots(
-            m_uidCurrentSnapshotSet, 
-            VSS_OBJECT_SNAPSHOT_SET,
-            false,
-            &lSnapshots,
-            &idNonDeletedSnapshotID);
+      pVssObj->DeleteSnapshots(
+         m_uidCurrentSnapshotSet, 
+         VSS_OBJECT_SNAPSHOT_SET,
+         false,
+         &lSnapshots,
+         &idNonDeletedSnapshotID);
 
-         m_uidCurrentSnapshotSet = GUID_NULL;
-      }
+      m_uidCurrentSnapshotSet = GUID_NULL;
+   }
 
-      pVss->Release();
-      m_pVssObject = NULL;
+   if (m_bWriterStatusCurrent) {
+      m_bWriterStatusCurrent = false;
+      pVssObj->FreeWriterStatus();
    }
 
+   pVssObj->Release();
+   m_pVssObject = NULL;
+
    // Call CoUninitialize if the CoInitialize was performed sucesfully
    if (m_bCoInitializeCalled) {
       CoUninitialize();
@@ -619,16 +699,17 @@ WCHAR *VSSClientGeneric::GetMetadata()
 
 bool VSSClientGeneric::CloseRestore()
 {
-   HRESULT hr;
-   IVssBackupComponents* pVss = (IVssBackupComponents*) m_pVssObject;
+   //HRESULT hr;
+   IVssBackupComponents* pVssObj = (IVssBackupComponents*)m_pVssObject;
    CComPtr<IVssAsync> pAsync;
 
-   if (!pVss)
-   {
+   if (!pVssObj) {
       errno = ENOSYS;
       return false;
    }
-   if (SUCCEEDED(hr = pVss->PostRestore(&pAsync.p))) {
+#if 0
+/* done by plugin now */
+   if (SUCCEEDED(hr = pVssObj->PostRestore(&pAsync.p))) {
       // Waits for the async operation to finish and checks the result
       WaitAndCheckForAsyncOperation(pAsync.p);
       /* get latest info about writer status */
@@ -640,6 +721,7 @@ bool VSSClientGeneric::CloseRestore()
       errno = b_errno_win32;
       return false;
    }
+#endif
    return true;
 }
 
@@ -647,28 +729,31 @@ bool VSSClientGeneric::CloseRestore()
 void VSSClientGeneric::QuerySnapshotSet(GUID snapshotSetID)
 {   
    if (!(p_CreateVssBackupComponents && p_VssFreeSnapshotProperties)) {
+      Jmsg(m_jcr, M_FATAL, 0, "CreateVssBackupComponents or VssFreeSnapshotProperties API is NULL.\n");
       errno = ENOSYS;
       return;
    }
 
-   memset (m_szShadowCopyName,0,sizeof (m_szShadowCopyName));
+   memset(m_szShadowCopyName,0,sizeof (m_szShadowCopyName));
    
    if (snapshotSetID == GUID_NULL || m_pVssObject == NULL) {
+      Jmsg(m_jcr, M_FATAL, 0, "snapshotSetID == NULL or VssObject is NULL.\n");
       errno = ENOSYS;
       return;
    }
 
-   IVssBackupComponents* pVss = (IVssBackupComponents*) m_pVssObject;
+   IVssBackupComponents* pVssObj = (IVssBackupComponents*) m_pVssObject;
                
    // Get list all shadow copies. 
    CComPtr<IVssEnumObject> pIEnumSnapshots;
-   HRESULT hr = pVss->Query( GUID_NULL, 
+   HRESULT hr = pVssObj->Query( GUID_NULL, 
          VSS_OBJECT_NONE, 
          VSS_OBJECT_SNAPSHOT, 
          (IVssEnumObject**)(&pIEnumSnapshots) );    
 
    // If there are no shadow copies, just return
    if (FAILED(hr)) {
+      Jmsg(m_jcr, M_FATAL, 0, "No Volume Shadow copies made.\n");
       errno = b_errno_win32;
       return;   
    }
@@ -706,31 +791,47 @@ bool VSSClientGeneric::CheckWriterStatus()
     /* 
     http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vss/base/ivssbackupcomponents_startsnapshotset.asp
     */
-    IVssBackupComponents* pVss = (IVssBackupComponents*) m_pVssObject;
+    IVssBackupComponents* pVssObj = (IVssBackupComponents*)m_pVssObject;
+    if (!pVssObj) {
+       Jmsg(m_jcr, M_FATAL, 0, "Cannot get IVssBackupComponents pointer.\n");
+       errno = ENOSYS;
+       return false;
+    }
     DestroyWriterInfo();
 
+    if (m_bWriterStatusCurrent) {
+       m_bWriterStatusCurrent = false;
+       pVssObj->FreeWriterStatus();
+    }
     // Gather writer status to detect potential errors
     CComPtr<IVssAsync>  pAsync;
     
-    HRESULT hr = pVss->GatherWriterStatus(&pAsync.p);
+    HRESULT hr = pVssObj->GatherWriterStatus(&pAsync.p);
     if (FAILED(hr)) {
+       JmsgVssApiStatus(m_jcr, M_FATAL, hr, "GatherWriterStatus");
        errno = b_errno_win32;
        return false;
-    } 
+    }
 
     // Waits for the async operation to finish and checks the result
-    WaitAndCheckForAsyncOperation(pAsync.p);
+    if (!WaitAndCheckForAsyncOperation(pAsync.p)) {
+       errno = b_errno_win32;
+       return false;
+    }
       
+    m_bWriterStatusCurrent = true;
+
     unsigned cWriters = 0;
 
-    hr = pVss->GetWriterStatusCount(&cWriters);
+    hr = pVssObj->GetWriterStatusCount(&cWriters);
     if (FAILED(hr)) {
+       JmsgVssApiStatus(m_jcr, M_FATAL, hr, "GatherWriterStatusCount");
        errno = b_errno_win32;
        return false;
     }
-
-    int nState;
     
+    int nState;
+    POOLMEM *szBuf = get_pool_memory(PM_FNAME);        
     // Enumerate each writer
     for (unsigned iWriter = 0; iWriter < cWriters; iWriter++) {
         VSS_ID idInstance = GUID_NULL;
@@ -740,17 +841,17 @@ bool VSSClientGeneric::CheckWriterStatus()
         HRESULT hrWriterFailure = S_OK;
 
         // Get writer status
-        hr = pVss->GetWriterStatus(iWriter,
+        hr = pVssObj->GetWriterStatus(iWriter,
                              &idInstance,
                              &idWriter,
                              &bstrWriterName,
                              &eWriterStatus,
                              &hrWriterFailure);
         if (FAILED(hr)) {
-            /* unknown */            
-            nState = 0;
-        }
-        else {            
+            /* Api failed */
+            JmsgVssApiStatus(m_jcr, M_WARNING, hr, "GetWriterStatus");
+            nState = 0;         /* Unknown writer state -- API failed */
+        } else {            
             switch(eWriterStatus) {
             case VSS_WS_FAILED_AT_IDENTIFY:
             case VSS_WS_FAILED_AT_PREPARE_BACKUP:
@@ -764,39 +865,32 @@ bool VSSClientGeneric::CheckWriterStatus()
     #if  defined(B_VSS_W2K3) || defined(B_VSS_VISTA)
             case VSS_WS_FAILED_AT_BACKUPSHUTDOWN:
     #endif
-                /* failed */                
-                nState = -1;
+                /* Writer status problem */    
+                wchar_2_UTF8(&szBuf, bstrWriterName.p);
+                JmsgVssWriterStatus(m_jcr, M_WARNING, eWriterStatus, szBuf);
+                nState = -1;       /* bad writer state */
                 break;
 
             default:
                 /* ok */
-                nState = 1;
+                nState = 1;        /* Writer state OK */
             }
         }
         /* store text info */
         char str[1000];
-        char szBuf[200];        
         bstrncpy(str, "\"", sizeof(str));
-        wchar_2_UTF8(szBuf, bstrWriterName.p, sizeof(szBuf));
+        wchar_2_UTF8(&szBuf, bstrWriterName.p);
         bstrncat(str, szBuf, sizeof(str));
         bstrncat(str, "\", State: 0x", sizeof(str));
-        itoa(eWriterStatus, szBuf, sizeof(szBuf));
+        itoa(eWriterStatus, szBuf, sizeof_pool_memory(szBuf));
         bstrncat(str, szBuf, sizeof(str));
         bstrncat(str, " (", sizeof(str));
-        wchar_2_UTF8(szBuf, GetStringFromWriterStatus(eWriterStatus), sizeof(szBuf));
+        wchar_2_UTF8(&szBuf, GetStringFromWriterStatus(eWriterStatus));
         bstrncat(str, szBuf, sizeof(str));
         bstrncat(str, ")", sizeof(str));
-
-        AppendWriterInfo(nState, (const char *)str);     
+        AppendWriterInfo(nState, (const char *)str);
     }
-
-    hr = pVss->FreeWriterStatus();
-
-    if (FAILED(hr)) {
-        errno = b_errno_win32;
-        return false;
-    } 
-
+    free_pool_memory(szBuf);
     errno = 0;
     return true;
 }
diff --git a/src/win32/winapi.h b/src/win32/winapi.h
index fcd6c5e..b4027dc 100644
--- a/src/win32/winapi.h
+++ b/src/win32/winapi.h
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2003-2008 Free Software Foundation Europe e.V.
+   Copyright (C) 2003-2010 Free Software Foundation Europe e.V.
 
    The main author of Bacula is Kern Sibbald, with contributions from
    many others, a complete list can be found in the file AUTHORS.
@@ -67,6 +67,7 @@ typedef char POOLMEM;
 // "\\?\" to the path. For more information, see Naming a File.
 #define MAX_PATH_W 32767
 
+int wchar_2_UTF8(POOLMEM **pszUTF, const wchar_t *pszUCS);
 int wchar_2_UTF8(char *pszUTF, const WCHAR *pszUCS, int cchChar = MAX_PATH_UTF8);
 int UTF8_2_wchar(POOLMEM **pszUCS, const char *pszUTF);
 int make_win32_path_UTF8_2_wchar(POOLMEM **pszUCS, const char *pszUTF, BOOL* pBIsRawPath = NULL);
diff --git a/updatedb/update_mysql_tables_10_to_11.in b/updatedb/update_mysql_tables_10_to_11.in
index ea4a85c..bfb6390 100644
--- a/updatedb/update_mysql_tables_10_to_11.in
+++ b/updatedb/update_mysql_tables_10_to_11.in
@@ -10,9 +10,7 @@ bindir=@MYSQL_BINDIR@
 PATH="$bindir:$PATH"
 db_name=${db_name:- at db_name@}
 
-if mysql $* -f <<END-OF-DATA
-USE ${db_name};
-
+if mysql -D ${db_name} $* -f <<END-OF-DATA
 -- Fix bad index on Media table
 DROP INDEX inx8 ON Media;
 CREATE UNIQUE INDEX inx8 ON Media (VolumeName(128));
diff --git a/updatedb/update_mysql_tables_11_to_12.in b/updatedb/update_mysql_tables_11_to_12.in
index 32a07c0..1759d73 100644
--- a/updatedb/update_mysql_tables_11_to_12.in
+++ b/updatedb/update_mysql_tables_11_to_12.in
@@ -10,7 +10,7 @@ bindir=@MYSQL_BINDIR@
 PATH="$bindir:$PATH"
 db_name=${db_name:- at db_name@}
 
-mysql $* -D ${db_name} -e "select VersionId from Version\G" >/tmp/$$
+mysql -D ${db_name} $* -e "select VersionId from Version\G" >/tmp/$$
 DBVERSION=`sed -n -e 's/^VersionId: \(.*\)$/\1/p' /tmp/$$`
 if [ $DBVERSION != 11 ] ; then
    echo " "
@@ -21,9 +21,7 @@ if [ $DBVERSION != 11 ] ; then
    exit 1
 fi
 
-if mysql $* -f <<END-OF-DATA
-USE ${db_name};
-
+if mysql -D ${db_name} $* -f <<END-OF-DATA
 ALTER TABLE JobMedia DROP Stripe ;
 ALTER TABLE JobMedia DROP Copy ;
 ALTER TABLE Job ADD COLUMN HasCache tinyint default 0 after HasBase;
diff --git a/updatedb/update_mysql_tables_12_to_14.in b/updatedb/update_mysql_tables_12_to_14.in
index f8a7ec3..f392c94 100644
--- a/updatedb/update_mysql_tables_12_to_14.in
+++ b/updatedb/update_mysql_tables_12_to_14.in
@@ -8,9 +8,9 @@ echo " which is needed to convert from Bacula Community version 5.0.x to 5.2.x"
 echo " "
 bindir=@MYSQL_BINDIR@
 PATH="$bindir:$PATH"
-db_name=@db_name@
+db_name=${db_name:- at db_name@}
 
-mysql $* -D ${db_name} -e "select VersionId from Version\G" >/tmp/$$
+mysql -D ${db_name} $* -e "select VersionId from Version\G" >/tmp/$$
 DBVERSION=`sed -n -e 's/^VersionId: \(.*\)$/\1/p' /tmp/$$`
 if [ $DBVERSION != 12 ] ; then
    echo " "
@@ -21,9 +21,7 @@ if [ $DBVERSION != 12 ] ; then
    exit 1
 fi
 
-if mysql $* -f <<END-OF-DATA
-USE ${db_name};
-
+if mysql -D ${db_name} $* -f <<END-OF-DATA
 CREATE TABLE RestoreObject (
    RestoreObjectId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
    ObjectName BLOB NOT NULL,
diff --git a/updatedb/update_postgresql_tables_10_to_11.in b/updatedb/update_postgresql_tables_10_to_11.in
index f5df19f..1be8033 100644
--- a/updatedb/update_postgresql_tables_10_to_11.in
+++ b/updatedb/update_postgresql_tables_10_to_11.in
@@ -10,7 +10,7 @@ bindir=@POSTGRESQL_BINDIR@
 PATH="$bindir:$PATH"
 db_name=${db_name:- at db_name@}
 
-psql -f - -d ${db_name} $* <<END-OF-DATA
+if psql -f - -d ${db_name} $* <<END-OF-DATA
 -- The alter table operation can be faster with a big maintenance_work_mem
 -- Uncomment and adapt this value to your environment
 -- SET maintenance_work_mem = '1GB';

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-bacula/bacula.git



More information about the pkg-bacula-commits mailing list